aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2011-01-13 02:35:29 +0100
committerMike Pall <mike>2011-01-13 02:35:29 +0100
commit0ec7f5ed92b6b9720c80669b2de3aa3c40967153 (patch)
treed4ea028d9db343d77985df658b4370b838050523 /src
parente7b08b2361dd9e3f945dfd4b7e34c4aad2243582 (diff)
downloadluajit-0ec7f5ed92b6b9720c80669b2de3aa3c40967153.tar.gz
luajit-0ec7f5ed92b6b9720c80669b2de3aa3c40967153.tar.bz2
luajit-0ec7f5ed92b6b9720c80669b2de3aa3c40967153.zip
FFI: Add 64 bit integer comparisons and pointer comparisons.
Diffstat (limited to 'src')
-rw-r--r--src/buildvm_x64.h1851
-rw-r--r--src/buildvm_x64win.h1971
-rw-r--r--src/buildvm_x86.dasc56
-rw-r--r--src/buildvm_x86.h2250
-rw-r--r--src/lib_ffi.c126
-rw-r--r--src/lj_crecord.h1
-rw-r--r--src/lj_errmsg.h3
-rw-r--r--src/lj_meta.c40
-rw-r--r--src/lj_meta.h1
-rw-r--r--src/lj_obj.h2
-rw-r--r--src/lj_record.c29
11 files changed, 3309 insertions, 3021 deletions
diff --git a/src/buildvm_x64.h b/src/buildvm_x64.h
index 16bcc65b..5739e65a 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[14438] = { 15static const unsigned char build_actionlist[14610] = {
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,
@@ -79,328 +79,330 @@ static const unsigned char build_actionlist[14438] = {
79 182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,43,131,195,4,129,120, 79 182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,43,131,195,4,129,120,
80 253,4,239,15,130,244,5,252,233,244,6,248,44,129,120,253,4,239,252,233,244, 80 253,4,239,15,130,244,5,252,233,244,6,248,44,129,120,253,4,239,252,233,244,
81 4,248,45,131,252,235,4,137,206,137,252,233,139,108,36,24,137,149,233,255, 81 4,248,45,131,252,235,4,137,206,137,252,233,139,108,36,24,137,149,233,255,
82 137,194,137,252,239,137,92,36,28,232,251,1,4,252,233,244,3,248,46,65,141, 82 137,194,137,252,239,137,92,36,28,232,251,1,4,252,233,244,3,248,46,255,131,
83 4,199,252,233,244,247,248,47,65,141,4,199,141,44,252,234,149,252,233,244, 83 252,235,4,139,108,36,24,137,149,233,137,252,239,139,115,252,252,137,92,36,
84 248,248,48,141,4,194,137,197,252,233,244,248,248,49,141,4,194,248,1,141,44, 84 28,232,251,1,5,252,233,244,3,255,248,47,65,141,4,199,252,233,244,247,248,
85 252,234,248,2,141,12,202,68,15,182,67,252,252,137,206,137,193,139,124,36, 85 48,65,141,4,199,141,44,252,234,149,252,233,244,248,248,49,141,4,194,137,197,
86 24,137,151,233,137,252,234,137,252,253,137,92,36,28,232,251,1,5,139,149,233, 86 252,233,244,248,248,50,141,4,194,248,1,141,44,252,234,248,2,141,12,202,68,
87 133,192,15,132,244,40,248,42,137,193,41,208,137,89,252,244,141,152,233,255, 87 15,182,67,252,252,137,206,137,193,139,124,36,24,137,151,233,137,252,234,137,
88 184,237,252,233,244,27,248,50,139,108,36,24,137,149,233,141,52,194,137,252, 88 252,253,137,92,36,28,232,251,1,6,139,149,233,133,192,15,132,244,40,248,42,
89 239,137,92,36,28,232,251,1,6,139,149,233,252,233,244,42,248,51,141,76,202, 89 137,193,41,208,137,89,252,244,141,152,233,184,237,252,233,244,27,248,51,255,
90 8,248,28,137,76,36,4,137,4,36,131,252,233,8,139,108,36,24,137,149,233,137, 90 139,108,36,24,137,149,233,141,52,194,137,252,239,137,92,36,28,232,251,1,7,
91 206,141,20,193,137,252,239,137,92,36,28,232,251,1,7,139,149,233,139,76,36, 91 139,149,233,252,233,244,42,248,52,141,76,202,8,248,28,137,76,36,4,137,4,36,
92 4,139,4,36,139,105,252,248,131,192,1,65,57,215,15,132,244,52,137,202,137, 92 131,252,233,8,139,108,36,24,137,149,233,137,206,141,20,193,137,252,239,137,
93 90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,65,252, 93 92,36,28,232,251,1,8,139,149,233,139,76,36,4,139,4,36,139,105,252,248,131,
94 255,36,252,238,248,53,139,108,36,24,137,149,233,137,206,137,252,239,137,92, 94 192,1,65,57,215,15,132,244,53,137,202,137,90,252,252,139,157,233,139,11,15,
95 36,28,232,251,1,8,139,149,233,139,67,252,252,15,182,204,15,182,232,193,232, 95 182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,248,54,139,108,36,
96 16,65,252,255,164,253,252,238,233,248,54,255,129,252,248,239,15,130,244,55, 96 24,137,149,233,137,206,137,252,239,137,92,36,28,232,251,1,9,139,149,233,139,
97 139,106,4,129,252,253,239,15,131,244,55,139,90,252,252,137,68,36,4,137,106, 97 67,252,252,15,182,204,15,182,232,193,232,16,65,252,255,164,253,252,238,233,
98 252,252,139,42,137,106,252,248,131,232,2,15,132,244,248,137,209,248,1,131, 98 248,55,129,252,248,239,15,130,244,56,139,106,4,129,252,253,239,255,15,131,
99 193,8,72,139,41,72,137,105,252,248,131,232,1,15,133,244,1,248,2,139,68,36, 99 244,56,139,90,252,252,137,68,36,4,137,106,252,252,139,42,137,106,252,248,
100 4,252,233,244,56,248,57,129,252,248,239,15,130,244,55,139,106,4,137,252,233, 100 131,232,2,15,132,244,248,137,209,248,1,131,193,8,72,139,41,72,137,105,252,
101 193,252,249,15,131,252,249,252,254,15,132,244,249,255,184,237,252,247,213, 101 248,131,232,1,15,133,244,1,248,2,139,68,36,4,252,233,244,57,248,58,129,252,
102 57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,248,2,139,106,252, 102 248,239,15,130,244,56,139,106,4,137,252,233,193,252,249,15,131,252,249,252,
103 248,139,132,253,197,233,139,90,252,252,199,66,252,252,237,137,66,252,248, 103 254,15,132,244,249,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244,
104 252,233,244,58,248,3,184,237,252,233,244,2,248,59,129,252,248,239,15,130, 104 247,137,232,248,1,255,248,2,139,106,252,248,139,132,253,197,233,139,90,252,
105 244,55,139,106,4,139,90,252,252,129,252,253,239,15,133,244,252,248,1,139, 105 252,199,66,252,252,237,137,66,252,248,252,233,244,59,248,3,184,237,252,233,
106 42,139,173,233,248,2,133,252,237,199,66,252,252,237,255,15,132,244,58,65, 106 244,2,248,60,129,252,248,239,15,130,244,56,139,106,4,139,90,252,252,129,252,
107 139,134,233,199,66,252,252,237,137,106,252,248,139,141,233,35,136,233,105, 107 253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,133,252,237,199,66,
108 201,239,3,141,233,248,3,129,185,233,239,15,133,244,250,57,129,233,15,132, 108 252,252,237,255,15,132,244,59,65,139,134,233,199,66,252,252,237,137,106,252,
109 244,251,248,4,139,137,233,133,201,15,133,244,3,255,252,233,244,58,248,5,139, 109 248,139,141,233,35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15,
110 105,4,129,252,253,239,15,132,244,58,139,1,137,106,252,252,137,66,252,248, 110 133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244,
111 252,233,244,58,248,6,129,252,253,239,15,132,244,1,129,252,253,239,15,135, 111 3,255,252,233,244,59,248,5,139,105,4,129,252,253,239,15,132,244,59,139,1,
112 244,253,189,237,248,7,252,247,213,65,139,172,253,174,233,252,233,244,2,248, 112 137,106,252,252,137,66,252,248,252,233,244,59,248,6,129,252,253,239,15,132,
113 60,255,129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,139, 113 244,1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,65,139,172,
114 42,131,189,233,0,15,133,244,55,129,122,253,12,239,15,133,244,55,139,66,8, 114 253,174,233,252,233,244,2,248,61,255,129,252,248,239,15,130,244,56,129,122,
115 137,133,233,139,90,252,252,199,66,252,252,237,137,106,252,248,252,246,133, 115 253,4,239,15,133,244,56,139,42,131,189,233,0,15,133,244,56,129,122,253,12,
116 233,235,15,132,244,247,128,165,233,235,255,65,139,134,233,65,137,174,233, 116 239,15,133,244,56,139,66,8,137,133,233,139,90,252,252,199,66,252,252,237,
117 137,133,233,248,1,252,233,244,58,248,61,129,252,248,239,15,130,244,55,129, 117 137,106,252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,255,65,
118 122,253,4,239,15,133,244,55,137,213,139,50,141,82,8,139,124,36,24,232,251, 118 139,134,233,65,137,174,233,137,133,233,248,1,252,233,244,59,248,62,129,252,
119 1,9,137,252,234,72,139,40,139,90,252,252,72,137,106,252,248,252,233,244,58, 119 248,239,15,130,244,56,129,122,253,4,239,15,133,244,56,137,213,139,50,141,
120 248,62,129,252,248,239,15,133,244,55,129,122,253,4,239,255,15,135,244,55, 120 82,8,139,124,36,24,232,251,1,10,137,252,234,72,139,40,139,90,252,252,72,137,
121 255,252,242,15,16,2,252,233,244,63,255,221,2,252,233,244,64,255,248,65,129, 121 106,252,248,252,233,244,59,248,63,129,252,248,239,15,133,244,56,129,122,253,
122 252,248,239,15,130,244,55,139,90,252,252,129,122,253,4,239,15,133,244,249, 122 4,239,255,15,135,244,56,255,252,242,15,16,2,252,233,244,64,255,221,2,252,
123 139,2,248,2,199,66,252,252,237,137,66,252,248,252,233,244,58,248,3,129,122, 123 233,244,65,255,248,66,129,252,248,239,15,130,244,56,139,90,252,252,129,122,
124 253,4,239,15,135,244,55,65,131,190,233,0,15,133,244,55,65,139,174,233,65, 124 253,4,239,15,133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,
125 59,174,233,255,15,130,244,247,232,244,66,248,1,139,108,36,24,137,149,233, 125 233,244,59,248,3,129,122,253,4,239,15,135,244,56,65,131,190,233,0,15,133,
126 137,92,36,28,137,214,137,252,239,232,251,1,10,139,149,233,252,233,244,2,248, 126 244,56,65,139,174,233,65,59,174,233,255,15,130,244,247,232,244,67,248,1,139,
127 67,129,252,248,239,15,130,244,55,15,132,244,248,248,1,129,122,253,4,239,15, 127 108,36,24,137,149,233,137,92,36,28,137,214,137,252,239,232,251,1,11,139,149,
128 133,244,55,139,108,36,24,137,149,233,255,137,149,233,139,90,252,252,139,50, 128 233,252,233,244,2,248,68,129,252,248,239,15,130,244,56,15,132,244,248,248,
129 141,82,8,137,252,239,137,92,36,28,232,251,1,11,139,149,233,133,192,15,132, 129 1,129,122,253,4,239,15,133,244,56,139,108,36,24,137,149,233,255,137,149,233,
130 244,249,72,139,106,8,72,139,66,16,72,137,106,252,248,72,137,2,248,68,184, 130 139,90,252,252,139,50,141,82,8,137,252,239,137,92,36,28,232,251,1,12,139,
131 237,252,233,244,69,248,2,199,66,12,237,252,233,244,1,248,3,199,66,252,252, 131 149,233,133,192,15,132,244,249,72,139,106,8,72,139,66,16,72,137,106,252,248,
132 237,252,233,244,58,248,70,129,252,248,239,15,130,244,55,255,139,42,129,122, 132 72,137,2,248,69,184,237,252,233,244,70,248,2,199,66,12,237,252,233,244,1,
133 253,4,239,15,133,244,55,255,131,189,233,0,15,133,244,55,255,139,106,252,248, 133 248,3,199,66,252,252,237,252,233,244,59,248,71,129,252,248,239,15,130,244,
134 139,133,233,139,90,252,252,199,66,252,252,237,137,66,252,248,199,66,12,237, 134 56,255,139,42,129,122,253,4,239,15,133,244,56,255,131,189,233,0,15,133,244,
135 184,237,252,233,244,69,248,71,129,252,248,239,15,130,244,55,129,122,253,4, 135 56,255,139,106,252,248,139,133,233,139,90,252,252,199,66,252,252,237,137,
136 239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,90,252,252,255,252, 136 66,252,248,199,66,12,237,184,237,252,233,244,70,248,72,129,252,248,239,15,
137 242,15,16,66,8,72,189,237,237,102,72,15,110,205,252,242,15,88,193,252,242, 137 130,244,56,129,122,253,4,239,15,133,244,56,129,122,253,12,239,15,135,244,
138 15,45,192,252,242,15,17,66,252,248,255,139,42,59,133,233,15,131,244,248,193, 138 56,139,90,252,252,255,252,242,15,16,66,8,72,189,237,237,102,72,15,110,205,
139 224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,72,72,139,40,72,137,42, 139 252,242,15,88,193,252,242,15,45,192,252,242,15,17,66,252,248,255,139,42,59,
140 252,233,244,68,248,2,131,189,233,0,15,132,244,72,137,252,239,137,213,137, 140 133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120,253,4,239,15,132,
141 198,232,251,1,12,137,252,234,133,192,15,133,244,1,248,72,184,237,252,233, 141 244,73,72,139,40,72,137,42,252,233,244,69,248,2,131,189,233,0,15,132,244,
142 244,69,248,73,255,129,252,248,239,15,130,244,55,139,42,129,122,253,4,239, 142 73,137,252,239,137,213,137,198,232,251,1,13,137,252,234,133,192,15,133,244,
143 15,133,244,55,255,139,106,252,248,139,133,233,139,90,252,252,199,66,252,252, 143 1,248,73,184,237,252,233,244,70,248,74,255,129,252,248,239,15,130,244,56,
144 237,137,66,252,248,255,15,87,192,252,242,15,17,66,8,255,217,252,238,221,90, 144 139,42,129,122,253,4,239,15,133,244,56,255,139,106,252,248,139,133,233,139,
145 8,255,184,237,252,233,244,69,248,74,129,252,248,239,15,130,244,55,141,74, 145 90,252,252,199,66,252,252,237,137,66,252,248,255,15,87,192,252,242,15,17,
146 8,131,232,1,187,237,248,1,65,15,182,174,233,193,252,237,235,131,229,1,1,252, 146 66,8,255,217,252,238,221,90,8,255,184,237,252,233,244,70,248,75,129,252,248,
147 235,252,233,244,27,248,75,129,252,248,239,15,130,244,55,129,122,253,12,239, 147 239,15,130,244,56,141,74,8,131,232,1,187,237,248,1,65,15,182,174,233,193,
148 15,133,244,55,255,139,106,4,137,106,12,199,66,4,237,139,42,139,90,8,137,106, 148 252,237,235,131,229,1,1,252,235,252,233,244,27,248,76,129,252,248,239,15,
149 8,137,26,141,74,16,131,232,2,187,237,252,233,244,1,248,76,129,252,248,239, 149 130,244,56,129,122,253,12,239,15,133,244,56,255,139,106,4,137,106,12,199,
150 15,130,244,55,139,42,139,90,252,252,137,92,36,28,137,44,36,129,122,253,4, 150 66,4,237,139,42,139,90,8,137,106,8,137,26,141,74,16,131,232,2,187,237,252,
151 239,15,133,244,55,72,131,189,233,0,15,133,244,55,128,189,233,235,15,135,244, 151 233,244,1,248,77,129,252,248,239,15,130,244,56,139,42,139,90,252,252,137,
152 55,139,141,233,15,132,244,247,255,59,141,233,15,132,244,55,248,1,141,92,193, 152 92,36,28,137,44,36,129,122,253,4,239,15,133,244,56,72,131,189,233,0,15,133,
153 252,240,59,157,233,15,135,244,55,137,157,233,139,108,36,24,137,149,233,131, 153 244,56,128,189,233,235,15,135,244,56,139,141,233,15,132,244,247,255,59,141,
154 194,8,137,149,233,141,108,194,232,72,41,221,57,203,15,132,244,249,248,2,72, 154 233,15,132,244,56,248,1,141,92,193,252,240,59,157,233,15,135,244,56,137,157,
155 139,4,43,72,137,67,252,248,131,252,235,8,57,203,15,133,244,2,248,3,137,206, 155 233,139,108,36,24,137,149,233,131,194,8,137,149,233,141,108,194,232,72,41,
156 139,60,36,232,244,24,65,199,134,233,237,255,139,108,36,24,139,28,36,139,149, 156 221,57,203,15,132,244,249,248,2,72,139,4,43,72,137,67,252,248,131,252,235,
157 233,129,252,248,239,15,135,244,254,248,4,139,139,233,68,139,187,233,137,139, 157 8,57,203,15,133,244,2,248,3,137,206,139,60,36,232,244,24,65,199,134,233,237,
158 233,68,137,252,251,41,203,15,132,244,252,141,4,26,193,252,235,3,59,133,233, 158 255,139,108,36,24,139,28,36,139,149,233,129,252,248,239,15,135,244,254,248,
159 15,135,244,255,137,213,72,41,205,248,5,72,139,1,72,137,4,41,131,193,8,68, 159 4,139,139,233,68,139,187,233,137,139,233,68,137,252,251,41,203,15,132,244,
160 57,252,249,15,133,244,5,248,6,141,67,2,199,66,252,252,237,248,7,139,92,36, 160 252,141,4,26,193,252,235,3,59,133,233,15,135,244,255,137,213,72,41,205,248,
161 28,137,68,36,4,72,199,193,252,248,252,255,252,255,252,255,252,247,195,237, 161 5,72,139,1,72,137,4,41,131,193,8,68,57,252,249,15,133,244,5,248,6,141,67,
162 255,15,132,244,13,252,233,244,14,248,8,199,66,252,252,237,139,139,233,131, 162 2,199,66,252,252,237,248,7,139,92,36,28,137,68,36,4,72,199,193,252,248,252,
163 252,233,8,137,139,233,72,139,1,72,137,2,184,237,252,233,244,7,248,9,139,12, 163 255,252,255,252,255,252,247,195,237,255,15,132,244,13,252,233,244,14,248,
164 36,68,137,185,233,137,222,137,252,239,232,251,1,0,139,28,36,139,149,233,252, 164 8,199,66,252,252,237,139,139,233,131,252,233,8,137,139,233,72,139,1,72,137,
165 233,244,4,248,77,139,106,252,248,139,173,233,139,90,252,252,137,92,36,28, 165 2,184,237,252,233,244,7,248,9,139,12,36,68,137,185,233,137,222,137,252,239,
166 137,44,36,72,131,189,233,0,15,133,244,55,255,128,189,233,235,15,135,244,55, 166 232,251,1,0,139,28,36,139,149,233,252,233,244,4,248,78,139,106,252,248,139,
167 139,141,233,15,132,244,247,59,141,233,15,132,244,55,248,1,141,92,193,252, 167 173,233,139,90,252,252,137,92,36,28,137,44,36,72,131,189,233,0,15,133,244,
168 248,59,157,233,15,135,244,55,137,157,233,139,108,36,24,137,149,233,137,149, 168 56,255,128,189,233,235,15,135,244,56,139,141,233,15,132,244,247,59,141,233,
169 233,141,108,194,252,240,72,41,221,57,203,15,132,244,249,248,2,255,72,139, 169 15,132,244,56,248,1,141,92,193,252,248,59,157,233,15,135,244,56,137,157,233,
170 4,43,72,137,67,252,248,131,252,235,8,57,203,15,133,244,2,248,3,137,206,139, 170 139,108,36,24,137,149,233,137,149,233,141,108,194,252,240,72,41,221,57,203,
171 60,36,232,244,24,65,199,134,233,237,139,108,36,24,139,28,36,139,149,233,129, 171 15,132,244,249,248,2,255,72,139,4,43,72,137,67,252,248,131,252,235,8,57,203,
172 252,248,239,15,135,244,254,248,4,139,139,233,68,139,187,233,137,139,233,68, 172 15,133,244,2,248,3,137,206,139,60,36,232,244,24,65,199,134,233,237,139,108,
173 137,252,251,41,203,15,132,244,252,141,4,26,193,252,235,3,59,133,233,15,135, 173 36,24,139,28,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,139,
174 244,255,255,137,213,72,41,205,248,5,72,139,1,72,137,4,41,131,193,8,68,57, 174 233,68,139,187,233,137,139,233,68,137,252,251,41,203,15,132,244,252,141,4,
175 252,249,15,133,244,5,248,6,141,67,1,248,7,139,92,36,28,137,68,36,4,49,201, 175 26,193,252,235,3,59,133,233,15,135,244,255,255,137,213,72,41,205,248,5,72,
176 252,247,195,237,15,132,244,13,252,233,244,14,248,8,137,222,137,252,239,232, 176 139,1,72,137,4,41,131,193,8,68,57,252,249,15,133,244,5,248,6,141,67,1,248,
177 251,1,13,248,9,139,12,36,68,137,185,233,137,222,137,252,239,232,251,1,0,139, 177 7,139,92,36,28,137,68,36,4,49,201,252,247,195,237,15,132,244,13,252,233,244,
178 28,36,139,149,233,252,233,244,4,248,78,139,108,36,24,72,252,247,133,233,237, 178 14,248,8,137,222,137,252,239,232,251,1,14,248,9,139,12,36,68,137,185,233,
179 15,132,244,55,255,137,149,233,141,68,194,252,248,137,133,233,49,192,72,137, 179 137,222,137,252,239,232,251,1,0,139,28,36,139,149,233,252,233,244,4,248,79,
180 133,233,176,235,136,133,233,252,233,244,16,255,248,64,139,90,252,252,221, 180 139,108,36,24,72,252,247,133,233,237,15,132,244,56,255,137,149,233,141,68,
181 90,252,248,252,233,244,58,248,79,129,252,248,239,15,130,244,55,129,122,253, 181 194,252,248,137,133,233,49,192,72,137,133,233,176,235,136,133,233,252,233,
182 4,239,15,135,244,55,252,242,15,16,2,72,184,237,237,102,72,15,110,200,15,84, 182 244,16,255,248,65,139,90,252,252,221,90,252,248,252,233,244,59,248,80,129,
183 193,248,63,139,90,252,252,252,242,15,17,66,252,248,255,248,79,129,252,248, 183 252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,
184 239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,225,248,63,248, 184 72,184,237,237,102,72,15,110,200,15,84,193,248,64,139,90,252,252,252,242,
185 64,139,90,252,252,221,90,252,248,255,248,58,184,237,248,69,137,68,36,4,248, 185 15,17,66,252,248,255,248,80,129,252,248,239,15,130,244,56,129,122,253,4,239,
186 56,252,247,195,237,15,133,244,253,248,5,56,67,252,255,15,135,244,252,15,182, 186 15,135,244,56,221,2,217,225,248,64,248,65,139,90,252,252,221,90,252,248,255,
187 75,252,253,72,252,247,209,141,20,202,139,3,15,182,204,15,182,232,131,195, 187 248,59,184,237,248,70,137,68,36,4,248,57,252,247,195,237,15,133,244,253,248,
188 4,193,232,16,65,252,255,36,252,238,248,6,199,68,194,252,244,237,131,192,1, 188 5,56,67,252,255,15,135,244,252,15,182,75,252,253,72,252,247,209,141,20,202,
189 252,233,244,5,248,7,72,199,193,252,248,252,255,252,255,252,255,252,233,244, 189 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,
190 14,255,248,80,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, 190 6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,72,199,193,252,248,
191 55,252,242,15,81,2,252,233,244,63,248,81,129,252,248,239,15,130,244,55,129, 191 252,255,252,255,252,255,252,233,244,14,255,248,81,129,252,248,239,15,130,
192 122,253,4,239,15,135,244,55,252,242,15,16,2,232,244,82,252,233,244,63,248, 192 244,56,129,122,253,4,239,15,135,244,56,252,242,15,81,2,252,233,244,64,248,
193 83,255,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252, 193 82,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,
194 242,15,16,2,232,244,84,252,233,244,63,255,248,80,129,252,248,239,15,130,244, 194 15,16,2,232,244,83,252,233,244,64,248,84,255,129,252,248,239,15,130,244,56,
195 55,129,122,253,4,239,15,135,244,55,221,2,217,252,250,252,233,244,64,248,81, 195 129,122,253,4,239,15,135,244,56,252,242,15,16,2,232,244,85,252,233,244,64,
196 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,232,244, 196 255,248,81,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,
197 82,252,233,244,64,248,83,255,129,252,248,239,15,130,244,55,129,122,253,4, 197 221,2,217,252,250,252,233,244,65,248,82,129,252,248,239,15,130,244,56,129,
198 239,15,135,244,55,221,2,232,244,84,252,233,244,64,255,248,85,129,252,248, 198 122,253,4,239,15,135,244,56,221,2,232,244,83,252,233,244,65,248,84,255,129,
199 239,15,130,244,55,129,122,253,4,239,15,135,244,55,217,252,237,221,2,217,252, 199 252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,232,244,85,
200 241,252,233,244,64,248,86,129,252,248,239,15,130,244,55,129,122,253,4,239, 200 252,233,244,65,255,248,86,129,252,248,239,15,130,244,56,129,122,253,4,239,
201 15,135,244,55,217,252,236,221,2,217,252,241,252,233,244,64,248,87,129,252, 201 15,135,244,56,217,252,237,221,2,217,252,241,252,233,244,65,248,87,129,252,
202 248,239,255,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,88, 202 248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,217,252,236,221,2,217,
203 252,233,244,64,248,89,129,252,248,239,15,130,244,55,129,122,253,4,239,15, 203 252,241,252,233,244,65,248,88,129,252,248,239,255,15,130,244,56,129,122,253,
204 135,244,55,221,2,217,252,254,252,233,244,64,248,90,129,252,248,239,255,15, 204 4,239,15,135,244,56,221,2,232,244,89,252,233,244,65,248,90,129,252,248,239,
205 130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,252,255,252,233,244, 205 15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,217,252,254,252,233,244,
206 64,248,91,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221, 206 65,248,91,129,252,248,239,255,15,130,244,56,129,122,253,4,239,15,135,244,
207 2,217,252,242,221,216,252,233,244,64,248,92,129,252,248,239,15,130,244,55, 207 56,221,2,217,252,255,252,233,244,65,248,92,129,252,248,239,15,130,244,56,
208 255,129,122,253,4,239,15,135,244,55,221,2,217,192,216,200,217,232,222,225, 208 129,122,253,4,239,15,135,244,56,221,2,217,252,242,221,216,252,233,244,65,
209 217,252,250,217,252,243,252,233,244,64,248,93,129,252,248,239,15,130,244, 209 248,93,129,252,248,239,15,130,244,56,255,129,122,253,4,239,15,135,244,56,
210 55,129,122,253,4,239,15,135,244,55,221,2,217,192,216,200,217,232,222,225, 210 221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252,233,244,
211 217,252,250,217,201,217,252,243,252,233,244,64,248,94,129,252,248,239,15, 211 65,248,94,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,
212 130,244,55,129,122,253,4,239,15,135,244,55,255,221,2,217,232,217,252,243, 212 2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252,243,252,233,
213 252,233,244,64,255,248,95,129,252,248,239,15,130,244,55,129,122,253,4,239, 213 244,65,248,95,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,
214 15,135,244,55,252,242,15,16,2,255,137,213,232,251,1,14,137,252,234,252,233, 214 56,255,221,2,217,232,217,252,243,252,233,244,65,255,248,96,129,252,248,239,
215 244,63,255,248,96,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135, 215 15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,255,137,213,
216 244,55,252,242,15,16,2,255,137,213,232,251,1,15,137,252,234,252,233,244,63, 216 232,251,1,15,137,252,234,252,233,244,64,255,248,97,129,252,248,239,15,130,
217 255,248,97,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55, 217 244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,255,137,213,232,251,
218 252,242,15,16,2,255,137,213,232,251,1,16,137,252,234,252,233,244,63,248,98, 218 1,16,137,252,234,252,233,244,64,255,248,98,129,252,248,239,15,130,244,56,
219 255,248,99,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55, 219 129,122,253,4,239,15,135,244,56,252,242,15,16,2,255,137,213,232,251,1,17,
220 252,242,15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,63,255, 220 137,252,234,252,233,244,64,248,99,255,248,100,129,252,248,239,15,130,244,
221 248,99,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221, 221 56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,139,106,252,248,252,242,
222 2,139,106,252,248,220,141,233,252,233,244,64,255,248,100,129,252,248,239, 222 15,89,133,233,252,233,244,64,255,248,100,129,252,248,239,15,130,244,56,129,
223 15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244, 223 122,253,4,239,15,135,244,56,221,2,139,106,252,248,220,141,233,252,233,244,
224 55,221,2,221,66,8,217,252,243,252,233,244,64,248,101,129,252,248,239,15,130, 224 65,255,248,101,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,
225 244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,255,15,135,244, 225 56,129,122,253,12,239,15,135,244,56,221,2,221,66,8,217,252,243,252,233,244,
226 55,221,66,8,221,2,217,252,253,221,217,252,233,244,64,248,102,129,252,248, 226 65,248,102,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,
227 239,15,130,244,55,139,106,4,129,252,253,239,15,135,244,55,139,90,252,252, 227 129,122,253,12,239,255,15,135,244,56,221,66,8,221,2,217,252,253,221,217,252,
228 139,2,137,106,252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,255, 228 233,244,65,248,103,129,252,248,239,15,130,244,56,139,106,4,129,252,253,239,
229 15,131,244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32, 229 15,135,244,56,139,90,252,252,139,2,137,106,252,252,137,66,252,248,209,229,
230 0,15,130,244,250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137, 230 129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,184,252,254,
231 44,36,219,4,36,255,139,106,252,252,129,229,252,255,252,255,15,128,129,205, 231 3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41,197,255,
232 0,0,224,63,137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,184,237, 232 252,242,15,42,197,255,137,44,36,219,4,36,255,139,106,252,252,129,229,252,
233 252,233,244,69,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,233, 233 255,252,255,15,128,129,205,0,0,224,63,137,106,252,252,248,2,255,252,242,15,
234 244,2,255,248,4,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252, 234 17,2,255,221,26,255,184,237,252,233,244,70,248,3,255,15,87,192,252,233,244,
235 242,15,89,193,252,242,15,17,66,252,248,255,221,2,199,4,36,0,0,128,90,216, 235 2,255,217,252,238,252,233,244,2,255,248,4,255,252,242,15,16,2,72,189,237,
236 12,36,221,90,252,248,255,139,106,252,252,184,52,4,0,0,209,229,252,233,244, 236 237,102,72,15,110,205,252,242,15,89,193,252,242,15,17,66,252,248,255,221,
237 1,255,248,103,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, 237 2,199,4,36,0,0,128,90,216,12,36,221,90,252,248,255,139,106,252,252,184,52,
238 55,252,242,15,16,2,255,248,103,129,252,248,239,15,130,244,55,129,122,253, 238 4,0,0,209,229,252,233,244,1,255,248,104,129,252,248,239,15,130,244,56,129,
239 4,239,15,135,244,55,221,2,255,139,106,4,139,90,252,252,209,229,129,252,253, 239 122,253,4,239,15,135,244,56,252,242,15,16,2,255,248,104,129,252,248,239,15,
240 0,0,224,252,255,15,132,244,250,255,15,40,224,232,244,104,252,242,15,92,224, 240 130,244,56,129,122,253,4,239,15,135,244,56,221,2,255,139,106,4,139,90,252,
241 248,1,252,242,15,17,66,252,248,252,242,15,17,34,255,217,192,232,244,104,220, 241 252,209,229,129,252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,
242 252,233,248,1,221,90,252,248,221,26,255,139,66,252,252,139,106,4,49,232,15, 242 244,105,252,242,15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,34,
243 136,244,249,248,2,184,237,252,233,244,69,248,3,129,252,245,0,0,0,128,137, 243 255,217,192,232,244,105,220,252,233,248,1,221,90,252,248,221,26,255,139,66,
244 106,4,252,233,244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217, 244 252,252,139,106,4,49,232,15,136,244,249,248,2,184,237,252,233,244,70,248,
245 201,252,233,244,1,255,248,105,129,252,248,239,15,130,244,55,129,122,253,4, 245 3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248,4,255,15,87,228,252,233,
246 239,15,135,244,55,129,122,253,12,239,15,135,244,55,221,66,8,221,2,248,1,217, 246 244,1,255,217,252,238,217,201,252,233,244,1,255,248,106,129,252,248,239,15,
247 252,248,223,224,158,15,138,244,1,221,217,252,233,244,64,255,248,106,129,252, 247 130,244,56,129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,
248 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239, 248 56,221,66,8,221,2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,
249 15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,232,244,107,252,233,244, 249 233,244,65,255,248,107,129,252,248,239,15,130,244,56,129,122,253,4,239,15,
250 63,255,248,106,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, 250 135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,242,15,16,
251 55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,232,244,107,252,233,244, 251 74,8,232,244,108,252,233,244,64,255,248,107,129,252,248,239,15,130,244,56,
252 64,255,248,108,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, 252 129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,221,2,221,
253 55,252,242,15,16,2,189,2,0,0,0,248,1,57,197,15,131,244,63,129,124,253,252, 253 66,8,232,244,108,252,233,244,65,255,248,109,129,252,248,239,15,130,244,56,
254 234,252,252,239,15,135,244,55,252,242,15,16,76,252,234,252,248,252,242,15, 254 129,122,253,4,239,15,135,244,56,252,242,15,16,2,189,2,0,0,0,248,1,57,197,
255 93,193,131,197,1,252,233,244,1,255,248,109,129,252,248,239,15,130,244,55, 255 15,131,244,64,129,124,253,252,234,252,252,239,15,135,244,56,252,242,15,16,
256 129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,2,0,0,0,248,1,57,197, 256 76,252,234,252,248,252,242,15,93,193,131,197,1,252,233,244,1,255,248,110,
257 15,131,244,63,129,124,253,252,234,252,252,239,15,135,244,55,252,242,15,16, 257 129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,
258 76,252,234,252,248,252,242,15,95,193,131,197,1,252,233,244,1,255,248,5,221, 258 16,2,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,234,252,252,239,
259 216,252,233,244,55,255,248,110,129,252,248,239,15,130,244,55,129,122,253, 259 15,135,244,56,252,242,15,16,76,252,234,252,248,252,242,15,95,193,131,197,
260 4,239,15,133,244,55,139,42,255,252,242,15,42,133,233,252,233,244,63,255,219, 260 1,252,233,244,1,255,248,5,221,216,252,233,244,56,255,248,111,129,252,248,
261 133,233,252,233,244,64,255,248,111,129,252,248,239,15,133,244,55,129,122, 261 239,15,130,244,56,129,122,253,4,239,15,133,244,56,139,42,255,252,242,15,42,
262 253,4,239,15,133,244,55,139,42,139,90,252,252,131,189,233,1,15,130,244,72, 262 133,233,252,233,244,64,255,219,133,233,252,233,244,65,255,248,112,129,252,
263 15,182,173,233,255,252,242,15,42,197,252,233,244,63,255,137,44,36,219,4,36, 263 248,239,15,133,244,56,129,122,253,4,239,15,133,244,56,139,42,139,90,252,252,
264 252,233,244,64,255,248,112,65,139,174,233,65,59,174,233,15,130,244,247,232, 264 131,189,233,1,15,130,244,73,15,182,173,233,255,252,242,15,42,197,252,233,
265 244,66,248,1,129,252,248,239,15,133,244,55,129,122,253,4,239,15,135,244,55, 265 244,64,255,137,44,36,219,4,36,252,233,244,65,255,248,113,65,139,174,233,65,
266 255,252,242,15,44,42,129,252,253,252,255,0,0,0,15,135,244,55,137,108,36,4, 266 59,174,233,15,130,244,247,232,244,67,248,1,129,252,248,239,15,133,244,56,
267 255,221,2,219,92,36,4,129,124,36,4,252,255,0,0,0,15,135,244,55,255,199,68, 267 129,122,253,4,239,15,135,244,56,255,252,242,15,44,42,129,252,253,252,255,
268 36,8,1,0,0,0,72,141,68,36,4,248,113,139,108,36,24,137,149,233,139,84,36,8, 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,
269 72,137,198,137,252,239,137,92,36,28,232,251,1,17,139,149,233,139,90,252,252, 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,
270 199,66,252,252,237,137,66,252,248,252,233,244,58,248,114,65,139,174,233,65, 270 36,24,137,149,233,139,84,36,8,72,137,198,137,252,239,137,92,36,28,232,251,
271 59,174,233,15,130,244,247,232,244,66,248,1,199,68,36,4,252,255,252,255,252, 271 1,18,139,149,233,139,90,252,252,199,66,252,252,237,137,66,252,248,252,233,
272 255,252,255,129,252,248,239,15,130,244,55,15,134,244,247,129,122,253,20,239, 272 244,59,248,115,65,139,174,233,65,59,174,233,15,130,244,247,232,244,67,248,
273 255,252,242,15,44,106,16,137,108,36,4,255,221,66,16,219,92,36,4,255,248,1, 273 1,199,68,36,4,252,255,252,255,252,255,252,255,129,252,248,239,15,130,244,
274 129,122,253,4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,42,137, 274 56,15,134,244,247,129,122,253,20,239,255,252,242,15,44,106,16,137,108,36,
275 108,36,8,139,173,233,255,252,242,15,44,74,8,255,139,68,36,4,57,197,15,130, 275 4,255,221,66,16,219,92,36,4,255,248,1,129,122,253,4,239,15,133,244,56,129,
276 244,251,248,2,133,201,15,142,244,253,248,3,139,108,36,8,41,200,15,140,244, 276 122,253,12,239,15,135,244,56,139,42,137,108,36,8,139,173,233,255,252,242,
277 115,141,172,253,13,233,131,192,1,248,4,137,68,36,8,137,232,252,233,244,113, 277 15,44,74,8,255,139,68,36,4,57,197,15,130,244,251,248,2,133,201,15,142,244,
278 248,5,15,140,244,252,141,68,40,1,252,233,244,2,248,6,137,232,252,233,244, 278 253,248,3,139,108,36,8,41,200,15,140,244,116,141,172,253,13,233,131,192,1,
279 2,248,7,255,15,132,244,254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0, 279 248,4,137,68,36,8,137,232,252,233,244,114,248,5,15,140,244,252,141,68,40,
280 0,0,252,233,244,3,248,115,49,192,252,233,244,4,248,116,129,252,248,239,15, 280 1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,
281 130,244,55,65,139,174,233,65,59,174,233,15,130,244,247,232,244,66,248,1,255, 281 233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,116,49,192,
282 129,122,253,4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,42,255, 282 252,233,244,4,248,117,129,252,248,239,15,130,244,56,65,139,174,233,65,59,
283 252,242,15,44,66,8,255,221,66,8,219,92,36,4,139,68,36,4,255,133,192,15,142, 283 174,233,15,130,244,247,232,244,67,248,1,255,129,122,253,4,239,15,133,244,
284 244,115,131,189,233,1,15,130,244,115,15,133,244,117,65,57,134,233,15,130, 284 56,129,122,253,12,239,15,135,244,56,139,42,255,252,242,15,44,66,8,255,221,
285 244,117,15,182,141,233,65,139,174,233,137,68,36,8,248,1,136,77,0,131,197, 285 66,8,219,92,36,4,139,68,36,4,255,133,192,15,142,244,116,131,189,233,1,15,
286 1,131,232,1,15,133,244,1,65,139,134,233,252,233,244,113,248,118,129,252,248, 286 130,244,116,15,133,244,118,65,57,134,233,15,130,244,118,15,182,141,233,65,
287 239,255,15,130,244,55,65,139,174,233,65,59,174,233,15,130,244,247,232,244, 287 139,174,233,137,68,36,8,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,65,
288 66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,133,192,15,132, 288 139,134,233,252,233,244,114,248,119,129,252,248,239,255,15,130,244,56,65,
289 244,115,65,57,134,233,15,130,244,119,129,197,239,137,92,36,4,137,68,36,8, 289 139,174,233,65,59,174,233,15,130,244,247,232,244,67,248,1,129,122,253,4,239,
290 65,139,158,233,248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,3,15,133, 290 15,133,244,56,139,42,139,133,233,133,192,15,132,244,116,65,57,134,233,15,
291 244,1,137,216,139,92,36,4,252,233,244,113,248,120,129,252,248,239,15,130, 291 130,244,120,129,197,239,137,92,36,4,137,68,36,8,65,139,158,233,248,1,255,
292 244,55,65,139,174,233,65,59,174,233,15,130,244,247,232,244,66,248,1,129,122, 292 15,182,77,0,131,197,1,131,232,1,136,12,3,15,133,244,1,137,216,139,92,36,4,
293 253,4,239,15,133,244,55,139,42,139,133,233,65,57,134,233,255,15,130,244,119, 293 252,233,244,114,248,121,129,252,248,239,15,130,244,56,65,139,174,233,65,59,
294 129,197,239,137,92,36,4,137,68,36,8,65,139,158,233,252,233,244,249,248,1, 294 174,233,15,130,244,247,232,244,67,248,1,129,122,253,4,239,15,133,244,56,139,
295 15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,90,15,135,244,248, 295 42,139,133,233,65,57,134,233,255,15,130,244,120,129,197,239,137,92,36,4,137,
296 131,252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,244,1,137,216,139,92, 296 68,36,8,65,139,158,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,
297 36,4,252,233,244,113,248,121,129,252,248,239,15,130,244,55,255,65,139,174, 297 15,130,244,248,131,252,249,90,15,135,244,248,131,252,241,32,248,2,136,12,
298 233,65,59,174,233,15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133, 298 3,248,3,131,232,1,15,137,244,1,137,216,139,92,36,4,252,233,244,114,248,122,
299 244,55,139,42,139,133,233,65,57,134,233,15,130,244,119,129,197,239,137,92, 299 129,252,248,239,15,130,244,56,255,65,139,174,233,65,59,174,233,15,130,244,
300 36,4,137,68,36,8,65,139,158,233,252,233,244,249,248,1,15,182,76,5,0,131,252, 300 247,232,244,67,248,1,129,122,253,4,239,15,133,244,56,139,42,139,133,233,65,
301 249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,252,241,32,248, 301 57,134,233,15,130,244,120,129,197,239,137,92,36,4,137,68,36,8,65,139,158,
302 2,136,12,3,248,3,131,232,1,15,137,244,1,137,216,139,92,36,4,252,233,244,113, 302 233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,
303 248,122,129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,137, 303 131,252,249,122,15,135,244,248,131,252,241,32,248,2,136,12,3,248,3,131,232,
304 213,139,58,232,251,1,18,137,252,234,255,252,242,15,42,192,252,233,244,63, 304 1,15,137,244,1,137,216,139,92,36,4,252,233,244,114,248,123,129,252,248,239,
305 255,248,123,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55, 305 15,130,244,56,129,122,253,4,239,15,133,244,56,137,213,139,58,232,251,1,19,
306 252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15, 306 137,252,234,255,252,242,15,42,192,252,233,244,64,255,248,124,129,252,248,
307 126,197,252,242,15,42,197,252,233,244,63,255,248,124,129,252,248,239,15,130, 307 239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72,189,
308 244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102, 308 237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,252,242,15,42,
309 72,15,110,205,252,242,15,88,193,102,15,126,197,255,137,68,36,4,141,68,194, 309 197,252,233,244,64,255,248,125,129,252,248,239,15,130,244,56,129,122,253,
310 252,240,248,1,57,208,15,134,244,125,129,120,253,4,239,15,135,244,126,255, 310 4,239,15,135,244,56,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,
311 252,242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,131,232,8,252, 311 242,15,88,193,102,15,126,197,255,137,68,36,4,141,68,194,252,240,248,1,57,
312 233,244,1,255,248,127,129,252,248,239,15,130,244,55,129,122,253,4,239,15, 312 208,15,134,244,126,129,120,253,4,239,15,135,244,127,255,252,242,15,16,0,252,
313 135,244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88, 313 242,15,88,193,102,15,126,193,33,205,255,131,232,8,252,233,244,1,255,248,128,
314 193,102,15,126,197,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,9, 314 129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,
315 205,255,248,128,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, 315 16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,
316 55,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102, 316 252,242,15,16,0,252,242,15,88,193,102,15,126,193,9,205,255,248,129,129,252,
317 15,126,197,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,205,255, 317 248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72,
318 248,129,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252, 318 189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,
319 242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126, 319 15,16,0,252,242,15,88,193,102,15,126,193,49,205,255,248,130,129,252,248,239,
320 197,255,15,205,252,233,244,125,255,248,130,129,252,248,239,15,130,244,55, 320 15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72,189,237,
321 129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72,15, 321 237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,15,205,252,233,
322 110,205,252,242,15,88,193,102,15,126,197,255,252,247,213,255,248,125,252, 322 244,126,255,248,131,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,
323 242,15,42,197,252,233,244,63,255,248,126,139,68,36,4,252,233,244,55,255,248, 323 244,56,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,
324 131,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122, 324 102,15,126,197,255,252,247,213,255,248,126,252,242,15,42,197,252,233,244,
325 253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237, 325 64,255,248,127,139,68,36,4,252,233,244,56,255,248,132,129,252,248,239,15,
326 102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126, 326 130,244,56,129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,
327 197,102,15,126,201,255,211,229,137,193,252,233,244,125,255,248,132,129,252, 327 56,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,
328 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,
329 15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,
330 110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,
331 126,201,255,211,252,237,137,193,252,233,244,125,255,248,133,129,252,248,239,
332 15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,
333 55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,
334 242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255, 328 242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,
335 211,252,253,137,193,252,233,244,125,255,248,134,129,252,248,239,15,130,244, 329 211,229,137,193,252,233,244,126,255,248,133,129,252,248,239,15,130,244,56,
336 55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242, 330 129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,
337 15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88, 331 15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,
338 194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,197,137, 332 194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,252,237,
339 193,252,233,244,125,255,248,135,129,252,248,239,15,130,244,55,129,122,253, 333 137,193,252,233,244,126,255,248,134,129,252,248,239,15,130,244,56,129,122,
340 4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252, 334 253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,
341 242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242, 335 252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,
342 15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,205,137,193,252,233, 336 242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,252,253,137,193,
343 244,125,248,117,184,237,252,233,244,55,248,119,184,237,248,55,139,108,36, 337 252,233,244,126,255,248,135,129,252,248,239,15,130,244,56,129,122,253,4,239,
344 24,139,90,252,252,137,92,36,28,137,149,233,141,68,194,252,248,141,136,233, 338 15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,242,15,
345 137,133,233,139,66,252,248,59,141,233,15,135,244,251,137,252,239,252,255, 339 16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,
346 144,233,139,149,233,133,192,15,143,244,69,248,1,255,139,141,233,41,209,193, 340 202,137,200,102,15,126,197,102,15,126,201,255,211,197,137,193,252,233,244,
347 252,233,3,133,192,141,65,1,139,106,252,248,15,133,244,248,139,157,233,139, 341 126,255,248,136,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,
348 11,15,182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,248,2,137,209, 342 56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,242,15,16,74,8,72,
349 252,247,195,237,15,133,244,249,15,182,107,252,253,72,252,247,213,141,20,252, 343 189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,
350 234,252,233,244,27,248,3,137,221,131,229,252,248,41,252,234,252,233,244,27, 344 102,15,126,197,102,15,126,201,255,211,205,137,193,252,233,244,126,248,118,
351 248,5,190,237,137,252,239,232,251,1,0,139,149,233,49,192,252,233,244,1,248, 345 184,237,252,233,244,56,248,120,184,237,248,56,139,108,36,24,139,90,252,252,
352 66,93,72,137,108,36,8,139,108,36,24,137,92,36,28,137,149,233,255,141,68,194, 346 137,92,36,28,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,66,
353 252,248,137,252,239,137,133,233,232,251,1,19,139,149,233,139,133,233,41,208, 347 252,248,59,141,233,15,135,244,251,137,252,239,252,255,144,233,139,149,233,
354 193,232,3,131,192,1,72,139,108,36,8,85,195,248,136,255,65,15,182,134,233, 348 133,192,15,143,244,70,248,1,255,139,141,233,41,209,193,252,233,3,133,192,
355 168,235,15,133,244,251,168,235,15,133,244,247,168,235,15,132,244,247,65,252, 349 141,65,1,139,106,252,248,15,133,244,248,139,157,233,139,11,15,182,252,233,
356 255,142,233,252,233,244,247,255,248,137,65,15,182,134,233,168,235,15,133, 350 15,182,205,131,195,4,65,252,255,36,252,238,248,2,137,209,252,247,195,237,
357 244,251,252,233,244,247,248,138,65,15,182,134,233,168,235,15,133,244,251, 351 15,133,244,249,15,182,107,252,253,72,252,247,213,141,20,252,234,252,233,244,
358 168,235,15,132,244,251,65,252,255,142,233,15,132,244,247,168,235,15,132,244, 352 27,248,3,137,221,131,229,252,248,41,252,234,252,233,244,27,248,5,190,237,
359 251,248,1,255,139,108,36,24,137,149,233,137,222,137,252,239,232,251,1,20, 353 137,252,239,232,251,1,0,139,149,233,49,192,252,233,244,1,248,67,93,72,137,
360 248,3,139,149,233,248,4,15,182,75,252,253,248,5,15,182,107,252,252,15,183, 354 108,36,8,139,108,36,24,137,92,36,28,137,149,233,255,141,68,194,252,248,137,
361 67,252,254,65,252,255,164,253,252,238,233,248,139,131,195,4,139,77,232,137, 355 252,239,137,133,233,232,251,1,20,139,149,233,139,133,233,41,208,193,232,3,
362 76,36,4,252,233,244,4,248,140,255,139,106,252,248,139,173,233,15,182,133, 356 131,192,1,72,139,108,36,8,85,195,248,137,255,65,15,182,134,233,168,235,15,
363 233,141,4,194,139,108,36,24,137,149,233,137,133,233,137,222,65,141,190,233, 357 133,244,251,168,235,15,133,244,247,168,235,15,132,244,247,65,252,255,142,
364 73,137,174,233,137,92,36,28,232,251,1,21,252,233,244,3,255,248,141,137,92, 358 233,252,233,244,247,255,248,138,65,15,182,134,233,168,235,15,133,244,251,
365 36,28,255,248,142,255,137,92,36,28,131,203,1,248,1,255,141,68,194,252,248, 359 252,233,244,247,248,139,65,15,182,134,233,168,235,15,133,244,251,168,235,
366 139,108,36,24,137,149,233,137,133,233,137,222,137,252,239,232,251,1,22,199, 360 15,132,244,251,65,252,255,142,233,15,132,244,247,168,235,15,132,244,251,248,
367 68,36,28,0,0,0,0,255,131,227,252,254,255,139,149,233,72,137,193,139,133,233, 361 1,255,139,108,36,24,137,149,233,137,222,137,252,239,232,251,1,21,248,3,139,
368 41,208,72,137,205,15,182,75,252,253,193,232,3,131,192,1,252,255,229,248,143, 362 149,233,248,4,15,182,75,252,253,248,5,15,182,107,252,252,15,183,67,252,254,
369 255,65,85,65,84,65,83,65,82,65,81,65,80,87,86,85,72,141,108,36,88,85,83,82, 363 65,252,255,164,253,252,238,233,248,140,131,195,4,139,77,232,137,76,36,4,252,
370 81,80,15,182,69,252,248,138,101,252,240,76,137,125,252,248,76,137,117,252, 364 233,244,4,248,141,255,139,106,252,248,139,173,233,15,182,133,233,141,4,194,
371 240,68,139,117,0,65,139,142,233,65,199,134,233,237,65,137,134,233,65,137, 365 139,108,36,24,137,149,233,137,133,233,137,222,65,141,190,233,73,137,174,233,
372 142,233,72,129,252,236,239,72,131,197,128,252,242,68,15,17,125,252,248,252, 366 137,92,36,28,232,251,1,22,252,233,244,3,255,248,142,137,92,36,28,255,248,
373 242,68,15,17,117,252,240,252,242,68,15,17,109,232,252,242,68,15,17,101,224, 367 143,255,137,92,36,28,131,203,1,248,1,255,141,68,194,252,248,139,108,36,24,
374 252,242,68,15,17,93,216,252,242,68,15,17,85,208,252,242,68,15,17,77,200,252, 368 137,149,233,137,133,233,137,222,137,252,239,232,251,1,23,199,68,36,28,0,0,
375 242,68,15,17,69,192,252,242,15,17,125,184,252,242,15,17,117,176,252,242,15, 369 0,0,255,131,227,252,254,255,139,149,233,72,137,193,139,133,233,41,208,72,
376 17,109,168,252,242,15,17,101,160,252,242,15,17,93,152,252,242,15,17,85,144, 370 137,205,15,182,75,252,253,193,232,3,131,192,1,252,255,229,248,144,255,65,
377 252,242,15,17,77,136,252,242,15,17,69,128,65,139,174,233,65,139,150,233,73, 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,
378 137,174,233,65,199,134,233,0,0,0,0,137,149,233,72,137,230,65,141,190,233, 372 15,182,69,252,248,138,101,252,240,76,137,125,252,248,76,137,117,252,240,68,
379 232,251,1,23,72,139,141,233,72,129,225,239,72,137,204,137,169,233,139,149, 373 139,117,0,65,139,142,233,65,199,134,233,237,65,137,134,233,65,137,142,233,
380 233,139,153,233,252,233,244,247,255,248,144,255,72,131,196,16,248,1,76,139, 374 72,129,252,236,239,72,131,197,128,252,242,68,15,17,125,252,248,252,242,68,
381 108,36,8,76,139,36,36,133,192,15,136,244,249,137,68,36,4,68,139,122,252,248, 375 15,17,117,252,240,252,242,68,15,17,109,232,252,242,68,15,17,101,224,252,242,
382 69,139,191,233,69,139,191,233,65,199,134,233,0,0,0,0,65,199,134,233,237,139, 376 68,15,17,93,216,252,242,68,15,17,85,208,252,242,68,15,17,77,200,252,242,68,
383 3,15,182,204,15,182,232,131,195,4,193,232,16,129,252,253,239,15,130,244,248, 377 15,17,69,192,252,242,15,17,125,184,252,242,15,17,117,176,252,242,15,17,109,
384 139,68,36,4,248,2,65,252,255,36,252,238,248,3,252,247,216,137,252,239,137, 378 168,252,242,15,17,101,160,252,242,15,17,93,152,252,242,15,17,85,144,252,242,
385 198,232,251,1,24,255,248,82,255,217,124,36,4,137,68,36,8,102,184,0,4,102, 379 15,17,77,136,252,242,15,17,69,128,65,139,174,233,65,139,150,233,73,137,174,
386 11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252, 380 233,65,199,134,233,0,0,0,0,137,149,233,72,137,230,65,141,190,233,232,251,
387 217,108,36,4,139,68,36,8,195,255,248,145,72,184,237,237,102,72,15,110,208, 381 1,24,72,139,141,233,72,129,225,239,72,137,204,137,169,233,139,149,233,139,
388 72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15, 382 153,233,252,233,244,247,255,248,145,255,72,131,196,16,248,1,76,139,108,36,
389 134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202, 383 8,76,139,36,36,133,192,15,136,244,249,137,68,36,4,68,139,122,252,248,69,139,
390 72,184,237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242, 384 191,233,69,139,191,233,65,199,134,233,0,0,0,0,65,199,134,233,237,139,3,15,
391 15,92,200,15,40,193,248,1,195,248,84,255,217,124,36,4,137,68,36,8,102,184, 385 182,204,15,182,232,131,195,4,193,232,16,129,252,253,239,15,130,244,248,139,
386 68,36,4,248,2,65,252,255,36,252,238,248,3,252,247,216,137,252,239,137,198,
387 232,251,1,25,255,248,83,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,
388 36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,
389 108,36,4,139,68,36,8,195,255,248,146,72,184,237,237,102,72,15,110,208,72,
390 184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,
391 244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,
392 184,237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,
393 15,92,200,15,40,193,248,1,195,248,85,255,217,124,36,4,137,68,36,8,102,184,
392 0,8,102,11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217, 394 0,8,102,11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,
393 252,252,217,108,36,4,139,68,36,8,195,255,248,146,72,184,237,237,102,72,15, 395 252,252,217,108,36,4,139,68,36,8,195,255,248,147,72,184,237,237,102,72,15,
394 110,208,72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46, 396 110,208,72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,
395 217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102, 397 217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,
396 15,86,202,72,184,237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84, 398 15,86,202,72,184,237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84,
397 194,252,242,15,92,200,15,40,193,248,1,195,248,104,255,217,124,36,4,137,68, 399 194,252,242,15,92,200,15,40,193,248,1,195,248,105,255,217,124,36,4,137,68,
398 36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252, 400 36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,
399 217,108,36,4,139,68,36,8,195,255,248,147,72,184,237,237,102,72,15,110,208, 401 217,108,36,4,139,68,36,8,195,255,248,148,72,184,237,237,102,72,15,110,208,
400 72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15, 402 72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,
401 134,244,247,102,15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72, 403 134,244,247,102,15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,
402 184,237,237,102,72,15,110,216,252,242,15,194,193,1,102,15,84,195,252,242, 404 184,237,237,102,72,15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,
403 15,92,200,102,15,86,202,15,40,193,248,1,195,248,148,255,15,40,232,252,242, 405 15,92,200,102,15,86,202,15,40,193,248,1,195,248,149,255,15,40,232,252,242,
404 15,94,193,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216, 406 15,94,193,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,
405 15,40,224,102,15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242, 407 15,40,224,102,15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,
406 15,88,227,252,242,15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208, 408 15,88,227,252,242,15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,
@@ -408,12 +410,12 @@ static const unsigned char build_actionlist[14438] = {
408 89,204,252,242,15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15, 410 89,204,252,242,15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,
409 92,193,195,255,217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36, 411 92,193,195,255,217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,
410 4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108, 412 4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,
411 36,4,222,201,222,252,233,195,255,248,88,217,252,234,222,201,248,149,217,84, 413 36,4,222,201,222,252,233,195,255,248,89,217,252,234,222,201,248,150,217,84,
412 36,252,248,129,124,36,252,248,0,0,128,127,15,132,244,247,129,124,36,252,248, 414 36,252,248,129,124,36,252,248,0,0,128,127,15,132,244,247,129,124,36,252,248,
413 0,0,128,252,255,15,132,244,248,248,150,217,192,217,252,252,220,252,233,217, 415 0,0,128,252,255,15,132,244,248,248,151,217,192,217,252,252,220,252,233,217,
414 201,217,252,240,217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216, 416 201,217,252,240,217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,
415 217,252,238,195,255,248,107,255,248,151,252,242,15,45,193,252,242,15,42,208, 417 217,252,238,195,255,248,108,255,248,152,252,242,15,45,193,252,242,15,42,208,
416 102,15,46,202,15,133,244,254,15,138,244,255,248,152,131,252,248,1,15,142, 418 102,15,46,202,15,133,244,254,15,138,244,255,248,153,131,252,248,1,15,142,
417 244,252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233, 419 244,252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,
418 244,1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209, 420 244,1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,
419 232,15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4, 421 232,15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,
@@ -431,27 +433,27 @@ static const unsigned char build_actionlist[14438] = {
431 208,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,136,196,15,146,208, 433 208,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,136,196,15,146,208,
432 48,224,15,133,244,1,248,3,72,184,237,237,255,102,72,15,110,192,195,248,4, 434 48,224,15,133,244,1,248,3,72,184,237,237,255,102,72,15,110,192,195,248,4,
433 102,15,80,193,133,192,15,133,244,3,15,87,192,195,248,5,102,15,80,193,133, 435 102,15,80,193,133,192,15,133,244,3,15,87,192,195,248,5,102,15,80,193,133,
434 192,15,132,244,3,15,87,192,195,248,153,255,131,252,255,1,15,130,244,82,15, 436 192,15,132,244,3,15,87,192,195,248,154,255,131,252,255,1,15,130,244,83,15,
435 132,244,84,131,252,255,3,15,130,244,104,15,135,244,248,252,242,15,81,192, 437 132,244,85,131,252,255,3,15,130,244,105,15,135,244,248,252,242,15,81,192,
436 195,248,2,252,242,15,17,68,36,252,248,221,68,36,252,248,131,252,255,5,15, 438 195,248,2,252,242,15,17,68,36,252,248,221,68,36,252,248,131,252,255,5,15,
437 135,244,248,15,132,244,247,232,244,88,252,233,244,253,248,1,232,244,149,255, 439 135,244,248,15,132,244,247,232,244,89,252,233,244,253,248,1,232,244,150,255,
438 252,233,244,253,248,2,131,252,255,7,15,132,244,247,15,135,244,248,217,252, 440 252,233,244,253,248,2,131,252,255,7,15,132,244,247,15,135,244,248,217,252,
439 237,217,201,217,252,241,252,233,244,253,248,1,217,232,217,201,217,252,241, 441 237,217,201,217,252,241,252,233,244,253,248,1,217,232,217,201,217,252,241,
440 252,233,244,253,248,2,131,252,255,9,15,132,244,247,15,135,244,248,217,252, 442 252,233,244,253,248,2,131,252,255,9,15,132,244,247,15,135,244,248,217,252,
441 236,217,201,217,252,241,252,233,244,253,248,1,255,217,252,254,252,233,244, 443 236,217,201,217,252,241,252,233,244,253,248,1,255,217,252,254,252,233,244,
442 253,248,2,131,252,255,11,15,132,244,247,15,135,244,255,217,252,255,252,233, 444 253,248,2,131,252,255,11,15,132,244,247,15,135,244,255,217,252,255,252,233,
443 244,253,248,1,217,252,242,221,216,248,7,221,92,36,252,248,252,242,15,16,68, 445 244,253,248,1,217,252,242,221,216,248,7,221,92,36,252,248,252,242,15,16,68,
444 36,252,248,195,255,139,124,36,12,221,68,36,4,131,252,255,1,15,130,244,82, 446 36,252,248,195,255,139,124,36,12,221,68,36,4,131,252,255,1,15,130,244,83,
445 15,132,244,84,131,252,255,3,15,130,244,104,15,135,244,248,217,252,250,195, 447 15,132,244,85,131,252,255,3,15,130,244,105,15,135,244,248,217,252,250,195,
446 248,2,131,252,255,5,15,130,244,88,15,132,244,149,131,252,255,7,15,132,244, 448 248,2,131,252,255,5,15,130,244,89,15,132,244,150,131,252,255,7,15,132,244,
447 247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232,217, 449 247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232,217,
448 201,217,252,241,195,248,2,131,252,255,9,15,132,244,247,255,15,135,244,248, 450 201,217,252,241,195,248,2,131,252,255,9,15,132,244,247,255,15,135,244,248,
449 217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,255, 451 217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,255,
450 11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,216, 452 11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,216,
451 195,255,248,9,204,255,248,154,255,131,252,255,1,15,132,244,247,15,135,244, 453 195,255,248,9,204,255,248,155,255,131,252,255,1,15,132,244,247,15,135,244,
452 248,252,242,15,88,193,195,248,1,252,242,15,92,193,195,248,2,131,252,255,3, 454 248,252,242,15,88,193,195,248,1,252,242,15,92,193,195,248,2,131,252,255,3,
453 15,132,244,247,15,135,244,248,252,242,15,89,193,195,248,1,252,242,15,94,193, 455 15,132,244,247,15,135,244,248,252,242,15,89,193,195,248,1,252,242,15,94,193,
454 195,248,2,131,252,255,5,15,130,244,148,15,132,244,107,131,252,255,7,15,132, 456 195,248,2,131,252,255,5,15,130,244,149,15,132,244,108,131,252,255,7,15,132,
455 244,247,15,135,244,248,72,184,237,237,255,102,72,15,110,200,15,87,193,195, 457 244,247,15,135,244,248,72,184,237,237,255,102,72,15,110,200,15,87,193,195,
456 248,1,72,184,237,237,102,72,15,110,200,15,84,193,195,248,2,131,252,255,9, 458 248,1,72,184,237,237,102,72,15,110,200,15,84,193,195,248,2,131,252,255,9,
457 15,135,244,248,252,242,15,17,68,36,252,248,252,242,15,17,76,36,252,240,221, 459 15,135,244,248,252,242,15,17,68,36,252,248,252,242,15,17,76,36,252,240,221,
@@ -461,15 +463,15 @@ static const unsigned char build_actionlist[14438] = {
461 15,93,193,195,248,1,252,242,15,95,193,195,248,9,204,255,139,68,36,20,221, 463 15,93,193,195,248,1,252,242,15,95,193,195,248,9,204,255,139,68,36,20,221,
462 68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193, 464 68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193,
463 195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248, 465 195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248,
464 222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,148,15,132, 466 222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,149,15,132,
465 244,107,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195, 467 244,108,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,
466 248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248, 468 248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,
467 217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11, 469 217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,
468 15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219, 470 15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,
469 252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244, 471 252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,
470 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133, 472 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,
471 244,248,217,201,248,2,221,216,195,255,248,155,137,252,248,83,15,162,137,6, 473 244,248,217,201,248,2,221,216,195,255,248,156,137,252,248,83,15,162,137,6,
472 137,94,4,137,78,8,137,86,12,91,195,248,156,255,85,72,137,229,83,72,137,252, 474 137,94,4,137,78,8,137,86,12,91,195,248,157,255,85,72,137,229,83,72,137,252,
473 251,139,131,233,72,41,196,255,15,182,139,233,131,252,233,1,15,136,244,248, 475 251,139,131,233,72,41,196,255,15,182,139,233,131,252,233,1,15,136,244,248,
474 248,1,72,139,132,253,203,233,72,137,132,253,204,233,131,252,233,1,15,137, 476 248,1,72,139,132,253,203,233,72,137,132,253,204,233,131,252,233,1,15,137,
475 244,1,248,2,15,182,131,233,72,139,187,233,72,139,179,233,72,139,147,233,72, 477 244,1,248,2,15,182,131,233,72,139,187,233,72,139,179,233,72,139,147,233,72,
@@ -477,116 +479,123 @@ static const unsigned char build_actionlist[14438] = {
477 233,15,40,139,233,255,15,40,147,233,15,40,155,233,131,252,248,4,15,134,244, 479 233,15,40,139,233,255,15,40,147,233,15,40,155,233,131,252,248,4,15,134,244,
478 251,15,40,163,233,15,40,171,233,15,40,179,233,15,40,187,233,248,5,252,255, 480 251,15,40,163,233,15,40,171,233,15,40,179,233,15,40,187,233,248,5,252,255,
479 147,233,72,137,131,233,15,41,131,233,72,137,147,233,15,41,139,233,255,72, 481 147,233,72,137,131,233,15,41,131,233,72,137,147,233,15,41,139,233,255,72,
480 139,93,252,248,201,195,255,129,124,253,202,4,239,15,135,244,41,129,124,253, 482 139,93,252,248,201,195,255,249,255,129,124,253,202,4,239,15,135,244,41,129,
481 194,4,239,15,135,244,41,255,252,242,15,16,4,194,131,195,4,102,15,46,4,202, 483 124,253,194,4,239,15,135,244,41,255,252,242,15,16,4,194,131,195,4,102,15,
482 255,221,4,202,221,4,194,131,195,4,255,223,252,233,221,216,255,218,252,233, 484 46,4,202,255,221,4,202,221,4,194,131,195,4,255,223,252,233,221,216,255,218,
483 223,224,158,255,15,134,244,248,255,15,131,244,248,255,248,1,15,183,67,252, 485 252,233,223,224,158,255,15,134,244,248,255,15,131,244,248,255,248,1,15,183,
484 254,141,156,253,131,233,248,2,139,3,15,182,204,15,182,232,131,195,4,193,232, 486 67,252,254,141,156,253,131,233,248,2,139,3,15,182,204,15,182,232,131,195,
485 16,65,252,255,36,252,238,255,139,108,194,4,131,195,4,129,252,253,239,15,135, 487 4,193,232,16,65,252,255,36,252,238,255,139,108,194,4,131,195,4,129,252,253,
486 244,251,129,124,253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102, 488 239,15,135,244,251,129,124,253,202,4,239,15,135,244,251,255,252,242,15,16,
487 15,46,4,202,255,221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255, 489 4,194,102,15,46,4,202,255,221,4,202,221,4,194,255,15,138,244,248,15,133,244,
488 15,138,244,248,15,132,244,247,255,248,1,15,183,67,252,254,141,156,253,131, 490 248,255,15,138,244,248,15,132,244,247,255,248,1,15,183,67,252,254,141,156,
489 233,248,2,255,248,2,15,183,67,252,254,141,156,253,131,233,248,1,255,248,5, 491 253,131,233,248,2,255,248,2,15,183,67,252,254,141,156,253,131,233,248,1,255,
490 57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194, 492 248,5,255,129,252,253,239,15,132,244,46,129,124,253,202,4,239,15,132,244,
491 57,193,15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237, 493 46,255,57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,
492 15,132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0, 494 139,4,194,57,193,15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,
493 0,0,255,252,233,244,45,255,72,252,247,208,131,195,4,129,124,253,202,4,239, 495 252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,
494 15,133,244,248,139,12,202,65,59,12,135,255,131,195,4,129,124,253,202,4,239, 496 189,1,0,0,0,255,252,233,244,45,255,248,3,129,252,253,239,15,133,244,2,252,
495 15,135,244,248,255,252,242,65,15,16,4,199,102,15,46,4,202,255,221,4,202,65, 497 233,244,46,255,72,252,247,208,139,108,202,4,131,195,4,129,252,253,239,15,
496 221,4,199,255,72,252,247,208,131,195,4,57,68,202,4,255,139,108,194,4,131, 498 133,244,249,139,12,202,65,59,12,135,255,139,108,202,4,131,195,4,129,252,253,
497 195,4,129,252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,108,202, 499 239,15,135,244,249,255,252,242,65,15,16,4,199,102,15,46,4,202,255,221,4,202,
498 4,139,44,194,137,44,202,255,15,183,67,252,254,141,156,253,131,233,248,1,139, 500 65,221,4,199,255,72,252,247,208,139,108,202,4,131,195,4,57,197,255,15,133,
499 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72, 501 244,249,15,183,67,252,254,141,156,253,131,233,248,2,139,3,15,182,204,15,182,
500 139,44,194,72,137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16, 502 232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,129,252,253,239,15,133,
501 65,252,255,36,252,238,255,49,252,237,129,124,253,194,4,239,129,213,239,137, 503 244,2,252,233,244,46,255,15,132,244,248,129,252,253,239,15,132,244,46,15,
502 108,202,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, 504 183,67,252,254,141,156,253,131,233,248,2,139,3,15,182,204,15,182,232,131,
503 252,238,255,129,124,253,194,4,239,15,135,244,48,255,252,242,15,16,4,194,72, 505 195,4,193,232,16,65,252,255,36,252,238,255,139,108,194,4,131,195,4,129,252,
504 184,237,237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194, 506 253,239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,
505 217,224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255, 507 137,44,202,255,15,183,67,252,254,141,156,253,131,233,248,1,139,3,15,182,204,
506 15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233, 508 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,139,44,194,72,
507 248,1,221,28,202,255,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65, 509 137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
508 252,255,36,252,238,248,2,129,124,253,194,4,239,15,133,244,50,139,60,194,137, 510 252,238,255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,
509 213,232,251,1,18,255,252,242,15,42,192,137,252,234,255,15,182,75,252,253, 511 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,129,
510 252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239, 512 124,253,194,4,239,15,135,244,49,255,252,242,15,16,4,194,72,184,237,237,102,
511 15,135,244,46,255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,221, 513 72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,
512 4,252,234,65,220,4,199,255,129,124,253,252,234,4,239,15,135,244,47,255,252, 514 202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,
513 242,65,15,16,4,199,252,242,15,88,4,252,234,255,65,221,4,199,220,4,252,234, 515 242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,
514 255,129,124,253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15,135, 516 202,255,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
515 244,49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234, 517 238,248,2,129,124,253,194,4,239,15,133,244,51,139,60,194,137,213,232,251,
516 220,4,194,255,252,242,15,16,4,252,234,252,242,65,15,92,4,199,255,221,4,252, 518 1,19,255,252,242,15,42,192,137,252,234,255,15,182,75,252,253,252,233,244,
517 234,65,220,36,199,255,252,242,65,15,16,4,199,252,242,15,92,4,252,234,255, 519 1,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244,
518 65,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194, 520 47,255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,221,4,252,234,65,
519 255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,65,15,89, 521 220,4,199,255,129,124,253,252,234,4,239,15,135,244,48,255,252,242,65,15,16,
520 4,199,255,221,4,252,234,65,220,12,199,255,252,242,65,15,16,4,199,252,242, 522 4,199,252,242,15,88,4,252,234,255,65,221,4,199,220,4,252,234,255,129,124,
521 15,89,4,252,234,255,65,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234, 523 253,252,234,4,239,15,135,244,50,129,124,253,194,4,239,15,135,244,50,255,252,
522 252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252, 524 242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252,
523 234,252,242,65,15,94,4,199,255,221,4,252,234,65,220,52,199,255,252,242,65, 525 242,15,16,4,252,234,252,242,65,15,92,4,199,255,221,4,252,234,65,220,36,199,
524 15,16,4,199,252,242,15,94,4,252,234,255,65,221,4,199,220,52,252,234,255,252, 526 255,252,242,65,15,16,4,199,252,242,15,92,4,252,234,255,65,221,4,199,220,36,
525 242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255, 527 252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,4,252,234,
526 252,242,15,16,4,252,234,252,242,65,15,16,12,199,255,221,4,252,234,65,221, 528 220,36,194,255,252,242,15,16,4,252,234,252,242,65,15,89,4,199,255,221,4,252,
527 4,199,255,252,242,65,15,16,4,199,252,242,15,16,12,252,234,255,65,221,4,199, 529 234,65,220,12,199,255,252,242,65,15,16,4,199,252,242,15,89,4,252,234,255,
528 221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4, 530 65,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,
529 252,234,221,4,194,255,248,157,232,244,148,255,252,233,244,157,255,232,244, 531 255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,65,15,94,
530 107,255,15,182,252,236,15,182,192,139,124,36,24,137,151,233,141,52,194,137, 532 4,199,255,221,4,252,234,65,220,52,199,255,252,242,65,15,16,4,199,252,242,
531 194,41,252,234,248,33,137,252,253,137,92,36,28,232,251,1,25,139,149,233,133, 533 15,94,4,252,234,255,65,221,4,199,220,52,252,234,255,252,242,15,16,4,252,234,
532 192,15,133,244,42,15,182,107,252,255,15,182,75,252,253,72,139,4,252,234,72, 534 252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,252,
533 137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, 535 234,252,242,65,15,16,12,199,255,221,4,252,234,65,221,4,199,255,252,242,65,
534 252,238,255,72,252,247,208,65,139,4,135,199,68,202,4,237,137,4,202,139,3, 536 15,16,4,199,252,242,15,16,12,252,234,255,65,221,4,199,221,4,252,234,255,252,
535 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,15,191, 537 242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,
536 192,252,242,15,42,192,252,242,15,17,4,202,255,223,67,252,254,221,28,202,255, 538 248,158,232,244,149,255,252,233,244,158,255,232,244,108,255,15,182,252,236,
537 252,242,65,15,16,4,199,252,242,15,17,4,202,255,65,221,4,199,221,28,202,255, 539 15,182,192,139,124,36,24,137,151,233,141,52,194,137,194,41,252,234,248,33,
538 72,252,247,208,137,68,202,4,139,3,15,182,204,15,182,232,131,195,4,193,232, 540 137,252,253,137,92,36,28,232,251,1,26,139,149,233,133,192,15,133,244,42,15,
539 16,65,252,255,36,252,238,255,141,76,202,12,141,68,194,4,189,237,137,105,252, 541 182,107,252,255,15,182,75,252,253,72,139,4,252,234,72,137,4,202,139,3,15,
540 248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,3,15,182,204,15,182,232, 542 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,
541 131,195,4,193,232,16,65,252,255,36,252,238,255,139,106,252,248,139,172,253, 543 247,208,65,139,4,135,199,68,202,4,237,137,4,202,139,3,15,182,204,15,182,232,
542 133,233,139,173,233,72,139,69,0,72,137,4,202,139,3,15,182,204,15,182,232, 544 131,195,4,193,232,16,65,252,255,36,252,238,255,15,191,192,252,242,15,42,192,
543 131,195,4,193,232,16,65,252,255,36,252,238,255,139,106,252,248,139,172,253, 545 252,242,15,17,4,202,255,223,67,252,254,221,28,202,255,252,242,65,15,16,4,
544 141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69, 546 199,252,242,15,17,4,202,255,65,221,4,199,221,28,202,255,72,252,247,208,137,
545 4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,204, 547 68,202,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
546 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,129,232,239,129, 548 238,255,141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,
547 252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,137,252,238,137, 549 193,8,57,193,15,134,244,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,
548 213,65,141,190,233,255,232,251,1,26,137,252,234,252,233,244,1,255,72,252, 550 65,252,255,36,252,238,255,139,106,252,248,139,172,253,133,233,139,173,233,
549 247,208,139,106,252,248,139,172,253,141,233,65,139,12,135,139,133,233,137, 551 72,139,69,0,72,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,
550 8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,204, 552 65,252,255,36,252,238,255,139,106,252,248,139,172,253,141,233,128,189,233,
551 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,252,246,129,233, 553 0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,
552 235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,198,65,141,190,233, 554 246,133,233,235,15,133,244,248,248,1,139,3,15,182,204,15,182,232,131,195,
553 232,251,1,26,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,65, 555 4,193,232,16,65,252,255,36,252,238,248,2,129,232,239,129,252,248,239,15,134,
554 15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221, 556 244,1,252,246,129,233,235,15,132,244,1,137,252,238,137,213,65,141,190,233,
555 25,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137, 557 255,232,251,1,27,137,252,234,252,233,244,1,255,72,252,247,208,139,106,252,
556 65,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238, 558 248,139,172,253,141,233,65,139,12,135,139,133,233,137,8,199,64,4,237,252,
557 255,141,156,253,131,233,139,108,36,24,131,189,233,0,15,132,244,247,137,149, 559 246,133,233,235,15,133,244,248,248,1,139,3,15,182,204,15,182,232,131,195,
558 233,141,52,202,137,252,239,232,251,1,27,139,149,233,248,1,139,3,15,182,204, 560 4,193,232,16,65,252,255,36,252,238,248,2,252,246,129,233,235,15,132,244,1,
559 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208, 561 128,189,233,0,15,132,244,1,137,213,137,198,65,141,190,233,232,251,1,27,137,
560 139,108,36,24,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137,92, 562 252,234,252,233,244,1,255,139,106,252,248,255,252,242,65,15,16,4,199,255,
561 36,28,232,251,1,28,139,149,233,15,182,75,252,253,137,4,202,199,68,202,4,237, 563 139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,25,255,72,252,
562 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255, 564 247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,65,4,139,3,15,
563 139,108,36,24,137,149,233,65,139,142,233,65,59,142,233,137,92,36,28,15,131, 565 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,141,156,
564 244,251,248,1,137,194,37,252,255,7,0,0,193,252,234,11,61,252,255,7,0,0,15, 566 253,131,233,139,108,36,24,131,189,233,0,15,132,244,247,137,149,233,141,52,
565 132,244,249,248,2,137,252,239,137,198,232,251,1,29,139,149,233,15,182,75, 567 202,137,252,239,232,251,1,28,139,149,233,248,1,139,3,15,182,204,15,182,232,
566 252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4, 568 131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,139,108,36,
567 193,232,16,65,252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248,5,137, 569 24,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137,92,36,28,232,
568 252,239,232,251,1,30,15,183,67,252,254,252,233,244,1,255,72,252,247,208,139, 570 251,1,29,139,149,233,15,182,75,252,253,137,4,202,199,68,202,4,237,139,3,15,
569 108,36,24,65,139,142,233,137,92,36,28,65,59,142,233,137,149,233,15,131,244, 571 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,108,
570 249,248,2,65,139,52,135,137,252,239,232,251,1,31,139,149,233,15,182,75,252, 572 36,24,137,149,233,65,139,142,233,65,59,142,233,137,92,36,28,15,131,244,251,
571 253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193, 573 248,1,137,194,37,252,255,7,0,0,193,252,234,11,61,252,255,7,0,0,15,132,244,
572 232,16,65,252,255,36,252,238,248,3,137,252,239,232,251,1,30,15,183,67,252, 574 249,248,2,137,252,239,137,198,232,251,1,30,139,149,233,15,182,75,252,253,
573 254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,139,173, 575 137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,
574 233,65,139,4,135,252,233,244,158,255,72,252,247,208,139,106,252,248,139,173, 576 16,65,252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,239,
575 233,65,139,4,135,252,233,244,159,255,15,182,252,236,15,182,192,129,124,253, 577 232,251,1,31,15,183,67,252,254,252,233,244,1,255,72,252,247,208,139,108,36,
576 252,234,4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,244, 578 24,65,139,142,233,137,92,36,28,65,59,142,233,137,149,233,15,131,244,249,248,
577 251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46, 579 2,65,139,52,135,137,252,239,232,251,1,32,139,149,233,15,182,75,252,253,137,
578 193,255,15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120, 580 4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
579 253,4,239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,3,15,182,204,15, 581 252,255,36,252,238,248,3,137,252,239,232,251,1,31,15,183,67,252,254,72,252,
580 182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,0,15, 582 247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,139,173,233,65,139,
581 132,244,249,139,141,233,252,246,129,233,235,15,132,244,36,15,182,75,252,253, 583 4,135,252,233,244,159,255,72,252,247,208,139,106,252,248,139,173,233,65,139,
582 248,3,255,199,68,202,4,237,252,233,244,1,248,5,129,124,253,194,4,239,15,133, 584 4,135,252,233,244,160,255,15,182,252,236,15,182,192,129,124,253,252,234,4,
583 244,36,139,4,194,252,233,244,158,255,15,182,252,236,15,182,192,72,252,247, 585 239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,
584 208,65,139,4,135,129,124,253,252,234,4,239,15,133,244,34,139,44,252,234,248, 586 252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255,
585 158,139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15, 587 15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4,
586 133,244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15, 588 239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,3,15,182,204,15,182,
587 182,67,252,253,72,139,41,72,137,44,194,248,2,255,139,3,15,182,204,15,182, 589 232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,0,15,132,
588 232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182,67,252,253,199, 590 244,249,139,141,233,252,246,129,233,235,15,132,244,36,15,182,75,252,253,248,
589 68,194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139, 591 3,255,199,68,202,4,237,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,
592 36,139,4,194,252,233,244,159,255,15,182,252,236,15,182,192,72,252,247,208,
593 65,139,4,135,129,124,253,252,234,4,239,15,133,244,34,139,44,252,234,248,159,
594 139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,
595 244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,
596 67,252,253,72,139,41,72,137,44,194,248,2,255,139,3,15,182,204,15,182,232,
597 131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182,67,252,253,199,68,
598 194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,
590 141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244, 599 141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,
591 34,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,35, 600 34,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,35,
592 139,44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,233,129,120,253,4, 601 139,44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,233,129,120,253,4,
@@ -600,10 +609,10 @@ static const unsigned char build_actionlist[14438] = {
600 2,72,139,44,202,72,137,40,139,3,15,182,204,15,182,232,131,195,4,193,232,16, 609 2,72,139,44,202,72,137,40,139,3,15,182,204,15,182,232,131,195,4,193,232,16,
601 65,252,255,36,252,238,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252, 610 65,252,255,36,252,238,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,
602 246,129,233,235,15,132,244,39,15,182,75,252,253,252,233,244,1,248,5,129,124, 611 246,129,233,235,15,132,244,39,15,182,75,252,253,252,233,244,1,248,5,129,124,
603 253,194,4,239,15,133,244,39,139,4,194,252,233,244,159,248,7,128,165,233,235, 612 253,194,4,239,15,133,244,39,139,4,194,252,233,244,160,248,7,128,165,233,235,
604 65,139,142,233,65,137,174,233,137,141,233,15,182,75,252,253,252,233,244,2, 613 65,139,142,233,65,137,174,233,137,141,233,15,182,75,252,253,252,233,244,2,
605 255,15,182,252,236,15,182,192,72,252,247,208,65,139,4,135,129,124,253,252, 614 255,15,182,252,236,15,182,192,72,252,247,208,65,139,4,135,129,124,253,252,
606 234,4,239,15,133,244,37,139,44,252,234,248,159,139,141,233,35,136,233,105, 615 234,4,239,15,133,244,37,139,44,252,234,248,160,139,141,233,35,136,233,105,
607 201,239,198,133,233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129, 616 201,239,198,133,233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,
608 233,15,133,244,251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133, 617 233,15,133,244,251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,
609 233,235,15,133,244,253,248,3,15,182,67,252,253,72,139,44,194,72,137,41,139, 618 233,235,15,133,244,253,248,3,15,182,67,252,253,72,139,44,194,72,137,41,139,
@@ -612,7 +621,7 @@ static const unsigned char build_actionlist[14438] = {
612 244,37,139,12,36,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255, 621 244,37,139,12,36,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,
613 139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,248, 622 139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,
614 6,137,4,36,199,68,36,4,237,137,108,36,8,139,124,36,24,137,151,233,72,141, 623 6,137,4,36,199,68,36,4,237,137,108,36,8,139,124,36,24,137,151,233,72,141,
615 20,36,137,252,238,137,252,253,137,92,36,28,232,251,1,32,139,149,233,139,108, 624 20,36,137,252,238,137,252,253,137,92,36,28,232,251,1,33,139,149,233,139,108,
616 36,8,137,193,252,233,244,2,248,7,128,165,233,235,65,139,134,233,65,137,174, 625 36,8,137,193,252,233,244,2,248,7,128,165,233,235,65,139,134,233,65,137,174,
617 233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252, 626 233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,
618 234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3, 627 234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,
@@ -627,12 +636,12 @@ static const unsigned char build_actionlist[14438] = {
627 193,231,3,68,3,189,233,248,3,72,139,41,131,193,8,73,137,47,65,131,199,8,131, 636 193,231,3,68,3,189,233,248,3,72,139,41,131,193,8,73,137,47,65,131,199,8,131,
628 232,1,15,133,244,3,248,4,68,139,60,36,139,3,15,182,204,15,182,232,131,195, 637 232,1,15,133,244,3,248,4,68,139,60,36,139,3,15,182,204,15,182,232,131,195,
629 4,193,232,16,65,252,255,36,252,238,248,5,139,124,36,24,137,151,233,137,252, 638 4,193,232,16,65,252,255,36,252,238,248,5,139,124,36,24,137,151,233,137,252,
630 238,137,194,137,252,253,137,92,36,28,232,251,1,33,139,149,233,15,182,75,252, 639 238,137,194,137,252,253,137,92,36,28,232,251,1,34,139,149,233,15,182,75,252,
631 253,252,233,244,1,248,7,255,128,165,233,235,65,139,134,233,65,137,174,233, 640 253,252,233,244,1,248,7,255,128,165,233,235,65,139,134,233,65,137,174,233,
632 137,133,233,252,233,244,2,255,3,68,36,4,255,129,124,253,202,4,239,139,44, 641 137,133,233,252,233,244,2,255,3,68,36,4,255,129,124,253,202,4,239,139,44,
633 202,15,133,244,51,141,84,202,8,137,90,252,252,139,157,233,139,11,15,182,252, 642 202,15,133,244,52,141,84,202,8,137,90,252,252,139,157,233,139,11,15,182,252,
634 233,15,182,205,131,195,4,65,252,255,36,252,238,255,141,76,202,8,65,137,215, 643 233,15,182,205,131,195,4,65,252,255,36,252,238,255,141,76,202,8,65,137,215,
635 139,105,252,248,129,121,253,252,252,239,15,133,244,28,248,52,139,90,252,252, 644 139,105,252,248,129,121,253,252,252,239,15,133,244,28,248,53,139,90,252,252,
636 252,247,195,237,15,133,244,253,248,1,137,106,252,248,137,68,36,4,131,232, 645 252,247,195,237,15,133,244,253,248,1,137,106,252,248,137,68,36,4,131,232,
637 1,15,132,244,249,248,2,72,139,41,131,193,8,73,137,47,65,131,199,8,131,232, 646 1,15,132,244,249,248,2,72,139,41,131,193,8,73,137,47,65,131,199,8,131,232,
638 1,15,133,244,2,139,106,252,248,248,3,139,68,36,4,128,189,233,1,15,135,244, 647 1,15,133,244,2,139,106,252,248,248,3,139,68,36,4,128,189,233,1,15,135,244,
@@ -681,8 +690,8 @@ static const unsigned char build_actionlist[14438] = {
681 252,237,65,131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244, 690 252,237,65,131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,
682 5,248,7,141,171,233,252,247,197,237,15,133,244,14,41,252,234,255,1,252,233, 691 5,248,7,141,171,233,252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,
683 255,137,221,209,252,237,129,229,239,102,65,131,172,253,46,233,1,15,132,244, 692 255,137,221,209,252,237,129,229,239,102,65,131,172,253,46,233,1,15,132,244,
684 140,255,141,12,202,255,129,121,253,4,239,15,135,244,53,129,121,253,12,239, 693 141,255,141,12,202,255,129,121,253,4,239,15,135,244,54,129,121,253,12,239,
685 15,135,244,53,255,139,105,20,255,129,252,253,239,15,135,244,53,255,252,242, 694 15,135,244,54,255,139,105,20,255,129,252,253,239,15,135,244,54,255,252,242,
686 15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252, 695 15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,
687 237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15, 696 237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,
688 17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15, 697 17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,
@@ -695,7 +704,7 @@ static const unsigned char build_actionlist[14438] = {
695 4,129,72,139,128,233,139,108,36,24,65,137,150,233,65,137,174,233,76,137,36, 704 4,129,72,139,128,233,139,108,36,24,65,137,150,233,65,137,174,233,76,137,36,
696 36,76,137,108,36,8,72,131,252,236,16,252,255,224,255,141,156,253,131,233, 705 36,76,137,108,36,8,72,131,252,236,16,252,255,224,255,141,156,253,131,233,
697 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255, 706 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,
698 137,221,209,252,237,129,229,239,102,65,131,172,253,46,233,1,15,132,244,142, 707 137,221,209,252,237,129,229,239,102,65,131,172,253,46,233,1,15,132,244,143,
699 255,68,139,187,233,139,108,36,24,141,12,202,59,141,233,15,135,244,23,15,182, 708 255,68,139,187,233,139,108,36,24,141,12,202,59,141,233,15,135,244,23,15,182,
700 139,233,57,200,15,134,244,249,248,2,255,15,183,67,252,254,252,233,245,255, 709 139,233,57,200,15,134,244,249,248,2,255,15,183,67,252,254,252,233,245,255,
701 248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244,2, 710 248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,
@@ -750,6 +759,7 @@ enum {
750 GLOB_cont_condt, 759 GLOB_cont_condt,
751 GLOB_cont_condf, 760 GLOB_cont_condf,
752 GLOB_vmeta_equal, 761 GLOB_vmeta_equal,
762 GLOB_vmeta_equal_cd,
753 GLOB_vmeta_arith_vn, 763 GLOB_vmeta_arith_vn,
754 GLOB_vmeta_arith_nv, 764 GLOB_vmeta_arith_nv,
755 GLOB_vmeta_unm, 765 GLOB_vmeta_unm,
@@ -903,6 +913,7 @@ static const char *const globnames[] = {
903 "cont_condt", 913 "cont_condt",
904 "cont_condf", 914 "cont_condf",
905 "vmeta_equal", 915 "vmeta_equal",
916 "vmeta_equal_cd",
906 "vmeta_arith_vn", 917 "vmeta_arith_vn",
907 "vmeta_arith_nv", 918 "vmeta_arith_nv",
908 "vmeta_unm", 919 "vmeta_unm",
@@ -1025,6 +1036,7 @@ static const char *const extnames[] = {
1025 "lj_meta_tset", 1036 "lj_meta_tset",
1026 "lj_meta_comp", 1037 "lj_meta_comp",
1027 "lj_meta_equal", 1038 "lj_meta_equal",
1039 "lj_meta_equal_cd@8",
1028 "lj_meta_arith", 1040 "lj_meta_arith",
1029 "lj_meta_len@8", 1041 "lj_meta_len@8",
1030 "lj_meta_call", 1042 "lj_meta_call",
@@ -1098,371 +1110,374 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1098 } 1110 }
1099 dasm_put(Dst, 1094, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base)); 1111 dasm_put(Dst, 1094, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
1100 dasm_put(Dst, 1266, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); 1112 dasm_put(Dst, 1266, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
1101 dasm_put(Dst, 1365, Dt1(->base), Dt1(->base), FRAME_CONT); 1113 dasm_put(Dst, 1365);
1102 dasm_put(Dst, 1488, 2+1, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC); 1114#if LJ_HASFFI
1103 dasm_put(Dst, 1666, 1+1, LJ_TISTRUECOND, 1+1); 1115 dasm_put(Dst, 1385, Dt1(->base));
1104 dasm_put(Dst, 1772, ~LJ_TNUMX); 1116#endif
1117 dasm_put(Dst, 1416, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1);
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);
1119 dasm_put(Dst, 1715, 1+1, ~LJ_TNUMX);
1105 if (cmov) { 1120 if (cmov) {
1106 dasm_put(Dst, 1780); 1121 dasm_put(Dst, 1813);
1107 } else { 1122 } else {
1108 dasm_put(Dst, 1784); 1123 dasm_put(Dst, 1817);
1109 } 1124 }
1110 dasm_put(Dst, 1793, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL); 1125 dasm_put(Dst, 1826, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
1111 dasm_put(Dst, 1872, 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)); 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));
1112 dasm_put(Dst, 1930, LJ_TNIL, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT])); 1127 dasm_put(Dst, 1963, LJ_TNIL, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]));
1113 dasm_put(Dst, 1999, 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK)); 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));
1114 dasm_put(Dst, 2068, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB, 1+1, LJ_TISNUM); 1129 dasm_put(Dst, 2101, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
1115 dasm_put(Dst, 2154); 1130 dasm_put(Dst, 2187);
1116 if (sse) { 1131 if (sse) {
1117 dasm_put(Dst, 2159); 1132 dasm_put(Dst, 2192);
1118 } else { 1133 } else {
1119 dasm_put(Dst, 2169); 1134 dasm_put(Dst, 2202);
1120 } 1135 }
1121 dasm_put(Dst, 2176, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 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));
1122 dasm_put(Dst, 2245, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); 1137 dasm_put(Dst, 2278, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
1123 dasm_put(Dst, 2314, Dt1(->top), Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1); 1138 dasm_put(Dst, 2347, Dt1(->top), Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1);
1124 dasm_put(Dst, 2402, LJ_TTAB); 1139 dasm_put(Dst, 2435, LJ_TTAB);
1125#ifdef LUAJIT_ENABLE_LUA52COMPAT 1140#ifdef LUAJIT_ENABLE_LUA52COMPAT
1126 dasm_put(Dst, 2414, Dt6(->metatable)); 1141 dasm_put(Dst, 2447, Dt6(->metatable));
1127#endif 1142#endif
1128 dasm_put(Dst, 2423, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); 1143 dasm_put(Dst, 2456, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
1129 if (sse) { 1144 if (sse) {
1130 dasm_put(Dst, 2486, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1145 dasm_put(Dst, 2519, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1131 } else { 1146 } else {
1132 } 1147 }
1133 dasm_put(Dst, 2519, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); 1148 dasm_put(Dst, 2552, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
1134 dasm_put(Dst, 2596, 1+1, LJ_TTAB); 1149 dasm_put(Dst, 2629, 1+1, LJ_TTAB);
1135#ifdef LUAJIT_ENABLE_LUA52COMPAT 1150#ifdef LUAJIT_ENABLE_LUA52COMPAT
1136 dasm_put(Dst, 2414, Dt6(->metatable)); 1151 dasm_put(Dst, 2447, Dt6(->metatable));
1137#endif 1152#endif
1138 dasm_put(Dst, 2616, Dt8(->upvalue[0]), LJ_TFUNC); 1153 dasm_put(Dst, 2649, Dt8(->upvalue[0]), LJ_TFUNC);
1139 if (sse) { 1154 if (sse) {
1140 dasm_put(Dst, 2637); 1155 dasm_put(Dst, 2670);
1141 } else { 1156 } else {
1142 dasm_put(Dst, 2647); 1157 dasm_put(Dst, 2680);
1143 } 1158 }
1144 dasm_put(Dst, 2654, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC); 1159 dasm_put(Dst, 2687, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
1145 dasm_put(Dst, 2719, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top)); 1160 dasm_put(Dst, 2752, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
1146 dasm_put(Dst, 2808, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1161 dasm_put(Dst, 2841, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1147 dasm_put(Dst, 2895, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE); 1162 dasm_put(Dst, 2928, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
1148 dasm_put(Dst, 3010, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe)); 1163 dasm_put(Dst, 3043, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1149 dasm_put(Dst, 3105, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); 1164 dasm_put(Dst, 3138, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1150 dasm_put(Dst, 3171, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack)); 1165 dasm_put(Dst, 3204, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1151 dasm_put(Dst, 3260, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME); 1166 dasm_put(Dst, 3293, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1152 dasm_put(Dst, 3370, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); 1167 dasm_put(Dst, 3403, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1153 if (sse) { 1168 if (sse) {
1154 dasm_put(Dst, 3397, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1169 dasm_put(Dst, 3430, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1155 } else { 1170 } else {
1156 dasm_put(Dst, 3461, 1+1, LJ_TISNUM); 1171 dasm_put(Dst, 3494, 1+1, LJ_TISNUM);
1157 } 1172 }
1158 dasm_put(Dst, 3497, 1+1, FRAME_TYPE, LJ_TNIL); 1173 dasm_put(Dst, 3530, 1+1, FRAME_TYPE, LJ_TNIL);
1159 if (sse) { 1174 if (sse) {
1160 dasm_put(Dst, 3592, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1175 dasm_put(Dst, 3625, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1161 dasm_put(Dst, 3654, 1+1, LJ_TISNUM); 1176 dasm_put(Dst, 3687, 1+1, LJ_TISNUM);
1162 } else { 1177 } else {
1163 dasm_put(Dst, 3684, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1178 dasm_put(Dst, 3717, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1164 dasm_put(Dst, 3743, 1+1, LJ_TISNUM); 1179 dasm_put(Dst, 3776, 1+1, LJ_TISNUM);
1165 } 1180 }
1166 dasm_put(Dst, 3770, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1181 dasm_put(Dst, 3803, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1167 dasm_put(Dst, 3839, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1182 dasm_put(Dst, 3872, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1168 dasm_put(Dst, 3896, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1183 dasm_put(Dst, 3929, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1169 dasm_put(Dst, 3959, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1184 dasm_put(Dst, 3992, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1170 dasm_put(Dst, 4049); 1185 dasm_put(Dst, 4082);
1171 if (sse) { 1186 if (sse) {
1172 dasm_put(Dst, 4061, 1+1, LJ_TISNUM); 1187 dasm_put(Dst, 4094, 1+1, LJ_TISNUM);
1173 } else { 1188 } else {
1174 } 1189 }
1175 dasm_put(Dst, 4086); 1190 dasm_put(Dst, 4119);
1176 if (sse) { 1191 if (sse) {
1177 dasm_put(Dst, 4100, 1+1, LJ_TISNUM); 1192 dasm_put(Dst, 4133, 1+1, LJ_TISNUM);
1178 } else { 1193 } else {
1179 } 1194 }
1180 dasm_put(Dst, 4125); 1195 dasm_put(Dst, 4158);
1181 if (sse) { 1196 if (sse) {
1182 dasm_put(Dst, 4139, 1+1, LJ_TISNUM); 1197 dasm_put(Dst, 4172, 1+1, LJ_TISNUM);
1183 } else { 1198 } else {
1184 } 1199 }
1185 dasm_put(Dst, 4164); 1200 dasm_put(Dst, 4197);
1186 if (sse) { 1201 if (sse) {
1187 dasm_put(Dst, 4180, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1202 dasm_put(Dst, 4213, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1188 } else { 1203 } else {
1189 dasm_put(Dst, 4219, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1204 dasm_put(Dst, 4252, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1190 } 1205 }
1191 dasm_put(Dst, 4252, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1206 dasm_put(Dst, 4285, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1192 dasm_put(Dst, 4317, 1+1, LJ_TISNUM); 1207 dasm_put(Dst, 4350, 1+1, LJ_TISNUM);
1193 if (sse) { 1208 if (sse) {
1194 dasm_put(Dst, 4416); 1209 dasm_put(Dst, 4449);
1195 } else { 1210 } else {
1196 dasm_put(Dst, 4422); 1211 dasm_put(Dst, 4455);
1197 } 1212 }
1198 dasm_put(Dst, 4429); 1213 dasm_put(Dst, 4462);
1199 if (sse) { 1214 if (sse) {
1200 dasm_put(Dst, 4454); 1215 dasm_put(Dst, 4487);
1201 } else { 1216 } else {
1202 dasm_put(Dst, 4460); 1217 dasm_put(Dst, 4493);
1203 } 1218 }
1204 dasm_put(Dst, 4463, 1+2); 1219 dasm_put(Dst, 4496, 1+2);
1205 if (sse) { 1220 if (sse) {
1206 dasm_put(Dst, 4472); 1221 dasm_put(Dst, 4505);
1207 } else { 1222 } else {
1208 dasm_put(Dst, 4480); 1223 dasm_put(Dst, 4513);
1209 } 1224 }
1210 dasm_put(Dst, 4488); 1225 dasm_put(Dst, 4521);
1211 if (sse) { 1226 if (sse) {
1212 dasm_put(Dst, 4491, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32)); 1227 dasm_put(Dst, 4524, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
1213 } else { 1228 } else {
1214 dasm_put(Dst, 4518); 1229 dasm_put(Dst, 4551);
1215 } 1230 }
1216 dasm_put(Dst, 4535); 1231 dasm_put(Dst, 4568);
1217 if (sse) { 1232 if (sse) {
1218 dasm_put(Dst, 4551, 1+1, LJ_TISNUM); 1233 dasm_put(Dst, 4584, 1+1, LJ_TISNUM);
1219 } else { 1234 } else {
1220 dasm_put(Dst, 4576, 1+1, LJ_TISNUM); 1235 dasm_put(Dst, 4609, 1+1, LJ_TISNUM);
1221 } 1236 }
1222 dasm_put(Dst, 4598); 1237 dasm_put(Dst, 4631);
1223 if (sse) { 1238 if (sse) {
1224 dasm_put(Dst, 4620); 1239 dasm_put(Dst, 4653);
1225 } else { 1240 } else {
1226 dasm_put(Dst, 4646); 1241 dasm_put(Dst, 4679);
1227 } 1242 }
1228 dasm_put(Dst, 4663, 1+2); 1243 dasm_put(Dst, 4696, 1+2);
1229 if (sse) { 1244 if (sse) {
1230 dasm_put(Dst, 4703); 1245 dasm_put(Dst, 4736);
1231 } else { 1246 } else {
1232 dasm_put(Dst, 4711); 1247 dasm_put(Dst, 4744);
1233 } 1248 }
1234 dasm_put(Dst, 4721, 2+1, LJ_TISNUM, LJ_TISNUM); 1249 dasm_put(Dst, 4754, 2+1, LJ_TISNUM, LJ_TISNUM);
1235 if (sse) { 1250 if (sse) {
1236 dasm_put(Dst, 4773, 2+1, LJ_TISNUM, LJ_TISNUM); 1251 dasm_put(Dst, 4806, 2+1, LJ_TISNUM, LJ_TISNUM);
1237 } else { 1252 } else {
1238 dasm_put(Dst, 4820, 2+1, LJ_TISNUM, LJ_TISNUM); 1253 dasm_put(Dst, 4853, 2+1, LJ_TISNUM, LJ_TISNUM);
1239 } 1254 }
1240 if (sse) { 1255 if (sse) {
1241 dasm_put(Dst, 4861, 1+1, LJ_TISNUM, LJ_TISNUM); 1256 dasm_put(Dst, 4894, 1+1, LJ_TISNUM, LJ_TISNUM);
1242 } else { 1257 } else {
1243 } 1258 }
1244 if (sse) { 1259 if (sse) {
1245 dasm_put(Dst, 4932, 1+1, LJ_TISNUM, LJ_TISNUM); 1260 dasm_put(Dst, 4965, 1+1, LJ_TISNUM, LJ_TISNUM);
1246 } else { 1261 } else {
1247 } 1262 }
1248 if (!sse) { 1263 if (!sse) {
1249 dasm_put(Dst, 5003); 1264 dasm_put(Dst, 5036);
1250 } 1265 }
1251 dasm_put(Dst, 5012, 1+1, LJ_TSTR); 1266 dasm_put(Dst, 5045, 1+1, LJ_TSTR);
1252 if (sse) { 1267 if (sse) {
1253 dasm_put(Dst, 5034, Dt5(->len)); 1268 dasm_put(Dst, 5067, Dt5(->len));
1254 } else { 1269 } else {
1255 dasm_put(Dst, 5045, Dt5(->len)); 1270 dasm_put(Dst, 5078, Dt5(->len));
1256 } 1271 }
1257 dasm_put(Dst, 5053, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); 1272 dasm_put(Dst, 5086, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
1258 if (sse) { 1273 if (sse) {
1259 dasm_put(Dst, 5091); 1274 dasm_put(Dst, 5124);
1260 } else { 1275 } else {
1261 dasm_put(Dst, 5101); 1276 dasm_put(Dst, 5134);
1262 } 1277 }
1263 dasm_put(Dst, 5112, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1278 dasm_put(Dst, 5145, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1264 if (sse) { 1279 if (sse) {
1265 dasm_put(Dst, 5149); 1280 dasm_put(Dst, 5182);
1266 } else { 1281 } else {
1267 dasm_put(Dst, 5171); 1282 dasm_put(Dst, 5204);
1268 } 1283 }
1269 dasm_put(Dst, 5191, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); 1284 dasm_put(Dst, 5224, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
1270 dasm_put(Dst, 2154); 1285 dasm_put(Dst, 2187);
1271 if (sse) { 1286 if (sse) {
1272 dasm_put(Dst, 5300); 1287 dasm_put(Dst, 5333);
1273 } else { 1288 } else {
1274 dasm_put(Dst, 5311); 1289 dasm_put(Dst, 5344);
1275 } 1290 }
1276 dasm_put(Dst, 5319, LJ_TSTR, LJ_TISNUM, Dt5(->len)); 1291 dasm_put(Dst, 5352, LJ_TSTR, LJ_TISNUM, Dt5(->len));
1277 if (sse) { 1292 if (sse) {
1278 dasm_put(Dst, 5349); 1293 dasm_put(Dst, 5382);
1279 } else { 1294 } else {
1280 } 1295 }
1281 dasm_put(Dst, 5356, sizeof(GCstr)-1); 1296 dasm_put(Dst, 5389, sizeof(GCstr)-1);
1282 dasm_put(Dst, 5431, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1297 dasm_put(Dst, 5464, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1283 dasm_put(Dst, 5492, LJ_TSTR, LJ_TISNUM); 1298 dasm_put(Dst, 5525, LJ_TSTR, LJ_TISNUM);
1284 if (sse) { 1299 if (sse) {
1285 dasm_put(Dst, 5513); 1300 dasm_put(Dst, 5546);
1286 } else { 1301 } else {
1287 dasm_put(Dst, 5520); 1302 dasm_put(Dst, 5553);
1288 } 1303 }
1289 dasm_put(Dst, 5532, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); 1304 dasm_put(Dst, 5565, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
1290 dasm_put(Dst, 5600, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 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));
1291 dasm_put(Dst, 5667, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); 1306 dasm_put(Dst, 5700, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1292 dasm_put(Dst, 5740, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); 1307 dasm_put(Dst, 5773, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1293 dasm_put(Dst, 5825, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 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));
1294 dasm_put(Dst, 5899, 1+1, LJ_TTAB); 1309 dasm_put(Dst, 5932, 1+1, LJ_TTAB);
1295 if (sse) { 1310 if (sse) {
1296 dasm_put(Dst, 5966); 1311 dasm_put(Dst, 5999);
1297 } else { 1312 } else {
1298 } 1313 }
1299 if (sse) { 1314 if (sse) {
1300 dasm_put(Dst, 5976, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1315 dasm_put(Dst, 6009, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1301 } else { 1316 } else {
1302 } 1317 }
1303 if (sse) { 1318 if (sse) {
1304 dasm_put(Dst, 6028, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1319 dasm_put(Dst, 6061, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1305 } else { 1320 } else {
1306 } 1321 }
1307 dasm_put(Dst, 6071, LJ_TISNUM); 1322 dasm_put(Dst, 6104, LJ_TISNUM);
1308 if (sse) { 1323 if (sse) {
1309 dasm_put(Dst, 6098); 1324 dasm_put(Dst, 6131);
1310 } else { 1325 } else {
1311 } 1326 }
1312 dasm_put(Dst, 6115); 1327 dasm_put(Dst, 6148);
1313 if (sse) { 1328 if (sse) {
1314 dasm_put(Dst, 6123, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1329 dasm_put(Dst, 6156, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1315 } else { 1330 } else {
1316 } 1331 }
1317 dasm_put(Dst, 6071, LJ_TISNUM); 1332 dasm_put(Dst, 6104, LJ_TISNUM);
1318 if (sse) { 1333 if (sse) {
1319 dasm_put(Dst, 6166); 1334 dasm_put(Dst, 6199);
1320 } else { 1335 } else {
1321 } 1336 }
1322 dasm_put(Dst, 6115); 1337 dasm_put(Dst, 6148);
1323 if (sse) { 1338 if (sse) {
1324 dasm_put(Dst, 6183, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1339 dasm_put(Dst, 6216, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1325 } else { 1340 } else {
1326 } 1341 }
1327 dasm_put(Dst, 6071, LJ_TISNUM); 1342 dasm_put(Dst, 6104, LJ_TISNUM);
1328 if (sse) { 1343 if (sse) {
1329 dasm_put(Dst, 6226); 1344 dasm_put(Dst, 6259);
1330 } else { 1345 } else {
1331 } 1346 }
1332 dasm_put(Dst, 6115); 1347 dasm_put(Dst, 6148);
1333 if (sse) { 1348 if (sse) {
1334 dasm_put(Dst, 6243, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1349 dasm_put(Dst, 6276, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1335 } else { 1350 } else {
1336 } 1351 }
1337 dasm_put(Dst, 6286); 1352 dasm_put(Dst, 6319);
1338 if (sse) { 1353 if (sse) {
1339 dasm_put(Dst, 6293, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1354 dasm_put(Dst, 6326, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1340 } else { 1355 } else {
1341 } 1356 }
1342 dasm_put(Dst, 6336); 1357 dasm_put(Dst, 6369);
1343 if (sse) { 1358 if (sse) {
1344 dasm_put(Dst, 6340); 1359 dasm_put(Dst, 6373);
1345 } else { 1360 } else {
1346 } 1361 }
1347 dasm_put(Dst, 6352); 1362 dasm_put(Dst, 6385);
1348 if (sse) { 1363 if (sse) {
1349 dasm_put(Dst, 6363, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1364 dasm_put(Dst, 6396, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1350 } else { 1365 } else {
1351 } 1366 }
1352 dasm_put(Dst, 6432); 1367 dasm_put(Dst, 6465);
1353 if (sse) { 1368 if (sse) {
1354 dasm_put(Dst, 6441, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1369 dasm_put(Dst, 6474, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1355 } else { 1370 } else {
1356 } 1371 }
1357 dasm_put(Dst, 6510); 1372 dasm_put(Dst, 6543);
1358 if (sse) { 1373 if (sse) {
1359 dasm_put(Dst, 6520, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1374 dasm_put(Dst, 6553, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1360 } else { 1375 } else {
1361 } 1376 }
1362 dasm_put(Dst, 6589); 1377 dasm_put(Dst, 6622);
1363 if (sse) { 1378 if (sse) {
1364 dasm_put(Dst, 6599, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1379 dasm_put(Dst, 6632, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1365 } else { 1380 } else {
1366 } 1381 }
1367 dasm_put(Dst, 6668); 1382 dasm_put(Dst, 6701);
1368 if (sse) { 1383 if (sse) {
1369 dasm_put(Dst, 6677, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1384 dasm_put(Dst, 6710, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1370 } else { 1385 } else {
1371 } 1386 }
1372 dasm_put(Dst, 6746, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); 1387 dasm_put(Dst, 6779, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
1373 dasm_put(Dst, 6824, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); 1388 dasm_put(Dst, 6857, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
1374 dasm_put(Dst, 6951, Dt1(->top), Dt1(->base), Dt1(->top)); 1389 dasm_put(Dst, 6984, Dt1(->top), Dt1(->base), Dt1(->top));
1375#if LJ_HASJIT 1390#if LJ_HASJIT
1376 dasm_put(Dst, 6990, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1391 dasm_put(Dst, 7023, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1377#endif 1392#endif
1378 dasm_put(Dst, 7023, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); 1393 dasm_put(Dst, 7056, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
1379 dasm_put(Dst, 7077, Dt1(->base), Dt1(->base), GG_DISP2STATIC); 1394 dasm_put(Dst, 7110, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
1380#if LJ_HASJIT 1395#if LJ_HASJIT
1381 dasm_put(Dst, 7144, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); 1396 dasm_put(Dst, 7177, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
1382#endif 1397#endif
1383 dasm_put(Dst, 7191); 1398 dasm_put(Dst, 7224);
1384#if LJ_HASJIT 1399#if LJ_HASJIT
1385 dasm_put(Dst, 7018); 1400 dasm_put(Dst, 7051);
1386#endif 1401#endif
1387 dasm_put(Dst, 7198); 1402 dasm_put(Dst, 7231);
1388#if LJ_HASJIT 1403#if LJ_HASJIT
1389 dasm_put(Dst, 7201); 1404 dasm_put(Dst, 7234);
1390#endif 1405#endif
1391 dasm_put(Dst, 7211, Dt1(->base), Dt1(->top)); 1406 dasm_put(Dst, 7244, Dt1(->base), Dt1(->top));
1392#if LJ_HASJIT 1407#if LJ_HASJIT
1393 dasm_put(Dst, 7244); 1408 dasm_put(Dst, 7277);
1394#endif 1409#endif
1395 dasm_put(Dst, 7249, Dt1(->base), Dt1(->top)); 1410 dasm_put(Dst, 7282, Dt1(->base), Dt1(->top));
1396#if LJ_HASJIT 1411#if LJ_HASJIT
1397 dasm_put(Dst, 7280, 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); 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);
1398#endif 1413#endif
1399 dasm_put(Dst, 7519); 1414 dasm_put(Dst, 7552);
1400#if LJ_HASJIT 1415#if LJ_HASJIT
1401 dasm_put(Dst, 7522, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF); 1416 dasm_put(Dst, 7555, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
1402#endif 1417#endif
1403 dasm_put(Dst, 7622); 1418 dasm_put(Dst, 7655);
1404 if (!sse) { 1419 if (!sse) {
1405 dasm_put(Dst, 7625); 1420 dasm_put(Dst, 7658);
1406 } 1421 }
1407 dasm_put(Dst, 7670, (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 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));
1408 if (!sse) { 1423 if (!sse) {
1409 dasm_put(Dst, 7756); 1424 dasm_put(Dst, 7789);
1410 } 1425 }
1411 dasm_put(Dst, 7801, (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 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));
1412 if (!sse) { 1427 if (!sse) {
1413 dasm_put(Dst, 7887); 1428 dasm_put(Dst, 7920);
1414 } 1429 }
1415 dasm_put(Dst, 7926, (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 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));
1416 if (sse) { 1431 if (sse) {
1417 dasm_put(Dst, 8015, (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 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));
1418 } else { 1433 } else {
1419 dasm_put(Dst, 8129); 1434 dasm_put(Dst, 8162);
1420 } 1435 }
1421 dasm_put(Dst, 8176); 1436 dasm_put(Dst, 8209);
1422 if (!sse) { 1437 if (!sse) {
1423 } else { 1438 } else {
1424 dasm_put(Dst, 8253); 1439 dasm_put(Dst, 8286);
1425 } 1440 }
1426 dasm_put(Dst, 8256); 1441 dasm_put(Dst, 8289);
1427 dasm_put(Dst, 8341, (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, 8374, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1428 dasm_put(Dst, 8442, (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, 8475, (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));
1429 dasm_put(Dst, 8616); 1444 dasm_put(Dst, 8649);
1430#if LJ_HASJIT 1445#if LJ_HASJIT
1431 if (sse) { 1446 if (sse) {
1432 dasm_put(Dst, 8657); 1447 dasm_put(Dst, 8690);
1433 dasm_put(Dst, 8727); 1448 dasm_put(Dst, 8760);
1434 dasm_put(Dst, 8799); 1449 dasm_put(Dst, 8832);
1435 } else { 1450 } else {
1436 dasm_put(Dst, 8851); 1451 dasm_put(Dst, 8884);
1437 dasm_put(Dst, 8943); 1452 dasm_put(Dst, 8976);
1438 } 1453 }
1439 dasm_put(Dst, 8989); 1454 dasm_put(Dst, 9022);
1440#endif 1455#endif
1441 dasm_put(Dst, 8993); 1456 dasm_put(Dst, 9026);
1442 if (sse) { 1457 if (sse) {
1443 dasm_put(Dst, 8996, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1458 dasm_put(Dst, 9029, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1444 dasm_put(Dst, 9081, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1459 dasm_put(Dst, 9114, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1445 } else { 1460 } else {
1446 dasm_put(Dst, 9209); 1461 dasm_put(Dst, 9242);
1447 dasm_put(Dst, 9292); 1462 dasm_put(Dst, 9325);
1448 if (cmov) { 1463 if (cmov) {
1449 dasm_put(Dst, 9347); 1464 dasm_put(Dst, 9380);
1450 } else { 1465 } else {
1451 dasm_put(Dst, 9366); 1466 dasm_put(Dst, 9399);
1452 } 1467 }
1453 dasm_put(Dst, 8989); 1468 dasm_put(Dst, 9022);
1454 } 1469 }
1455 dasm_put(Dst, 9407); 1470 dasm_put(Dst, 9440);
1456#if LJ_HASFFI 1471#if LJ_HASFFI
1457#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) 1472#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
1458 dasm_put(Dst, 9431, DtE(->spadj)); 1473 dasm_put(Dst, 9464, DtE(->spadj));
1459#if LJ_TARGET_WINDOWS 1474#if LJ_TARGET_WINDOWS
1460#endif 1475#endif
1461 dasm_put(Dst, 9447, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->gpr[4]), DtE(->gpr[5]), DtE(->fpr[0]), DtE(->fpr[1])); 1476 dasm_put(Dst, 9480, 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]));
1462 dasm_put(Dst, 9526, DtE(->fpr[2]), DtE(->fpr[3]), DtE(->fpr[4]), DtE(->fpr[5]), DtE(->fpr[6]), DtE(->fpr[7]), DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]), DtE(->gpr[1]), DtE(->fpr[1])); 1477 dasm_put(Dst, 9559, 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]));
1463#if LJ_TARGET_WINDOWS 1478#if LJ_TARGET_WINDOWS
1464#endif 1479#endif
1465 dasm_put(Dst, 9581); 1480 dasm_put(Dst, 9614);
1466#endif 1481#endif
1467} 1482}
1468 1483
@@ -1470,7 +1485,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1470static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1485static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1471{ 1486{
1472 int vk = 0; 1487 int vk = 0;
1473 dasm_put(Dst, 1770, defop); 1488 dasm_put(Dst, 9622, defop);
1474 1489
1475 switch (op) { 1490 switch (op) {
1476 1491
@@ -1479,623 +1494,641 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1479 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1494 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1480 1495
1481 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1496 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1482 dasm_put(Dst, 9589, LJ_TISNUM, LJ_TISNUM); 1497 dasm_put(Dst, 9624, LJ_TISNUM, LJ_TISNUM);
1483 if (sse) { 1498 if (sse) {
1484 dasm_put(Dst, 9610); 1499 dasm_put(Dst, 9645);
1485 } else { 1500 } else {
1486 dasm_put(Dst, 9625); 1501 dasm_put(Dst, 9660);
1487 if (cmov) { 1502 if (cmov) {
1488 dasm_put(Dst, 9635); 1503 dasm_put(Dst, 9670);
1489 } else { 1504 } else {
1490 dasm_put(Dst, 9641); 1505 dasm_put(Dst, 9676);
1491 } 1506 }
1492 } 1507 }
1493 switch (op) { 1508 switch (op) {
1494 case BC_ISLT: 1509 case BC_ISLT:
1495 dasm_put(Dst, 9648); 1510 dasm_put(Dst, 9683);
1496 break; 1511 break;
1497 case BC_ISGE: 1512 case BC_ISGE:
1498 dasm_put(Dst, 9287); 1513 dasm_put(Dst, 9320);
1499 break; 1514 break;
1500 case BC_ISLE: 1515 case BC_ISLE:
1501 dasm_put(Dst, 5894); 1516 dasm_put(Dst, 5927);
1502 break; 1517 break;
1503 case BC_ISGT: 1518 case BC_ISGT:
1504 dasm_put(Dst, 9653); 1519 dasm_put(Dst, 9688);
1505 break; 1520 break;
1506 default: break; /* Shut up GCC. */ 1521 default: break; /* Shut up GCC. */
1507 } 1522 }
1508 dasm_put(Dst, 9658, -BCBIAS_J*4); 1523 dasm_put(Dst, 9693, -BCBIAS_J*4);
1509 break; 1524 break;
1510 1525
1511 case BC_ISEQV: case BC_ISNEV: 1526 case BC_ISEQV: case BC_ISNEV:
1512 vk = op == BC_ISEQV; 1527 vk = op == BC_ISEQV;
1513 dasm_put(Dst, 9693, LJ_TISNUM, LJ_TISNUM); 1528 dasm_put(Dst, 9728, LJ_TISNUM, LJ_TISNUM);
1514 if (sse) { 1529 if (sse) {
1515 dasm_put(Dst, 9719); 1530 dasm_put(Dst, 9754);
1516 } else { 1531 } else {
1517 dasm_put(Dst, 9731); 1532 dasm_put(Dst, 9766);
1518 if (cmov) { 1533 if (cmov) {
1519 dasm_put(Dst, 9635); 1534 dasm_put(Dst, 9670);
1520 } else { 1535 } else {
1521 dasm_put(Dst, 9641); 1536 dasm_put(Dst, 9676);
1522 } 1537 }
1523 } 1538 }
1524 iseqne_fp: 1539 iseqne_fp:
1525 if (vk) { 1540 if (vk) {
1526 dasm_put(Dst, 9738); 1541 dasm_put(Dst, 9773);
1527 } else { 1542 } else {
1528 dasm_put(Dst, 9747); 1543 dasm_put(Dst, 9782);
1529 } 1544 }
1530 iseqne_end: 1545 iseqne_end:
1531 if (vk) { 1546 if (vk) {
1532 dasm_put(Dst, 9756, -BCBIAS_J*4); 1547 dasm_put(Dst, 9791, -BCBIAS_J*4);
1548 if (!LJ_HASFFI) {
1549 dasm_put(Dst, 4502);
1550 }
1533 } else { 1551 } else {
1534 dasm_put(Dst, 9771, -BCBIAS_J*4); 1552 if (!LJ_HASFFI) {
1553 dasm_put(Dst, 4502);
1554 }
1555 dasm_put(Dst, 9806, -BCBIAS_J*4);
1535 } 1556 }
1536 dasm_put(Dst, 9672); 1557 dasm_put(Dst, 9707);
1537 if (op == BC_ISEQV || op == BC_ISNEV) { 1558 if (op == BC_ISEQV || op == BC_ISNEV) {
1538 dasm_put(Dst, 9786, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 1559 dasm_put(Dst, 9821);
1560 if (LJ_HASFFI) {
1561 dasm_put(Dst, 9824, LJ_TCDATA, LJ_TCDATA);
1562 }
1563 dasm_put(Dst, 9843, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1539 if (vk) { 1564 if (vk) {
1540 dasm_put(Dst, 9844); 1565 dasm_put(Dst, 9899);
1541 } else { 1566 } else {
1542 dasm_put(Dst, 9848); 1567 dasm_put(Dst, 9903);
1543 } 1568 }
1544 dasm_put(Dst, 9854); 1569 dasm_put(Dst, 9909);
1570 } else if (LJ_HASFFI) {
1571 dasm_put(Dst, 9914, LJ_TCDATA);
1545 } 1572 }
1546 break; 1573 break;
1547 case BC_ISEQS: case BC_ISNES: 1574 case BC_ISEQS: case BC_ISNES:
1548 vk = op == BC_ISEQS; 1575 vk = op == BC_ISEQS;
1549 dasm_put(Dst, 9859, LJ_TSTR); 1576 dasm_put(Dst, 9929, LJ_TSTR);
1550 iseqne_test: 1577 iseqne_test:
1551 if (vk) { 1578 if (vk) {
1552 dasm_put(Dst, 9742); 1579 dasm_put(Dst, 9777);
1553 } else { 1580 } else {
1554 dasm_put(Dst, 2803); 1581 dasm_put(Dst, 2836);
1555 } 1582 }
1556 goto iseqne_end; 1583 goto iseqne_end;
1557 case BC_ISEQN: case BC_ISNEN: 1584 case BC_ISEQN: case BC_ISNEN:
1558 vk = op == BC_ISEQN; 1585 vk = op == BC_ISEQN;
1559 dasm_put(Dst, 9884, LJ_TISNUM); 1586 dasm_put(Dst, 9956, LJ_TISNUM);
1560 if (sse) { 1587 if (sse) {
1561 dasm_put(Dst, 9898); 1588 dasm_put(Dst, 9972);
1562 } else { 1589 } else {
1563 dasm_put(Dst, 9911); 1590 dasm_put(Dst, 9985);
1564 if (cmov) { 1591 if (cmov) {
1565 dasm_put(Dst, 9635); 1592 dasm_put(Dst, 9670);
1566 } else { 1593 } else {
1567 dasm_put(Dst, 9641); 1594 dasm_put(Dst, 9676);
1568 } 1595 }
1569 } 1596 }
1570 goto iseqne_fp; 1597 goto iseqne_fp;
1571 case BC_ISEQP: case BC_ISNEP: 1598 case BC_ISEQP: case BC_ISNEP:
1572 vk = op == BC_ISEQP; 1599 vk = op == BC_ISEQP;
1573 dasm_put(Dst, 9919); 1600 dasm_put(Dst, 9993);
1574 goto iseqne_test; 1601 if (!LJ_HASFFI) goto iseqne_test;
1602 if (vk) {
1603 dasm_put(Dst, 10007, -BCBIAS_J*4, LJ_TCDATA);
1604 } else {
1605 dasm_put(Dst, 10058, LJ_TCDATA, -BCBIAS_J*4);
1606 }
1607 break;
1575 1608
1576 /* -- Unary test and copy ops ------------------------------------------- */ 1609 /* -- Unary test and copy ops ------------------------------------------- */
1577 1610
1578 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 1611 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1579 dasm_put(Dst, 9931, LJ_TISTRUECOND); 1612 dasm_put(Dst, 10103, LJ_TISTRUECOND);
1580 if (op == BC_IST || op == BC_ISTC) { 1613 if (op == BC_IST || op == BC_ISTC) {
1581 dasm_put(Dst, 9943); 1614 dasm_put(Dst, 10115);
1582 } else { 1615 } else {
1583 dasm_put(Dst, 9948); 1616 dasm_put(Dst, 10120);
1584 } 1617 }
1585 if (op == BC_ISTC || op == BC_ISFC) { 1618 if (op == BC_ISTC || op == BC_ISFC) {
1586 dasm_put(Dst, 9953); 1619 dasm_put(Dst, 10125);
1587 } 1620 }
1588 dasm_put(Dst, 9964, -BCBIAS_J*4); 1621 dasm_put(Dst, 10136, -BCBIAS_J*4);
1589 break; 1622 break;
1590 1623
1591 /* -- Unary ops --------------------------------------------------------- */ 1624 /* -- Unary ops --------------------------------------------------------- */
1592 1625
1593 case BC_MOV: 1626 case BC_MOV:
1594 dasm_put(Dst, 9997); 1627 dasm_put(Dst, 10169);
1595 break; 1628 break;
1596 case BC_NOT: 1629 case BC_NOT:
1597 dasm_put(Dst, 10026, LJ_TISTRUECOND, LJ_TTRUE); 1630 dasm_put(Dst, 10198, LJ_TISTRUECOND, LJ_TTRUE);
1598 break; 1631 break;
1599 case BC_UNM: 1632 case BC_UNM:
1600 dasm_put(Dst, 10063, LJ_TISNUM); 1633 dasm_put(Dst, 10235, LJ_TISNUM);
1601 if (sse) { 1634 if (sse) {
1602 dasm_put(Dst, 10074, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1635 dasm_put(Dst, 10246, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1603 } else { 1636 } else {
1604 dasm_put(Dst, 10099); 1637 dasm_put(Dst, 10271);
1605 } 1638 }
1606 dasm_put(Dst, 9672); 1639 dasm_put(Dst, 9707);
1607 break; 1640 break;
1608 case BC_LEN: 1641 case BC_LEN:
1609 dasm_put(Dst, 10108, LJ_TSTR); 1642 dasm_put(Dst, 10280, LJ_TSTR);
1610 if (sse) { 1643 if (sse) {
1611 dasm_put(Dst, 10122, Dt5(->len)); 1644 dasm_put(Dst, 10294, Dt5(->len));
1612 } else { 1645 } else {
1613 dasm_put(Dst, 10140, Dt5(->len)); 1646 dasm_put(Dst, 10312, Dt5(->len));
1614 } 1647 }
1615 dasm_put(Dst, 10149, LJ_TTAB); 1648 dasm_put(Dst, 10321, LJ_TTAB);
1616 if (sse) { 1649 if (sse) {
1617 dasm_put(Dst, 10191); 1650 dasm_put(Dst, 10363);
1618 } else { 1651 } else {
1619 } 1652 }
1620 dasm_put(Dst, 10200); 1653 dasm_put(Dst, 10372);
1621 break; 1654 break;
1622 1655
1623 /* -- Binary ops -------------------------------------------------------- */ 1656 /* -- Binary ops -------------------------------------------------------- */
1624 1657
1625 1658
1626 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 1659 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1627 dasm_put(Dst, 10210); 1660 dasm_put(Dst, 10382);
1628 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1661 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1629 switch (vk) { 1662 switch (vk) {
1630 case 0: 1663 case 0:
1631 dasm_put(Dst, 10218, LJ_TISNUM); 1664 dasm_put(Dst, 10390, LJ_TISNUM);
1632 if (sse) { 1665 if (sse) {
1633 dasm_put(Dst, 10230); 1666 dasm_put(Dst, 10402);
1634 } else { 1667 } else {
1635 dasm_put(Dst, 10245); 1668 dasm_put(Dst, 10417);
1636 } 1669 }
1637 break; 1670 break;
1638 case 1: 1671 case 1:
1639 dasm_put(Dst, 10254, LJ_TISNUM); 1672 dasm_put(Dst, 10426, LJ_TISNUM);
1640 if (sse) { 1673 if (sse) {
1641 dasm_put(Dst, 10266); 1674 dasm_put(Dst, 10438);
1642 } else { 1675 } else {
1643 dasm_put(Dst, 10281); 1676 dasm_put(Dst, 10453);
1644 } 1677 }
1645 break; 1678 break;
1646 default: 1679 default:
1647 dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM); 1680 dasm_put(Dst, 10462, LJ_TISNUM, LJ_TISNUM);
1648 if (sse) { 1681 if (sse) {
1649 dasm_put(Dst, 10312); 1682 dasm_put(Dst, 10484);
1650 } else { 1683 } else {
1651 dasm_put(Dst, 10326); 1684 dasm_put(Dst, 10498);
1652 } 1685 }
1653 break; 1686 break;
1654 } 1687 }
1655 if (sse) { 1688 if (sse) {
1656 dasm_put(Dst, 10092); 1689 dasm_put(Dst, 10264);
1657 } else { 1690 } else {
1658 dasm_put(Dst, 10104); 1691 dasm_put(Dst, 10276);
1659 } 1692 }
1660 dasm_put(Dst, 9672); 1693 dasm_put(Dst, 9707);
1661 break; 1694 break;
1662 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 1695 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1663 dasm_put(Dst, 10210); 1696 dasm_put(Dst, 10382);
1664 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1697 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1665 switch (vk) { 1698 switch (vk) {
1666 case 0: 1699 case 0:
1667 dasm_put(Dst, 10218, LJ_TISNUM); 1700 dasm_put(Dst, 10390, LJ_TISNUM);
1668 if (sse) { 1701 if (sse) {
1669 dasm_put(Dst, 10334); 1702 dasm_put(Dst, 10506);
1670 } else { 1703 } else {
1671 dasm_put(Dst, 10349); 1704 dasm_put(Dst, 10521);
1672 } 1705 }
1673 break; 1706 break;
1674 case 1: 1707 case 1:
1675 dasm_put(Dst, 10254, LJ_TISNUM); 1708 dasm_put(Dst, 10426, LJ_TISNUM);
1676 if (sse) { 1709 if (sse) {
1677 dasm_put(Dst, 10358); 1710 dasm_put(Dst, 10530);
1678 } else { 1711 } else {
1679 dasm_put(Dst, 10373); 1712 dasm_put(Dst, 10545);
1680 } 1713 }
1681 break; 1714 break;
1682 default: 1715 default:
1683 dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM); 1716 dasm_put(Dst, 10462, LJ_TISNUM, LJ_TISNUM);
1684 if (sse) { 1717 if (sse) {
1685 dasm_put(Dst, 10382); 1718 dasm_put(Dst, 10554);
1686 } else { 1719 } else {
1687 dasm_put(Dst, 10396); 1720 dasm_put(Dst, 10568);
1688 } 1721 }
1689 break; 1722 break;
1690 } 1723 }
1691 if (sse) { 1724 if (sse) {
1692 dasm_put(Dst, 10092); 1725 dasm_put(Dst, 10264);
1693 } else { 1726 } else {
1694 dasm_put(Dst, 10104); 1727 dasm_put(Dst, 10276);
1695 } 1728 }
1696 dasm_put(Dst, 9672); 1729 dasm_put(Dst, 9707);
1697 break; 1730 break;
1698 case BC_MULVN: case BC_MULNV: case BC_MULVV: 1731 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1699 dasm_put(Dst, 10210); 1732 dasm_put(Dst, 10382);
1700 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1733 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1701 switch (vk) { 1734 switch (vk) {
1702 case 0: 1735 case 0:
1703 dasm_put(Dst, 10218, LJ_TISNUM); 1736 dasm_put(Dst, 10390, LJ_TISNUM);
1704 if (sse) { 1737 if (sse) {
1705 dasm_put(Dst, 10404); 1738 dasm_put(Dst, 10576);
1706 } else { 1739 } else {
1707 dasm_put(Dst, 10419); 1740 dasm_put(Dst, 10591);
1708 } 1741 }
1709 break; 1742 break;
1710 case 1: 1743 case 1:
1711 dasm_put(Dst, 10254, LJ_TISNUM); 1744 dasm_put(Dst, 10426, LJ_TISNUM);
1712 if (sse) { 1745 if (sse) {
1713 dasm_put(Dst, 10428); 1746 dasm_put(Dst, 10600);
1714 } else { 1747 } else {
1715 dasm_put(Dst, 10443); 1748 dasm_put(Dst, 10615);
1716 } 1749 }
1717 break; 1750 break;
1718 default: 1751 default:
1719 dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM); 1752 dasm_put(Dst, 10462, LJ_TISNUM, LJ_TISNUM);
1720 if (sse) { 1753 if (sse) {
1721 dasm_put(Dst, 10452); 1754 dasm_put(Dst, 10624);
1722 } else { 1755 } else {
1723 dasm_put(Dst, 10466); 1756 dasm_put(Dst, 10638);
1724 } 1757 }
1725 break; 1758 break;
1726 } 1759 }
1727 if (sse) { 1760 if (sse) {
1728 dasm_put(Dst, 10092); 1761 dasm_put(Dst, 10264);
1729 } else { 1762 } else {
1730 dasm_put(Dst, 10104); 1763 dasm_put(Dst, 10276);
1731 } 1764 }
1732 dasm_put(Dst, 9672); 1765 dasm_put(Dst, 9707);
1733 break; 1766 break;
1734 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 1767 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1735 dasm_put(Dst, 10210); 1768 dasm_put(Dst, 10382);
1736 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1769 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1737 switch (vk) { 1770 switch (vk) {
1738 case 0: 1771 case 0:
1739 dasm_put(Dst, 10218, LJ_TISNUM); 1772 dasm_put(Dst, 10390, LJ_TISNUM);
1740 if (sse) { 1773 if (sse) {
1741 dasm_put(Dst, 10474); 1774 dasm_put(Dst, 10646);
1742 } else { 1775 } else {
1743 dasm_put(Dst, 10489); 1776 dasm_put(Dst, 10661);
1744 } 1777 }
1745 break; 1778 break;
1746 case 1: 1779 case 1:
1747 dasm_put(Dst, 10254, LJ_TISNUM); 1780 dasm_put(Dst, 10426, LJ_TISNUM);
1748 if (sse) { 1781 if (sse) {
1749 dasm_put(Dst, 10498); 1782 dasm_put(Dst, 10670);
1750 } else { 1783 } else {
1751 dasm_put(Dst, 10513); 1784 dasm_put(Dst, 10685);
1752 } 1785 }
1753 break; 1786 break;
1754 default: 1787 default:
1755 dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM); 1788 dasm_put(Dst, 10462, LJ_TISNUM, LJ_TISNUM);
1756 if (sse) { 1789 if (sse) {
1757 dasm_put(Dst, 10522); 1790 dasm_put(Dst, 10694);
1758 } else { 1791 } else {
1759 dasm_put(Dst, 10536); 1792 dasm_put(Dst, 10708);
1760 } 1793 }
1761 break; 1794 break;
1762 } 1795 }
1763 if (sse) { 1796 if (sse) {
1764 dasm_put(Dst, 10092); 1797 dasm_put(Dst, 10264);
1765 } else { 1798 } else {
1766 dasm_put(Dst, 10104); 1799 dasm_put(Dst, 10276);
1767 } 1800 }
1768 dasm_put(Dst, 9672); 1801 dasm_put(Dst, 9707);
1769 break; 1802 break;
1770 case BC_MODVN: 1803 case BC_MODVN:
1771 dasm_put(Dst, 10210); 1804 dasm_put(Dst, 10382);
1772 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1805 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1773 switch (vk) { 1806 switch (vk) {
1774 case 0: 1807 case 0:
1775 dasm_put(Dst, 10218, LJ_TISNUM); 1808 dasm_put(Dst, 10390, LJ_TISNUM);
1776 if (sse) { 1809 if (sse) {
1777 dasm_put(Dst, 10544); 1810 dasm_put(Dst, 10716);
1778 } else { 1811 } else {
1779 dasm_put(Dst, 10559); 1812 dasm_put(Dst, 10731);
1780 } 1813 }
1781 break; 1814 break;
1782 case 1: 1815 case 1:
1783 dasm_put(Dst, 10254, LJ_TISNUM); 1816 dasm_put(Dst, 10426, LJ_TISNUM);
1784 if (sse) { 1817 if (sse) {
1785 dasm_put(Dst, 10568); 1818 dasm_put(Dst, 10740);
1786 } else { 1819 } else {
1787 dasm_put(Dst, 10583); 1820 dasm_put(Dst, 10755);
1788 } 1821 }
1789 break; 1822 break;
1790 default: 1823 default:
1791 dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM); 1824 dasm_put(Dst, 10462, LJ_TISNUM, LJ_TISNUM);
1792 if (sse) { 1825 if (sse) {
1793 dasm_put(Dst, 10592); 1826 dasm_put(Dst, 10764);
1794 } else { 1827 } else {
1795 dasm_put(Dst, 10606); 1828 dasm_put(Dst, 10778);
1796 } 1829 }
1797 break; 1830 break;
1798 } 1831 }
1799 dasm_put(Dst, 10614); 1832 dasm_put(Dst, 10786);
1800 if (sse) { 1833 if (sse) {
1801 dasm_put(Dst, 10092); 1834 dasm_put(Dst, 10264);
1802 } else { 1835 } else {
1803 dasm_put(Dst, 10104); 1836 dasm_put(Dst, 10276);
1804 } 1837 }
1805 dasm_put(Dst, 9672); 1838 dasm_put(Dst, 9707);
1806 break; 1839 break;
1807 case BC_MODNV: case BC_MODVV: 1840 case BC_MODNV: case BC_MODVV:
1808 dasm_put(Dst, 10210); 1841 dasm_put(Dst, 10382);
1809 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1842 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1810 switch (vk) { 1843 switch (vk) {
1811 case 0: 1844 case 0:
1812 dasm_put(Dst, 10218, LJ_TISNUM); 1845 dasm_put(Dst, 10390, LJ_TISNUM);
1813 if (sse) { 1846 if (sse) {
1814 dasm_put(Dst, 10544); 1847 dasm_put(Dst, 10716);
1815 } else { 1848 } else {
1816 dasm_put(Dst, 10559); 1849 dasm_put(Dst, 10731);
1817 } 1850 }
1818 break; 1851 break;
1819 case 1: 1852 case 1:
1820 dasm_put(Dst, 10254, LJ_TISNUM); 1853 dasm_put(Dst, 10426, LJ_TISNUM);
1821 if (sse) { 1854 if (sse) {
1822 dasm_put(Dst, 10568); 1855 dasm_put(Dst, 10740);
1823 } else { 1856 } else {
1824 dasm_put(Dst, 10583); 1857 dasm_put(Dst, 10755);
1825 } 1858 }
1826 break; 1859 break;
1827 default: 1860 default:
1828 dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM); 1861 dasm_put(Dst, 10462, LJ_TISNUM, LJ_TISNUM);
1829 if (sse) { 1862 if (sse) {
1830 dasm_put(Dst, 10592); 1863 dasm_put(Dst, 10764);
1831 } else { 1864 } else {
1832 dasm_put(Dst, 10606); 1865 dasm_put(Dst, 10778);
1833 } 1866 }
1834 break; 1867 break;
1835 } 1868 }
1836 dasm_put(Dst, 10620); 1869 dasm_put(Dst, 10792);
1837 break; 1870 break;
1838 case BC_POW: 1871 case BC_POW:
1839 dasm_put(Dst, 10210); 1872 dasm_put(Dst, 10382);
1840 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1873 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1841 switch (vk) { 1874 switch (vk) {
1842 case 0: 1875 case 0:
1843 dasm_put(Dst, 10218, LJ_TISNUM); 1876 dasm_put(Dst, 10390, LJ_TISNUM);
1844 if (sse) { 1877 if (sse) {
1845 dasm_put(Dst, 10544); 1878 dasm_put(Dst, 10716);
1846 } else { 1879 } else {
1847 dasm_put(Dst, 10559); 1880 dasm_put(Dst, 10731);
1848 } 1881 }
1849 break; 1882 break;
1850 case 1: 1883 case 1:
1851 dasm_put(Dst, 10254, LJ_TISNUM); 1884 dasm_put(Dst, 10426, LJ_TISNUM);
1852 if (sse) { 1885 if (sse) {
1853 dasm_put(Dst, 10568); 1886 dasm_put(Dst, 10740);
1854 } else { 1887 } else {
1855 dasm_put(Dst, 10583); 1888 dasm_put(Dst, 10755);
1856 } 1889 }
1857 break; 1890 break;
1858 default: 1891 default:
1859 dasm_put(Dst, 10290, LJ_TISNUM, LJ_TISNUM); 1892 dasm_put(Dst, 10462, LJ_TISNUM, LJ_TISNUM);
1860 if (sse) { 1893 if (sse) {
1861 dasm_put(Dst, 10592); 1894 dasm_put(Dst, 10764);
1862 } else { 1895 } else {
1863 dasm_put(Dst, 10606); 1896 dasm_put(Dst, 10778);
1864 } 1897 }
1865 break; 1898 break;
1866 } 1899 }
1867 dasm_put(Dst, 10625); 1900 dasm_put(Dst, 10797);
1868 if (sse) { 1901 if (sse) {
1869 dasm_put(Dst, 10092); 1902 dasm_put(Dst, 10264);
1870 } else { 1903 } else {
1871 dasm_put(Dst, 10104); 1904 dasm_put(Dst, 10276);
1872 } 1905 }
1873 dasm_put(Dst, 9672); 1906 dasm_put(Dst, 9707);
1874 break; 1907 break;
1875 1908
1876 case BC_CAT: 1909 case BC_CAT:
1877 dasm_put(Dst, 10629, Dt1(->base), Dt1(->base)); 1910 dasm_put(Dst, 10801, Dt1(->base), Dt1(->base));
1878 break; 1911 break;
1879 1912
1880 /* -- Constant ops ------------------------------------------------------ */ 1913 /* -- Constant ops ------------------------------------------------------ */
1881 1914
1882 case BC_KSTR: 1915 case BC_KSTR:
1883 dasm_put(Dst, 10713, LJ_TSTR); 1916 dasm_put(Dst, 10885, LJ_TSTR);
1884 break; 1917 break;
1885 case BC_KCDATA: 1918 case BC_KCDATA:
1886#if LJ_HASFFI 1919#if LJ_HASFFI
1887 dasm_put(Dst, 10713, LJ_TCDATA); 1920 dasm_put(Dst, 10885, LJ_TCDATA);
1888#endif 1921#endif
1889 break; 1922 break;
1890 case BC_KSHORT: 1923 case BC_KSHORT:
1891 if (sse) { 1924 if (sse) {
1892 dasm_put(Dst, 10750); 1925 dasm_put(Dst, 10922);
1893 } else { 1926 } else {
1894 dasm_put(Dst, 10765); 1927 dasm_put(Dst, 10937);
1895 } 1928 }
1896 dasm_put(Dst, 9672); 1929 dasm_put(Dst, 9707);
1897 break; 1930 break;
1898 case BC_KNUM: 1931 case BC_KNUM:
1899 if (sse) { 1932 if (sse) {
1900 dasm_put(Dst, 10773); 1933 dasm_put(Dst, 10945);
1901 } else { 1934 } else {
1902 dasm_put(Dst, 10787); 1935 dasm_put(Dst, 10959);
1903 } 1936 }
1904 dasm_put(Dst, 9672); 1937 dasm_put(Dst, 9707);
1905 break; 1938 break;
1906 case BC_KPRI: 1939 case BC_KPRI:
1907 dasm_put(Dst, 10795); 1940 dasm_put(Dst, 10967);
1908 break; 1941 break;
1909 case BC_KNIL: 1942 case BC_KNIL:
1910 dasm_put(Dst, 10824, LJ_TNIL); 1943 dasm_put(Dst, 10996, LJ_TNIL);
1911 break; 1944 break;
1912 1945
1913 /* -- Upvalue and function ops ------------------------------------------ */ 1946 /* -- Upvalue and function ops ------------------------------------------ */
1914 1947
1915 case BC_UGET: 1948 case BC_UGET:
1916 dasm_put(Dst, 10872, offsetof(GCfuncL, uvptr), DtA(->v)); 1949 dasm_put(Dst, 11044, offsetof(GCfuncL, uvptr), DtA(->v));
1917 break; 1950 break;
1918 case BC_USETV: 1951 case BC_USETV:
1919#define TV2MARKOFS \ 1952#define TV2MARKOFS \
1920 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 1953 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
1921 dasm_put(Dst, 10913, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 1954 dasm_put(Dst, 11085, 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);
1922 dasm_put(Dst, 11009); 1955 dasm_put(Dst, 11181);
1923 break; 1956 break;
1924#undef TV2MARKOFS 1957#undef TV2MARKOFS
1925 case BC_USETS: 1958 case BC_USETS:
1926 dasm_put(Dst, 11021, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 1959 dasm_put(Dst, 11193, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
1927 break; 1960 break;
1928 case BC_USETN: 1961 case BC_USETN:
1929 dasm_put(Dst, 11117); 1962 dasm_put(Dst, 11289);
1930 if (sse) { 1963 if (sse) {
1931 dasm_put(Dst, 11122); 1964 dasm_put(Dst, 11294);
1932 } else { 1965 } else {
1933 dasm_put(Dst, 9914); 1966 dasm_put(Dst, 9988);
1934 } 1967 }
1935 dasm_put(Dst, 11130, offsetof(GCfuncL, uvptr), DtA(->v)); 1968 dasm_put(Dst, 11302, offsetof(GCfuncL, uvptr), DtA(->v));
1936 if (sse) { 1969 if (sse) {
1937 dasm_put(Dst, 11139); 1970 dasm_put(Dst, 11311);
1938 } else { 1971 } else {
1939 dasm_put(Dst, 11145); 1972 dasm_put(Dst, 11317);
1940 } 1973 }
1941 dasm_put(Dst, 9672); 1974 dasm_put(Dst, 9707);
1942 break; 1975 break;
1943 case BC_USETP: 1976 case BC_USETP:
1944 dasm_put(Dst, 11148, offsetof(GCfuncL, uvptr), DtA(->v)); 1977 dasm_put(Dst, 11320, offsetof(GCfuncL, uvptr), DtA(->v));
1945 break; 1978 break;
1946 case BC_UCLO: 1979 case BC_UCLO:
1947 dasm_put(Dst, 11188, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 1980 dasm_put(Dst, 11360, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
1948 break; 1981 break;
1949 1982
1950 case BC_FNEW: 1983 case BC_FNEW:
1951 dasm_put(Dst, 11244, Dt1(->base), Dt1(->base), LJ_TFUNC); 1984 dasm_put(Dst, 11416, Dt1(->base), Dt1(->base), LJ_TFUNC);
1952 break; 1985 break;
1953 1986
1954 /* -- Table ops --------------------------------------------------------- */ 1987 /* -- Table ops --------------------------------------------------------- */
1955 1988
1956 case BC_TNEW: 1989 case BC_TNEW:
1957 dasm_put(Dst, 11311, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 1990 dasm_put(Dst, 11483, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
1958 break; 1991 break;
1959 case BC_TDUP: 1992 case BC_TDUP:
1960 dasm_put(Dst, 11435, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 1993 dasm_put(Dst, 11607, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
1961 break; 1994 break;
1962 1995
1963 case BC_GGET: 1996 case BC_GGET:
1964 dasm_put(Dst, 11534, Dt7(->env)); 1997 dasm_put(Dst, 11706, Dt7(->env));
1965 break; 1998 break;
1966 case BC_GSET: 1999 case BC_GSET:
1967 dasm_put(Dst, 11554, Dt7(->env)); 2000 dasm_put(Dst, 11726, Dt7(->env));
1968 break; 2001 break;
1969 2002
1970 case BC_TGETV: 2003 case BC_TGETV:
1971 dasm_put(Dst, 11574, LJ_TTAB, LJ_TISNUM); 2004 dasm_put(Dst, 11746, LJ_TTAB, LJ_TISNUM);
1972 if (sse) { 2005 if (sse) {
1973 dasm_put(Dst, 11607); 2006 dasm_put(Dst, 11779);
1974 } else { 2007 } else {
1975 } 2008 }
1976 dasm_put(Dst, 11628, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2009 dasm_put(Dst, 11800, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1977 dasm_put(Dst, 11713, LJ_TNIL, LJ_TSTR); 2010 dasm_put(Dst, 11885, LJ_TNIL, LJ_TSTR);
1978 break; 2011 break;
1979 case BC_TGETS: 2012 case BC_TGETS:
1980 dasm_put(Dst, 11742, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2013 dasm_put(Dst, 11914, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1981 dasm_put(Dst, 11827, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2014 dasm_put(Dst, 11999, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1982 break; 2015 break;
1983 case BC_TGETB: 2016 case BC_TGETB:
1984 dasm_put(Dst, 11899, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2017 dasm_put(Dst, 12071, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1985 dasm_put(Dst, 11995, LJ_TNIL); 2018 dasm_put(Dst, 12167, LJ_TNIL);
1986 break; 2019 break;
1987 2020
1988 case BC_TSETV: 2021 case BC_TSETV:
1989 dasm_put(Dst, 12012, LJ_TTAB, LJ_TISNUM); 2022 dasm_put(Dst, 12184, LJ_TTAB, LJ_TISNUM);
1990 if (sse) { 2023 if (sse) {
1991 dasm_put(Dst, 11607); 2024 dasm_put(Dst, 11779);
1992 } else { 2025 } else {
1993 } 2026 }
1994 dasm_put(Dst, 12045, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 2027 dasm_put(Dst, 12217, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
1995 dasm_put(Dst, 12125, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2028 dasm_put(Dst, 12297, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1996 break; 2029 break;
1997 case BC_TSETS: 2030 case BC_TSETS:
1998 dasm_put(Dst, 12189, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2031 dasm_put(Dst, 12361, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1999 dasm_put(Dst, 12266, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 2032 dasm_put(Dst, 12438, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
2000 dasm_put(Dst, 12353, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2033 dasm_put(Dst, 12525, 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));
2001 break; 2034 break;
2002 case BC_TSETB: 2035 case BC_TSETB:
2003 dasm_put(Dst, 12445, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 2036 dasm_put(Dst, 12617, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
2004 dasm_put(Dst, 12540, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2037 dasm_put(Dst, 12712, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2005 break; 2038 break;
2006 2039
2007 case BC_TSETM: 2040 case BC_TSETM:
2008 dasm_put(Dst, 12588, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); 2041 dasm_put(Dst, 12760, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
2009 dasm_put(Dst, 12738, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2042 dasm_put(Dst, 12910, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2010 break; 2043 break;
2011 2044
2012 /* -- Calls and vararg handling ----------------------------------------- */ 2045 /* -- Calls and vararg handling ----------------------------------------- */
2013 2046
2014 case BC_CALL: case BC_CALLM: 2047 case BC_CALL: case BC_CALLM:
2015 dasm_put(Dst, 10214); 2048 dasm_put(Dst, 10386);
2016 if (op == BC_CALLM) { 2049 if (op == BC_CALLM) {
2017 dasm_put(Dst, 12758); 2050 dasm_put(Dst, 12930);
2018 } 2051 }
2019 dasm_put(Dst, 12763, LJ_TFUNC, Dt7(->pc)); 2052 dasm_put(Dst, 12935, LJ_TFUNC, Dt7(->pc));
2020 break; 2053 break;
2021 2054
2022 case BC_CALLMT: 2055 case BC_CALLMT:
2023 dasm_put(Dst, 12758); 2056 dasm_put(Dst, 12930);
2024 break; 2057 break;
2025 case BC_CALLT: 2058 case BC_CALLT:
2026 dasm_put(Dst, 12806, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); 2059 dasm_put(Dst, 12978, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
2027 dasm_put(Dst, 12924, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); 2060 dasm_put(Dst, 13096, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
2028 break; 2061 break;
2029 2062
2030 case BC_ITERC: 2063 case BC_ITERC:
2031 dasm_put(Dst, 12998, LJ_TFUNC, 2+1, Dt7(->pc)); 2064 dasm_put(Dst, 13170, LJ_TFUNC, 2+1, Dt7(->pc));
2032 break; 2065 break;
2033 2066
2034 case BC_ITERN: 2067 case BC_ITERN:
2035#if LJ_HASJIT 2068#if LJ_HASJIT
2036#endif 2069#endif
2037 dasm_put(Dst, 13070, Dt6(->asize), Dt6(->array), LJ_TNIL); 2070 dasm_put(Dst, 13242, Dt6(->asize), Dt6(->array), LJ_TNIL);
2038 if (sse) { 2071 if (sse) {
2039 dasm_put(Dst, 13122); 2072 dasm_put(Dst, 13294);
2040 } else { 2073 } else {
2041 dasm_put(Dst, 13128); 2074 dasm_put(Dst, 13300);
2042 } 2075 }
2043 dasm_put(Dst, 13134); 2076 dasm_put(Dst, 13306);
2044 if (sse) { 2077 if (sse) {
2045 dasm_put(Dst, 10092); 2078 dasm_put(Dst, 10264);
2046 } else { 2079 } else {
2047 dasm_put(Dst, 10104); 2080 dasm_put(Dst, 10276);
2048 } 2081 }
2049 dasm_put(Dst, 13147, -BCBIAS_J*4); 2082 dasm_put(Dst, 13319, -BCBIAS_J*4);
2050 if (!sse) { 2083 if (!sse) {
2051 dasm_put(Dst, 13201); 2084 dasm_put(Dst, 13373);
2052 } 2085 }
2053 dasm_put(Dst, 13207, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val)); 2086 dasm_put(Dst, 13379, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
2054 break; 2087 break;
2055 2088
2056 case BC_ISNEXT: 2089 case BC_ISNEXT:
2057 dasm_put(Dst, 13286, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); 2090 dasm_put(Dst, 13458, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
2058 break; 2091 break;
2059 2092
2060 case BC_VARG: 2093 case BC_VARG:
2061 dasm_put(Dst, 13387, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); 2094 dasm_put(Dst, 13559, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
2062 dasm_put(Dst, 13554, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 2095 dasm_put(Dst, 13726, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
2063 break; 2096 break;
2064 2097
2065 /* -- Returns ----------------------------------------------------------- */ 2098 /* -- Returns ----------------------------------------------------------- */
2066 2099
2067 case BC_RETM: 2100 case BC_RETM:
2068 dasm_put(Dst, 12758); 2101 dasm_put(Dst, 12930);
2069 break; 2102 break;
2070 2103
2071 case BC_RET: case BC_RET0: case BC_RET1: 2104 case BC_RET: case BC_RET0: case BC_RET1:
2072 if (op != BC_RET0) { 2105 if (op != BC_RET0) {
2073 dasm_put(Dst, 13624); 2106 dasm_put(Dst, 13796);
2074 } 2107 }
2075 dasm_put(Dst, 13628, FRAME_TYPE); 2108 dasm_put(Dst, 13800, FRAME_TYPE);
2076 switch (op) { 2109 switch (op) {
2077 case BC_RET: 2110 case BC_RET:
2078 dasm_put(Dst, 13647); 2111 dasm_put(Dst, 13819);
2079 break; 2112 break;
2080 case BC_RET1: 2113 case BC_RET1:
2081 dasm_put(Dst, 13701); 2114 dasm_put(Dst, 13873);
2082 /* fallthrough */ 2115 /* fallthrough */
2083 case BC_RET0: 2116 case BC_RET0:
2084 dasm_put(Dst, 13711); 2117 dasm_put(Dst, 13883);
2085 default: 2118 default:
2086 break; 2119 break;
2087 } 2120 }
2088 dasm_put(Dst, 13722, Dt7(->pc), PC2PROTO(k)); 2121 dasm_put(Dst, 13894, Dt7(->pc), PC2PROTO(k));
2089 if (op == BC_RET) { 2122 if (op == BC_RET) {
2090 dasm_put(Dst, 13770, LJ_TNIL); 2123 dasm_put(Dst, 13942, LJ_TNIL);
2091 } else { 2124 } else {
2092 dasm_put(Dst, 13781, LJ_TNIL); 2125 dasm_put(Dst, 13953, LJ_TNIL);
2093 } 2126 }
2094 dasm_put(Dst, 13788, -FRAME_VARG, FRAME_TYPEP); 2127 dasm_put(Dst, 13960, -FRAME_VARG, FRAME_TYPEP);
2095 if (op != BC_RET0) { 2128 if (op != BC_RET0) {
2096 dasm_put(Dst, 13812); 2129 dasm_put(Dst, 13984);
2097 } 2130 }
2098 dasm_put(Dst, 4546); 2131 dasm_put(Dst, 4579);
2099 break; 2132 break;
2100 2133
2101 /* -- Loops and branches ------------------------------------------------ */ 2134 /* -- Loops and branches ------------------------------------------------ */
@@ -2103,7 +2136,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2103 2136
2104 case BC_FORL: 2137 case BC_FORL:
2105#if LJ_HASJIT 2138#if LJ_HASJIT
2106 dasm_put(Dst, 13816, HOTCOUNT_PCMASK, GG_DISP2HOT); 2139 dasm_put(Dst, 13988, HOTCOUNT_PCMASK, GG_DISP2HOT);
2107#endif 2140#endif
2108 break; 2141 break;
2109 2142
@@ -2115,57 +2148,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2115 case BC_FORI: 2148 case BC_FORI:
2116 case BC_IFORL: 2149 case BC_IFORL:
2117 vk = (op == BC_IFORL || op == BC_JFORL); 2150 vk = (op == BC_IFORL || op == BC_JFORL);
2118 dasm_put(Dst, 13837); 2151 dasm_put(Dst, 14009);
2119 if (!vk) { 2152 if (!vk) {
2120 dasm_put(Dst, 13841, LJ_TISNUM, LJ_TISNUM); 2153 dasm_put(Dst, 14013, LJ_TISNUM, LJ_TISNUM);
2121 } 2154 }
2122 dasm_put(Dst, 13860); 2155 dasm_put(Dst, 14032);
2123 if (!vk) { 2156 if (!vk) {
2124 dasm_put(Dst, 13864, LJ_TISNUM); 2157 dasm_put(Dst, 14036, LJ_TISNUM);
2125 } 2158 }
2126 if (sse) { 2159 if (sse) {
2127 dasm_put(Dst, 13873); 2160 dasm_put(Dst, 14045);
2128 if (vk) { 2161 if (vk) {
2129 dasm_put(Dst, 13885); 2162 dasm_put(Dst, 14057);
2130 } else { 2163 } else {
2131 dasm_put(Dst, 13904); 2164 dasm_put(Dst, 14076);
2132 } 2165 }
2133 dasm_put(Dst, 13909); 2166 dasm_put(Dst, 14081);
2134 } else { 2167 } else {
2135 dasm_put(Dst, 13922); 2168 dasm_put(Dst, 14094);
2136 if (vk) { 2169 if (vk) {
2137 dasm_put(Dst, 13928); 2170 dasm_put(Dst, 14100);
2138 } else { 2171 } else {
2139 dasm_put(Dst, 13944); 2172 dasm_put(Dst, 14116);
2140 } 2173 }
2141 dasm_put(Dst, 13952); 2174 dasm_put(Dst, 14124);
2142 if (cmov) { 2175 if (cmov) {
2143 dasm_put(Dst, 9635); 2176 dasm_put(Dst, 9670);
2144 } else { 2177 } else {
2145 dasm_put(Dst, 9641); 2178 dasm_put(Dst, 9676);
2146 } 2179 }
2147 if (!cmov) { 2180 if (!cmov) {
2148 dasm_put(Dst, 13957); 2181 dasm_put(Dst, 14129);
2149 } 2182 }
2150 } 2183 }
2151 if (op == BC_FORI) { 2184 if (op == BC_FORI) {
2152 dasm_put(Dst, 13963, -BCBIAS_J*4); 2185 dasm_put(Dst, 14135, -BCBIAS_J*4);
2153 } else if (op == BC_JFORI) { 2186 } else if (op == BC_JFORI) {
2154 dasm_put(Dst, 13973, -BCBIAS_J*4, BC_JLOOP); 2187 dasm_put(Dst, 14145, -BCBIAS_J*4, BC_JLOOP);
2155 } else if (op == BC_IFORL) { 2188 } else if (op == BC_IFORL) {
2156 dasm_put(Dst, 13987, -BCBIAS_J*4); 2189 dasm_put(Dst, 14159, -BCBIAS_J*4);
2157 } else { 2190 } else {
2158 dasm_put(Dst, 13983, BC_JLOOP); 2191 dasm_put(Dst, 14155, BC_JLOOP);
2159 } 2192 }
2160 dasm_put(Dst, 9670); 2193 dasm_put(Dst, 9705);
2161 if (sse) { 2194 if (sse) {
2162 dasm_put(Dst, 13997); 2195 dasm_put(Dst, 14169);
2163 } 2196 }
2164 break; 2197 break;
2165 2198
2166 case BC_ITERL: 2199 case BC_ITERL:
2167#if LJ_HASJIT 2200#if LJ_HASJIT
2168 dasm_put(Dst, 13816, HOTCOUNT_PCMASK, GG_DISP2HOT); 2201 dasm_put(Dst, 13988, HOTCOUNT_PCMASK, GG_DISP2HOT);
2169#endif 2202#endif
2170 break; 2203 break;
2171 2204
@@ -2174,33 +2207,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2174 break; 2207 break;
2175#endif 2208#endif
2176 case BC_IITERL: 2209 case BC_IITERL:
2177 dasm_put(Dst, 14008, LJ_TNIL); 2210 dasm_put(Dst, 14180, LJ_TNIL);
2178 if (op == BC_JITERL) { 2211 if (op == BC_JITERL) {
2179 dasm_put(Dst, 14023, BC_JLOOP); 2212 dasm_put(Dst, 14195, BC_JLOOP);
2180 } else { 2213 } else {
2181 dasm_put(Dst, 14037, -BCBIAS_J*4); 2214 dasm_put(Dst, 14209, -BCBIAS_J*4);
2182 } 2215 }
2183 dasm_put(Dst, 9974); 2216 dasm_put(Dst, 10146);
2184 break; 2217 break;
2185 2218
2186 case BC_LOOP: 2219 case BC_LOOP:
2187#if LJ_HASJIT 2220#if LJ_HASJIT
2188 dasm_put(Dst, 13816, HOTCOUNT_PCMASK, GG_DISP2HOT); 2221 dasm_put(Dst, 13988, HOTCOUNT_PCMASK, GG_DISP2HOT);
2189#endif 2222#endif
2190 break; 2223 break;
2191 2224
2192 case BC_ILOOP: 2225 case BC_ILOOP:
2193 dasm_put(Dst, 9672); 2226 dasm_put(Dst, 9707);
2194 break; 2227 break;
2195 2228
2196 case BC_JLOOP: 2229 case BC_JLOOP:
2197#if LJ_HASJIT 2230#if LJ_HASJIT
2198 dasm_put(Dst, 14053, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 2231 dasm_put(Dst, 14225, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
2199#endif 2232#endif
2200 break; 2233 break;
2201 2234
2202 case BC_JMP: 2235 case BC_JMP:
2203 dasm_put(Dst, 14094, -BCBIAS_J*4); 2236 dasm_put(Dst, 14266, -BCBIAS_J*4);
2204 break; 2237 break;
2205 2238
2206 /* -- Function headers -------------------------------------------------- */ 2239 /* -- Function headers -------------------------------------------------- */
@@ -2214,7 +2247,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2214 2247
2215 case BC_FUNCF: 2248 case BC_FUNCF:
2216#if LJ_HASJIT 2249#if LJ_HASJIT
2217 dasm_put(Dst, 14120, HOTCOUNT_PCMASK, GG_DISP2HOT); 2250 dasm_put(Dst, 14292, HOTCOUNT_PCMASK, GG_DISP2HOT);
2218#endif 2251#endif
2219 case BC_FUNCV: /* NYI: compiled vararg functions. */ 2252 case BC_FUNCV: /* NYI: compiled vararg functions. */
2220 break; 2253 break;
@@ -2224,47 +2257,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2224 break; 2257 break;
2225#endif 2258#endif
2226 case BC_IFUNCF: 2259 case BC_IFUNCF:
2227 dasm_put(Dst, 14141, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); 2260 dasm_put(Dst, 14313, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2228 if (op == BC_JFUNCF) { 2261 if (op == BC_JFUNCF) {
2229 dasm_put(Dst, 14172, BC_JLOOP); 2262 dasm_put(Dst, 14344, BC_JLOOP);
2230 } else { 2263 } else {
2231 dasm_put(Dst, 9672); 2264 dasm_put(Dst, 9707);
2232 } 2265 }
2233 dasm_put(Dst, 14181, LJ_TNIL); 2266 dasm_put(Dst, 14353, LJ_TNIL);
2234 break; 2267 break;
2235 2268
2236 case BC_JFUNCV: 2269 case BC_JFUNCV:
2237#if !LJ_HASJIT 2270#if !LJ_HASJIT
2238 break; 2271 break;
2239#endif 2272#endif
2240 dasm_put(Dst, 8991); 2273 dasm_put(Dst, 9024);
2241 break; /* NYI: compiled vararg functions. */ 2274 break; /* NYI: compiled vararg functions. */
2242 2275
2243 case BC_IFUNCV: 2276 case BC_IFUNCV:
2244 dasm_put(Dst, 14203, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); 2277 dasm_put(Dst, 14375, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2245 if (op == BC_JFUNCV) { 2278 if (op == BC_JFUNCV) {
2246 dasm_put(Dst, 14172, BC_JLOOP); 2279 dasm_put(Dst, 14344, BC_JLOOP);
2247 } else { 2280 } else {
2248 dasm_put(Dst, 14300, -4+PC2PROTO(k)); 2281 dasm_put(Dst, 14472, -4+PC2PROTO(k));
2249 } 2282 }
2250 dasm_put(Dst, 14325, LJ_TNIL); 2283 dasm_put(Dst, 14497, LJ_TNIL);
2251 break; 2284 break;
2252 2285
2253 case BC_FUNCC: 2286 case BC_FUNCC:
2254 case BC_FUNCCW: 2287 case BC_FUNCCW:
2255 dasm_put(Dst, 14347, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); 2288 dasm_put(Dst, 14519, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2256 if (op == BC_FUNCC) { 2289 if (op == BC_FUNCC) {
2257 dasm_put(Dst, 14377); 2290 dasm_put(Dst, 14549);
2258 } else { 2291 } else {
2259 dasm_put(Dst, 14381); 2292 dasm_put(Dst, 14553);
2260 } 2293 }
2261 dasm_put(Dst, 14389, DISPATCH_GL(vmstate), ~LJ_VMST_C); 2294 dasm_put(Dst, 14561, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2262 if (op == BC_FUNCC) { 2295 if (op == BC_FUNCC) {
2263 dasm_put(Dst, 14399); 2296 dasm_put(Dst, 14571);
2264 } else { 2297 } else {
2265 dasm_put(Dst, 14404, DISPATCH_GL(wrapf)); 2298 dasm_put(Dst, 14576, DISPATCH_GL(wrapf));
2266 } 2299 }
2267 dasm_put(Dst, 14410, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 2300 dasm_put(Dst, 14582, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2268 break; 2301 break;
2269 2302
2270 /* ---------------------------------------------------------------------- */ 2303 /* ---------------------------------------------------------------------- */
@@ -2292,7 +2325,7 @@ static int build_backend(BuildCtx *ctx)
2292 2325
2293 build_subroutines(ctx, cmov, sse); 2326 build_subroutines(ctx, cmov, sse);
2294 2327
2295 dasm_put(Dst, 14436); 2328 dasm_put(Dst, 14608);
2296 for (op = 0; op < BC__MAX; op++) 2329 for (op = 0; op < BC__MAX; op++)
2297 build_ins(ctx, (BCOp)op, op, cmov, sse); 2330 build_ins(ctx, (BCOp)op, op, cmov, sse);
2298 2331
diff --git a/src/buildvm_x64win.h b/src/buildvm_x64win.h
index a0cad3b6..578bc904 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[14342] = { 15static const unsigned char build_actionlist[14509] = {
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,
@@ -79,293 +79,295 @@ static const unsigned char build_actionlist[14342] = {
79 43,131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,44,129,120, 79 43,131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,44,129,120,
80 253,4,239,252,233,244,4,248,45,131,252,238,4,65,137,192,65,137,252,233,139, 80 253,4,239,252,233,244,4,248,45,131,252,238,4,65,137,192,65,137,252,233,139,
81 108,36,96,137,149,233,255,137,202,137,252,233,137,116,36,100,232,251,1,4, 81 108,36,96,137,149,233,255,137,202,137,252,233,137,116,36,100,232,251,1,4,
82 252,233,244,3,248,46,141,4,199,252,233,244,247,248,47,141,4,199,141,44,252, 82 252,233,244,3,248,46,255,131,252,238,4,139,108,36,96,137,149,233,137,252,
83 234,149,252,233,244,248,248,48,141,4,194,137,197,252,233,244,248,248,49,141, 83 233,139,86,252,252,137,116,36,100,232,251,1,5,252,233,244,3,255,248,47,141,
84 4,194,248,1,141,44,252,234,248,2,141,12,202,65,137,232,65,137,193,15,182, 84 4,199,252,233,244,247,248,48,141,4,199,141,44,252,234,149,252,233,244,248,
85 70,252,252,137,68,36,32,139,108,36,96,137,149,233,137,202,137,252,233,137, 85 248,49,141,4,194,137,197,252,233,244,248,248,50,141,4,194,248,1,141,44,252,
86 116,36,100,232,251,1,5,139,149,233,133,192,15,132,244,40,248,42,137,193,41, 86 234,248,2,141,12,202,65,137,232,65,137,193,15,182,70,252,252,137,68,36,32,
87 208,137,113,252,244,141,176,233,255,184,237,252,233,244,27,248,50,139,108, 87 139,108,36,96,137,149,233,137,202,137,252,233,137,116,36,100,232,251,1,6,
88 36,96,137,149,233,141,20,194,137,252,233,137,116,36,100,232,251,1,6,139,149, 88 139,149,233,133,192,15,132,244,40,248,42,137,193,41,208,137,113,252,244,141,
89 233,252,233,244,42,248,51,141,76,202,8,248,28,137,76,36,84,137,68,36,80,131, 89 176,233,184,237,252,233,244,27,248,51,255,139,108,36,96,137,149,233,141,20,
90 252,233,8,139,108,36,96,137,149,233,137,202,68,141,4,193,137,252,233,137, 90 194,137,252,233,137,116,36,100,232,251,1,7,139,149,233,252,233,244,42,248,
91 116,36,100,232,251,1,7,139,149,233,139,76,36,84,139,68,36,80,139,105,252, 91 52,141,76,202,8,248,28,137,76,36,84,137,68,36,80,131,252,233,8,139,108,36,
92 248,131,192,1,57,215,15,132,244,52,137,202,137,114,252,252,139,181,233,139, 92 96,137,149,233,137,202,68,141,4,193,137,252,233,137,116,36,100,232,251,1,
93 14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,248,53,139,108, 93 8,139,149,233,139,76,36,84,139,68,36,80,139,105,252,248,131,192,1,57,215,
94 36,96,137,149,233,137,202,137,252,233,137,116,36,100,232,251,1,8,139,149, 94 15,132,244,53,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,
95 233,139,70,252,252,15,182,204,15,182,232,193,232,16,252,255,164,253,252,235, 95 182,205,131,198,4,252,255,36,252,235,248,54,139,108,36,96,137,149,233,137,
96 233,248,54,255,129,252,248,239,15,130,244,55,139,106,4,129,252,253,239,15, 96 202,137,252,233,137,116,36,100,232,251,1,9,139,149,233,139,70,252,252,15,
97 131,244,55,139,114,252,252,137,68,36,84,137,106,252,252,139,42,137,106,252, 97 182,204,15,182,232,193,232,16,252,255,164,253,252,235,233,248,55,129,252,
98 248,131,232,2,15,132,244,248,137,209,248,1,131,193,8,72,139,41,72,137,105, 98 248,239,15,130,244,56,139,106,4,129,252,253,239,255,15,131,244,56,139,114,
99 252,248,131,232,1,15,133,244,1,248,2,139,68,36,84,252,233,244,56,248,57,129, 99 252,252,137,68,36,84,137,106,252,252,139,42,137,106,252,248,131,232,2,15,
100 252,248,239,15,130,244,55,139,106,4,137,252,233,193,252,249,15,131,252,249, 100 132,244,248,137,209,248,1,131,193,8,72,139,41,72,137,105,252,248,131,232,
101 252,254,15,132,244,249,255,184,237,252,247,213,57,232,255,15,71,197,255,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 134,244,247,137,232,248,1,255,248,2,139,106,252,248,139,132,253,197,233,139, 102 130,244,56,139,106,4,137,252,233,193,252,249,15,131,252,249,252,254,15,132,
103 114,252,252,199,66,252,252,237,137,66,252,248,252,233,244,58,248,3,184,237, 103 244,249,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,
104 252,233,244,2,248,59,129,252,248,239,15,130,244,55,139,106,4,139,114,252, 104 248,1,255,248,2,139,106,252,248,139,132,253,197,233,139,114,252,252,199,66,
105 252,129,252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,133,252, 105 252,252,237,137,66,252,248,252,233,244,59,248,3,184,237,252,233,244,2,248,
106 237,199,66,252,252,237,255,15,132,244,58,139,131,233,199,66,252,252,237,137, 106 60,129,252,248,239,15,130,244,56,139,106,4,139,114,252,252,129,252,253,239,
107 106,252,248,139,141,233,35,136,233,105,201,239,3,141,233,248,3,129,185,233, 107 15,133,244,252,248,1,139,42,139,173,233,248,2,133,252,237,199,66,252,252,
108 239,15,133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15, 108 237,255,15,132,244,59,139,131,233,199,66,252,252,237,137,106,252,248,139,
109 133,244,3,255,252,233,244,58,248,5,139,105,4,129,252,253,239,15,132,244,58, 109 141,233,35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15,133,244,
110 139,1,137,106,252,252,137,66,252,248,252,233,244,58,248,6,129,252,253,239, 110 250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244,3,255,
111 15,132,244,1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,139, 111 252,233,244,59,248,5,139,105,4,129,252,253,239,15,132,244,59,139,1,137,106,
112 172,253,171,233,252,233,244,2,248,60,255,129,252,248,239,15,130,244,55,129, 112 252,252,137,66,252,248,252,233,244,59,248,6,129,252,253,239,15,132,244,1,
113 122,253,4,239,15,133,244,55,139,42,131,189,233,0,15,133,244,55,129,122,253, 113 129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,139,172,253,171,
114 12,239,15,133,244,55,139,66,8,137,133,233,139,114,252,252,199,66,252,252, 114 233,252,233,244,2,248,61,255,129,252,248,239,15,130,244,56,129,122,253,4,
115 237,137,106,252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,255, 115 239,15,133,244,56,139,42,131,189,233,0,15,133,244,56,129,122,253,12,239,15,
116 139,131,233,137,171,233,137,133,233,248,1,252,233,244,58,248,61,129,252,248, 116 133,244,56,139,66,8,137,133,233,139,114,252,252,199,66,252,252,237,137,106,
117 239,15,130,244,55,129,122,253,4,239,15,133,244,55,137,213,68,141,66,8,139, 117 252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,255,139,131,233,
118 18,139,76,36,96,232,251,1,9,137,252,234,72,139,40,139,114,252,252,72,137, 118 137,171,233,137,133,233,248,1,252,233,244,59,248,62,129,252,248,239,15,130,
119 106,252,248,252,233,244,58,248,62,129,252,248,239,15,133,244,55,129,122,253, 119 244,56,129,122,253,4,239,15,133,244,56,137,213,68,141,66,8,139,18,139,76,
120 4,239,255,15,135,244,55,255,252,242,15,16,2,252,233,244,63,255,221,2,252, 120 36,96,232,251,1,10,137,252,234,72,139,40,139,114,252,252,72,137,106,252,248,
121 233,244,64,255,248,65,129,252,248,239,15,130,244,55,139,114,252,252,129,122, 121 252,233,244,59,248,63,129,252,248,239,15,133,244,56,129,122,253,4,239,255,
122 253,4,239,15,133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,248,252, 122 15,135,244,56,255,252,242,15,16,2,252,233,244,64,255,221,2,252,233,244,65,
123 233,244,58,248,3,129,122,253,4,239,15,135,244,55,131,187,233,0,15,133,244, 123 255,248,66,129,252,248,239,15,130,244,56,139,114,252,252,129,122,253,4,239,
124 55,139,171,233,59,171,233,255,15,130,244,247,232,244,66,248,1,139,108,36, 124 15,133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,233,244,
125 96,137,149,233,137,116,36,100,137,252,233,232,251,1,10,139,149,233,252,233, 125 59,248,3,129,122,253,4,239,15,135,244,56,131,187,233,0,15,133,244,56,139,
126 244,2,248,67,129,252,248,239,15,130,244,55,15,132,244,248,248,1,129,122,253, 126 171,233,59,171,233,255,15,130,244,247,232,244,67,248,1,139,108,36,96,137,
127 4,239,15,133,244,55,139,108,36,96,137,149,233,255,137,149,233,139,114,252, 127 149,233,137,116,36,100,137,252,233,232,251,1,11,139,149,233,252,233,244,2,
128 252,68,141,66,8,139,18,137,252,233,137,116,36,100,232,251,1,11,139,149,233, 128 248,68,129,252,248,239,15,130,244,56,15,132,244,248,248,1,129,122,253,4,239,
129 133,192,15,132,244,249,72,139,106,8,72,139,66,16,72,137,106,252,248,72,137, 129 15,133,244,56,139,108,36,96,137,149,233,255,137,149,233,139,114,252,252,68,
130 2,248,68,184,237,252,233,244,69,248,2,199,66,12,237,252,233,244,1,248,3,199, 130 141,66,8,139,18,137,252,233,137,116,36,100,232,251,1,12,139,149,233,133,192,
131 66,252,252,237,252,233,244,58,248,70,129,252,248,239,15,130,244,55,255,139, 131 15,132,244,249,72,139,106,8,72,139,66,16,72,137,106,252,248,72,137,2,248,
132 42,129,122,253,4,239,15,133,244,55,255,131,189,233,0,15,133,244,55,255,139, 132 69,184,237,252,233,244,70,248,2,199,66,12,237,252,233,244,1,248,3,199,66,
133 106,252,248,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248, 133 252,252,237,252,233,244,59,248,71,129,252,248,239,15,130,244,56,255,139,42,
134 199,66,12,237,184,237,252,233,244,69,248,71,129,252,248,239,15,130,244,55, 134 129,122,253,4,239,15,133,244,56,255,131,189,233,0,15,133,244,56,255,139,106,
135 129,122,253,4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,114, 135 252,248,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248,199,
136 252,252,255,252,242,15,16,66,8,72,189,237,237,102,72,15,110,205,252,242,15, 136 66,12,237,184,237,252,233,244,70,248,72,129,252,248,239,15,130,244,56,129,
137 88,193,252,242,15,45,192,252,242,15,17,66,252,248,255,139,42,59,133,233,15, 137 122,253,4,239,15,133,244,56,129,122,253,12,239,15,135,244,56,139,114,252,
138 131,244,248,193,224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,72,72, 138 252,255,252,242,15,16,66,8,72,189,237,237,102,72,15,110,205,252,242,15,88,
139 139,40,72,137,42,252,233,244,68,248,2,131,189,233,0,15,132,244,72,137,252, 139 193,252,242,15,45,192,252,242,15,17,66,252,248,255,139,42,59,133,233,15,131,
140 233,137,213,137,194,232,251,1,12,137,252,234,133,192,15,133,244,1,248,72, 140 244,248,193,224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,73,72,139,
141 184,237,252,233,244,69,248,73,255,129,252,248,239,15,130,244,55,139,42,129, 141 40,72,137,42,252,233,244,69,248,2,131,189,233,0,15,132,244,73,137,252,233,
142 122,253,4,239,15,133,244,55,255,139,106,252,248,139,133,233,139,114,252,252, 142 137,213,137,194,232,251,1,13,137,252,234,133,192,15,133,244,1,248,73,184,
143 199,66,252,252,237,137,66,252,248,255,15,87,192,252,242,15,17,66,8,255,217, 143 237,252,233,244,70,248,74,255,129,252,248,239,15,130,244,56,139,42,129,122,
144 252,238,221,90,8,255,184,237,252,233,244,69,248,74,129,252,248,239,15,130, 144 253,4,239,15,133,244,56,255,139,106,252,248,139,133,233,139,114,252,252,199,
145 244,55,141,74,8,131,232,1,190,237,248,1,15,182,171,233,193,252,237,235,131, 145 66,252,252,237,137,66,252,248,255,15,87,192,252,242,15,17,66,8,255,217,252,
146 229,1,1,252,238,252,233,244,27,248,75,129,252,248,239,15,130,244,55,129,122, 146 238,221,90,8,255,184,237,252,233,244,70,248,75,129,252,248,239,15,130,244,
147 253,12,239,15,133,244,55,255,139,106,4,137,106,12,199,66,4,237,139,42,139, 147 56,141,74,8,131,232,1,190,237,248,1,15,182,171,233,193,252,237,235,131,229,
148 114,8,137,106,8,137,50,141,74,16,131,232,2,190,237,252,233,244,1,248,76,129, 148 1,1,252,238,252,233,244,27,248,76,129,252,248,239,15,130,244,56,129,122,253,
149 252,248,239,15,130,244,55,139,42,139,114,252,252,137,116,36,100,137,108,36, 149 12,239,15,133,244,56,255,139,106,4,137,106,12,199,66,4,237,139,42,139,114,
150 80,129,122,253,4,239,15,133,244,55,72,131,189,233,0,15,133,244,55,128,189, 150 8,137,106,8,137,50,141,74,16,131,232,2,190,237,252,233,244,1,248,77,129,252,
151 233,235,15,135,244,55,139,141,233,15,132,244,247,255,59,141,233,15,132,244, 151 248,239,15,130,244,56,139,42,139,114,252,252,137,116,36,100,137,108,36,80,
152 55,248,1,141,116,193,252,240,59,181,233,15,135,244,55,137,181,233,139,108, 152 129,122,253,4,239,15,133,244,56,72,131,189,233,0,15,133,244,56,128,189,233,
153 36,96,137,149,233,131,194,8,137,149,233,141,108,194,232,72,41,252,245,57, 153 235,15,135,244,56,139,141,233,15,132,244,247,255,59,141,233,15,132,244,56,
154 206,15,132,244,249,248,2,72,139,4,46,72,137,70,252,248,131,252,238,8,57,206, 154 248,1,141,116,193,252,240,59,181,233,15,135,244,56,137,181,233,139,108,36,
155 15,133,244,2,248,3,137,202,139,76,36,80,232,244,24,199,131,233,237,255,139, 155 96,137,149,233,131,194,8,137,149,233,141,108,194,232,72,41,252,245,57,206,
156 108,36,96,139,116,36,80,139,149,233,129,252,248,239,15,135,244,254,248,4, 156 15,132,244,249,248,2,72,139,4,46,72,137,70,252,248,131,252,238,8,57,206,15,
157 139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141, 157 133,244,2,248,3,137,202,139,76,36,80,232,244,24,199,131,233,237,255,139,108,
158 4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,72,41,205,248,5,72,139, 158 36,96,139,116,36,80,139,149,233,129,252,248,239,15,135,244,254,248,4,139,
159 1,72,137,4,41,131,193,8,57,252,249,15,133,244,5,248,6,141,70,2,199,66,252, 159 142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,
160 252,237,248,7,139,116,36,100,137,68,36,84,72,199,193,252,248,252,255,252, 160 193,252,238,3,59,133,233,15,135,244,255,137,213,72,41,205,248,5,72,139,1,
161 255,252,255,252,247,198,237,255,15,132,244,13,252,233,244,14,248,8,199,66, 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 252,252,237,139,142,233,131,252,233,8,137,142,233,72,139,1,72,137,2,184,237, 162 237,248,7,139,116,36,100,137,68,36,84,72,199,193,252,248,252,255,252,255,
163 252,233,244,7,248,9,139,76,36,80,137,185,233,137,252,242,137,252,233,232, 163 252,255,252,247,198,237,255,15,132,244,13,252,233,244,14,248,8,199,66,252,
164 251,1,0,139,116,36,80,139,149,233,252,233,244,4,248,77,139,106,252,248,139, 164 252,237,139,142,233,131,252,233,8,137,142,233,72,139,1,72,137,2,184,237,252,
165 173,233,139,114,252,252,137,116,36,100,137,108,36,80,72,131,189,233,0,15, 165 233,244,7,248,9,139,76,36,80,137,185,233,137,252,242,137,252,233,232,251,
166 133,244,55,255,128,189,233,235,15,135,244,55,139,141,233,15,132,244,247,59, 166 1,0,139,116,36,80,139,149,233,252,233,244,4,248,78,139,106,252,248,139,173,
167 141,233,15,132,244,55,248,1,141,116,193,252,248,59,181,233,15,135,244,55, 167 233,139,114,252,252,137,116,36,100,137,108,36,80,72,131,189,233,0,15,133,
168 137,181,233,139,108,36,96,137,149,233,137,149,233,141,108,194,252,240,72, 168 244,56,255,128,189,233,235,15,135,244,56,139,141,233,15,132,244,247,59,141,
169 41,252,245,57,206,15,132,244,249,248,2,255,72,139,4,46,72,137,70,252,248, 169 233,15,132,244,56,248,1,141,116,193,252,248,59,181,233,15,135,244,56,137,
170 131,252,238,8,57,206,15,133,244,2,248,3,137,202,139,76,36,80,232,244,24,199, 170 181,233,139,108,36,96,137,149,233,137,149,233,141,108,194,252,240,72,41,252,
171 131,233,237,139,108,36,96,139,116,36,80,139,149,233,129,252,248,239,15,135, 171 245,57,206,15,132,244,249,248,2,255,72,139,4,46,72,137,70,252,248,131,252,
172 244,254,248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132, 172 238,8,57,206,15,133,244,2,248,3,137,202,139,76,36,80,232,244,24,199,131,233,
173 244,252,141,4,50,193,252,238,3,59,133,233,15,135,244,255,255,137,213,72,41, 173 237,139,108,36,96,139,116,36,80,139,149,233,129,252,248,239,15,135,244,254,
174 205,248,5,72,139,1,72,137,4,41,131,193,8,57,252,249,15,133,244,5,248,6,141, 174 248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,
175 70,1,248,7,139,116,36,100,137,68,36,84,49,201,252,247,198,237,15,132,244, 175 141,4,50,193,252,238,3,59,133,233,15,135,244,255,255,137,213,72,41,205,248,
176 13,252,233,244,14,248,8,137,252,242,137,252,233,232,251,1,13,248,9,139,76, 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 36,80,137,185,233,137,252,242,137,252,233,232,251,1,0,139,116,36,80,139,149, 177 7,139,116,36,100,137,68,36,84,49,201,252,247,198,237,15,132,244,13,252,233,
178 233,252,233,244,4,248,78,139,108,36,96,72,252,247,133,233,237,15,132,244, 178 244,14,248,8,137,252,242,137,252,233,232,251,1,14,248,9,139,76,36,80,137,
179 55,255,137,149,233,141,68,194,252,248,137,133,233,49,192,72,137,133,233,176, 179 185,233,137,252,242,137,252,233,232,251,1,0,139,116,36,80,139,149,233,252,
180 235,136,133,233,252,233,244,16,255,248,64,139,114,252,252,221,90,252,248, 180 233,244,4,248,79,139,108,36,96,72,252,247,133,233,237,15,132,244,56,255,137,
181 252,233,244,58,248,79,129,252,248,239,15,130,244,55,129,122,253,4,239,15, 181 149,233,141,68,194,252,248,137,133,233,49,192,72,137,133,233,176,235,136,
182 135,244,55,252,242,15,16,2,72,184,237,237,102,72,15,110,200,15,84,193,248, 182 133,233,252,233,244,16,255,248,65,139,114,252,252,221,90,252,248,252,233,
183 63,139,114,252,252,252,242,15,17,66,252,248,255,248,79,129,252,248,239,15, 183 244,59,248,80,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,
184 130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,225,248,63,248,64,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,255,248,58,184,237,248,69,137,68,36,84,248,56, 185 114,252,252,252,242,15,17,66,252,248,255,248,80,129,252,248,239,15,130,244,
186 252,247,198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252,15,182, 186 56,129,122,253,4,239,15,135,244,56,221,2,217,225,248,64,248,65,139,114,252,
187 78,252,253,72,252,247,209,141,20,202,139,6,15,182,204,15,182,232,131,198, 187 252,221,90,252,248,255,248,59,184,237,248,70,137,68,36,84,248,57,252,247,
188 4,193,232,16,252,255,36,252,235,248,6,199,68,194,252,244,237,131,192,1,252, 188 198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252,15,182,78,252,253,
189 233,244,5,248,7,72,199,193,252,248,252,255,252,255,252,255,252,233,244,14, 189 72,252,247,209,141,20,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
190 255,248,80,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55, 190 252,255,36,252,235,248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,
191 252,242,15,81,2,252,233,244,63,248,81,129,252,248,239,15,130,244,55,129,122, 191 7,72,199,193,252,248,252,255,252,255,252,255,252,233,244,14,255,248,81,129,
192 253,4,239,15,135,244,55,252,242,15,16,2,232,244,82,252,233,244,63,248,83, 192 252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,81,2,
193 255,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242, 193 252,233,244,64,248,82,129,252,248,239,15,130,244,56,129,122,253,4,239,15,
194 15,16,2,232,244,84,252,233,244,63,255,248,80,129,252,248,239,15,130,244,55, 194 135,244,56,252,242,15,16,2,232,244,83,252,233,244,64,248,84,255,129,252,248,
195 129,122,253,4,239,15,135,244,55,221,2,217,252,250,252,233,244,64,248,81,129, 195 239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,232,244,
196 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,82, 196 85,252,233,244,64,255,248,81,129,252,248,239,15,130,244,56,129,122,253,4,
197 252,233,244,64,248,83,255,129,252,248,239,15,130,244,55,129,122,253,4,239, 197 239,15,135,244,56,221,2,217,252,250,252,233,244,65,248,82,129,252,248,239,
198 15,135,244,55,221,2,232,244,84,252,233,244,64,255,248,85,129,252,248,239, 198 15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,232,244,83,252,233,244,
199 15,130,244,55,129,122,253,4,239,15,135,244,55,217,252,237,221,2,217,252,241, 199 65,248,84,255,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,
200 252,233,244,64,248,86,129,252,248,239,15,130,244,55,129,122,253,4,239,15, 200 56,221,2,232,244,85,252,233,244,65,255,248,86,129,252,248,239,15,130,244,
201 135,244,55,217,252,236,221,2,217,252,241,252,233,244,64,248,87,129,252,248, 201 56,129,122,253,4,239,15,135,244,56,217,252,237,221,2,217,252,241,252,233,
202 239,255,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,88,252, 202 244,65,248,87,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,
203 233,244,64,248,89,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135, 203 56,217,252,236,221,2,217,252,241,252,233,244,65,248,88,129,252,248,239,255,
204 244,55,221,2,217,252,254,252,233,244,64,248,90,129,252,248,239,255,15,130, 204 15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,232,244,89,252,233,244,
205 244,55,129,122,253,4,239,15,135,244,55,221,2,217,252,255,252,233,244,64,248, 205 65,248,90,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,
206 91,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,217, 206 2,217,252,254,252,233,244,65,248,91,129,252,248,239,255,15,130,244,56,129,
207 252,242,221,216,252,233,244,64,248,92,129,252,248,239,15,130,244,55,255,129, 207 122,253,4,239,15,135,244,56,221,2,217,252,255,252,233,244,65,248,92,129,252,
208 122,253,4,239,15,135,244,55,221,2,217,192,216,200,217,232,222,225,217,252, 208 248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,217,252,242,221,
209 250,217,252,243,252,233,244,64,248,93,129,252,248,239,15,130,244,55,129,122, 209 216,252,233,244,65,248,93,129,252,248,239,15,130,244,56,255,129,122,253,4,
210 253,4,239,15,135,244,55,221,2,217,192,216,200,217,232,222,225,217,252,250, 210 239,15,135,244,56,221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,
211 217,201,217,252,243,252,233,244,64,248,94,129,252,248,239,15,130,244,55,129, 211 243,252,233,244,65,248,94,129,252,248,239,15,130,244,56,129,122,253,4,239,
212 122,253,4,239,15,135,244,55,255,221,2,217,232,217,252,243,252,233,244,64, 212 15,135,244,56,221,2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,
213 255,248,95,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55, 213 252,243,252,233,244,65,248,95,129,252,248,239,15,130,244,56,129,122,253,4,
214 252,242,15,16,2,255,137,213,232,251,1,14,137,252,234,252,233,244,63,255,248, 214 239,15,135,244,56,255,221,2,217,232,217,252,243,252,233,244,65,255,248,96,
215 96,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242, 215 129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,
216 15,16,2,255,137,213,232,251,1,15,137,252,234,252,233,244,63,255,248,97,129, 216 16,2,255,137,213,232,251,1,15,137,252,234,252,233,244,64,255,248,97,129,252,
217 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2, 217 248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,255,
218 255,137,213,232,251,1,16,137,252,234,252,233,244,63,248,98,255,248,99,129, 218 137,213,232,251,1,16,137,252,234,252,233,244,64,255,248,98,129,252,248,239,
219 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2, 219 15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,255,137,213,
220 139,106,252,248,252,242,15,89,133,233,252,233,244,63,255,248,99,129,252,248, 220 232,251,1,17,137,252,234,252,233,244,64,248,99,255,248,100,129,252,248,239,
221 239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,139,106,252,248,220, 221 15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,139,106,252,
222 141,233,252,233,244,64,255,248,100,129,252,248,239,15,130,244,55,129,122, 222 248,252,242,15,89,133,233,252,233,244,64,255,248,100,129,252,248,239,15,130,
223 253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,221,2,221,66,8,217, 223 244,56,129,122,253,4,239,15,135,244,56,221,2,139,106,252,248,220,141,233,
224 252,243,252,233,244,64,248,101,129,252,248,239,15,130,244,55,129,122,253, 224 252,233,244,65,255,248,101,129,252,248,239,15,130,244,56,129,122,253,4,239,
225 4,239,15,135,244,55,129,122,253,12,239,255,15,135,244,55,221,66,8,221,2,217, 225 15,135,244,56,129,122,253,12,239,15,135,244,56,221,2,221,66,8,217,252,243,
226 252,253,221,217,252,233,244,64,248,102,129,252,248,239,15,130,244,55,139, 226 252,233,244,65,248,102,129,252,248,239,15,130,244,56,129,122,253,4,239,15,
227 106,4,129,252,253,239,15,135,244,55,139,114,252,252,139,2,137,106,252,252, 227 135,244,56,129,122,253,12,239,255,15,135,244,56,221,66,8,221,2,217,252,253,
228 137,66,252,248,209,229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15, 228 221,217,252,233,244,65,248,103,129,252,248,239,15,130,244,56,139,106,4,129,
229 132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193, 229 252,253,239,15,135,244,56,139,114,252,252,139,2,137,106,252,252,137,66,252,
230 252,237,21,41,197,255,252,242,15,42,197,255,137,108,36,80,219,68,36,80,255, 230 248,209,229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,
231 139,106,252,252,129,229,252,255,252,255,15,128,129,205,0,0,224,63,137,106, 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 252,252,248,2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,244,69,248, 232 41,197,255,252,242,15,42,197,255,137,108,36,80,219,68,36,80,255,139,106,252,
233 3,255,15,87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,248,4,255, 233 252,129,229,252,255,252,255,15,128,129,205,0,0,224,63,137,106,252,252,248,
234 252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,89,193,252,242, 234 2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,244,70,248,3,255,15,
235 15,17,66,252,248,255,221,2,199,68,36,80,0,0,128,90,216,76,36,80,221,90,252, 235 87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,248,4,255,252,242,
236 248,255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,103,129, 236 15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,89,193,252,242,15,17,
237 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2, 237 66,252,248,255,221,2,199,68,36,80,0,0,128,90,216,76,36,80,221,90,252,248,
238 255,248,103,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55, 238 255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,104,129,252,
239 221,2,255,139,106,4,139,114,252,252,209,229,129,252,253,0,0,224,252,255,15, 239 248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,255,
240 132,244,250,255,15,40,224,232,244,104,252,242,15,92,224,248,1,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,252,242,15,17,34,255,217,192,232,244,104,220,252,233,248,1, 241 2,255,139,106,4,139,114,252,252,209,229,129,252,253,0,0,224,252,255,15,132,
242 221,90,252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,136,244,249, 242 244,250,255,15,40,224,232,244,105,252,242,15,92,224,248,1,252,242,15,17,66,
243 248,2,184,237,252,233,244,69,248,3,129,252,245,0,0,0,128,137,106,4,252,233, 243 252,248,252,242,15,17,34,255,217,192,232,244,105,220,252,233,248,1,221,90,
244 244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244, 244 252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,136,244,249,248,2,184,
245 1,255,248,105,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, 245 237,252,233,244,70,248,3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248,
246 55,129,122,253,12,239,15,135,244,55,221,66,8,221,2,248,1,217,252,248,223, 246 4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244,1,255,248,
247 224,158,15,138,244,1,221,217,252,233,244,64,255,248,106,129,252,248,239,15, 247 106,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,129,122,
248 130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244, 248 253,12,239,15,135,244,56,221,66,8,221,2,248,1,217,252,248,223,224,158,15,
249 55,252,242,15,16,2,252,242,15,16,74,8,232,244,107,252,233,244,63,255,248, 249 138,244,1,221,217,252,233,244,65,255,248,107,129,252,248,239,15,130,244,56,
250 106,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122, 250 129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,
251 253,12,239,15,135,244,55,221,2,221,66,8,232,244,107,252,233,244,64,255,248, 251 15,16,2,252,242,15,16,74,8,232,244,108,252,233,244,64,255,248,107,129,252,
252 108,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242, 252 248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,129,122,253,12,239,
253 15,16,2,189,2,0,0,0,248,1,57,197,15,131,244,63,129,124,253,252,234,252,252, 253 15,135,244,56,221,2,221,66,8,232,244,108,252,233,244,65,255,248,109,129,252,
254 239,15,135,244,55,252,242,15,16,76,252,234,252,248,252,242,15,93,193,131, 254 248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,189,
255 197,1,252,233,244,1,255,248,109,129,252,248,239,15,130,244,55,129,122,253, 255 2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,234,252,252,239,15,135,
256 4,239,15,135,244,55,252,242,15,16,2,189,2,0,0,0,248,1,57,197,15,131,244,63, 256 244,56,252,242,15,16,76,252,234,252,248,252,242,15,93,193,131,197,1,252,233,
257 129,124,253,252,234,252,252,239,15,135,244,55,252,242,15,16,76,252,234,252, 257 244,1,255,248,110,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,
258 248,252,242,15,95,193,131,197,1,252,233,244,1,255,248,5,221,216,252,233,244, 258 244,56,252,242,15,16,2,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,
259 55,255,248,110,129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244, 259 252,234,252,252,239,15,135,244,56,252,242,15,16,76,252,234,252,248,252,242,
260 55,139,42,255,252,242,15,42,133,233,252,233,244,63,255,219,133,233,252,233, 260 15,95,193,131,197,1,252,233,244,1,255,248,5,221,216,252,233,244,56,255,248,
261 244,64,255,248,111,129,252,248,239,15,133,244,55,129,122,253,4,239,15,133, 261 111,129,252,248,239,15,130,244,56,129,122,253,4,239,15,133,244,56,139,42,
262 244,55,139,42,139,114,252,252,131,189,233,1,15,130,244,72,15,182,173,233, 262 255,252,242,15,42,133,233,252,233,244,64,255,219,133,233,252,233,244,65,255,
263 255,252,242,15,42,197,252,233,244,63,255,137,108,36,80,219,68,36,80,252,233, 263 248,112,129,252,248,239,15,133,244,56,129,122,253,4,239,15,133,244,56,139,
264 244,64,255,248,112,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1, 264 42,139,114,252,252,131,189,233,1,15,130,244,73,15,182,173,233,255,252,242,
265 129,252,248,239,15,133,244,55,129,122,253,4,239,15,135,244,55,255,252,242, 265 15,42,197,252,233,244,64,255,137,108,36,80,219,68,36,80,252,233,244,65,255,
266 15,44,42,129,252,253,252,255,0,0,0,15,135,244,55,137,108,36,84,255,221,2, 266 248,113,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,129,252,248,
267 219,92,36,84,129,124,36,84,252,255,0,0,0,15,135,244,55,255,199,68,36,32,1, 267 239,15,133,244,56,129,122,253,4,239,15,135,244,56,255,252,242,15,44,42,129,
268 0,0,0,72,141,68,36,84,248,113,139,108,36,96,137,149,233,68,139,68,36,32,72, 268 252,253,252,255,0,0,0,15,135,244,56,137,108,36,84,255,221,2,219,92,36,84,
269 137,194,137,252,233,137,116,36,100,232,251,1,17,139,149,233,139,114,252,252, 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,
270 199,66,252,252,237,137,66,252,248,252,233,244,58,248,114,139,171,233,59,171, 270 68,36,84,248,114,139,108,36,96,137,149,233,68,139,68,36,32,72,137,194,137,
271 233,15,130,244,247,232,244,66,248,1,199,68,36,84,252,255,252,255,252,255, 271 252,233,137,116,36,100,232,251,1,18,139,149,233,139,114,252,252,199,66,252,
272 252,255,129,252,248,239,15,130,244,55,15,134,244,247,129,122,253,20,239,255, 272 252,237,137,66,252,248,252,233,244,59,248,115,139,171,233,59,171,233,15,130,
273 252,242,15,44,106,16,137,108,36,84,255,221,66,16,219,92,36,84,255,248,1,129, 273 244,247,232,244,67,248,1,199,68,36,84,252,255,252,255,252,255,252,255,129,
274 122,253,4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,42,137,108, 274 252,248,239,15,130,244,56,15,134,244,247,129,122,253,20,239,255,252,242,15,
275 36,32,139,173,233,255,252,242,15,44,74,8,255,139,68,36,84,57,197,15,130,244, 275 44,106,16,137,108,36,84,255,221,66,16,219,92,36,84,255,248,1,129,122,253,
276 251,248,2,133,201,15,142,244,253,248,3,139,108,36,32,41,200,15,140,244,115, 276 4,239,15,133,244,56,129,122,253,12,239,15,135,244,56,139,42,137,108,36,32,
277 141,172,253,13,233,131,192,1,248,4,137,68,36,32,137,232,252,233,244,113,248, 277 139,173,233,255,252,242,15,44,74,8,255,139,68,36,84,57,197,15,130,244,251,
278 5,15,140,244,252,141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248, 278 248,2,133,201,15,142,244,253,248,3,139,108,36,32,41,200,15,140,244,116,141,
279 172,253,13,233,131,192,1,248,4,137,68,36,32,137,232,252,233,244,114,248,5,
280 15,140,244,252,141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,
279 7,255,15,132,244,254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252, 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,
280 233,244,3,248,115,49,192,252,233,244,4,248,116,129,252,248,239,15,130,244, 282 233,244,3,248,116,49,192,252,233,244,4,248,117,129,252,248,239,15,130,244,
281 55,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,255,129,122,253, 283 56,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,255,129,122,253,
282 4,239,15,133,244,55,129,122,253,12,239,15,135,244,55,139,42,255,252,242,15, 284 4,239,15,133,244,56,129,122,253,12,239,15,135,244,56,139,42,255,252,242,15,
283 44,66,8,255,221,66,8,219,92,36,84,139,68,36,84,255,133,192,15,142,244,115, 285 44,66,8,255,221,66,8,219,92,36,84,139,68,36,84,255,133,192,15,142,244,116,
284 131,189,233,1,15,130,244,115,15,133,244,117,57,131,233,15,130,244,117,15, 286 131,189,233,1,15,130,244,116,15,133,244,118,57,131,233,15,130,244,118,15,
285 182,141,233,139,171,233,137,68,36,32,248,1,136,77,0,131,197,1,131,232,1,15, 287 182,141,233,139,171,233,137,68,36,32,248,1,136,77,0,131,197,1,131,232,1,15,
286 133,244,1,139,131,233,252,233,244,113,248,118,129,252,248,239,255,15,130, 288 133,244,1,139,131,233,252,233,244,114,248,119,129,252,248,239,255,15,130,
287 244,55,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,129,122,253, 289 244,56,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,129,122,253,
288 4,239,15,133,244,55,139,42,139,133,233,133,192,15,132,244,115,57,131,233, 290 4,239,15,133,244,56,139,42,139,133,233,133,192,15,132,244,116,57,131,233,
289 15,130,244,119,129,197,239,137,116,36,84,137,68,36,32,139,179,233,248,1,255, 291 15,130,244,120,129,197,239,137,116,36,84,137,68,36,32,139,179,233,248,1,255,
290 15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,137,252,240,139,116, 292 15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,137,252,240,139,116,
291 36,84,252,233,244,113,248,120,129,252,248,239,15,130,244,55,139,171,233,59, 293 36,84,252,233,244,114,248,121,129,252,248,239,15,130,244,56,139,171,233,59,
292 171,233,15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133,244,55,139, 294 171,233,15,130,244,247,232,244,67,248,1,129,122,253,4,239,15,133,244,56,139,
293 42,139,133,233,57,131,233,255,15,130,244,119,129,197,239,137,116,36,84,137, 295 42,139,133,233,57,131,233,255,15,130,244,120,129,197,239,137,116,36,84,137,
294 68,36,32,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15, 296 68,36,32,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,
295 130,244,248,131,252,249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248, 297 130,244,248,131,252,249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,
296 3,131,232,1,15,137,244,1,137,252,240,139,116,36,84,252,233,244,113,248,121, 298 3,131,232,1,15,137,244,1,137,252,240,139,116,36,84,252,233,244,114,248,122,
297 129,252,248,239,15,130,244,55,255,139,171,233,59,171,233,15,130,244,247,232, 299 129,252,248,239,15,130,244,56,255,139,171,233,59,171,233,15,130,244,247,232,
298 244,66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,57,131,233, 300 244,67,248,1,129,122,253,4,239,15,133,244,56,139,42,139,133,233,57,131,233,
299 15,130,244,119,129,197,239,137,116,36,84,137,68,36,32,139,179,233,252,233, 301 15,130,244,120,129,197,239,137,116,36,84,137,68,36,32,139,179,233,252,233,
300 244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249, 302 244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,
301 122,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244, 303 122,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,
302 1,137,252,240,139,116,36,84,252,233,244,113,248,122,129,252,248,239,15,130, 304 1,137,252,240,139,116,36,84,252,233,244,114,248,123,129,252,248,239,15,130,
303 244,55,129,122,253,4,239,15,133,244,55,137,213,139,10,232,251,1,18,137,252, 305 244,56,129,122,253,4,239,15,133,244,56,137,213,139,10,232,251,1,19,137,252,
304 234,255,252,242,15,42,192,252,233,244,63,255,248,123,129,252,248,239,15,130, 306 234,255,252,242,15,42,192,252,233,244,64,255,248,124,129,252,248,239,15,130,
305 244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102, 307 244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72,189,237,237,102,
306 72,15,110,205,252,242,15,88,193,102,15,126,197,252,242,15,42,197,252,233, 308 72,15,110,205,252,242,15,88,193,102,15,126,197,252,242,15,42,197,252,233,
307 244,63,255,248,124,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135, 309 244,64,255,248,125,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,
308 244,55,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193, 310 244,56,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,
309 102,15,126,197,255,137,68,36,84,141,68,194,252,240,248,1,57,208,15,134,244, 311 102,15,126,197,255,137,68,36,84,141,68,194,252,240,248,1,57,208,15,134,244,
310 125,129,120,253,4,239,15,135,244,126,255,252,242,15,16,0,252,242,15,88,193, 312 126,129,120,253,4,239,15,135,244,127,255,252,242,15,16,0,252,242,15,88,193,
311 102,15,126,193,33,205,255,131,232,8,252,233,244,1,255,248,127,129,252,248, 313 102,15,126,193,33,205,255,131,232,8,252,233,244,1,255,248,128,129,252,248,
312 239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189, 314 239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72,189,
313 237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,15, 315 237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,15,
314 16,0,252,242,15,88,193,102,15,126,193,9,205,255,248,128,129,252,248,239,15, 316 16,0,252,242,15,88,193,102,15,126,193,9,205,255,248,129,129,252,248,239,15,
315 130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237, 317 130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72,189,237,237,
316 102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,15,16,0,252, 318 102,72,15,110,205,252,242,15,88,193,102,15,126,197,255,252,242,15,16,0,252,
317 242,15,88,193,102,15,126,193,49,205,255,248,129,129,252,248,239,15,130,244, 319 242,15,88,193,102,15,126,193,49,205,255,248,130,129,252,248,239,15,130,244,
318 55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,72,189,237,237,102,72, 320 56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,72,189,237,237,102,72,
319 15,110,205,252,242,15,88,193,102,15,126,197,255,15,205,252,233,244,125,255, 321 15,110,205,252,242,15,88,193,102,15,126,197,255,15,205,252,233,244,126,255,
320 248,130,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252, 322 248,131,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,
321 242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126, 323 242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,15,126,
322 197,255,252,247,213,255,248,125,252,242,15,42,197,252,233,244,63,255,248, 324 197,255,252,247,213,255,248,126,252,242,15,42,197,252,233,244,64,255,248,
323 126,139,68,36,84,252,233,244,55,255,248,131,129,252,248,239,15,130,244,55, 325 127,139,68,36,84,252,233,244,56,255,248,132,129,252,248,239,15,130,244,56,
324 129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242, 326 129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,
325 15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88, 327 15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,
326 194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,229,137, 328 194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,229,137,
327 193,252,233,244,125,255,248,132,129,252,248,239,15,130,244,55,129,122,253, 329 193,252,233,244,126,255,248,133,129,252,248,239,15,130,244,56,129,122,253,
328 4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252, 330 4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,
329 242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242, 331 242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,
330 15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,252,237,137,193,252, 332 15,88,202,137,200,102,15,126,197,102,15,126,201,255,211,252,237,137,193,252,
331 233,244,125,255,248,133,129,252,248,239,15,130,244,55,129,122,253,4,239,15, 333 233,244,126,255,248,134,129,252,248,239,15,130,244,56,129,122,253,4,239,15,
332 135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16, 334 135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,242,15,16,
333 74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202, 335 74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,
334 137,200,102,15,126,197,102,15,126,201,255,211,252,253,137,193,252,233,244, 336 137,200,102,15,126,197,102,15,126,201,255,211,252,253,137,193,252,233,244,
335 125,255,248,134,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, 337 126,255,248,135,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,
336 55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72, 338 56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,242,15,16,74,8,72,
337 189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200, 339 189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,
338 102,15,126,197,102,15,126,201,255,211,197,137,193,252,233,244,125,255,248, 340 102,15,126,197,102,15,126,201,255,211,197,137,193,252,233,244,126,255,248,
339 135,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122, 341 136,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,129,122,
340 253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237, 342 253,12,239,15,135,244,56,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,
341 102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126, 343 102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,
342 197,102,15,126,201,255,211,205,137,193,252,233,244,125,248,117,184,237,252, 344 197,102,15,126,201,255,211,205,137,193,252,233,244,126,248,118,184,237,252,
343 233,244,55,248,119,184,237,248,55,139,108,36,96,139,114,252,252,137,116,36, 345 233,244,56,248,120,184,237,248,56,139,108,36,96,139,114,252,252,137,116,36,
344 100,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248, 346 100,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,
345 59,141,233,15,135,244,251,137,252,233,252,255,144,233,139,149,233,133,192, 347 59,141,233,15,135,244,251,137,252,233,252,255,144,233,139,149,233,133,192,
346 15,143,244,69,248,1,255,139,141,233,41,209,193,252,233,3,133,192,141,65,1, 348 15,143,244,70,248,1,255,139,141,233,41,209,193,252,233,3,133,192,141,65,1,
347 139,106,252,248,15,133,244,248,139,181,233,139,14,15,182,252,233,15,182,205, 349 139,106,252,248,15,133,244,248,139,181,233,139,14,15,182,252,233,15,182,205,
348 131,198,4,252,255,36,252,235,248,2,137,209,252,247,198,237,15,133,244,249, 350 131,198,4,252,255,36,252,235,248,2,137,209,252,247,198,237,15,133,244,249,
349 15,182,110,252,253,72,252,247,213,141,20,252,234,252,233,244,27,248,3,137, 351 15,182,110,252,253,72,252,247,213,141,20,252,234,252,233,244,27,248,3,137,
350 252,245,131,229,252,248,41,252,234,252,233,244,27,248,5,186,237,137,252,233, 352 252,245,131,229,252,248,41,252,234,252,233,244,27,248,5,186,237,137,252,233,
351 232,251,1,0,139,149,233,49,192,252,233,244,1,248,66,93,72,137,108,36,32,139, 353 232,251,1,0,139,149,233,49,192,252,233,244,1,248,67,93,72,137,108,36,32,139,
352 108,36,96,137,116,36,100,137,149,233,255,141,68,194,252,248,137,252,233,137, 354 108,36,96,137,116,36,100,137,149,233,255,141,68,194,252,248,137,252,233,137,
353 133,233,232,251,1,19,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72, 355 133,233,232,251,1,20,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72,
354 139,108,36,32,85,195,248,136,255,15,182,131,233,168,235,15,133,244,251,168, 356 139,108,36,32,85,195,248,137,255,15,182,131,233,168,235,15,133,244,251,168,
355 235,15,133,244,247,168,235,15,132,244,247,252,255,139,233,252,233,244,247, 357 235,15,133,244,247,168,235,15,132,244,247,252,255,139,233,252,233,244,247,
356 255,248,137,15,182,131,233,168,235,15,133,244,251,252,233,244,247,248,138, 358 255,248,138,15,182,131,233,168,235,15,133,244,251,252,233,244,247,248,139,
357 15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,255,139, 359 15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,255,139,
358 233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108,36,96,137,149, 360 233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108,36,96,137,149,
359 233,137,252,242,137,252,233,232,251,1,20,248,3,139,149,233,248,4,15,182,78, 361 233,137,252,242,137,252,233,232,251,1,21,248,3,139,149,233,248,4,15,182,78,
360 252,253,248,5,15,182,110,252,252,15,183,70,252,254,252,255,164,253,252,235, 362 252,253,248,5,15,182,110,252,252,15,183,70,252,254,252,255,164,253,252,235,
361 233,248,139,131,198,4,139,77,232,137,76,36,84,252,233,244,4,248,140,255,139, 363 233,248,140,131,198,4,139,77,232,137,76,36,84,252,233,244,4,248,141,255,139,
362 106,252,248,139,173,233,15,182,133,233,141,4,194,139,108,36,96,137,149,233, 364 106,252,248,139,173,233,15,182,133,233,141,4,194,139,108,36,96,137,149,233,
363 137,133,233,137,252,242,141,139,233,72,137,171,233,137,116,36,100,232,251, 365 137,133,233,137,252,242,141,139,233,72,137,171,233,137,116,36,100,232,251,
364 1,21,252,233,244,3,255,248,141,137,116,36,100,255,248,142,255,137,116,36, 366 1,22,252,233,244,3,255,248,142,137,116,36,100,255,248,143,255,137,116,36,
365 100,131,206,1,248,1,255,141,68,194,252,248,139,108,36,96,137,149,233,137, 367 100,131,206,1,248,1,255,141,68,194,252,248,139,108,36,96,137,149,233,137,
366 133,233,137,252,242,137,252,233,232,251,1,22,199,68,36,100,0,0,0,0,255,131, 368 133,233,137,252,242,137,252,233,232,251,1,23,199,68,36,100,0,0,0,0,255,131,
367 230,252,254,255,139,149,233,72,137,193,139,133,233,41,208,72,137,205,15,182, 369 230,252,254,255,139,149,233,72,137,193,139,133,233,41,208,72,137,205,15,182,
368 78,252,253,193,232,3,131,192,1,252,255,229,248,143,255,65,85,65,84,65,83, 370 78,252,253,193,232,3,131,192,1,252,255,229,248,144,255,65,85,65,84,65,83,
369 65,82,65,81,65,80,87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69,252, 371 65,82,65,81,65,80,87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69,252,
370 248,138,101,252,240,76,137,125,252,248,76,137,117,252,240,139,93,0,139,139, 372 248,138,101,252,240,76,137,125,252,248,76,137,117,252,240,139,93,0,139,139,
371 233,199,131,233,237,137,131,233,137,139,233,72,129,252,236,239,72,131,197, 373 233,199,131,233,237,137,131,233,137,139,233,72,129,252,236,239,72,131,197,
@@ -375,8 +377,8 @@ static const unsigned char build_actionlist[14342] = {
375 125,184,252,242,15,17,117,176,252,242,15,17,109,168,252,242,15,17,101,160, 377 125,184,252,242,15,17,117,176,252,242,15,17,109,168,252,242,15,17,101,160,
376 252,242,15,17,93,152,252,242,15,17,85,144,252,242,15,17,77,136,252,242,15, 378 252,242,15,17,93,152,252,242,15,17,85,144,252,242,15,17,77,136,252,242,15,
377 17,69,128,139,171,233,139,147,233,72,137,171,233,199,131,233,0,0,0,0,137, 379 17,69,128,139,171,233,139,147,233,72,137,171,233,199,131,233,0,0,0,0,137,
378 149,233,72,141,148,253,36,233,141,139,233,232,251,1,23,72,139,141,233,72, 380 149,233,72,141,148,253,36,233,141,139,233,232,251,1,24,72,139,141,233,72,
379 129,225,239,137,169,233,139,149,233,139,177,233,252,233,244,247,255,248,144, 381 129,225,239,137,169,233,139,149,233,139,177,233,252,233,244,247,255,248,145,
380 255,72,141,140,253,36,233,248,1,102,68,15,111,185,233,102,68,15,111,177,233, 382 255,72,141,140,253,36,233,248,1,102,68,15,111,185,233,102,68,15,111,177,233,
381 102,68,15,111,169,233,102,68,15,111,161,233,102,68,15,111,153,233,102,68, 383 102,68,15,111,169,233,102,68,15,111,161,233,102,68,15,111,153,233,102,68,
382 15,111,145,233,102,68,15,111,137,233,102,68,15,111,129,233,102,15,111,185, 384 15,111,145,233,102,68,15,111,137,233,102,68,15,111,129,233,102,15,111,185,
@@ -385,25 +387,25 @@ static const unsigned char build_actionlist[14342] = {
385 139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139,6,15,182, 387 139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139,6,15,182,
386 204,15,182,232,131,198,4,193,232,16,129,252,253,239,15,130,244,248,255,139, 388 204,15,182,232,131,198,4,193,232,16,129,252,253,239,15,130,244,248,255,139,
387 68,36,84,248,2,252,255,36,252,235,248,3,252,247,216,137,252,233,137,194,232, 389 68,36,84,248,2,252,255,36,252,235,248,3,252,247,216,137,252,233,137,194,232,
388 251,1,24,255,248,82,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36, 390 251,1,25,255,248,83,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,
389 4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108, 391 4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,
390 36,4,139,68,36,8,195,255,248,145,72,184,237,237,102,72,15,110,208,72,184, 392 36,4,139,68,36,8,195,255,248,146,72,184,237,237,102,72,15,110,208,72,184,
391 237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244, 393 237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,
392 247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184, 394 247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,
393 237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,15,92, 395 237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,
394 200,15,40,193,248,1,195,248,84,255,217,124,36,4,137,68,36,8,102,184,0,8,102, 396 200,15,40,193,248,1,195,248,85,255,217,124,36,4,137,68,36,8,102,184,0,8,102,
395 11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252, 397 11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,
396 217,108,36,4,139,68,36,8,195,255,248,146,72,184,237,237,102,72,15,110,208, 398 217,108,36,4,139,68,36,8,195,255,248,147,72,184,237,237,102,72,15,110,208,
397 72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15, 399 72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,
398 134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202, 400 134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,
399 72,184,237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242, 401 72,184,237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,
400 15,92,200,15,40,193,248,1,195,248,104,255,217,124,36,4,137,68,36,8,102,184, 402 15,92,200,15,40,193,248,1,195,248,105,255,217,124,36,4,137,68,36,8,102,184,
401 0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4, 403 0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,
402 139,68,36,8,195,255,248,147,72,184,237,237,102,72,15,110,208,72,184,237,237, 404 139,68,36,8,195,255,248,148,72,184,237,237,102,72,15,110,208,72,184,237,237,
403 102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102, 405 102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,
404 15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102, 406 15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,
405 72,15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15, 407 72,15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,
406 86,202,15,40,193,248,1,195,248,148,255,15,40,232,252,242,15,94,193,72,184, 408 86,202,15,40,193,248,1,195,248,149,255,15,40,232,252,242,15,94,193,72,184,
407 237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102, 409 237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,
408 15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252, 410 15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,
409 242,15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194, 411 242,15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,
@@ -411,12 +413,12 @@ static const unsigned char build_actionlist[14342] = {
411 15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255, 413 15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,
412 217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255, 414 217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,
413 252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222, 415 252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,
414 252,233,195,255,248,88,217,252,234,222,201,248,149,217,84,36,8,129,124,36, 416 252,233,195,255,248,89,217,252,234,222,201,248,150,217,84,36,8,129,124,36,
415 8,0,0,128,127,15,132,244,247,129,124,36,8,0,0,128,252,255,15,132,244,248, 417 8,0,0,128,127,15,132,244,247,129,124,36,8,0,0,128,252,255,15,132,244,248,
416 248,150,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193, 418 248,151,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,
417 217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,248,107,255, 419 217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,248,108,255,
418 248,151,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254, 420 248,152,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,
419 15,138,244,255,248,152,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15, 421 15,138,244,255,248,153,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,
420 133,244,248,252,242,15,89,192,209,232,252,233,244,1,248,2,209,232,15,132, 422 133,244,248,252,242,15,89,192,209,232,252,233,244,1,248,2,209,232,15,132,
421 244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,250,15,131,244, 423 244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,250,15,131,244,
422 3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248, 424 3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,
@@ -433,27 +435,27 @@ static const unsigned char build_actionlist[14342] = {
433 110,208,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,136,196,15,146, 435 110,208,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,136,196,15,146,
434 208,48,224,15,133,244,1,248,3,72,184,237,237,255,102,72,15,110,192,195,248, 436 208,48,224,15,133,244,1,248,3,72,184,237,237,255,102,72,15,110,192,195,248,
435 4,102,15,80,193,133,192,15,133,244,3,15,87,192,195,248,5,102,15,80,193,133, 437 4,102,15,80,193,133,192,15,133,244,3,15,87,192,195,248,5,102,15,80,193,133,
436 192,15,132,244,3,15,87,192,195,248,153,255,131,252,250,1,15,130,244,82,15, 438 192,15,132,244,3,15,87,192,195,248,154,255,131,252,250,1,15,130,244,83,15,
437 132,244,84,131,252,250,3,15,130,244,104,15,135,244,248,252,242,15,81,192, 439 132,244,85,131,252,250,3,15,130,244,105,15,135,244,248,252,242,15,81,192,
438 195,248,2,252,242,15,17,68,36,8,221,68,36,8,131,252,250,5,15,135,244,248, 440 195,248,2,252,242,15,17,68,36,8,221,68,36,8,131,252,250,5,15,135,244,248,
439 88,15,132,244,247,232,244,88,80,252,233,244,253,248,1,232,244,149,255,80, 441 88,15,132,244,247,232,244,89,80,252,233,244,253,248,1,232,244,150,255,80,
440 252,233,244,253,248,2,131,252,250,7,15,132,244,247,15,135,244,248,217,252, 442 252,233,244,253,248,2,131,252,250,7,15,132,244,247,15,135,244,248,217,252,
441 237,217,201,217,252,241,252,233,244,253,248,1,217,232,217,201,217,252,241, 443 237,217,201,217,252,241,252,233,244,253,248,1,217,232,217,201,217,252,241,
442 252,233,244,253,248,2,131,252,250,9,15,132,244,247,15,135,244,248,217,252, 444 252,233,244,253,248,2,131,252,250,9,15,132,244,247,15,135,244,248,217,252,
443 236,217,201,217,252,241,252,233,244,253,248,1,255,217,252,254,252,233,244, 445 236,217,201,217,252,241,252,233,244,253,248,1,255,217,252,254,252,233,244,
444 253,248,2,131,252,250,11,15,132,244,247,15,135,244,255,217,252,255,252,233, 446 253,248,2,131,252,250,11,15,132,244,247,15,135,244,255,217,252,255,252,233,
445 244,253,248,1,217,252,242,221,216,248,7,221,92,36,8,252,242,15,16,68,36,8, 447 244,253,248,1,217,252,242,221,216,248,7,221,92,36,8,252,242,15,16,68,36,8,
446 195,255,139,84,36,12,221,68,36,4,131,252,250,1,15,130,244,82,15,132,244,84, 448 195,255,139,84,36,12,221,68,36,4,131,252,250,1,15,130,244,83,15,132,244,85,
447 131,252,250,3,15,130,244,104,15,135,244,248,217,252,250,195,248,2,131,252, 449 131,252,250,3,15,130,244,105,15,135,244,248,217,252,250,195,248,2,131,252,
448 250,5,15,130,244,88,15,132,244,149,131,252,250,7,15,132,244,247,15,135,244, 450 250,5,15,130,244,89,15,132,244,150,131,252,250,7,15,132,244,247,15,135,244,
449 248,217,252,237,217,201,217,252,241,195,248,1,217,232,217,201,217,252,241, 451 248,217,252,237,217,201,217,252,241,195,248,1,217,232,217,201,217,252,241,
450 195,248,2,131,252,250,9,15,132,244,247,255,15,135,244,248,217,252,236,217, 452 195,248,2,131,252,250,9,15,132,244,247,255,15,135,244,248,217,252,236,217,
451 201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,250,11,15,132,244, 453 201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,250,11,15,132,244,
452 247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,216,195,255,248, 454 247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,216,195,255,248,
453 9,204,255,248,154,255,65,131,252,248,1,15,132,244,247,15,135,244,248,252, 455 9,204,255,248,155,255,65,131,252,248,1,15,132,244,247,15,135,244,248,252,
454 242,15,88,193,195,248,1,252,242,15,92,193,195,248,2,65,131,252,248,3,15,132, 456 242,15,88,193,195,248,1,252,242,15,92,193,195,248,2,65,131,252,248,3,15,132,
455 244,247,15,135,244,248,252,242,15,89,193,195,248,1,252,242,15,94,193,195, 457 244,247,15,135,244,248,252,242,15,89,193,195,248,1,252,242,15,94,193,195,
456 248,2,65,131,252,248,5,15,130,244,148,15,132,244,107,65,131,252,248,7,15, 458 248,2,65,131,252,248,5,15,130,244,149,15,132,244,108,65,131,252,248,7,15,
457 132,244,247,15,135,244,248,72,184,237,237,255,102,72,15,110,200,15,87,193, 459 132,244,247,15,135,244,248,72,184,237,237,255,102,72,15,110,200,15,87,193,
458 195,248,1,72,184,237,237,102,72,15,110,200,15,84,193,195,248,2,65,131,252, 460 195,248,1,72,184,237,237,102,72,15,110,200,15,84,193,195,248,2,65,131,252,
459 248,9,15,135,244,248,252,242,15,17,68,36,8,252,242,15,17,76,36,16,221,68, 461 248,9,15,135,244,248,252,242,15,17,68,36,8,252,242,15,17,76,36,16,221,68,
@@ -463,253 +465,260 @@ static const unsigned char build_actionlist[14342] = {
463 242,15,95,193,195,248,9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131, 465 242,15,95,193,195,248,9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,
464 252,248,1,15,132,244,247,15,135,244,248,222,193,195,248,1,222,252,233,195, 466 252,248,1,15,132,244,247,15,135,244,248,222,193,195,248,1,222,252,233,195,
465 248,2,131,252,248,3,15,132,244,247,15,135,244,248,222,201,195,248,1,222,252, 467 248,2,131,252,248,3,15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,
466 249,195,248,2,131,252,248,5,15,130,244,148,15,132,244,107,131,252,248,7,15, 468 249,195,248,2,131,252,248,5,15,130,244,149,15,132,244,108,131,252,248,7,15,
467 132,244,247,15,135,244,248,255,221,216,217,224,195,248,1,221,216,217,225, 469 132,244,247,15,135,244,248,255,221,216,217,224,195,248,1,221,216,217,225,
468 195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,217,252,243,195,248, 470 195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,217,252,243,195,248,
469 1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,15,132,244,247,15, 471 1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,15,132,244,247,15,
470 135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,252,233,218,209, 472 135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,252,233,218,209,
471 221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,248,217,201,248, 473 221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,248,217,201,248,
472 2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,244,248,217,201, 474 2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,244,248,217,201,
473 248,2,221,216,195,255,248,155,137,200,86,72,137,214,83,15,162,137,6,137,94, 475 248,2,221,216,195,255,248,156,137,200,86,72,137,214,83,15,162,137,6,137,94,
474 4,137,78,8,137,86,12,91,94,195,248,156,255,85,72,137,229,83,72,137,203,139, 476 4,137,78,8,137,86,12,91,94,195,248,157,255,85,72,137,229,83,72,137,203,139,
475 131,233,72,41,196,255,15,182,139,233,131,252,233,1,15,136,244,248,248,1,72, 477 131,233,72,41,196,255,15,182,139,233,131,252,233,1,15,136,244,248,248,1,72,
476 139,132,253,203,233,72,137,132,253,204,233,131,252,233,1,15,137,244,1,248, 478 139,132,253,203,233,72,137,132,253,204,233,131,252,233,1,15,137,244,1,248,
477 2,15,182,131,233,72,139,139,233,72,139,147,233,76,139,131,233,76,139,139, 479 2,15,182,131,233,72,139,139,233,72,139,147,233,76,139,131,233,76,139,139,
478 233,133,192,15,132,244,251,15,40,131,233,15,40,139,233,15,40,147,233,15,40, 480 233,133,192,15,132,244,251,15,40,131,233,15,40,139,233,15,40,147,233,15,40,
479 155,233,248,5,255,252,255,147,233,72,137,131,233,15,41,131,233,255,72,139, 481 155,233,248,5,255,252,255,147,233,72,137,131,233,15,41,131,233,255,72,139,
480 93,252,248,201,195,255,129,124,253,202,4,239,15,135,244,41,129,124,253,194, 482 93,252,248,201,195,255,249,255,129,124,253,202,4,239,15,135,244,41,129,124,
481 4,239,15,135,244,41,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255, 483 253,194,4,239,15,135,244,41,255,252,242,15,16,4,194,131,198,4,102,15,46,4,
482 221,4,202,221,4,194,131,198,4,255,223,252,233,221,216,255,218,252,233,223, 484 202,255,221,4,202,221,4,194,131,198,4,255,223,252,233,221,216,255,218,252,
483 224,158,255,15,134,244,248,255,15,131,244,248,255,248,1,15,183,70,252,254, 485 233,223,224,158,255,15,134,244,248,255,15,131,244,248,255,248,1,15,183,70,
484 141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16, 486 252,254,141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,
485 252,255,36,252,235,255,139,108,194,4,131,198,4,129,252,253,239,15,135,244, 487 232,16,252,255,36,252,235,255,139,108,194,4,131,198,4,129,252,253,239,15,
486 251,129,124,253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46, 488 135,244,251,129,124,253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,
487 4,202,255,221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138, 489 102,15,46,4,202,255,221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,
488 244,248,15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248, 490 255,15,138,244,248,15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,
489 2,255,248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,248,5,57,108, 491 134,233,248,2,255,248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,129,
492 252,253,239,15,132,244,46,129,124,253,202,4,239,15,132,244,46,255,57,108,
490 202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193, 493 202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,
491 15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132, 494 15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,
492 244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255, 495 244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,
493 252,233,244,45,255,72,252,247,208,131,198,4,129,124,253,202,4,239,15,133, 496 252,233,244,45,255,248,3,129,252,253,239,15,133,244,2,252,233,244,46,255,
494 244,248,139,12,202,59,12,135,255,131,198,4,129,124,253,202,4,239,15,135,244, 497 72,252,247,208,139,108,202,4,131,198,4,129,252,253,239,15,133,244,249,139,
495 248,255,252,242,15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,72, 498 12,202,59,12,135,255,139,108,202,4,131,198,4,129,252,253,239,15,135,244,249,
496 252,247,208,131,198,4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253, 499 255,252,242,15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,72,252,
497 239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137, 500 247,208,139,108,202,4,131,198,4,57,197,255,15,133,244,249,15,183,70,252,254,
498 44,202,255,15,183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15, 501 141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
499 182,232,131,198,4,193,232,16,252,255,36,252,235,255,72,139,44,194,72,137, 502 252,255,36,252,235,248,3,129,252,253,239,15,133,244,2,252,233,244,46,255,
500 44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 503 15,132,244,248,129,252,253,239,15,132,244,46,15,183,70,252,254,141,180,253,
501 255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182, 504 134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
502 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,129,124,253,194, 505 252,235,255,139,108,194,4,131,198,4,129,252,253,239,255,15,131,244,247,255,
503 4,239,15,135,244,48,255,252,242,15,16,4,194,72,184,237,237,102,72,15,110, 506 15,130,244,247,255,137,108,202,4,139,44,194,137,44,202,255,15,183,70,252,
504 200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129, 507 254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,
505 124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,242,15,42,128, 508 16,252,255,36,252,235,255,72,139,44,194,72,137,44,202,139,6,15,182,204,15,
506 233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6, 509 182,232,131,198,4,193,232,16,252,255,36,252,235,255,49,252,237,129,124,253,
507 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129,124, 510 194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4,
508 253,194,4,239,15,133,244,50,139,12,194,137,213,232,251,1,18,255,252,242,15, 511 193,232,16,252,255,36,252,235,255,129,124,253,194,4,239,15,135,244,49,255,
509 42,192,137,252,234,255,15,182,78,252,253,252,233,244,1,255,15,182,252,236, 512 252,242,15,16,4,194,72,184,237,237,102,72,15,110,200,15,87,193,252,242,15,
510 15,182,192,255,129,124,253,252,234,4,239,15,135,244,46,255,252,242,15,16, 513 17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253,194,4,239,15,133,
511 4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,124,253, 514 244,248,139,4,194,255,15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,
512 252,234,4,239,15,135,244,47,255,252,242,15,16,4,199,252,242,15,88,4,252,234, 515 4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204,15,182,232,131,
513 255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,135,244,49,129, 516 198,4,193,232,16,252,255,36,252,235,248,2,129,124,253,194,4,239,15,133,244,
514 124,253,194,4,239,15,135,244,49,255,252,242,15,16,4,252,234,252,242,15,88, 517 51,139,12,194,137,213,232,251,1,19,255,252,242,15,42,192,137,252,234,255,
515 4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252,234,252,242,15, 518 15,182,78,252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,
516 92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,199,252,242,15, 519 253,252,234,4,239,15,135,244,47,255,252,242,15,16,4,252,234,252,242,15,88,
517 92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252, 520 4,199,255,221,4,252,234,220,4,199,255,129,124,253,252,234,4,239,15,135,244,
518 242,15,92,4,194,255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234, 521 48,255,252,242,15,16,4,199,252,242,15,88,4,252,234,255,221,4,199,220,4,252,
519 252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242,15,16,4,199, 522 234,255,129,124,253,252,234,4,239,15,135,244,50,129,124,253,194,4,239,15,
520 252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252,242,15,16,4, 523 135,244,50,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,
521 252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16, 524 234,220,4,194,255,252,242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,
522 4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199,255,252,242,15, 525 234,220,36,199,255,252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4,
523 16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252,234,255,252,242, 526 199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,
524 15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252, 527 4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,
525 242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,221,4,199,255, 528 221,4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,
526 252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,221,4,252,234, 529 255,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,
527 255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4, 530 194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,
528 194,255,248,157,232,244,148,255,252,233,244,157,255,232,244,107,255,15,182, 531 4,199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,
529 252,236,15,182,192,139,76,36,96,137,145,233,141,20,194,65,137,192,65,41,232, 532 4,252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242,
530 248,33,137,205,137,116,36,100,232,251,1,25,139,149,233,133,192,15,133,244, 533 15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,
531 42,15,182,110,252,255,15,182,78,252,253,72,139,4,252,234,72,137,4,202,139, 534 242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,
532 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,72,252, 535 242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,
533 247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,15,182,232, 536 234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,158,232,244,
534 131,198,4,193,232,16,252,255,36,252,235,255,15,191,192,252,242,15,42,192, 537 149,255,252,233,244,158,255,232,244,108,255,15,182,252,236,15,182,192,139,
535 252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242,15,16,4,199, 538 76,36,96,137,145,233,141,20,194,65,137,192,65,41,232,248,33,137,205,137,116,
536 252,242,15,17,4,202,255,221,4,199,221,28,202,255,72,252,247,208,137,68,202, 539 36,100,232,251,1,26,139,149,233,133,192,15,133,244,42,15,182,110,252,255,
537 4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255, 540 15,182,78,252,253,72,139,4,252,234,72,137,4,202,139,6,15,182,204,15,182,232,
538 141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8, 541 131,198,4,193,232,16,252,255,36,252,235,255,72,252,247,208,139,4,135,199,
539 57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 542 68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
540 255,36,252,235,255,139,106,252,248,139,172,253,133,233,139,173,233,72,139, 543 255,36,252,235,255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,223,
541 69,0,72,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 544 70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17,4,202,255,221,
542 36,252,235,255,139,106,252,248,139,172,253,141,233,128,189,233,0,139,173, 545 4,199,221,28,202,255,72,252,247,208,137,68,202,4,139,6,15,182,204,15,182,
543 233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133, 546 232,131,198,4,193,232,16,252,255,36,252,235,255,141,76,202,12,141,68,194,
544 233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232, 547 4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,
545 16,252,255,36,252,235,248,2,129,232,239,129,252,248,239,15,134,244,1,252, 548 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,106,
546 246,129,233,235,15,132,244,1,135,213,141,139,233,255,232,251,1,26,137,252, 549 252,248,139,172,253,133,233,139,173,233,72,139,69,0,72,137,4,202,139,6,15,
547 234,252,233,244,1,255,72,252,247,208,139,106,252,248,139,172,253,141,233, 550 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,106,252,
548 139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244, 551 248,139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,
549 248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252, 552 137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,
550 235,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,1,137, 553 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,
551 213,137,194,141,139,233,232,251,1,26,137,252,234,252,233,244,1,255,139,106, 554 129,232,239,129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,
552 252,248,255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,233,255,252, 555 135,213,141,139,233,255,232,251,1,27,137,252,234,252,233,244,1,255,72,252,
553 242,15,17,1,255,221,25,255,72,252,247,208,139,106,252,248,139,172,253,141, 556 247,208,139,106,252,248,139,172,253,141,233,139,12,135,139,133,233,137,8,
554 233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16, 557 199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,
555 252,255,36,252,235,255,141,180,253,134,233,139,108,36,96,131,189,233,0,15, 558 182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,252,246,129,233,235,
556 132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,27,139,149,233,248, 559 15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,
557 1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255, 560 1,27,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,
558 72,252,247,208,139,108,36,96,137,149,233,68,139,66,252,248,139,20,135,137, 561 255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,25,255,72,
559 252,233,137,116,36,100,232,251,1,28,139,149,233,15,182,78,252,253,137,4,202, 562 252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,65,4,139,
563 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,141,180,
564 253,134,233,139,108,36,96,131,189,233,0,15,132,244,247,137,149,233,141,20,
565 202,137,252,233,232,251,1,28,139,149,233,248,1,139,6,15,182,204,15,182,232,
566 131,198,4,193,232,16,252,255,36,252,235,255,72,252,247,208,139,108,36,96,
567 137,149,233,68,139,66,252,248,139,20,135,137,252,233,137,116,36,100,232,251,
568 1,29,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,
569 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,108,36,96,
570 137,149,233,139,139,233,59,139,233,137,116,36,100,15,131,244,251,248,1,65,
571 137,192,37,252,255,7,0,0,65,193,232,11,61,252,255,7,0,0,15,132,244,249,248,
572 2,137,252,233,137,194,232,251,1,30,139,149,233,15,182,78,252,253,137,4,202,
560 199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 573 199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
561 36,252,235,255,139,108,36,96,137,149,233,139,139,233,59,139,233,137,116,36, 574 36,252,235,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,232,251,1,31,
562 100,15,131,244,251,248,1,65,137,192,37,252,255,7,0,0,65,193,232,11,61,252, 575 15,183,70,252,254,252,233,244,1,255,72,252,247,208,139,108,36,96,139,139,
563 255,7,0,0,15,132,244,249,248,2,137,252,233,137,194,232,251,1,29,139,149,233, 576 233,137,116,36,100,59,139,233,137,149,233,15,131,244,249,248,2,139,20,135,
564 15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232, 577 137,252,233,232,251,1,32,139,149,233,15,182,78,252,253,137,4,202,199,68,202,
565 131,198,4,193,232,16,252,255,36,252,235,248,3,184,1,8,0,0,252,233,244,2,248, 578 4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
566 5,137,252,233,232,251,1,30,15,183,70,252,254,252,233,244,1,255,72,252,247, 579 248,3,137,252,233,232,251,1,31,15,183,70,252,254,72,252,247,208,252,233,244,
567 208,139,108,36,96,139,139,233,137,116,36,100,59,139,233,137,149,233,15,131, 580 2,255,72,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,159,
568 244,249,248,2,139,20,135,137,252,233,232,251,1,31,139,149,233,15,182,78,252, 581 255,72,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,160,
569 253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193, 582 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,36,139,
570 232,16,252,255,36,252,235,248,3,137,252,233,232,251,1,30,15,183,70,252,254, 583 44,252,234,129,124,253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252,
571 72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,139,173,233, 584 242,15,45,192,252,242,15,42,200,102,15,46,193,255,15,133,244,36,59,133,233,
572 139,4,135,252,233,244,158,255,72,252,247,208,139,106,252,248,139,173,233, 585 15,131,244,36,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,72,139,
573 139,4,135,252,233,244,159,255,15,182,252,236,15,182,192,129,124,253,252,234, 586 40,72,137,44,202,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
574 4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255, 587 255,36,252,235,248,2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,
575 252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255, 588 233,235,15,132,244,36,15,182,78,252,253,248,3,255,199,68,202,4,237,252,233,
576 15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4, 589 244,1,248,5,129,124,253,194,4,239,15,133,244,36,139,4,194,252,233,244,159,
577 239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,6,15,182,204,15,182, 590 255,15,182,252,236,15,182,192,72,252,247,208,139,4,135,129,124,253,252,234,
578 232,131,198,4,193,232,16,252,255,36,252,235,248,2,131,189,233,0,15,132,244, 591 4,239,15,133,244,34,139,44,252,234,248,159,139,141,233,35,136,233,105,201,
579 249,139,141,233,252,246,129,233,235,15,132,244,36,15,182,78,252,253,248,3, 592 239,3,141,233,248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,244,
580 255,199,68,202,4,237,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244, 593 250,129,121,253,4,239,15,132,244,251,15,182,70,252,253,72,139,41,72,137,44,
581 36,139,4,194,252,233,244,158,255,15,182,252,236,15,182,192,72,252,247,208, 594 194,248,2,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
582 139,4,135,129,124,253,252,234,4,239,15,133,244,34,139,44,252,234,248,158, 595 252,235,248,3,15,182,70,252,253,199,68,194,4,237,252,233,244,2,248,4,139,
583 139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133, 596 137,233,133,201,15,133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,
584 244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182, 597 129,233,235,15,133,244,3,252,233,244,34,255,15,182,252,236,15,182,192,129,
585 70,252,253,72,139,41,72,137,44,194,248,2,255,139,6,15,182,204,15,182,232, 598 124,253,252,234,4,239,15,133,244,35,139,44,252,234,59,133,233,15,131,244,
586 131,198,4,193,232,16,252,255,36,252,235,248,3,15,182,70,252,253,199,68,194, 599 35,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,72,139,40,72,137,
587 4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141, 600 44,202,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
588 233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,34, 601 252,235,248,2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233,235,
589 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,35,139, 602 15,132,244,35,255,15,182,78,252,253,248,3,199,68,202,4,237,252,233,244,1,
590 44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,233,129,120,253,4,239, 603 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,139,
591 15,132,244,248,72,139,40,72,137,44,202,248,1,139,6,15,182,204,15,182,232, 604 44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,39,59,133,
592 131,198,4,193,232,16,252,255,36,252,235,248,2,131,189,233,0,15,132,244,249, 605 233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,
593 139,141,233,252,246,129,233,235,15,132,244,35,255,15,182,78,252,253,248,3, 606 1,252,246,133,233,235,15,133,244,253,248,2,72,139,44,202,72,137,40,139,6,
594 199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,192,129,124,253, 607 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,131,189,
595 252,234,4,239,15,133,244,39,139,44,252,234,129,124,253,194,4,239,15,135,244, 608 233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132,244,39,15,182,
596 251,255,15,133,244,39,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120, 609 78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,39,139,4,
597 253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72, 610 194,252,233,244,160,248,7,128,165,233,235,139,139,233,137,171,233,137,141,
598 139,44,202,72,137,40,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 611 233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182,192,72,252,
599 255,36,252,235,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129, 612 247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,
600 233,235,15,132,244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194, 613 248,160,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,248,1,
601 4,239,15,133,244,39,139,4,194,252,233,244,159,248,7,128,165,233,235,139,139, 614 129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253,4,239,
602 233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252, 615 15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15,182,
603 236,15,182,192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133, 616 70,252,253,72,139,44,194,72,137,41,139,6,15,182,204,15,182,232,131,198,4,
604 244,37,139,44,252,234,248,159,139,141,233,35,136,233,105,201,239,198,133, 617 193,232,16,252,255,36,252,235,248,4,131,189,233,0,15,132,244,2,137,76,36,
605 233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244, 618 80,139,141,233,252,246,129,233,235,15,132,244,37,139,76,36,80,252,233,244,
606 251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133, 619 2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,
607 244,253,248,3,15,182,70,252,253,72,139,44,194,72,137,41,139,6,15,182,204, 620 252,252,246,129,233,235,15,132,244,37,248,6,137,68,36,80,199,68,36,84,237,
608 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,189,233,0,15, 621 137,108,36,32,139,76,36,96,137,145,233,76,141,68,36,80,137,252,234,137,205,
609 132,244,2,137,76,36,80,139,141,233,252,246,129,233,235,15,132,244,37,139, 622 137,116,36,100,232,251,1,33,139,149,233,139,108,36,32,137,193,252,233,244,
610 76,36,80,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141, 623 2,248,7,128,165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,3,
611 233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,68, 624 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,139,
612 36,80,199,68,36,84,237,137,108,36,32,139,76,36,96,137,145,233,76,141,68,36, 625 44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,4,239,
613 80,137,252,234,137,205,137,116,36,100,232,251,1,32,139,149,233,139,108,36, 626 15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72,139,12,202,
614 32,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233,137, 627 72,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
615 133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234,4, 628 235,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233,235,
616 239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133, 629 15,132,244,38,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,139,
617 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244, 630 233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,124,36,
618 253,248,2,72,139,12,202,72,137,8,139,6,15,182,204,15,182,232,131,198,4,193, 631 80,139,60,199,248,1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,
619 232,16,252,255,36,252,235,248,3,131,189,233,0,15,132,244,1,255,139,141,233, 632 244,253,248,2,139,68,36,84,131,232,1,15,132,244,250,1,252,248,59,133,233,
620 252,246,129,233,235,15,132,244,38,15,182,78,252,253,252,233,244,1,248,7,128, 633 15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,72,139,41,131,193,8,72,
621 165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,252,253,252,233, 634 137,47,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,80,139,6,15,182,
622 244,2,255,137,124,36,80,139,60,199,248,1,141,12,202,139,105,252,248,252,246, 635 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,139,76,36,96,
623 133,233,235,15,133,244,253,248,2,139,68,36,84,131,232,1,15,132,244,250,1, 636 137,145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251,1,34,139,
624 252,248,59,133,233,15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,72, 637 149,233,15,182,78,252,253,252,233,244,1,248,7,255,128,165,233,235,139,131,
625 139,41,131,193,8,72,137,47,131,199,8,131,232,1,15,133,244,3,248,4,139,124, 638 233,137,171,233,137,133,233,252,233,244,2,255,3,68,36,84,255,129,124,253,
626 36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 639 202,4,239,139,44,202,15,133,244,52,141,84,202,8,137,114,252,252,139,181,233,
627 248,5,139,76,36,96,137,145,233,137,252,234,65,137,192,137,205,137,116,36, 640 139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,141,76,
628 100,232,251,1,33,139,149,233,15,182,78,252,253,252,233,244,1,248,7,255,128, 641 202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,28,248,53,
629 165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,2,255,3,68,36, 642 139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137,
630 84,255,129,124,253,202,4,239,139,44,202,15,133,244,51,141,84,202,8,137,114, 643 68,36,84,131,232,1,15,132,244,249,248,2,72,139,41,131,193,8,72,137,47,131,
631 252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36, 644 199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,84,128,189,233,
632 252,235,255,141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239, 645 1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198,
633 15,133,244,28,248,52,139,114,252,252,252,247,198,237,15,133,244,253,248,1, 646 4,252,255,36,252,235,248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,
634 137,106,252,248,137,68,36,84,131,232,1,15,132,244,249,248,2,72,139,41,131, 647 253,72,252,247,209,141,12,202,139,121,252,248,139,191,233,139,191,233,252,
635 193,8,72,137,47,131,199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139, 648 233,244,4,248,7,129,252,238,239,252,247,198,237,15,133,244,254,41,252,242,
636 68,36,84,128,189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182,252, 649 137,215,139,114,252,252,252,233,244,1,248,8,129,198,239,252,233,244,1,255,
637 233,15,182,205,131,198,4,252,255,36,252,235,248,5,255,252,247,198,237,15, 650 141,76,202,8,72,139,105,232,72,139,65,252,240,72,137,41,72,137,65,8,139,105,
638 133,244,4,15,182,78,252,253,72,252,247,209,141,12,202,139,121,252,248,139, 651 224,139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,184,237,15,
639 191,233,139,191,233,252,233,244,4,248,7,129,252,238,239,252,247,198,237,15, 652 133,244,28,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,
640 133,244,254,41,252,242,137,215,139,114,252,252,252,233,244,1,248,8,129,198, 653 205,131,198,4,252,255,36,252,235,255,137,124,36,80,137,92,36,84,139,108,202,
641 239,252,233,244,1,255,141,76,202,8,72,139,105,232,72,139,65,252,240,72,137, 654 252,240,139,68,202,252,248,139,157,233,131,198,4,139,189,233,248,1,57,216,
642 41,72,137,65,8,139,105,224,139,65,228,137,105,252,248,137,65,252,252,129, 655 15,131,244,251,129,124,253,199,4,239,15,132,244,250,255,252,242,15,42,192,
643 252,248,239,184,237,15,133,244,28,137,202,137,114,252,252,139,181,233,139, 656 255,219,68,202,252,248,255,72,139,44,199,72,137,108,202,8,131,192,1,255,137,
644 14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,137,124,36, 657 68,202,252,248,248,2,15,183,70,252,254,141,180,253,134,233,248,3,139,92,36,
645 80,137,92,36,84,139,108,202,252,240,139,68,202,252,248,139,157,233,131,198, 658 84,139,124,36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
646 4,139,189,233,248,1,57,216,15,131,244,251,129,124,253,199,4,239,15,132,244, 659 36,252,235,248,4,131,192,1,255,137,68,202,252,248,255,252,233,244,1,248,5,
647 250,255,252,242,15,42,192,255,219,68,202,252,248,255,72,139,44,199,72,137, 660 41,216,248,6,59,133,233,15,135,244,3,105,252,248,239,3,189,233,129,191,233,
648 108,202,8,131,192,1,255,137,68,202,252,248,248,2,15,183,70,252,254,141,180, 661 239,15,132,244,253,141,92,24,1,72,139,175,233,72,139,135,233,72,137,44,202,
649 253,134,233,248,3,139,92,36,84,139,124,36,80,139,6,15,182,204,15,182,232, 662 72,137,68,202,8,137,92,202,252,248,252,233,244,2,248,7,131,192,1,252,233,
650 131,198,4,193,232,16,252,255,36,252,235,248,4,131,192,1,255,137,68,202,252, 663 244,6,255,129,124,253,202,252,236,239,15,133,244,251,139,108,202,232,129,
651 248,255,252,233,244,1,248,5,41,216,248,6,59,133,233,15,135,244,3,105,252, 664 124,253,202,252,244,239,15,133,244,251,129,124,253,202,252,252,239,15,133,
652 248,239,3,189,233,129,191,233,239,15,132,244,253,141,92,24,1,72,139,175,233, 665 244,251,128,189,233,235,15,133,244,251,141,180,253,134,233,199,68,202,252,
653 72,139,135,233,72,137,44,202,72,137,68,202,8,137,92,202,252,248,252,233,244, 666 248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
654 2,248,7,131,192,1,252,233,244,6,255,129,124,253,202,252,236,239,15,133,244, 667 36,252,235,248,5,198,70,252,252,235,141,180,253,134,233,198,6,235,252,233,
655 251,139,108,202,232,129,124,253,202,252,244,239,15,133,244,251,129,124,253, 668 244,1,255,15,182,252,236,15,182,192,137,124,36,80,141,188,253,194,233,141,
656 202,252,252,239,15,133,244,251,128,189,233,235,15,133,244,251,141,180,253, 669 12,202,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233,252,248,
657 134,233,199,68,202,252,248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131, 670 57,215,15,131,244,248,248,1,72,139,71,252,248,131,199,8,72,137,1,131,193,
658 198,4,193,232,16,252,255,36,252,235,248,5,198,70,252,252,235,141,180,253, 671 8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,2,199,65,4,237,131,193,
659 134,233,198,6,235,252,233,244,1,255,15,182,252,236,15,182,192,137,124,36, 672 8,57,252,233,15,130,244,2,248,3,139,124,36,80,139,6,15,182,204,15,182,232,
660 80,141,188,253,194,233,141,12,202,43,122,252,252,133,252,237,15,132,244,251, 673 131,198,4,193,232,16,252,255,36,252,235,248,5,199,68,36,84,1,0,0,0,137,208,
661 141,108,252,233,252,248,57,215,15,131,244,248,248,1,72,139,71,252,248,131, 674 41,252,248,15,134,244,3,137,197,193,252,237,3,131,197,1,137,108,36,84,139,
662 199,8,72,137,1,131,193,8,57,252,233,15,131,244,249,57,215,15,130,244,1,248, 675 108,36,96,1,200,59,133,233,15,135,244,253,248,6,255,72,139,71,252,248,131,
663 2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,3,139,124,36,80,139, 676 199,8,72,137,1,131,193,8,57,215,15,130,244,6,252,233,244,3,248,7,137,149,
664 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,199, 677 233,137,141,233,137,116,36,100,41,215,139,84,36,84,131,252,234,1,137,252,
665 68,36,84,1,0,0,0,137,208,41,252,248,15,134,244,3,137,197,193,252,237,3,131, 678 233,232,251,1,0,139,149,233,139,141,233,1,215,252,233,244,6,255,193,225,3,
666 197,1,137,108,36,84,139,108,36,96,1,200,59,133,233,15,135,244,253,248,6,255, 679 255,248,1,139,114,252,252,137,68,36,84,252,247,198,237,15,133,244,253,255,
667 72,139,71,252,248,131,199,8,72,137,1,131,193,8,57,215,15,130,244,6,252,233, 680 248,13,137,215,131,232,1,15,132,244,249,248,2,72,139,44,15,72,137,111,252,
668 244,3,248,7,137,149,233,137,141,233,137,116,36,100,41,215,139,84,36,84,131, 681 248,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,84,15,182,110,252,255,
669 252,234,1,137,252,233,232,251,1,0,139,149,233,139,141,233,1,215,252,233,244, 682 248,5,57,197,15,135,244,252,255,72,139,44,10,72,137,106,252,248,255,248,5,
670 6,255,193,225,3,255,248,1,139,114,252,252,137,68,36,84,252,247,198,237,15, 683 56,70,252,255,15,135,244,252,255,15,182,78,252,253,72,252,247,209,141,20,
671 133,244,253,255,248,13,137,215,131,232,1,15,132,244,249,248,2,72,139,44,15, 684 202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,15,182,232,131,
672 72,137,111,252,248,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,84,15, 685 198,4,193,232,16,252,255,36,252,235,248,6,255,199,71,252,252,237,131,199,
673 182,110,252,255,248,5,57,197,15,135,244,252,255,72,139,44,10,72,137,106,252, 686 8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,7,141,174,233,
674 248,255,248,5,56,70,252,255,15,135,244,252,255,15,182,78,252,253,72,252,247, 687 252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,255,137,252,245,209,
675 209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,15, 688 252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,141,255,141,12,202,
676 182,232,131,198,4,193,232,16,252,255,36,252,235,248,6,255,199,71,252,252, 689 255,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,255,
677 237,131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248, 690 139,105,20,255,129,252,253,239,15,135,244,54,255,252,242,15,16,1,252,242,
678 7,141,174,233,252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,255, 691 15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,
679 137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,140, 692 249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,
680 255,141,12,202,255,129,121,253,4,239,15,135,244,53,129,121,253,12,239,15, 693 65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,
681 135,244,53,255,139,105,20,255,129,252,253,239,15,135,244,53,255,252,242,15, 694 221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70,252,254,255,15,131,
682 16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237, 695 244,248,141,180,253,134,233,255,141,180,253,134,233,15,183,70,252,254,15,
683 15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65, 696 131,245,255,15,130,244,248,141,180,253,134,233,255,248,3,102,15,46,193,252,
684 24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244, 697 233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244,247,255,137,
685 247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70,252,254, 698 105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253,134,233,139,
686 255,15,131,244,248,141,180,253,134,233,255,141,180,253,134,233,15,183,70, 699 1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,72,139,128,233,
687 252,254,15,131,245,255,15,130,244,248,141,180,253,134,233,255,248,3,102,15, 700 139,108,36,96,137,147,233,137,171,233,76,137,100,36,80,76,137,108,36,32,76,
688 46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244, 701 137,116,36,24,76,137,124,36,16,72,137,225,72,129,252,236,239,102,15,127,49,
689 247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253, 702 102,15,127,185,233,102,68,15,127,129,233,102,68,15,127,137,233,102,68,15,
690 134,233,139,1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,72, 703 127,145,233,102,68,15,127,153,233,102,68,15,127,161,233,102,68,15,127,169,
691 139,128,233,139,108,36,96,137,147,233,137,171,233,76,137,100,36,80,76,137, 704 233,102,68,15,127,177,233,102,68,15,127,185,233,252,255,224,255,141,180,253,
692 108,36,32,76,137,116,36,24,76,137,124,36,16,72,137,225,72,129,252,236,239, 705 134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
693 102,15,127,49,102,15,127,185,233,102,68,15,127,129,233,102,68,15,127,137, 706 255,137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,
694 233,102,68,15,127,145,233,102,68,15,127,153,233,102,68,15,127,161,233,102, 707 143,255,139,190,233,139,108,36,96,141,12,202,59,141,233,15,135,244,23,15,
695 68,15,127,169,233,102,68,15,127,177,233,102,68,15,127,185,233,252,255,224, 708 182,142,233,57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,233,245,
696 255,141,180,253,134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16, 709 255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244,
697 252,255,36,252,235,255,137,252,245,209,252,237,129,229,239,102,131,172,253, 710 2,255,141,44,197,237,141,4,194,139,122,252,248,137,104,252,252,137,120,252,
698 43,233,1,15,132,244,142,255,139,190,233,139,108,36,96,141,12,202,59,141,233, 711 248,139,108,36,96,141,12,200,59,141,233,15,135,244,22,137,209,137,194,15,
699 15,135,244,23,15,182,142,233,57,200,15,134,244,249,248,2,255,15,183,70,252, 712 182,174,233,133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244,
700 254,252,233,245,255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134, 713 249,139,121,252,248,137,56,139,121,252,252,137,120,4,131,192,8,199,65,252,
701 244,3,252,233,244,2,255,141,44,197,237,141,4,194,139,122,252,248,137,104, 714 252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233,139,6,15,182,204,
702 252,252,137,120,252,248,139,108,36,96,141,12,200,59,141,233,15,135,244,22, 715 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,248,3,199,64,4,237,
703 137,209,137,194,15,182,174,233,133,252,237,15,132,244,248,248,1,131,193,8, 716 131,192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139,106,252,248,72,
704 57,209,15,131,244,249,139,121,252,248,137,56,139,121,252,252,137,120,4,131, 717 139,189,233,139,108,36,96,141,68,194,252,248,137,149,233,141,136,233,59,141,
705 192,8,199,65,252,252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233, 718 233,137,133,233,255,137,252,233,255,72,137,252,250,137,252,233,255,15,135,
706 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,248, 719 244,21,199,131,233,237,255,252,255,215,255,252,255,147,233,255,199,131,233,
707 3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139, 720 237,139,149,233,141,12,194,252,247,217,3,141,233,139,114,252,252,252,233,
708 106,252,248,72,139,189,233,139,108,36,96,141,68,194,252,248,137,149,233,141, 721 244,12,255,254,0
709 136,233,59,141,233,137,133,233,255,137,252,233,255,72,137,252,250,137,252,
710 233,255,15,135,244,21,199,131,233,237,255,252,255,215,255,252,255,147,233,
711 255,199,131,233,237,139,149,233,141,12,194,252,247,217,3,141,233,139,114,
712 252,252,252,233,244,12,255,254,0
713}; 722};
714 723
715enum { 724enum {
@@ -749,6 +758,7 @@ enum {
749 GLOB_cont_condt, 758 GLOB_cont_condt,
750 GLOB_cont_condf, 759 GLOB_cont_condf,
751 GLOB_vmeta_equal, 760 GLOB_vmeta_equal,
761 GLOB_vmeta_equal_cd,
752 GLOB_vmeta_arith_vn, 762 GLOB_vmeta_arith_vn,
753 GLOB_vmeta_arith_nv, 763 GLOB_vmeta_arith_nv,
754 GLOB_vmeta_unm, 764 GLOB_vmeta_unm,
@@ -902,6 +912,7 @@ static const char *const globnames[] = {
902 "cont_condt", 912 "cont_condt",
903 "cont_condf", 913 "cont_condf",
904 "vmeta_equal", 914 "vmeta_equal",
915 "vmeta_equal_cd",
905 "vmeta_arith_vn", 916 "vmeta_arith_vn",
906 "vmeta_arith_nv", 917 "vmeta_arith_nv",
907 "vmeta_unm", 918 "vmeta_unm",
@@ -1024,6 +1035,7 @@ static const char *const extnames[] = {
1024 "lj_meta_tset", 1035 "lj_meta_tset",
1025 "lj_meta_comp", 1036 "lj_meta_comp",
1026 "lj_meta_equal", 1037 "lj_meta_equal",
1038 "lj_meta_equal_cd@8",
1027 "lj_meta_arith", 1039 "lj_meta_arith",
1028 "lj_meta_len@8", 1040 "lj_meta_len@8",
1029 "lj_meta_call", 1041 "lj_meta_call",
@@ -1097,372 +1109,375 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1097 } 1109 }
1098 dasm_put(Dst, 1066, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base)); 1110 dasm_put(Dst, 1066, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
1099 dasm_put(Dst, 1239, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); 1111 dasm_put(Dst, 1239, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
1100 dasm_put(Dst, 1339, Dt1(->base), Dt1(->base), FRAME_CONT); 1112 dasm_put(Dst, 1339);
1101 dasm_put(Dst, 1464, 2+1, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC); 1113#if LJ_HASFFI
1102 dasm_put(Dst, 1642, 1+1, LJ_TISTRUECOND, 1+1); 1114 dasm_put(Dst, 1359, Dt1(->base));
1103 dasm_put(Dst, 1748, ~LJ_TNUMX); 1115#endif
1116 dasm_put(Dst, 1390, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1);
1117 dasm_put(Dst, 1506, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
1118 dasm_put(Dst, 1691, 1+1, ~LJ_TNUMX);
1104 if (cmov) { 1119 if (cmov) {
1105 dasm_put(Dst, 1756); 1120 dasm_put(Dst, 1789);
1106 } else { 1121 } else {
1107 dasm_put(Dst, 1760); 1122 dasm_put(Dst, 1793);
1108 } 1123 }
1109 dasm_put(Dst, 1769, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL); 1124 dasm_put(Dst, 1802, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
1110 dasm_put(Dst, 1848, 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, 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));
1111 dasm_put(Dst, 1905, LJ_TNIL, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT])); 1126 dasm_put(Dst, 1938, LJ_TNIL, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]));
1112 dasm_put(Dst, 1973, 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, 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));
1113 dasm_put(Dst, 2042, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB, 1+1, LJ_TISNUM); 1128 dasm_put(Dst, 2075, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
1114 dasm_put(Dst, 2127); 1129 dasm_put(Dst, 2160);
1115 if (sse) { 1130 if (sse) {
1116 dasm_put(Dst, 2132); 1131 dasm_put(Dst, 2165);
1117 } else { 1132 } else {
1118 dasm_put(Dst, 2142); 1133 dasm_put(Dst, 2175);
1119 } 1134 }
1120 dasm_put(Dst, 2149, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1135 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));
1121 dasm_put(Dst, 2215, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); 1136 dasm_put(Dst, 2248, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
1122 dasm_put(Dst, 2282, Dt1(->top), Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1); 1137 dasm_put(Dst, 2315, Dt1(->top), Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1);
1123 dasm_put(Dst, 2371, LJ_TTAB); 1138 dasm_put(Dst, 2404, LJ_TTAB);
1124#ifdef LUAJIT_ENABLE_LUA52COMPAT 1139#ifdef LUAJIT_ENABLE_LUA52COMPAT
1125 dasm_put(Dst, 2383, Dt6(->metatable)); 1140 dasm_put(Dst, 2416, Dt6(->metatable));
1126#endif 1141#endif
1127 dasm_put(Dst, 2392, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); 1142 dasm_put(Dst, 2425, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
1128 if (sse) { 1143 if (sse) {
1129 dasm_put(Dst, 2455, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1144 dasm_put(Dst, 2488, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1130 } else { 1145 } else {
1131 } 1146 }
1132 dasm_put(Dst, 2488, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); 1147 dasm_put(Dst, 2521, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
1133 dasm_put(Dst, 2565, 1+1, LJ_TTAB); 1148 dasm_put(Dst, 2598, 1+1, LJ_TTAB);
1134#ifdef LUAJIT_ENABLE_LUA52COMPAT 1149#ifdef LUAJIT_ENABLE_LUA52COMPAT
1135 dasm_put(Dst, 2383, Dt6(->metatable)); 1150 dasm_put(Dst, 2416, Dt6(->metatable));
1136#endif 1151#endif
1137 dasm_put(Dst, 2585, Dt8(->upvalue[0]), LJ_TFUNC); 1152 dasm_put(Dst, 2618, Dt8(->upvalue[0]), LJ_TFUNC);
1138 if (sse) { 1153 if (sse) {
1139 dasm_put(Dst, 2606); 1154 dasm_put(Dst, 2639);
1140 } else { 1155 } else {
1141 dasm_put(Dst, 2616); 1156 dasm_put(Dst, 2649);
1142 } 1157 }
1143 dasm_put(Dst, 2623, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC); 1158 dasm_put(Dst, 2656, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
1144 dasm_put(Dst, 2687, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top)); 1159 dasm_put(Dst, 2720, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
1145 dasm_put(Dst, 2777, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1160 dasm_put(Dst, 2810, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1146 dasm_put(Dst, 2865, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE); 1161 dasm_put(Dst, 2898, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
1147 dasm_put(Dst, 2978, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe)); 1162 dasm_put(Dst, 3011, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1148 dasm_put(Dst, 3076, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); 1163 dasm_put(Dst, 3109, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1149 dasm_put(Dst, 3143, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack)); 1164 dasm_put(Dst, 3176, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1150 dasm_put(Dst, 3231, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME); 1165 dasm_put(Dst, 3264, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1151 dasm_put(Dst, 3343, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); 1166 dasm_put(Dst, 3376, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1152 if (sse) { 1167 if (sse) {
1153 dasm_put(Dst, 3370, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1168 dasm_put(Dst, 3403, 1+1, LJ_TISNUM, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1154 } else { 1169 } else {
1155 dasm_put(Dst, 3434, 1+1, LJ_TISNUM); 1170 dasm_put(Dst, 3467, 1+1, LJ_TISNUM);
1156 } 1171 }
1157 dasm_put(Dst, 3470, 1+1, FRAME_TYPE, LJ_TNIL); 1172 dasm_put(Dst, 3503, 1+1, FRAME_TYPE, LJ_TNIL);
1158 if (sse) { 1173 if (sse) {
1159 dasm_put(Dst, 3564, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1174 dasm_put(Dst, 3597, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1160 dasm_put(Dst, 3626, 1+1, LJ_TISNUM); 1175 dasm_put(Dst, 3659, 1+1, LJ_TISNUM);
1161 } else { 1176 } else {
1162 dasm_put(Dst, 3656, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1177 dasm_put(Dst, 3689, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1163 dasm_put(Dst, 3715, 1+1, LJ_TISNUM); 1178 dasm_put(Dst, 3748, 1+1, LJ_TISNUM);
1164 } 1179 }
1165 dasm_put(Dst, 3742, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1180 dasm_put(Dst, 3775, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1166 dasm_put(Dst, 3811, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1181 dasm_put(Dst, 3844, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1167 dasm_put(Dst, 3868, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1182 dasm_put(Dst, 3901, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1168 dasm_put(Dst, 3931, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1183 dasm_put(Dst, 3964, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1169 dasm_put(Dst, 4021); 1184 dasm_put(Dst, 4054);
1170 if (sse) { 1185 if (sse) {
1171 dasm_put(Dst, 4033, 1+1, LJ_TISNUM); 1186 dasm_put(Dst, 4066, 1+1, LJ_TISNUM);
1172 } else { 1187 } else {
1173 } 1188 }
1174 dasm_put(Dst, 4058); 1189 dasm_put(Dst, 4091);
1175 if (sse) { 1190 if (sse) {
1176 dasm_put(Dst, 4072, 1+1, LJ_TISNUM); 1191 dasm_put(Dst, 4105, 1+1, LJ_TISNUM);
1177 } else { 1192 } else {
1178 } 1193 }
1179 dasm_put(Dst, 4097); 1194 dasm_put(Dst, 4130);
1180 if (sse) { 1195 if (sse) {
1181 dasm_put(Dst, 4111, 1+1, LJ_TISNUM); 1196 dasm_put(Dst, 4144, 1+1, LJ_TISNUM);
1182 } else { 1197 } else {
1183 } 1198 }
1184 dasm_put(Dst, 4136); 1199 dasm_put(Dst, 4169);
1185 if (sse) { 1200 if (sse) {
1186 dasm_put(Dst, 4152, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1201 dasm_put(Dst, 4185, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1187 } else { 1202 } else {
1188 dasm_put(Dst, 4191, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1203 dasm_put(Dst, 4224, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1189 } 1204 }
1190 dasm_put(Dst, 4224, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1205 dasm_put(Dst, 4257, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1191 dasm_put(Dst, 4289, 1+1, LJ_TISNUM); 1206 dasm_put(Dst, 4322, 1+1, LJ_TISNUM);
1192 if (sse) { 1207 if (sse) {
1193 dasm_put(Dst, 4388); 1208 dasm_put(Dst, 4421);
1194 } else { 1209 } else {
1195 dasm_put(Dst, 4394); 1210 dasm_put(Dst, 4427);
1196 } 1211 }
1197 dasm_put(Dst, 4403); 1212 dasm_put(Dst, 4436);
1198 if (sse) { 1213 if (sse) {
1199 dasm_put(Dst, 4428); 1214 dasm_put(Dst, 4461);
1200 } else { 1215 } else {
1201 dasm_put(Dst, 4434); 1216 dasm_put(Dst, 4467);
1202 } 1217 }
1203 dasm_put(Dst, 4437, 1+2); 1218 dasm_put(Dst, 4470, 1+2);
1204 if (sse) { 1219 if (sse) {
1205 dasm_put(Dst, 4446); 1220 dasm_put(Dst, 4479);
1206 } else { 1221 } else {
1207 dasm_put(Dst, 4454); 1222 dasm_put(Dst, 4487);
1208 } 1223 }
1209 dasm_put(Dst, 4462); 1224 dasm_put(Dst, 4495);
1210 if (sse) { 1225 if (sse) {
1211 dasm_put(Dst, 4465, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32)); 1226 dasm_put(Dst, 4498, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
1212 } else { 1227 } else {
1213 dasm_put(Dst, 4492); 1228 dasm_put(Dst, 4525);
1214 } 1229 }
1215 dasm_put(Dst, 4511); 1230 dasm_put(Dst, 4544);
1216 if (sse) { 1231 if (sse) {
1217 dasm_put(Dst, 4527, 1+1, LJ_TISNUM); 1232 dasm_put(Dst, 4560, 1+1, LJ_TISNUM);
1218 } else { 1233 } else {
1219 dasm_put(Dst, 4552, 1+1, LJ_TISNUM); 1234 dasm_put(Dst, 4585, 1+1, LJ_TISNUM);
1220 } 1235 }
1221 dasm_put(Dst, 4574); 1236 dasm_put(Dst, 4607);
1222 if (sse) { 1237 if (sse) {
1223 dasm_put(Dst, 4596); 1238 dasm_put(Dst, 4629);
1224 } else { 1239 } else {
1225 dasm_put(Dst, 4622); 1240 dasm_put(Dst, 4655);
1226 } 1241 }
1227 dasm_put(Dst, 4639, 1+2); 1242 dasm_put(Dst, 4672, 1+2);
1228 if (sse) { 1243 if (sse) {
1229 dasm_put(Dst, 4679); 1244 dasm_put(Dst, 4712);
1230 } else { 1245 } else {
1231 dasm_put(Dst, 4687); 1246 dasm_put(Dst, 4720);
1232 } 1247 }
1233 dasm_put(Dst, 4697, 2+1, LJ_TISNUM, LJ_TISNUM); 1248 dasm_put(Dst, 4730, 2+1, LJ_TISNUM, LJ_TISNUM);
1234 if (sse) { 1249 if (sse) {
1235 dasm_put(Dst, 4749, 2+1, LJ_TISNUM, LJ_TISNUM); 1250 dasm_put(Dst, 4782, 2+1, LJ_TISNUM, LJ_TISNUM);
1236 } else { 1251 } else {
1237 dasm_put(Dst, 4796, 2+1, LJ_TISNUM, LJ_TISNUM); 1252 dasm_put(Dst, 4829, 2+1, LJ_TISNUM, LJ_TISNUM);
1238 } 1253 }
1239 if (sse) { 1254 if (sse) {
1240 dasm_put(Dst, 4837, 1+1, LJ_TISNUM, LJ_TISNUM); 1255 dasm_put(Dst, 4870, 1+1, LJ_TISNUM, LJ_TISNUM);
1241 } else { 1256 } else {
1242 } 1257 }
1243 if (sse) { 1258 if (sse) {
1244 dasm_put(Dst, 4908, 1+1, LJ_TISNUM, LJ_TISNUM); 1259 dasm_put(Dst, 4941, 1+1, LJ_TISNUM, LJ_TISNUM);
1245 } else { 1260 } else {
1246 } 1261 }
1247 if (!sse) { 1262 if (!sse) {
1248 dasm_put(Dst, 4979); 1263 dasm_put(Dst, 5012);
1249 } 1264 }
1250 dasm_put(Dst, 4988, 1+1, LJ_TSTR); 1265 dasm_put(Dst, 5021, 1+1, LJ_TSTR);
1251 if (sse) { 1266 if (sse) {
1252 dasm_put(Dst, 5010, Dt5(->len)); 1267 dasm_put(Dst, 5043, Dt5(->len));
1253 } else { 1268 } else {
1254 dasm_put(Dst, 5021, Dt5(->len)); 1269 dasm_put(Dst, 5054, Dt5(->len));
1255 } 1270 }
1256 dasm_put(Dst, 5029, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); 1271 dasm_put(Dst, 5062, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
1257 if (sse) { 1272 if (sse) {
1258 dasm_put(Dst, 5067); 1273 dasm_put(Dst, 5100);
1259 } else { 1274 } else {
1260 dasm_put(Dst, 5077); 1275 dasm_put(Dst, 5110);
1261 } 1276 }
1262 dasm_put(Dst, 5090, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1277 dasm_put(Dst, 5123, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1263 if (sse) { 1278 if (sse) {
1264 dasm_put(Dst, 5125); 1279 dasm_put(Dst, 5158);
1265 } else { 1280 } else {
1266 dasm_put(Dst, 5147); 1281 dasm_put(Dst, 5180);
1267 } 1282 }
1268 dasm_put(Dst, 5167, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); 1283 dasm_put(Dst, 5200, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
1269 dasm_put(Dst, 2127); 1284 dasm_put(Dst, 2160);
1270 if (sse) { 1285 if (sse) {
1271 dasm_put(Dst, 5275); 1286 dasm_put(Dst, 5308);
1272 } else { 1287 } else {
1273 dasm_put(Dst, 5286); 1288 dasm_put(Dst, 5319);
1274 } 1289 }
1275 dasm_put(Dst, 5294, LJ_TSTR, LJ_TISNUM, Dt5(->len)); 1290 dasm_put(Dst, 5327, LJ_TSTR, LJ_TISNUM, Dt5(->len));
1276 if (sse) { 1291 if (sse) {
1277 dasm_put(Dst, 5324); 1292 dasm_put(Dst, 5357);
1278 } else { 1293 } else {
1279 } 1294 }
1280 dasm_put(Dst, 5331, sizeof(GCstr)-1); 1295 dasm_put(Dst, 5364, sizeof(GCstr)-1);
1281 dasm_put(Dst, 5406, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1296 dasm_put(Dst, 5439, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1282 dasm_put(Dst, 5465, LJ_TSTR, LJ_TISNUM); 1297 dasm_put(Dst, 5498, LJ_TSTR, LJ_TISNUM);
1283 if (sse) { 1298 if (sse) {
1284 dasm_put(Dst, 5486); 1299 dasm_put(Dst, 5519);
1285 } else { 1300 } else {
1286 dasm_put(Dst, 5493); 1301 dasm_put(Dst, 5526);
1287 } 1302 }
1288 dasm_put(Dst, 5505, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); 1303 dasm_put(Dst, 5538, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
1289 dasm_put(Dst, 5570, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1304 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));
1290 dasm_put(Dst, 5633, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); 1305 dasm_put(Dst, 5666, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1291 dasm_put(Dst, 5704, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); 1306 dasm_put(Dst, 5737, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1292 dasm_put(Dst, 5789, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 1307 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));
1293 dasm_put(Dst, 5859, 1+1, LJ_TTAB); 1308 dasm_put(Dst, 5892, 1+1, LJ_TTAB);
1294 if (sse) { 1309 if (sse) {
1295 dasm_put(Dst, 5927); 1310 dasm_put(Dst, 5960);
1296 } else { 1311 } else {
1297 } 1312 }
1298 if (sse) { 1313 if (sse) {
1299 dasm_put(Dst, 5937, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1314 dasm_put(Dst, 5970, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1300 } else { 1315 } else {
1301 } 1316 }
1302 if (sse) { 1317 if (sse) {
1303 dasm_put(Dst, 5989, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1318 dasm_put(Dst, 6022, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1304 } else { 1319 } else {
1305 } 1320 }
1306 dasm_put(Dst, 6032, LJ_TISNUM); 1321 dasm_put(Dst, 6065, LJ_TISNUM);
1307 if (sse) { 1322 if (sse) {
1308 dasm_put(Dst, 6059); 1323 dasm_put(Dst, 6092);
1309 } else { 1324 } else {
1310 } 1325 }
1311 dasm_put(Dst, 6076); 1326 dasm_put(Dst, 6109);
1312 if (sse) { 1327 if (sse) {
1313 dasm_put(Dst, 6084, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1328 dasm_put(Dst, 6117, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1314 } else { 1329 } else {
1315 } 1330 }
1316 dasm_put(Dst, 6032, LJ_TISNUM); 1331 dasm_put(Dst, 6065, LJ_TISNUM);
1317 if (sse) { 1332 if (sse) {
1318 dasm_put(Dst, 6127); 1333 dasm_put(Dst, 6160);
1319 } else { 1334 } else {
1320 } 1335 }
1321 dasm_put(Dst, 6076); 1336 dasm_put(Dst, 6109);
1322 if (sse) { 1337 if (sse) {
1323 dasm_put(Dst, 6144, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1338 dasm_put(Dst, 6177, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1324 } else { 1339 } else {
1325 } 1340 }
1326 dasm_put(Dst, 6032, LJ_TISNUM); 1341 dasm_put(Dst, 6065, LJ_TISNUM);
1327 if (sse) { 1342 if (sse) {
1328 dasm_put(Dst, 6187); 1343 dasm_put(Dst, 6220);
1329 } else { 1344 } else {
1330 } 1345 }
1331 dasm_put(Dst, 6076); 1346 dasm_put(Dst, 6109);
1332 if (sse) { 1347 if (sse) {
1333 dasm_put(Dst, 6204, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1348 dasm_put(Dst, 6237, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1334 } else { 1349 } else {
1335 } 1350 }
1336 dasm_put(Dst, 6247); 1351 dasm_put(Dst, 6280);
1337 if (sse) { 1352 if (sse) {
1338 dasm_put(Dst, 6254, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1353 dasm_put(Dst, 6287, 1+1, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1339 } else { 1354 } else {
1340 } 1355 }
1341 dasm_put(Dst, 6297); 1356 dasm_put(Dst, 6330);
1342 if (sse) { 1357 if (sse) {
1343 dasm_put(Dst, 6301); 1358 dasm_put(Dst, 6334);
1344 } else { 1359 } else {
1345 } 1360 }
1346 dasm_put(Dst, 6313); 1361 dasm_put(Dst, 6346);
1347 if (sse) { 1362 if (sse) {
1348 dasm_put(Dst, 6324, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1363 dasm_put(Dst, 6357, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1349 } else { 1364 } else {
1350 } 1365 }
1351 dasm_put(Dst, 6393); 1366 dasm_put(Dst, 6426);
1352 if (sse) { 1367 if (sse) {
1353 dasm_put(Dst, 6402, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1368 dasm_put(Dst, 6435, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1354 } else { 1369 } else {
1355 } 1370 }
1356 dasm_put(Dst, 6471); 1371 dasm_put(Dst, 6504);
1357 if (sse) { 1372 if (sse) {
1358 dasm_put(Dst, 6481, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1373 dasm_put(Dst, 6514, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1359 } else { 1374 } else {
1360 } 1375 }
1361 dasm_put(Dst, 6550); 1376 dasm_put(Dst, 6583);
1362 if (sse) { 1377 if (sse) {
1363 dasm_put(Dst, 6560, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1378 dasm_put(Dst, 6593, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1364 } else { 1379 } else {
1365 } 1380 }
1366 dasm_put(Dst, 6629); 1381 dasm_put(Dst, 6662);
1367 if (sse) { 1382 if (sse) {
1368 dasm_put(Dst, 6638, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); 1383 dasm_put(Dst, 6671, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
1369 } else { 1384 } else {
1370 } 1385 }
1371 dasm_put(Dst, 6707, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); 1386 dasm_put(Dst, 6740, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
1372 dasm_put(Dst, 6785, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); 1387 dasm_put(Dst, 6818, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
1373 dasm_put(Dst, 6912, Dt1(->top), Dt1(->base), Dt1(->top)); 1388 dasm_put(Dst, 6945, Dt1(->top), Dt1(->base), Dt1(->top));
1374#if LJ_HASJIT 1389#if LJ_HASJIT
1375 dasm_put(Dst, 6951, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1390 dasm_put(Dst, 6984, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1376#endif 1391#endif
1377 dasm_put(Dst, 6982, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); 1392 dasm_put(Dst, 7015, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
1378 dasm_put(Dst, 7033, Dt1(->base), Dt1(->base), GG_DISP2STATIC); 1393 dasm_put(Dst, 7066, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
1379#if LJ_HASJIT 1394#if LJ_HASJIT
1380 dasm_put(Dst, 7100, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); 1395 dasm_put(Dst, 7133, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
1381#endif 1396#endif
1382 dasm_put(Dst, 7147); 1397 dasm_put(Dst, 7180);
1383#if LJ_HASJIT 1398#if LJ_HASJIT
1384 dasm_put(Dst, 6977); 1399 dasm_put(Dst, 7010);
1385#endif 1400#endif
1386 dasm_put(Dst, 7154); 1401 dasm_put(Dst, 7187);
1387#if LJ_HASJIT 1402#if LJ_HASJIT
1388 dasm_put(Dst, 7157); 1403 dasm_put(Dst, 7190);
1389#endif 1404#endif
1390 dasm_put(Dst, 7167, Dt1(->base), Dt1(->top)); 1405 dasm_put(Dst, 7200, Dt1(->base), Dt1(->top));
1391#if LJ_HASJIT 1406#if LJ_HASJIT
1392 dasm_put(Dst, 7201); 1407 dasm_put(Dst, 7234);
1393#endif 1408#endif
1394 dasm_put(Dst, 7206, Dt1(->base), Dt1(->top)); 1409 dasm_put(Dst, 7239, Dt1(->base), Dt1(->top));
1395#if LJ_HASJIT 1410#if LJ_HASJIT
1396 dasm_put(Dst, 7237, 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 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);
1397#endif 1412#endif
1398 dasm_put(Dst, 7467); 1413 dasm_put(Dst, 7500);
1399#if LJ_HASJIT 1414#if LJ_HASJIT
1400 dasm_put(Dst, 7470, 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, 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);
1401 dasm_put(Dst, 7612); 1416 dasm_put(Dst, 7645);
1402#endif 1417#endif
1403 dasm_put(Dst, 7638); 1418 dasm_put(Dst, 7671);
1404 if (!sse) { 1419 if (!sse) {
1405 dasm_put(Dst, 7641); 1420 dasm_put(Dst, 7674);
1406 } 1421 }
1407 dasm_put(Dst, 7686, (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 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));
1408 if (!sse) { 1423 if (!sse) {
1409 dasm_put(Dst, 7772); 1424 dasm_put(Dst, 7805);
1410 } 1425 }
1411 dasm_put(Dst, 7817, (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 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));
1412 if (!sse) { 1427 if (!sse) {
1413 dasm_put(Dst, 7903); 1428 dasm_put(Dst, 7936);
1414 } 1429 }
1415 dasm_put(Dst, 7942, (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 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));
1416 if (sse) { 1431 if (sse) {
1417 dasm_put(Dst, 8031, (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 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));
1418 } else { 1433 } else {
1419 dasm_put(Dst, 8145); 1434 dasm_put(Dst, 8178);
1420 } 1435 }
1421 dasm_put(Dst, 8192); 1436 dasm_put(Dst, 8225);
1422 if (!sse) { 1437 if (!sse) {
1423 } else { 1438 } else {
1424 dasm_put(Dst, 8266); 1439 dasm_put(Dst, 8299);
1425 } 1440 }
1426 dasm_put(Dst, 8269); 1441 dasm_put(Dst, 8302);
1427 dasm_put(Dst, 8354, (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, 8387, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1428 dasm_put(Dst, 8455, (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, 8488, (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));
1429 dasm_put(Dst, 8623); 1444 dasm_put(Dst, 8656);
1430#if LJ_HASJIT 1445#if LJ_HASJIT
1431 if (sse) { 1446 if (sse) {
1432 dasm_put(Dst, 8664); 1447 dasm_put(Dst, 8697);
1433 dasm_put(Dst, 8734); 1448 dasm_put(Dst, 8767);
1434 dasm_put(Dst, 8807); 1449 dasm_put(Dst, 8840);
1435 } else { 1450 } else {
1436 dasm_put(Dst, 8857); 1451 dasm_put(Dst, 8890);
1437 dasm_put(Dst, 8949); 1452 dasm_put(Dst, 8982);
1438 } 1453 }
1439 dasm_put(Dst, 8995); 1454 dasm_put(Dst, 9028);
1440#endif 1455#endif
1441 dasm_put(Dst, 8999); 1456 dasm_put(Dst, 9032);
1442 if (sse) { 1457 if (sse) {
1443 dasm_put(Dst, 9002, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1458 dasm_put(Dst, 9035, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1444 dasm_put(Dst, 9091, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1459 dasm_put(Dst, 9124, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1445 } else { 1460 } else {
1446 dasm_put(Dst, 9215); 1461 dasm_put(Dst, 9248);
1447 dasm_put(Dst, 9298); 1462 dasm_put(Dst, 9331);
1448 if (cmov) { 1463 if (cmov) {
1449 dasm_put(Dst, 9353); 1464 dasm_put(Dst, 9386);
1450 } else { 1465 } else {
1451 dasm_put(Dst, 9372); 1466 dasm_put(Dst, 9405);
1452 } 1467 }
1453 dasm_put(Dst, 8995); 1468 dasm_put(Dst, 9028);
1454 } 1469 }
1455 dasm_put(Dst, 9413); 1470 dasm_put(Dst, 9446);
1456#if LJ_HASFFI 1471#if LJ_HASFFI
1457#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) 1472#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
1458 dasm_put(Dst, 9441, DtE(->spadj)); 1473 dasm_put(Dst, 9474, DtE(->spadj));
1459#if LJ_TARGET_WINDOWS 1474#if LJ_TARGET_WINDOWS
1460#endif 1475#endif
1461 dasm_put(Dst, 9456, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->fpr[0]), DtE(->fpr[1]), DtE(->fpr[2]), DtE(->fpr[3])); 1476 dasm_put(Dst, 9489, 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]));
1462 dasm_put(Dst, 9537, DtE(->func), DtE(->gpr[0]), DtE(->fpr[0])); 1477 dasm_put(Dst, 9570, DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]));
1463#if LJ_TARGET_WINDOWS 1478#if LJ_TARGET_WINDOWS
1464#endif 1479#endif
1465 dasm_put(Dst, 9550); 1480 dasm_put(Dst, 9583);
1466#endif 1481#endif
1467} 1482}
1468 1483
@@ -1470,7 +1485,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1470static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1485static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1471{ 1486{
1472 int vk = 0; 1487 int vk = 0;
1473 dasm_put(Dst, 1746, defop); 1488 dasm_put(Dst, 9591, defop);
1474 1489
1475 switch (op) { 1490 switch (op) {
1476 1491
@@ -1479,623 +1494,641 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1479 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1494 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1480 1495
1481 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1496 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1482 dasm_put(Dst, 9558, LJ_TISNUM, LJ_TISNUM); 1497 dasm_put(Dst, 9593, LJ_TISNUM, LJ_TISNUM);
1483 if (sse) { 1498 if (sse) {
1484 dasm_put(Dst, 9579); 1499 dasm_put(Dst, 9614);
1485 } else { 1500 } else {
1486 dasm_put(Dst, 9594); 1501 dasm_put(Dst, 9629);
1487 if (cmov) { 1502 if (cmov) {
1488 dasm_put(Dst, 9604); 1503 dasm_put(Dst, 9639);
1489 } else { 1504 } else {
1490 dasm_put(Dst, 9610); 1505 dasm_put(Dst, 9645);
1491 } 1506 }
1492 } 1507 }
1493 switch (op) { 1508 switch (op) {
1494 case BC_ISLT: 1509 case BC_ISLT:
1495 dasm_put(Dst, 9617); 1510 dasm_put(Dst, 9652);
1496 break; 1511 break;
1497 case BC_ISGE: 1512 case BC_ISGE:
1498 dasm_put(Dst, 9293); 1513 dasm_put(Dst, 9326);
1499 break; 1514 break;
1500 case BC_ISLE: 1515 case BC_ISLE:
1501 dasm_put(Dst, 5854); 1516 dasm_put(Dst, 5887);
1502 break; 1517 break;
1503 case BC_ISGT: 1518 case BC_ISGT:
1504 dasm_put(Dst, 9622); 1519 dasm_put(Dst, 9657);
1505 break; 1520 break;
1506 default: break; /* Shut up GCC. */ 1521 default: break; /* Shut up GCC. */
1507 } 1522 }
1508 dasm_put(Dst, 9627, -BCBIAS_J*4); 1523 dasm_put(Dst, 9662, -BCBIAS_J*4);
1509 break; 1524 break;
1510 1525
1511 case BC_ISEQV: case BC_ISNEV: 1526 case BC_ISEQV: case BC_ISNEV:
1512 vk = op == BC_ISEQV; 1527 vk = op == BC_ISEQV;
1513 dasm_put(Dst, 9661, LJ_TISNUM, LJ_TISNUM); 1528 dasm_put(Dst, 9696, LJ_TISNUM, LJ_TISNUM);
1514 if (sse) { 1529 if (sse) {
1515 dasm_put(Dst, 9687); 1530 dasm_put(Dst, 9722);
1516 } else { 1531 } else {
1517 dasm_put(Dst, 9699); 1532 dasm_put(Dst, 9734);
1518 if (cmov) { 1533 if (cmov) {
1519 dasm_put(Dst, 9604); 1534 dasm_put(Dst, 9639);
1520 } else { 1535 } else {
1521 dasm_put(Dst, 9610); 1536 dasm_put(Dst, 9645);
1522 } 1537 }
1523 } 1538 }
1524 iseqne_fp: 1539 iseqne_fp:
1525 if (vk) { 1540 if (vk) {
1526 dasm_put(Dst, 9706); 1541 dasm_put(Dst, 9741);
1527 } else { 1542 } else {
1528 dasm_put(Dst, 9715); 1543 dasm_put(Dst, 9750);
1529 } 1544 }
1530 iseqne_end: 1545 iseqne_end:
1531 if (vk) { 1546 if (vk) {
1532 dasm_put(Dst, 9724, -BCBIAS_J*4); 1547 dasm_put(Dst, 9759, -BCBIAS_J*4);
1548 if (!LJ_HASFFI) {
1549 dasm_put(Dst, 4476);
1550 }
1533 } else { 1551 } else {
1534 dasm_put(Dst, 9739, -BCBIAS_J*4); 1552 if (!LJ_HASFFI) {
1553 dasm_put(Dst, 4476);
1554 }
1555 dasm_put(Dst, 9774, -BCBIAS_J*4);
1535 } 1556 }
1536 dasm_put(Dst, 9641); 1557 dasm_put(Dst, 9676);
1537 if (op == BC_ISEQV || op == BC_ISNEV) { 1558 if (op == BC_ISEQV || op == BC_ISNEV) {
1538 dasm_put(Dst, 9754, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 1559 dasm_put(Dst, 9567);
1560 if (LJ_HASFFI) {
1561 dasm_put(Dst, 9789, LJ_TCDATA, LJ_TCDATA);
1562 }
1563 dasm_put(Dst, 9808, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1539 if (vk) { 1564 if (vk) {
1540 dasm_put(Dst, 9812); 1565 dasm_put(Dst, 9864);
1541 } else { 1566 } else {
1542 dasm_put(Dst, 9816); 1567 dasm_put(Dst, 9868);
1543 } 1568 }
1544 dasm_put(Dst, 9822); 1569 dasm_put(Dst, 9874);
1570 } else if (LJ_HASFFI) {
1571 dasm_put(Dst, 9879, LJ_TCDATA);
1545 } 1572 }
1546 break; 1573 break;
1547 case BC_ISEQS: case BC_ISNES: 1574 case BC_ISEQS: case BC_ISNES:
1548 vk = op == BC_ISEQS; 1575 vk = op == BC_ISEQS;
1549 dasm_put(Dst, 9827, LJ_TSTR); 1576 dasm_put(Dst, 9894, LJ_TSTR);
1550 iseqne_test: 1577 iseqne_test:
1551 if (vk) { 1578 if (vk) {
1552 dasm_put(Dst, 9710); 1579 dasm_put(Dst, 9745);
1553 } else { 1580 } else {
1554 dasm_put(Dst, 2772); 1581 dasm_put(Dst, 2805);
1555 } 1582 }
1556 goto iseqne_end; 1583 goto iseqne_end;
1557 case BC_ISEQN: case BC_ISNEN: 1584 case BC_ISEQN: case BC_ISNEN:
1558 vk = op == BC_ISEQN; 1585 vk = op == BC_ISEQN;
1559 dasm_put(Dst, 9851, LJ_TISNUM); 1586 dasm_put(Dst, 9920, LJ_TISNUM);
1560 if (sse) { 1587 if (sse) {
1561 dasm_put(Dst, 9865); 1588 dasm_put(Dst, 9936);
1562 } else { 1589 } else {
1563 dasm_put(Dst, 9877); 1590 dasm_put(Dst, 9948);
1564 if (cmov) { 1591 if (cmov) {
1565 dasm_put(Dst, 9604); 1592 dasm_put(Dst, 9639);
1566 } else { 1593 } else {
1567 dasm_put(Dst, 9610); 1594 dasm_put(Dst, 9645);
1568 } 1595 }
1569 } 1596 }
1570 goto iseqne_fp; 1597 goto iseqne_fp;
1571 case BC_ISEQP: case BC_ISNEP: 1598 case BC_ISEQP: case BC_ISNEP:
1572 vk = op == BC_ISEQP; 1599 vk = op == BC_ISEQP;
1573 dasm_put(Dst, 9884); 1600 dasm_put(Dst, 9955);
1574 goto iseqne_test; 1601 if (!LJ_HASFFI) goto iseqne_test;
1602 if (vk) {
1603 dasm_put(Dst, 9969, -BCBIAS_J*4, LJ_TCDATA);
1604 } else {
1605 dasm_put(Dst, 10019, LJ_TCDATA, -BCBIAS_J*4);
1606 }
1607 break;
1575 1608
1576 /* -- Unary test and copy ops ------------------------------------------- */ 1609 /* -- Unary test and copy ops ------------------------------------------- */
1577 1610
1578 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 1611 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1579 dasm_put(Dst, 9896, LJ_TISTRUECOND); 1612 dasm_put(Dst, 10063, LJ_TISTRUECOND);
1580 if (op == BC_IST || op == BC_ISTC) { 1613 if (op == BC_IST || op == BC_ISTC) {
1581 dasm_put(Dst, 9908); 1614 dasm_put(Dst, 10075);
1582 } else { 1615 } else {
1583 dasm_put(Dst, 9913); 1616 dasm_put(Dst, 10080);
1584 } 1617 }
1585 if (op == BC_ISTC || op == BC_ISFC) { 1618 if (op == BC_ISTC || op == BC_ISFC) {
1586 dasm_put(Dst, 9918); 1619 dasm_put(Dst, 10085);
1587 } 1620 }
1588 dasm_put(Dst, 9929, -BCBIAS_J*4); 1621 dasm_put(Dst, 10096, -BCBIAS_J*4);
1589 break; 1622 break;
1590 1623
1591 /* -- Unary ops --------------------------------------------------------- */ 1624 /* -- Unary ops --------------------------------------------------------- */
1592 1625
1593 case BC_MOV: 1626 case BC_MOV:
1594 dasm_put(Dst, 9961); 1627 dasm_put(Dst, 10128);
1595 break; 1628 break;
1596 case BC_NOT: 1629 case BC_NOT:
1597 dasm_put(Dst, 9989, LJ_TISTRUECOND, LJ_TTRUE); 1630 dasm_put(Dst, 10156, LJ_TISTRUECOND, LJ_TTRUE);
1598 break; 1631 break;
1599 case BC_UNM: 1632 case BC_UNM:
1600 dasm_put(Dst, 10025, LJ_TISNUM); 1633 dasm_put(Dst, 10192, LJ_TISNUM);
1601 if (sse) { 1634 if (sse) {
1602 dasm_put(Dst, 10036, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1635 dasm_put(Dst, 10203, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1603 } else { 1636 } else {
1604 dasm_put(Dst, 10061); 1637 dasm_put(Dst, 10228);
1605 } 1638 }
1606 dasm_put(Dst, 9641); 1639 dasm_put(Dst, 9676);
1607 break; 1640 break;
1608 case BC_LEN: 1641 case BC_LEN:
1609 dasm_put(Dst, 10070, LJ_TSTR); 1642 dasm_put(Dst, 10237, LJ_TSTR);
1610 if (sse) { 1643 if (sse) {
1611 dasm_put(Dst, 10084, Dt5(->len)); 1644 dasm_put(Dst, 10251, Dt5(->len));
1612 } else { 1645 } else {
1613 dasm_put(Dst, 10102, Dt5(->len)); 1646 dasm_put(Dst, 10269, Dt5(->len));
1614 } 1647 }
1615 dasm_put(Dst, 10111, LJ_TTAB); 1648 dasm_put(Dst, 10278, LJ_TTAB);
1616 if (sse) { 1649 if (sse) {
1617 dasm_put(Dst, 10152); 1650 dasm_put(Dst, 10319);
1618 } else { 1651 } else {
1619 } 1652 }
1620 dasm_put(Dst, 10161); 1653 dasm_put(Dst, 10328);
1621 break; 1654 break;
1622 1655
1623 /* -- Binary ops -------------------------------------------------------- */ 1656 /* -- Binary ops -------------------------------------------------------- */
1624 1657
1625 1658
1626 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 1659 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1627 dasm_put(Dst, 10171); 1660 dasm_put(Dst, 10338);
1628 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1661 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1629 switch (vk) { 1662 switch (vk) {
1630 case 0: 1663 case 0:
1631 dasm_put(Dst, 10179, LJ_TISNUM); 1664 dasm_put(Dst, 10346, LJ_TISNUM);
1632 if (sse) { 1665 if (sse) {
1633 dasm_put(Dst, 10191); 1666 dasm_put(Dst, 10358);
1634 } else { 1667 } else {
1635 dasm_put(Dst, 10205); 1668 dasm_put(Dst, 10372);
1636 } 1669 }
1637 break; 1670 break;
1638 case 1: 1671 case 1:
1639 dasm_put(Dst, 10213, LJ_TISNUM); 1672 dasm_put(Dst, 10380, LJ_TISNUM);
1640 if (sse) { 1673 if (sse) {
1641 dasm_put(Dst, 10225); 1674 dasm_put(Dst, 10392);
1642 } else { 1675 } else {
1643 dasm_put(Dst, 10239); 1676 dasm_put(Dst, 10406);
1644 } 1677 }
1645 break; 1678 break;
1646 default: 1679 default:
1647 dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM); 1680 dasm_put(Dst, 10414, LJ_TISNUM, LJ_TISNUM);
1648 if (sse) { 1681 if (sse) {
1649 dasm_put(Dst, 10269); 1682 dasm_put(Dst, 10436);
1650 } else { 1683 } else {
1651 dasm_put(Dst, 10283); 1684 dasm_put(Dst, 10450);
1652 } 1685 }
1653 break; 1686 break;
1654 } 1687 }
1655 if (sse) { 1688 if (sse) {
1656 dasm_put(Dst, 10054); 1689 dasm_put(Dst, 10221);
1657 } else { 1690 } else {
1658 dasm_put(Dst, 10066); 1691 dasm_put(Dst, 10233);
1659 } 1692 }
1660 dasm_put(Dst, 9641); 1693 dasm_put(Dst, 9676);
1661 break; 1694 break;
1662 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 1695 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1663 dasm_put(Dst, 10171); 1696 dasm_put(Dst, 10338);
1664 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1697 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1665 switch (vk) { 1698 switch (vk) {
1666 case 0: 1699 case 0:
1667 dasm_put(Dst, 10179, LJ_TISNUM); 1700 dasm_put(Dst, 10346, LJ_TISNUM);
1668 if (sse) { 1701 if (sse) {
1669 dasm_put(Dst, 10291); 1702 dasm_put(Dst, 10458);
1670 } else { 1703 } else {
1671 dasm_put(Dst, 10305); 1704 dasm_put(Dst, 10472);
1672 } 1705 }
1673 break; 1706 break;
1674 case 1: 1707 case 1:
1675 dasm_put(Dst, 10213, LJ_TISNUM); 1708 dasm_put(Dst, 10380, LJ_TISNUM);
1676 if (sse) { 1709 if (sse) {
1677 dasm_put(Dst, 10313); 1710 dasm_put(Dst, 10480);
1678 } else { 1711 } else {
1679 dasm_put(Dst, 10327); 1712 dasm_put(Dst, 10494);
1680 } 1713 }
1681 break; 1714 break;
1682 default: 1715 default:
1683 dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM); 1716 dasm_put(Dst, 10414, LJ_TISNUM, LJ_TISNUM);
1684 if (sse) { 1717 if (sse) {
1685 dasm_put(Dst, 10335); 1718 dasm_put(Dst, 10502);
1686 } else { 1719 } else {
1687 dasm_put(Dst, 10349); 1720 dasm_put(Dst, 10516);
1688 } 1721 }
1689 break; 1722 break;
1690 } 1723 }
1691 if (sse) { 1724 if (sse) {
1692 dasm_put(Dst, 10054); 1725 dasm_put(Dst, 10221);
1693 } else { 1726 } else {
1694 dasm_put(Dst, 10066); 1727 dasm_put(Dst, 10233);
1695 } 1728 }
1696 dasm_put(Dst, 9641); 1729 dasm_put(Dst, 9676);
1697 break; 1730 break;
1698 case BC_MULVN: case BC_MULNV: case BC_MULVV: 1731 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1699 dasm_put(Dst, 10171); 1732 dasm_put(Dst, 10338);
1700 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1733 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1701 switch (vk) { 1734 switch (vk) {
1702 case 0: 1735 case 0:
1703 dasm_put(Dst, 10179, LJ_TISNUM); 1736 dasm_put(Dst, 10346, LJ_TISNUM);
1704 if (sse) { 1737 if (sse) {
1705 dasm_put(Dst, 10357); 1738 dasm_put(Dst, 10524);
1706 } else { 1739 } else {
1707 dasm_put(Dst, 10371); 1740 dasm_put(Dst, 10538);
1708 } 1741 }
1709 break; 1742 break;
1710 case 1: 1743 case 1:
1711 dasm_put(Dst, 10213, LJ_TISNUM); 1744 dasm_put(Dst, 10380, LJ_TISNUM);
1712 if (sse) { 1745 if (sse) {
1713 dasm_put(Dst, 10379); 1746 dasm_put(Dst, 10546);
1714 } else { 1747 } else {
1715 dasm_put(Dst, 10393); 1748 dasm_put(Dst, 10560);
1716 } 1749 }
1717 break; 1750 break;
1718 default: 1751 default:
1719 dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM); 1752 dasm_put(Dst, 10414, LJ_TISNUM, LJ_TISNUM);
1720 if (sse) { 1753 if (sse) {
1721 dasm_put(Dst, 10401); 1754 dasm_put(Dst, 10568);
1722 } else { 1755 } else {
1723 dasm_put(Dst, 10415); 1756 dasm_put(Dst, 10582);
1724 } 1757 }
1725 break; 1758 break;
1726 } 1759 }
1727 if (sse) { 1760 if (sse) {
1728 dasm_put(Dst, 10054); 1761 dasm_put(Dst, 10221);
1729 } else { 1762 } else {
1730 dasm_put(Dst, 10066); 1763 dasm_put(Dst, 10233);
1731 } 1764 }
1732 dasm_put(Dst, 9641); 1765 dasm_put(Dst, 9676);
1733 break; 1766 break;
1734 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 1767 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1735 dasm_put(Dst, 10171); 1768 dasm_put(Dst, 10338);
1736 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1769 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1737 switch (vk) { 1770 switch (vk) {
1738 case 0: 1771 case 0:
1739 dasm_put(Dst, 10179, LJ_TISNUM); 1772 dasm_put(Dst, 10346, LJ_TISNUM);
1740 if (sse) { 1773 if (sse) {
1741 dasm_put(Dst, 10423); 1774 dasm_put(Dst, 10590);
1742 } else { 1775 } else {
1743 dasm_put(Dst, 10437); 1776 dasm_put(Dst, 10604);
1744 } 1777 }
1745 break; 1778 break;
1746 case 1: 1779 case 1:
1747 dasm_put(Dst, 10213, LJ_TISNUM); 1780 dasm_put(Dst, 10380, LJ_TISNUM);
1748 if (sse) { 1781 if (sse) {
1749 dasm_put(Dst, 10445); 1782 dasm_put(Dst, 10612);
1750 } else { 1783 } else {
1751 dasm_put(Dst, 10459); 1784 dasm_put(Dst, 10626);
1752 } 1785 }
1753 break; 1786 break;
1754 default: 1787 default:
1755 dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM); 1788 dasm_put(Dst, 10414, LJ_TISNUM, LJ_TISNUM);
1756 if (sse) { 1789 if (sse) {
1757 dasm_put(Dst, 10467); 1790 dasm_put(Dst, 10634);
1758 } else { 1791 } else {
1759 dasm_put(Dst, 10481); 1792 dasm_put(Dst, 10648);
1760 } 1793 }
1761 break; 1794 break;
1762 } 1795 }
1763 if (sse) { 1796 if (sse) {
1764 dasm_put(Dst, 10054); 1797 dasm_put(Dst, 10221);
1765 } else { 1798 } else {
1766 dasm_put(Dst, 10066); 1799 dasm_put(Dst, 10233);
1767 } 1800 }
1768 dasm_put(Dst, 9641); 1801 dasm_put(Dst, 9676);
1769 break; 1802 break;
1770 case BC_MODVN: 1803 case BC_MODVN:
1771 dasm_put(Dst, 10171); 1804 dasm_put(Dst, 10338);
1772 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1805 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1773 switch (vk) { 1806 switch (vk) {
1774 case 0: 1807 case 0:
1775 dasm_put(Dst, 10179, LJ_TISNUM); 1808 dasm_put(Dst, 10346, LJ_TISNUM);
1776 if (sse) { 1809 if (sse) {
1777 dasm_put(Dst, 10489); 1810 dasm_put(Dst, 10656);
1778 } else { 1811 } else {
1779 dasm_put(Dst, 10503); 1812 dasm_put(Dst, 10670);
1780 } 1813 }
1781 break; 1814 break;
1782 case 1: 1815 case 1:
1783 dasm_put(Dst, 10213, LJ_TISNUM); 1816 dasm_put(Dst, 10380, LJ_TISNUM);
1784 if (sse) { 1817 if (sse) {
1785 dasm_put(Dst, 10511); 1818 dasm_put(Dst, 10678);
1786 } else { 1819 } else {
1787 dasm_put(Dst, 10525); 1820 dasm_put(Dst, 10692);
1788 } 1821 }
1789 break; 1822 break;
1790 default: 1823 default:
1791 dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM); 1824 dasm_put(Dst, 10414, LJ_TISNUM, LJ_TISNUM);
1792 if (sse) { 1825 if (sse) {
1793 dasm_put(Dst, 10533); 1826 dasm_put(Dst, 10700);
1794 } else { 1827 } else {
1795 dasm_put(Dst, 10547); 1828 dasm_put(Dst, 10714);
1796 } 1829 }
1797 break; 1830 break;
1798 } 1831 }
1799 dasm_put(Dst, 10555); 1832 dasm_put(Dst, 10722);
1800 if (sse) { 1833 if (sse) {
1801 dasm_put(Dst, 10054); 1834 dasm_put(Dst, 10221);
1802 } else { 1835 } else {
1803 dasm_put(Dst, 10066); 1836 dasm_put(Dst, 10233);
1804 } 1837 }
1805 dasm_put(Dst, 9641); 1838 dasm_put(Dst, 9676);
1806 break; 1839 break;
1807 case BC_MODNV: case BC_MODVV: 1840 case BC_MODNV: case BC_MODVV:
1808 dasm_put(Dst, 10171); 1841 dasm_put(Dst, 10338);
1809 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1842 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1810 switch (vk) { 1843 switch (vk) {
1811 case 0: 1844 case 0:
1812 dasm_put(Dst, 10179, LJ_TISNUM); 1845 dasm_put(Dst, 10346, LJ_TISNUM);
1813 if (sse) { 1846 if (sse) {
1814 dasm_put(Dst, 10489); 1847 dasm_put(Dst, 10656);
1815 } else { 1848 } else {
1816 dasm_put(Dst, 10503); 1849 dasm_put(Dst, 10670);
1817 } 1850 }
1818 break; 1851 break;
1819 case 1: 1852 case 1:
1820 dasm_put(Dst, 10213, LJ_TISNUM); 1853 dasm_put(Dst, 10380, LJ_TISNUM);
1821 if (sse) { 1854 if (sse) {
1822 dasm_put(Dst, 10511); 1855 dasm_put(Dst, 10678);
1823 } else { 1856 } else {
1824 dasm_put(Dst, 10525); 1857 dasm_put(Dst, 10692);
1825 } 1858 }
1826 break; 1859 break;
1827 default: 1860 default:
1828 dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM); 1861 dasm_put(Dst, 10414, LJ_TISNUM, LJ_TISNUM);
1829 if (sse) { 1862 if (sse) {
1830 dasm_put(Dst, 10533); 1863 dasm_put(Dst, 10700);
1831 } else { 1864 } else {
1832 dasm_put(Dst, 10547); 1865 dasm_put(Dst, 10714);
1833 } 1866 }
1834 break; 1867 break;
1835 } 1868 }
1836 dasm_put(Dst, 10561); 1869 dasm_put(Dst, 10728);
1837 break; 1870 break;
1838 case BC_POW: 1871 case BC_POW:
1839 dasm_put(Dst, 10171); 1872 dasm_put(Dst, 10338);
1840 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1873 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1841 switch (vk) { 1874 switch (vk) {
1842 case 0: 1875 case 0:
1843 dasm_put(Dst, 10179, LJ_TISNUM); 1876 dasm_put(Dst, 10346, LJ_TISNUM);
1844 if (sse) { 1877 if (sse) {
1845 dasm_put(Dst, 10489); 1878 dasm_put(Dst, 10656);
1846 } else { 1879 } else {
1847 dasm_put(Dst, 10503); 1880 dasm_put(Dst, 10670);
1848 } 1881 }
1849 break; 1882 break;
1850 case 1: 1883 case 1:
1851 dasm_put(Dst, 10213, LJ_TISNUM); 1884 dasm_put(Dst, 10380, LJ_TISNUM);
1852 if (sse) { 1885 if (sse) {
1853 dasm_put(Dst, 10511); 1886 dasm_put(Dst, 10678);
1854 } else { 1887 } else {
1855 dasm_put(Dst, 10525); 1888 dasm_put(Dst, 10692);
1856 } 1889 }
1857 break; 1890 break;
1858 default: 1891 default:
1859 dasm_put(Dst, 10247, LJ_TISNUM, LJ_TISNUM); 1892 dasm_put(Dst, 10414, LJ_TISNUM, LJ_TISNUM);
1860 if (sse) { 1893 if (sse) {
1861 dasm_put(Dst, 10533); 1894 dasm_put(Dst, 10700);
1862 } else { 1895 } else {
1863 dasm_put(Dst, 10547); 1896 dasm_put(Dst, 10714);
1864 } 1897 }
1865 break; 1898 break;
1866 } 1899 }
1867 dasm_put(Dst, 10566); 1900 dasm_put(Dst, 10733);
1868 if (sse) { 1901 if (sse) {
1869 dasm_put(Dst, 10054); 1902 dasm_put(Dst, 10221);
1870 } else { 1903 } else {
1871 dasm_put(Dst, 10066); 1904 dasm_put(Dst, 10233);
1872 } 1905 }
1873 dasm_put(Dst, 9641); 1906 dasm_put(Dst, 9676);
1874 break; 1907 break;
1875 1908
1876 case BC_CAT: 1909 case BC_CAT:
1877 dasm_put(Dst, 10570, Dt1(->base), Dt1(->base)); 1910 dasm_put(Dst, 10737, Dt1(->base), Dt1(->base));
1878 break; 1911 break;
1879 1912
1880 /* -- Constant ops ------------------------------------------------------ */ 1913 /* -- Constant ops ------------------------------------------------------ */
1881 1914
1882 case BC_KSTR: 1915 case BC_KSTR:
1883 dasm_put(Dst, 10653, LJ_TSTR); 1916 dasm_put(Dst, 10820, LJ_TSTR);
1884 break; 1917 break;
1885 case BC_KCDATA: 1918 case BC_KCDATA:
1886#if LJ_HASFFI 1919#if LJ_HASFFI
1887 dasm_put(Dst, 10653, LJ_TCDATA); 1920 dasm_put(Dst, 10820, LJ_TCDATA);
1888#endif 1921#endif
1889 break; 1922 break;
1890 case BC_KSHORT: 1923 case BC_KSHORT:
1891 if (sse) { 1924 if (sse) {
1892 dasm_put(Dst, 10688); 1925 dasm_put(Dst, 10855);
1893 } else { 1926 } else {
1894 dasm_put(Dst, 10703); 1927 dasm_put(Dst, 10870);
1895 } 1928 }
1896 dasm_put(Dst, 9641); 1929 dasm_put(Dst, 9676);
1897 break; 1930 break;
1898 case BC_KNUM: 1931 case BC_KNUM:
1899 if (sse) { 1932 if (sse) {
1900 dasm_put(Dst, 10711); 1933 dasm_put(Dst, 10878);
1901 } else { 1934 } else {
1902 dasm_put(Dst, 10724); 1935 dasm_put(Dst, 10891);
1903 } 1936 }
1904 dasm_put(Dst, 9641); 1937 dasm_put(Dst, 9676);
1905 break; 1938 break;
1906 case BC_KPRI: 1939 case BC_KPRI:
1907 dasm_put(Dst, 10731); 1940 dasm_put(Dst, 10898);
1908 break; 1941 break;
1909 case BC_KNIL: 1942 case BC_KNIL:
1910 dasm_put(Dst, 10759, LJ_TNIL); 1943 dasm_put(Dst, 10926, LJ_TNIL);
1911 break; 1944 break;
1912 1945
1913 /* -- Upvalue and function ops ------------------------------------------ */ 1946 /* -- Upvalue and function ops ------------------------------------------ */
1914 1947
1915 case BC_UGET: 1948 case BC_UGET:
1916 dasm_put(Dst, 10806, offsetof(GCfuncL, uvptr), DtA(->v)); 1949 dasm_put(Dst, 10973, offsetof(GCfuncL, uvptr), DtA(->v));
1917 break; 1950 break;
1918 case BC_USETV: 1951 case BC_USETV:
1919#define TV2MARKOFS \ 1952#define TV2MARKOFS \
1920 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 1953 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
1921 dasm_put(Dst, 10846, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 1954 dasm_put(Dst, 11013, 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);
1922 dasm_put(Dst, 10937); 1955 dasm_put(Dst, 11104);
1923 break; 1956 break;
1924#undef TV2MARKOFS 1957#undef TV2MARKOFS
1925 case BC_USETS: 1958 case BC_USETS:
1926 dasm_put(Dst, 10949, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 1959 dasm_put(Dst, 11116, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
1927 break; 1960 break;
1928 case BC_USETN: 1961 case BC_USETN:
1929 dasm_put(Dst, 11042); 1962 dasm_put(Dst, 11209);
1930 if (sse) { 1963 if (sse) {
1931 dasm_put(Dst, 11047); 1964 dasm_put(Dst, 11214);
1932 } else { 1965 } else {
1933 dasm_put(Dst, 9880); 1966 dasm_put(Dst, 9951);
1934 } 1967 }
1935 dasm_put(Dst, 11054, offsetof(GCfuncL, uvptr), DtA(->v)); 1968 dasm_put(Dst, 11221, offsetof(GCfuncL, uvptr), DtA(->v));
1936 if (sse) { 1969 if (sse) {
1937 dasm_put(Dst, 11063); 1970 dasm_put(Dst, 11230);
1938 } else { 1971 } else {
1939 dasm_put(Dst, 11069); 1972 dasm_put(Dst, 11236);
1940 } 1973 }
1941 dasm_put(Dst, 9641); 1974 dasm_put(Dst, 9676);
1942 break; 1975 break;
1943 case BC_USETP: 1976 case BC_USETP:
1944 dasm_put(Dst, 11072, offsetof(GCfuncL, uvptr), DtA(->v)); 1977 dasm_put(Dst, 11239, offsetof(GCfuncL, uvptr), DtA(->v));
1945 break; 1978 break;
1946 case BC_UCLO: 1979 case BC_UCLO:
1947 dasm_put(Dst, 11111, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 1980 dasm_put(Dst, 11278, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
1948 break; 1981 break;
1949 1982
1950 case BC_FNEW: 1983 case BC_FNEW:
1951 dasm_put(Dst, 11166, Dt1(->base), Dt1(->base), LJ_TFUNC); 1984 dasm_put(Dst, 11333, Dt1(->base), Dt1(->base), LJ_TFUNC);
1952 break; 1985 break;
1953 1986
1954 /* -- Table ops --------------------------------------------------------- */ 1987 /* -- Table ops --------------------------------------------------------- */
1955 1988
1956 case BC_TNEW: 1989 case BC_TNEW:
1957 dasm_put(Dst, 11232, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 1990 dasm_put(Dst, 11399, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
1958 break; 1991 break;
1959 case BC_TDUP: 1992 case BC_TDUP:
1960 dasm_put(Dst, 11354, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 1993 dasm_put(Dst, 11521, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
1961 break; 1994 break;
1962 1995
1963 case BC_GGET: 1996 case BC_GGET:
1964 dasm_put(Dst, 11449, Dt7(->env)); 1997 dasm_put(Dst, 11616, Dt7(->env));
1965 break; 1998 break;
1966 case BC_GSET: 1999 case BC_GSET:
1967 dasm_put(Dst, 11468, Dt7(->env)); 2000 dasm_put(Dst, 11635, Dt7(->env));
1968 break; 2001 break;
1969 2002
1970 case BC_TGETV: 2003 case BC_TGETV:
1971 dasm_put(Dst, 11487, LJ_TTAB, LJ_TISNUM); 2004 dasm_put(Dst, 11654, LJ_TTAB, LJ_TISNUM);
1972 if (sse) { 2005 if (sse) {
1973 dasm_put(Dst, 11520); 2006 dasm_put(Dst, 11687);
1974 } else { 2007 } else {
1975 } 2008 }
1976 dasm_put(Dst, 11541, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2009 dasm_put(Dst, 11708, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1977 dasm_put(Dst, 11625, LJ_TNIL, LJ_TSTR); 2010 dasm_put(Dst, 11792, LJ_TNIL, LJ_TSTR);
1978 break; 2011 break;
1979 case BC_TGETS: 2012 case BC_TGETS:
1980 dasm_put(Dst, 11654, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2013 dasm_put(Dst, 11821, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1981 dasm_put(Dst, 11738, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2014 dasm_put(Dst, 11905, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1982 break; 2015 break;
1983 case BC_TGETB: 2016 case BC_TGETB:
1984 dasm_put(Dst, 11809, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2017 dasm_put(Dst, 11976, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1985 dasm_put(Dst, 11904, LJ_TNIL); 2018 dasm_put(Dst, 12071, LJ_TNIL);
1986 break; 2019 break;
1987 2020
1988 case BC_TSETV: 2021 case BC_TSETV:
1989 dasm_put(Dst, 11921, LJ_TTAB, LJ_TISNUM); 2022 dasm_put(Dst, 12088, LJ_TTAB, LJ_TISNUM);
1990 if (sse) { 2023 if (sse) {
1991 dasm_put(Dst, 11520); 2024 dasm_put(Dst, 11687);
1992 } else { 2025 } else {
1993 } 2026 }
1994 dasm_put(Dst, 11954, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 2027 dasm_put(Dst, 12121, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
1995 dasm_put(Dst, 12033, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2028 dasm_put(Dst, 12200, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1996 break; 2029 break;
1997 case BC_TSETS: 2030 case BC_TSETS:
1998 dasm_put(Dst, 12095, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2031 dasm_put(Dst, 12262, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1999 dasm_put(Dst, 12171, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 2032 dasm_put(Dst, 12338, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
2000 dasm_put(Dst, 12259, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2033 dasm_put(Dst, 12426, 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));
2001 break; 2034 break;
2002 case BC_TSETB: 2035 case BC_TSETB:
2003 dasm_put(Dst, 12350, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 2036 dasm_put(Dst, 12517, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
2004 dasm_put(Dst, 12444, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2037 dasm_put(Dst, 12611, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2005 break; 2038 break;
2006 2039
2007 case BC_TSETM: 2040 case BC_TSETM:
2008 dasm_put(Dst, 12490, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); 2041 dasm_put(Dst, 12657, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
2009 dasm_put(Dst, 12633, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2042 dasm_put(Dst, 12800, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2010 break; 2043 break;
2011 2044
2012 /* -- Calls and vararg handling ----------------------------------------- */ 2045 /* -- Calls and vararg handling ----------------------------------------- */
2013 2046
2014 case BC_CALL: case BC_CALLM: 2047 case BC_CALL: case BC_CALLM:
2015 dasm_put(Dst, 10175); 2048 dasm_put(Dst, 10342);
2016 if (op == BC_CALLM) { 2049 if (op == BC_CALLM) {
2017 dasm_put(Dst, 12651); 2050 dasm_put(Dst, 12818);
2018 } 2051 }
2019 dasm_put(Dst, 12656, LJ_TFUNC, Dt7(->pc)); 2052 dasm_put(Dst, 12823, LJ_TFUNC, Dt7(->pc));
2020 break; 2053 break;
2021 2054
2022 case BC_CALLMT: 2055 case BC_CALLMT:
2023 dasm_put(Dst, 12651); 2056 dasm_put(Dst, 12818);
2024 break; 2057 break;
2025 case BC_CALLT: 2058 case BC_CALLT:
2026 dasm_put(Dst, 12698, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); 2059 dasm_put(Dst, 12865, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
2027 dasm_put(Dst, 12813, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); 2060 dasm_put(Dst, 12980, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
2028 break; 2061 break;
2029 2062
2030 case BC_ITERC: 2063 case BC_ITERC:
2031 dasm_put(Dst, 12884, LJ_TFUNC, 2+1, Dt7(->pc)); 2064 dasm_put(Dst, 13051, LJ_TFUNC, 2+1, Dt7(->pc));
2032 break; 2065 break;
2033 2066
2034 case BC_ITERN: 2067 case BC_ITERN:
2035#if LJ_HASJIT 2068#if LJ_HASJIT
2036#endif 2069#endif
2037 dasm_put(Dst, 12955, Dt6(->asize), Dt6(->array), LJ_TNIL); 2070 dasm_put(Dst, 13122, Dt6(->asize), Dt6(->array), LJ_TNIL);
2038 if (sse) { 2071 if (sse) {
2039 dasm_put(Dst, 13001); 2072 dasm_put(Dst, 13168);
2040 } else { 2073 } else {
2041 dasm_put(Dst, 13007); 2074 dasm_put(Dst, 13174);
2042 } 2075 }
2043 dasm_put(Dst, 13013); 2076 dasm_put(Dst, 13180);
2044 if (sse) { 2077 if (sse) {
2045 dasm_put(Dst, 10054); 2078 dasm_put(Dst, 10221);
2046 } else { 2079 } else {
2047 dasm_put(Dst, 10066); 2080 dasm_put(Dst, 10233);
2048 } 2081 }
2049 dasm_put(Dst, 13026, -BCBIAS_J*4); 2082 dasm_put(Dst, 13193, -BCBIAS_J*4);
2050 if (!sse) { 2083 if (!sse) {
2051 dasm_put(Dst, 13078); 2084 dasm_put(Dst, 13245);
2052 } 2085 }
2053 dasm_put(Dst, 13084, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val)); 2086 dasm_put(Dst, 13251, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
2054 break; 2087 break;
2055 2088
2056 case BC_ISNEXT: 2089 case BC_ISNEXT:
2057 dasm_put(Dst, 13156, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); 2090 dasm_put(Dst, 13323, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
2058 break; 2091 break;
2059 2092
2060 case BC_VARG: 2093 case BC_VARG:
2061 dasm_put(Dst, 13256, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); 2094 dasm_put(Dst, 13423, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
2062 dasm_put(Dst, 13416, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 2095 dasm_put(Dst, 13583, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
2063 break; 2096 break;
2064 2097
2065 /* -- Returns ----------------------------------------------------------- */ 2098 /* -- Returns ----------------------------------------------------------- */
2066 2099
2067 case BC_RETM: 2100 case BC_RETM:
2068 dasm_put(Dst, 12651); 2101 dasm_put(Dst, 12818);
2069 break; 2102 break;
2070 2103
2071 case BC_RET: case BC_RET0: case BC_RET1: 2104 case BC_RET: case BC_RET0: case BC_RET1:
2072 if (op != BC_RET0) { 2105 if (op != BC_RET0) {
2073 dasm_put(Dst, 13482); 2106 dasm_put(Dst, 13649);
2074 } 2107 }
2075 dasm_put(Dst, 13486, FRAME_TYPE); 2108 dasm_put(Dst, 13653, FRAME_TYPE);
2076 switch (op) { 2109 switch (op) {
2077 case BC_RET: 2110 case BC_RET:
2078 dasm_put(Dst, 13505); 2111 dasm_put(Dst, 13672);
2079 break; 2112 break;
2080 case BC_RET1: 2113 case BC_RET1:
2081 dasm_put(Dst, 13557); 2114 dasm_put(Dst, 13724);
2082 /* fallthrough */ 2115 /* fallthrough */
2083 case BC_RET0: 2116 case BC_RET0:
2084 dasm_put(Dst, 13567); 2117 dasm_put(Dst, 13734);
2085 default: 2118 default:
2086 break; 2119 break;
2087 } 2120 }
2088 dasm_put(Dst, 13578, Dt7(->pc), PC2PROTO(k)); 2121 dasm_put(Dst, 13745, Dt7(->pc), PC2PROTO(k));
2089 if (op == BC_RET) { 2122 if (op == BC_RET) {
2090 dasm_put(Dst, 13622, LJ_TNIL); 2123 dasm_put(Dst, 13789, LJ_TNIL);
2091 } else { 2124 } else {
2092 dasm_put(Dst, 13631, LJ_TNIL); 2125 dasm_put(Dst, 13798, LJ_TNIL);
2093 } 2126 }
2094 dasm_put(Dst, 13638, -FRAME_VARG, FRAME_TYPEP); 2127 dasm_put(Dst, 13805, -FRAME_VARG, FRAME_TYPEP);
2095 if (op != BC_RET0) { 2128 if (op != BC_RET0) {
2096 dasm_put(Dst, 13662); 2129 dasm_put(Dst, 13829);
2097 } 2130 }
2098 dasm_put(Dst, 4522); 2131 dasm_put(Dst, 4555);
2099 break; 2132 break;
2100 2133
2101 /* -- Loops and branches ------------------------------------------------ */ 2134 /* -- Loops and branches ------------------------------------------------ */
@@ -2103,7 +2136,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2103 2136
2104 case BC_FORL: 2137 case BC_FORL:
2105#if LJ_HASJIT 2138#if LJ_HASJIT
2106 dasm_put(Dst, 13666, HOTCOUNT_PCMASK, GG_DISP2HOT); 2139 dasm_put(Dst, 13833, HOTCOUNT_PCMASK, GG_DISP2HOT);
2107#endif 2140#endif
2108 break; 2141 break;
2109 2142
@@ -2115,57 +2148,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2115 case BC_FORI: 2148 case BC_FORI:
2116 case BC_IFORL: 2149 case BC_IFORL:
2117 vk = (op == BC_IFORL || op == BC_JFORL); 2150 vk = (op == BC_IFORL || op == BC_JFORL);
2118 dasm_put(Dst, 13687); 2151 dasm_put(Dst, 13854);
2119 if (!vk) { 2152 if (!vk) {
2120 dasm_put(Dst, 13691, LJ_TISNUM, LJ_TISNUM); 2153 dasm_put(Dst, 13858, LJ_TISNUM, LJ_TISNUM);
2121 } 2154 }
2122 dasm_put(Dst, 13710); 2155 dasm_put(Dst, 13877);
2123 if (!vk) { 2156 if (!vk) {
2124 dasm_put(Dst, 13714, LJ_TISNUM); 2157 dasm_put(Dst, 13881, LJ_TISNUM);
2125 } 2158 }
2126 if (sse) { 2159 if (sse) {
2127 dasm_put(Dst, 13723); 2160 dasm_put(Dst, 13890);
2128 if (vk) { 2161 if (vk) {
2129 dasm_put(Dst, 13735); 2162 dasm_put(Dst, 13902);
2130 } else { 2163 } else {
2131 dasm_put(Dst, 13754); 2164 dasm_put(Dst, 13921);
2132 } 2165 }
2133 dasm_put(Dst, 13759); 2166 dasm_put(Dst, 13926);
2134 } else { 2167 } else {
2135 dasm_put(Dst, 13772); 2168 dasm_put(Dst, 13939);
2136 if (vk) { 2169 if (vk) {
2137 dasm_put(Dst, 13778); 2170 dasm_put(Dst, 13945);
2138 } else { 2171 } else {
2139 dasm_put(Dst, 13794); 2172 dasm_put(Dst, 13961);
2140 } 2173 }
2141 dasm_put(Dst, 13802); 2174 dasm_put(Dst, 13969);
2142 if (cmov) { 2175 if (cmov) {
2143 dasm_put(Dst, 9604); 2176 dasm_put(Dst, 9639);
2144 } else { 2177 } else {
2145 dasm_put(Dst, 9610); 2178 dasm_put(Dst, 9645);
2146 } 2179 }
2147 if (!cmov) { 2180 if (!cmov) {
2148 dasm_put(Dst, 13807); 2181 dasm_put(Dst, 13974);
2149 } 2182 }
2150 } 2183 }
2151 if (op == BC_FORI) { 2184 if (op == BC_FORI) {
2152 dasm_put(Dst, 13813, -BCBIAS_J*4); 2185 dasm_put(Dst, 13980, -BCBIAS_J*4);
2153 } else if (op == BC_JFORI) { 2186 } else if (op == BC_JFORI) {
2154 dasm_put(Dst, 13823, -BCBIAS_J*4, BC_JLOOP); 2187 dasm_put(Dst, 13990, -BCBIAS_J*4, BC_JLOOP);
2155 } else if (op == BC_IFORL) { 2188 } else if (op == BC_IFORL) {
2156 dasm_put(Dst, 13837, -BCBIAS_J*4); 2189 dasm_put(Dst, 14004, -BCBIAS_J*4);
2157 } else { 2190 } else {
2158 dasm_put(Dst, 13833, BC_JLOOP); 2191 dasm_put(Dst, 14000, BC_JLOOP);
2159 } 2192 }
2160 dasm_put(Dst, 9639); 2193 dasm_put(Dst, 9674);
2161 if (sse) { 2194 if (sse) {
2162 dasm_put(Dst, 13847); 2195 dasm_put(Dst, 14014);
2163 } 2196 }
2164 break; 2197 break;
2165 2198
2166 case BC_ITERL: 2199 case BC_ITERL:
2167#if LJ_HASJIT 2200#if LJ_HASJIT
2168 dasm_put(Dst, 13666, HOTCOUNT_PCMASK, GG_DISP2HOT); 2201 dasm_put(Dst, 13833, HOTCOUNT_PCMASK, GG_DISP2HOT);
2169#endif 2202#endif
2170 break; 2203 break;
2171 2204
@@ -2174,33 +2207,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2174 break; 2207 break;
2175#endif 2208#endif
2176 case BC_IITERL: 2209 case BC_IITERL:
2177 dasm_put(Dst, 13858, LJ_TNIL); 2210 dasm_put(Dst, 14025, LJ_TNIL);
2178 if (op == BC_JITERL) { 2211 if (op == BC_JITERL) {
2179 dasm_put(Dst, 13873, BC_JLOOP); 2212 dasm_put(Dst, 14040, BC_JLOOP);
2180 } else { 2213 } else {
2181 dasm_put(Dst, 13887, -BCBIAS_J*4); 2214 dasm_put(Dst, 14054, -BCBIAS_J*4);
2182 } 2215 }
2183 dasm_put(Dst, 9939); 2216 dasm_put(Dst, 10106);
2184 break; 2217 break;
2185 2218
2186 case BC_LOOP: 2219 case BC_LOOP:
2187#if LJ_HASJIT 2220#if LJ_HASJIT
2188 dasm_put(Dst, 13666, HOTCOUNT_PCMASK, GG_DISP2HOT); 2221 dasm_put(Dst, 13833, HOTCOUNT_PCMASK, GG_DISP2HOT);
2189#endif 2222#endif
2190 break; 2223 break;
2191 2224
2192 case BC_ILOOP: 2225 case BC_ILOOP:
2193 dasm_put(Dst, 9641); 2226 dasm_put(Dst, 9676);
2194 break; 2227 break;
2195 2228
2196 case BC_JLOOP: 2229 case BC_JLOOP:
2197#if LJ_HASJIT 2230#if LJ_HASJIT
2198 dasm_put(Dst, 13903, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), 9*16+4*8, -1*16, -2*16, -3*16, -4*16, -5*16, -6*16, -7*16, -8*16, -9*16); 2231 dasm_put(Dst, 14070, 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);
2199#endif 2232#endif
2200 break; 2233 break;
2201 2234
2202 case BC_JMP: 2235 case BC_JMP:
2203 dasm_put(Dst, 14012, -BCBIAS_J*4); 2236 dasm_put(Dst, 14179, -BCBIAS_J*4);
2204 break; 2237 break;
2205 2238
2206 /* -- Function headers -------------------------------------------------- */ 2239 /* -- Function headers -------------------------------------------------- */
@@ -2214,7 +2247,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2214 2247
2215 case BC_FUNCF: 2248 case BC_FUNCF:
2216#if LJ_HASJIT 2249#if LJ_HASJIT
2217 dasm_put(Dst, 14037, HOTCOUNT_PCMASK, GG_DISP2HOT); 2250 dasm_put(Dst, 14204, HOTCOUNT_PCMASK, GG_DISP2HOT);
2218#endif 2251#endif
2219 case BC_FUNCV: /* NYI: compiled vararg functions. */ 2252 case BC_FUNCV: /* NYI: compiled vararg functions. */
2220 break; 2253 break;
@@ -2224,47 +2257,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2224 break; 2257 break;
2225#endif 2258#endif
2226 case BC_IFUNCF: 2259 case BC_IFUNCF:
2227 dasm_put(Dst, 14058, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); 2260 dasm_put(Dst, 14225, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2228 if (op == BC_JFUNCF) { 2261 if (op == BC_JFUNCF) {
2229 dasm_put(Dst, 14088, BC_JLOOP); 2262 dasm_put(Dst, 14255, BC_JLOOP);
2230 } else { 2263 } else {
2231 dasm_put(Dst, 9641); 2264 dasm_put(Dst, 9676);
2232 } 2265 }
2233 dasm_put(Dst, 14097, LJ_TNIL); 2266 dasm_put(Dst, 14264, LJ_TNIL);
2234 break; 2267 break;
2235 2268
2236 case BC_JFUNCV: 2269 case BC_JFUNCV:
2237#if !LJ_HASJIT 2270#if !LJ_HASJIT
2238 break; 2271 break;
2239#endif 2272#endif
2240 dasm_put(Dst, 8997); 2273 dasm_put(Dst, 9030);
2241 break; /* NYI: compiled vararg functions. */ 2274 break; /* NYI: compiled vararg functions. */
2242 2275
2243 case BC_IFUNCV: 2276 case BC_IFUNCV:
2244 dasm_put(Dst, 14119, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); 2277 dasm_put(Dst, 14286, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2245 if (op == BC_JFUNCV) { 2278 if (op == BC_JFUNCV) {
2246 dasm_put(Dst, 14088, BC_JLOOP); 2279 dasm_put(Dst, 14255, BC_JLOOP);
2247 } else { 2280 } else {
2248 dasm_put(Dst, 14210, -4+PC2PROTO(k)); 2281 dasm_put(Dst, 14377, -4+PC2PROTO(k));
2249 } 2282 }
2250 dasm_put(Dst, 14233, LJ_TNIL); 2283 dasm_put(Dst, 14400, LJ_TNIL);
2251 break; 2284 break;
2252 2285
2253 case BC_FUNCC: 2286 case BC_FUNCC:
2254 case BC_FUNCCW: 2287 case BC_FUNCCW:
2255 dasm_put(Dst, 14255, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); 2288 dasm_put(Dst, 14422, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2256 if (op == BC_FUNCC) { 2289 if (op == BC_FUNCC) {
2257 dasm_put(Dst, 14285); 2290 dasm_put(Dst, 14452);
2258 } else { 2291 } else {
2259 dasm_put(Dst, 14289); 2292 dasm_put(Dst, 14456);
2260 } 2293 }
2261 dasm_put(Dst, 14297, DISPATCH_GL(vmstate), ~LJ_VMST_C); 2294 dasm_put(Dst, 14464, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2262 if (op == BC_FUNCC) { 2295 if (op == BC_FUNCC) {
2263 dasm_put(Dst, 14306); 2296 dasm_put(Dst, 14473);
2264 } else { 2297 } else {
2265 dasm_put(Dst, 14310, DISPATCH_GL(wrapf)); 2298 dasm_put(Dst, 14477, DISPATCH_GL(wrapf));
2266 } 2299 }
2267 dasm_put(Dst, 14315, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 2300 dasm_put(Dst, 14482, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2268 break; 2301 break;
2269 2302
2270 /* ---------------------------------------------------------------------- */ 2303 /* ---------------------------------------------------------------------- */
@@ -2292,7 +2325,7 @@ static int build_backend(BuildCtx *ctx)
2292 2325
2293 build_subroutines(ctx, cmov, sse); 2326 build_subroutines(ctx, cmov, sse);
2294 2327
2295 dasm_put(Dst, 14340); 2328 dasm_put(Dst, 14507);
2296 for (op = 0; op < BC__MAX; op++) 2329 for (op = 0; op < BC__MAX; op++)
2297 build_ins(ctx, (BCOp)op, op, cmov, sse); 2330 build_ins(ctx, (BCOp)op, op, cmov, sse);
2298 2331
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc
index 9666dfca..3ffabe6f 100644
--- a/src/buildvm_x86.dasc
+++ b/src/buildvm_x86.dasc
@@ -1043,6 +1043,19 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1043 | // 0/1 or TValue * (metamethod) returned in eax (RC). 1043 | // 0/1 or TValue * (metamethod) returned in eax (RC).
1044 | jmp <3 1044 | jmp <3
1045 | 1045 |
1046 |->vmeta_equal_cd:
1047#if LJ_HASFFI
1048 | sub PC, 4
1049 | mov L:RB, SAVE_L
1050 | mov L:RB->base, BASE
1051 | mov FCARG1, L:RB
1052 | mov FCARG2, dword [PC-4]
1053 | mov SAVE_PC, PC
1054 | call extern lj_meta_equal_cd@8 // (lua_State *L, BCIns op)
1055 | // 0/1 or TValue * (metamethod) returned in eax (RC).
1056 | jmp <3
1057#endif
1058 |
1046 |//-- Arithmetic metamethods --------------------------------------------- 1059 |//-- Arithmetic metamethods ---------------------------------------------
1047 | 1060 |
1048 |->vmeta_arith_vn: 1061 |->vmeta_arith_vn:
@@ -3593,7 +3606,13 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3593 | movzx RD, PC_RD 3606 | movzx RD, PC_RD
3594 | branchPC RD 3607 | branchPC RD
3595 |2: // NE: Fallthrough to next instruction. 3608 |2: // NE: Fallthrough to next instruction.
3609 if (!LJ_HASFFI) {
3610 |3:
3611 }
3596 } else { 3612 } else {
3613 if (!LJ_HASFFI) {
3614 |3:
3615 }
3597 |2: // NE: Branch to the target. 3616 |2: // NE: Branch to the target.
3598 | movzx RD, PC_RD 3617 | movzx RD, PC_RD
3599 | branchPC RD 3618 | branchPC RD
@@ -3603,6 +3622,10 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3603 | 3622 |
3604 if (op == BC_ISEQV || op == BC_ISNEV) { 3623 if (op == BC_ISEQV || op == BC_ISNEV) {
3605 |5: // Either or both types are not numbers. 3624 |5: // Either or both types are not numbers.
3625 if (LJ_HASFFI) {
3626 | cmp RB, LJ_TCDATA; je ->vmeta_equal_cd
3627 | checktp RA, LJ_TCDATA; je ->vmeta_equal_cd
3628 }
3606 | checktp RA, RB // Compare types. 3629 | checktp RA, RB // Compare types.
3607 | jne <2 // Not the same type? 3630 | jne <2 // Not the same type?
3608 | cmp RB, LJ_TISPRI 3631 | cmp RB, LJ_TISPRI
@@ -3629,13 +3652,18 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3629 | mov RB, 1 // ne = 1 3652 | mov RB, 1 // ne = 1
3630 } 3653 }
3631 | jmp ->vmeta_equal // Handle __eq metamethod. 3654 | jmp ->vmeta_equal // Handle __eq metamethod.
3655 } else if (LJ_HASFFI) {
3656 |3:
3657 | cmp RB, LJ_TCDATA; jne <2
3658 | jmp ->vmeta_equal_cd
3632 } 3659 }
3633 break; 3660 break;
3634 case BC_ISEQS: case BC_ISNES: 3661 case BC_ISEQS: case BC_ISNES:
3635 vk = op == BC_ISEQS; 3662 vk = op == BC_ISEQS;
3636 | ins_AND // RA = src, RD = str const, JMP with RD = target 3663 | ins_AND // RA = src, RD = str const, JMP with RD = target
3664 | mov RB, [BASE+RA*8+4]
3637 | add PC, 4 3665 | add PC, 4
3638 | checkstr RA, >2 3666 | cmp RB, LJ_TSTR; jne >3
3639 | mov RA, [BASE+RA*8] 3667 | mov RA, [BASE+RA*8]
3640 | cmp RA, [KBASE+RD*4] 3668 | cmp RA, [KBASE+RD*4]
3641 iseqne_test: 3669 iseqne_test:
@@ -3648,8 +3676,9 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3648 case BC_ISEQN: case BC_ISNEN: 3676 case BC_ISEQN: case BC_ISNEN:
3649 vk = op == BC_ISEQN; 3677 vk = op == BC_ISEQN;
3650 | ins_AD // RA = src, RD = num const, JMP with RD = target 3678 | ins_AD // RA = src, RD = num const, JMP with RD = target
3679 | mov RB, [BASE+RA*8+4]
3651 | add PC, 4 3680 | add PC, 4
3652 | checknum RA, >2 3681 | cmp RB, LJ_TISNUM; ja >3
3653 if (sse) { 3682 if (sse) {
3654 | movsd xmm0, qword [KBASE+RD*8] 3683 | movsd xmm0, qword [KBASE+RD*8]
3655 | ucomisd xmm0, qword [BASE+RA*8] 3684 | ucomisd xmm0, qword [BASE+RA*8]
@@ -3662,9 +3691,28 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
3662 case BC_ISEQP: case BC_ISNEP: 3691 case BC_ISEQP: case BC_ISNEP:
3663 vk = op == BC_ISEQP; 3692 vk = op == BC_ISEQP;
3664 | ins_AND // RA = src, RD = primitive type (~), JMP with RD = target 3693 | ins_AND // RA = src, RD = primitive type (~), JMP with RD = target
3694 | mov RB, [BASE+RA*8+4]
3665 | add PC, 4 3695 | add PC, 4
3666 | checktp RA, RD 3696 | cmp RB, RD
3667 goto iseqne_test; 3697 if (!LJ_HASFFI) goto iseqne_test;
3698 if (vk) {
3699 | jne >3
3700 | movzx RD, PC_RD
3701 | branchPC RD
3702 |2:
3703 | ins_next
3704 |3:
3705 | cmp RB, LJ_TCDATA; jne <2
3706 | jmp ->vmeta_equal_cd
3707 } else {
3708 | je >2
3709 | cmp RB, LJ_TCDATA; je ->vmeta_equal_cd
3710 | movzx RD, PC_RD
3711 | branchPC RD
3712 |2:
3713 | ins_next
3714 }
3715 break;
3668 3716
3669 /* -- Unary test and copy ops ------------------------------------------- */ 3717 /* -- Unary test and copy ops ------------------------------------------- */
3670 3718
diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h
index ef8ba886..abdadbe2 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[15694] = { 15static const unsigned char build_actionlist[15861] = {
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,
@@ -79,372 +79,373 @@ static const unsigned char build_actionlist[15694] = {
79 171,248,43,131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,44, 79 171,248,43,131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,44,
80 129,120,253,4,239,252,233,244,4,248,45,131,252,238,4,137,108,36,12,139,108, 80 129,120,253,4,239,252,233,244,4,248,45,131,252,238,4,137,108,36,12,139,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,48,137,68,36,8,137,76,36,4,137,44,36,137,149,233,255,137,116,36,24,232,
82 251,1,4,252,233,244,3,248,46,141,4,199,252,233,244,247,248,47,141,4,199,141, 82 251,1,4,252,233,244,3,248,46,255,131,252,238,4,139,108,36,48,137,149,233,
83 44,252,234,149,252,233,244,248,248,48,141,4,194,137,197,252,233,244,248,248, 83 137,252,233,139,86,252,252,137,116,36,24,232,251,1,5,252,233,244,3,255,248,
84 49,141,4,194,248,1,141,44,252,234,248,2,141,12,202,137,108,36,8,139,108,36, 84 47,141,4,199,252,233,244,247,248,48,141,4,199,141,44,252,234,149,252,233,
85 48,137,68,36,12,15,182,70,252,252,137,76,36,4,137,68,36,16,137,44,36,137, 85 244,248,248,49,141,4,194,137,197,252,233,244,248,248,50,141,4,194,248,1,141,
86 149,233,137,116,36,24,232,251,1,5,139,149,233,133,192,15,132,244,40,248,42, 86 44,252,234,248,2,141,12,202,137,108,36,8,139,108,36,48,137,68,36,12,15,182,
87 137,193,41,208,137,113,252,244,141,176,233,255,184,237,252,233,244,27,248, 87 70,252,252,137,76,36,4,137,68,36,16,137,44,36,137,149,233,137,116,36,24,232,
88 50,139,108,36,48,137,149,233,141,20,194,137,252,233,137,116,36,24,232,251, 88 251,1,6,139,149,233,133,192,15,132,244,40,248,42,137,193,41,208,137,113,252,
89 1,6,139,149,233,252,233,244,42,248,51,141,76,202,8,248,28,137,76,36,20,137, 89 244,141,176,233,184,237,252,233,244,27,248,51,255,139,108,36,48,137,149,233,
90 68,36,16,131,252,233,8,141,4,193,139,108,36,48,137,76,36,4,137,68,36,8,137, 90 141,20,194,137,252,233,137,116,36,24,232,251,1,7,139,149,233,252,233,244,
91 44,36,137,149,233,137,116,36,24,232,251,1,7,139,149,233,139,76,36,20,139, 91 42,248,52,141,76,202,8,248,28,137,76,36,20,137,68,36,16,131,252,233,8,141,
92 68,36,16,139,105,252,248,131,192,1,57,215,15,132,244,52,137,202,137,114,252, 92 4,193,139,108,36,48,137,76,36,4,137,68,36,8,137,44,36,137,149,233,137,116,
93 252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171, 93 36,24,232,251,1,8,139,149,233,139,76,36,20,139,68,36,16,139,105,252,248,131,
94 248,53,139,108,36,48,137,149,233,137,202,137,252,233,137,116,36,24,232,251, 94 192,1,57,215,15,132,244,53,137,202,137,114,252,252,139,181,233,139,14,15,
95 1,8,139,149,233,139,70,252,252,15,182,204,15,182,232,193,232,16,252,255,164, 95 182,252,233,15,182,205,131,198,4,252,255,36,171,248,54,139,108,36,48,137,
96 253,171,233,248,54,255,129,252,248,239,15,130,244,55,139,106,4,129,252,253, 96 149,233,137,202,137,252,233,137,116,36,24,232,251,1,9,139,149,233,139,70,
97 239,15,131,244,55,139,114,252,252,137,68,36,20,137,106,252,252,139,42,137, 97 252,252,15,182,204,15,182,232,193,232,16,252,255,164,253,171,233,248,55,129,
98 106,252,248,131,232,2,15,132,244,248,137,209,248,1,131,193,8,139,105,4,137, 98 252,248,239,15,130,244,56,139,106,4,129,252,253,239,255,15,131,244,56,139,
99 105,252,252,139,41,137,105,252,248,131,232,1,15,133,244,1,248,2,139,68,36, 99 114,252,252,137,68,36,20,137,106,252,252,139,42,137,106,252,248,131,232,2,
100 20,252,233,244,56,248,57,129,252,248,239,15,130,244,55,139,106,4,184,237, 100 15,132,244,248,137,209,248,1,131,193,8,139,105,4,137,105,252,252,139,41,137,
101 252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,248, 101 105,252,248,131,232,1,15,133,244,1,248,2,139,68,36,20,252,233,244,57,248,
102 2,139,106,252,248,139,132,253,197,233,139,114,252,252,199,66,252,252,237, 102 58,129,252,248,239,15,130,244,56,139,106,4,184,237,252,247,213,57,232,255,
103 137,66,252,248,252,233,244,58,248,59,129,252,248,239,15,130,244,55,139,106, 103 15,71,197,255,15,134,244,247,137,232,248,1,255,248,2,139,106,252,248,139,
104 4,139,114,252,252,129,252,253,239,15,133,244,252,248,1,139,42,139,173,233, 104 132,253,197,233,139,114,252,252,199,66,252,252,237,137,66,252,248,252,233,
105 248,2,133,252,237,199,66,252,252,237,15,132,244,58,139,131,233,199,66,252, 105 244,59,248,60,129,252,248,239,15,130,244,56,139,106,4,139,114,252,252,129,
106 252,237,255,137,106,252,248,139,141,233,35,136,233,105,201,239,3,141,233, 106 252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,133,252,237,199,
107 248,3,129,185,233,239,15,133,244,250,57,129,233,15,132,244,251,248,4,139, 107 66,252,252,237,15,132,244,59,139,131,233,199,66,252,252,237,255,137,106,252,
108 137,233,133,201,15,133,244,3,252,233,244,58,248,5,139,105,4,129,252,253,239, 108 248,139,141,233,35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15,
109 255,15,132,244,58,139,1,137,106,252,252,137,66,252,248,252,233,244,58,248, 109 133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244,
110 6,129,252,253,239,15,132,244,1,129,252,253,239,15,135,244,253,189,237,248, 110 3,252,233,244,59,248,5,139,105,4,129,252,253,239,255,15,132,244,59,139,1,
111 7,252,247,213,139,172,253,171,233,252,233,244,2,248,60,129,252,248,239,15, 111 137,106,252,252,137,66,252,248,252,233,244,59,248,6,129,252,253,239,15,132,
112 130,244,55,255,129,122,253,4,239,15,133,244,55,139,42,131,189,233,0,15,133, 112 244,1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,139,172,253,
113 244,55,129,122,253,12,239,15,133,244,55,139,66,8,137,133,233,139,114,252, 113 171,233,252,233,244,2,248,61,129,252,248,239,15,130,244,56,255,129,122,253,
114 252,199,66,252,252,237,137,106,252,248,252,246,133,233,235,15,132,244,247, 114 4,239,15,133,244,56,139,42,131,189,233,0,15,133,244,56,129,122,253,12,239,
115 128,165,233,235,139,131,233,137,171,233,137,133,233,248,1,255,252,233,244, 115 15,133,244,56,139,66,8,137,133,233,139,114,252,252,199,66,252,252,237,137,
116 58,248,61,129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,139, 116 106,252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,139,131,233,
117 2,139,108,36,48,137,68,36,4,137,44,36,137,213,131,194,8,137,84,36,8,232,251, 117 137,171,233,137,133,233,248,1,255,252,233,244,59,248,62,129,252,248,239,15,
118 1,9,137,252,234,139,40,139,64,4,139,114,252,252,137,106,252,248,137,66,252, 118 130,244,56,129,122,253,4,239,15,133,244,56,139,2,139,108,36,48,137,68,36,
119 252,252,233,244,58,248,62,129,252,248,239,15,133,244,55,129,122,253,4,239, 119 4,137,44,36,137,213,131,194,8,137,84,36,8,232,251,1,10,137,252,234,139,40,
120 15,135,244,55,255,252,242,15,16,2,252,233,244,63,255,221,2,252,233,244,64, 120 139,64,4,139,114,252,252,137,106,252,248,137,66,252,252,252,233,244,59,248,
121 255,248,65,129,252,248,239,15,130,244,55,139,114,252,252,129,122,253,4,239, 121 63,129,252,248,239,15,133,244,56,129,122,253,4,239,15,135,244,56,255,252,
122 15,133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,233,244, 122 242,15,16,2,252,233,244,64,255,221,2,252,233,244,65,255,248,66,129,252,248,
123 58,248,3,129,122,253,4,239,15,135,244,55,131,187,233,0,15,133,244,55,139, 123 239,15,130,244,56,139,114,252,252,129,122,253,4,239,15,133,244,249,139,2,
124 171,233,59,171,233,255,15,130,244,247,232,244,66,248,1,139,108,36,48,137, 124 248,2,199,66,252,252,237,137,66,252,248,252,233,244,59,248,3,129,122,253,
125 149,233,137,116,36,24,137,252,233,232,251,1,10,139,149,233,252,233,244,2, 125 4,239,15,135,244,56,131,187,233,0,15,133,244,56,139,171,233,59,171,233,255,
126 248,67,129,252,248,239,15,130,244,55,15,132,244,248,248,1,129,122,253,4,239, 126 15,130,244,247,232,244,67,248,1,139,108,36,48,137,149,233,137,116,36,24,137,
127 15,133,244,55,139,108,36,48,137,149,233,255,137,149,233,139,114,252,252,139, 127 252,233,232,251,1,11,139,149,233,252,233,244,2,248,68,129,252,248,239,15,
128 2,137,68,36,4,137,44,36,131,194,8,137,84,36,8,137,116,36,24,232,251,1,11, 128 130,244,56,15,132,244,248,248,1,129,122,253,4,239,15,133,244,56,139,108,36,
129 139,149,233,133,192,15,132,244,249,139,106,8,139,66,12,137,106,252,248,137, 129 48,137,149,233,255,137,149,233,139,114,252,252,139,2,137,68,36,4,137,44,36,
130 66,252,252,139,106,16,139,66,20,137,42,137,66,4,248,68,184,237,252,233,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 69,248,2,199,66,12,237,252,233,244,1,248,3,199,66,252,252,237,252,233,244, 131 244,249,139,106,8,139,66,12,137,106,252,248,137,66,252,252,139,106,16,139,
132 58,248,70,129,252,248,239,15,130,244,55,255,139,42,129,122,253,4,239,15,133, 132 66,20,137,42,137,66,4,248,69,184,237,252,233,244,70,248,2,199,66,12,237,252,
133 244,55,255,131,189,233,0,15,133,244,55,255,139,106,252,248,139,133,233,139, 133 233,244,1,248,3,199,66,252,252,237,252,233,244,59,248,71,129,252,248,239,
134 114,252,252,199,66,252,252,237,137,66,252,248,199,66,12,237,184,237,252,233, 134 15,130,244,56,255,139,42,129,122,253,4,239,15,133,244,56,255,131,189,233,
135 244,69,248,71,129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244, 135 0,15,133,244,56,255,139,106,252,248,139,133,233,139,114,252,252,199,66,252,
136 55,129,122,253,12,239,15,135,244,55,139,114,252,252,255,252,242,15,16,66, 136 252,237,137,66,252,248,199,66,12,237,184,237,252,233,244,70,248,72,129,252,
137 8,189,0,0,252,240,63,102,15,110,205,102,15,112,201,81,252,242,15,88,193,252, 137 248,239,15,130,244,56,129,122,253,4,239,15,133,244,56,129,122,253,12,239,
138 242,15,45,192,252,242,15,17,66,252,248,255,221,66,8,217,232,222,193,219,20, 138 15,135,244,56,139,114,252,252,255,252,242,15,16,66,8,189,0,0,252,240,63,102,
139 36,221,90,252,248,139,4,36,255,139,42,59,133,233,15,131,244,248,193,224,3, 139 15,110,205,102,15,112,201,81,252,242,15,88,193,252,242,15,45,192,252,242,
140 3,133,233,248,1,129,120,253,4,239,15,132,244,72,139,40,139,64,4,137,42,137, 140 15,17,66,252,248,255,221,66,8,217,232,222,193,219,20,36,221,90,252,248,139,
141 66,4,252,233,244,68,248,2,131,189,233,0,15,132,244,72,137,252,233,137,213, 141 4,36,255,139,42,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120,
142 137,194,232,251,1,12,137,252,234,133,192,15,133,244,1,248,72,184,237,252, 142 253,4,239,15,132,244,73,139,40,139,64,4,137,42,137,66,4,252,233,244,69,248,
143 233,244,69,248,73,255,129,252,248,239,15,130,244,55,139,42,129,122,253,4, 143 2,131,189,233,0,15,132,244,73,137,252,233,137,213,137,194,232,251,1,13,137,
144 239,15,133,244,55,255,139,106,252,248,139,133,233,139,114,252,252,199,66, 144 252,234,133,192,15,133,244,1,248,73,184,237,252,233,244,70,248,74,255,129,
145 252,252,237,137,66,252,248,255,15,87,192,252,242,15,17,66,8,255,217,252,238, 145 252,248,239,15,130,244,56,139,42,129,122,253,4,239,15,133,244,56,255,139,
146 221,90,8,255,184,237,252,233,244,69,248,74,129,252,248,239,15,130,244,55, 146 106,252,248,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248,
147 141,74,8,131,232,1,190,237,248,1,15,182,171,233,193,252,237,235,131,229,1, 147 255,15,87,192,252,242,15,17,66,8,255,217,252,238,221,90,8,255,184,237,252,
148 1,252,238,252,233,244,27,248,75,129,252,248,239,15,130,244,55,129,122,253, 148 233,244,70,248,75,129,252,248,239,15,130,244,56,141,74,8,131,232,1,190,237,
149 12,239,15,133,244,55,255,139,106,4,137,106,12,199,66,4,237,139,42,139,114, 149 248,1,15,182,171,233,193,252,237,235,131,229,1,1,252,238,252,233,244,27,248,
150 8,137,106,8,137,50,141,74,16,131,232,2,190,237,252,233,244,1,248,76,129,252, 150 76,129,252,248,239,15,130,244,56,129,122,253,12,239,15,133,244,56,255,139,
151 248,239,15,130,244,55,139,42,139,114,252,252,137,116,36,24,137,44,36,129, 151 106,4,137,106,12,199,66,4,237,139,42,139,114,8,137,106,8,137,50,141,74,16,
152 122,253,4,239,15,133,244,55,131,189,233,0,15,133,244,55,128,189,233,235,15, 152 131,232,2,190,237,252,233,244,1,248,77,129,252,248,239,15,130,244,56,139,
153 135,244,55,139,141,233,15,132,244,247,255,59,141,233,15,132,244,55,248,1, 153 42,139,114,252,252,137,116,36,24,137,44,36,129,122,253,4,239,15,133,244,56,
154 141,116,193,252,240,59,181,233,15,135,244,55,137,181,233,139,108,36,48,137, 154 131,189,233,0,15,133,244,56,128,189,233,235,15,135,244,56,139,141,233,15,
155 149,233,131,194,8,137,149,233,141,108,194,232,41,252,245,57,206,15,132,244, 155 132,244,247,255,59,141,233,15,132,244,56,248,1,141,116,193,252,240,59,181,
156 249,248,2,139,68,46,4,137,70,252,252,139,4,46,137,70,252,248,131,252,238, 156 233,15,135,244,56,137,181,233,139,108,36,48,137,149,233,131,194,8,137,149,
157 8,57,206,15,133,244,2,248,3,137,76,36,4,49,201,137,76,36,12,137,76,36,8,232, 157 233,141,108,194,232,41,252,245,57,206,15,132,244,249,248,2,139,68,46,4,137,
158 244,24,199,131,233,237,255,139,108,36,48,139,52,36,139,149,233,129,252,248, 158 70,252,252,139,4,46,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248,
159 239,15,135,244,254,248,4,139,142,233,139,190,233,137,142,233,137,252,254, 159 3,137,76,36,4,49,201,137,76,36,12,137,76,36,8,232,244,24,199,131,233,237,
160 41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,233,15,135,244,255,137, 160 255,139,108,36,48,139,52,36,139,149,233,129,252,248,239,15,135,244,254,248,
161 213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57,252,249, 161 4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141,
162 15,133,244,5,248,6,141,70,2,199,66,252,252,237,248,7,139,116,36,24,137,68, 162 4,50,193,252,238,3,59,133,233,15,135,244,255,137,213,41,205,248,5,139,1,137,
163 36,20,185,252,248,252,255,252,255,252,255,252,247,198,237,255,15,132,244, 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 13,252,233,244,14,248,8,199,66,252,252,237,139,142,233,131,252,233,8,137, 164 2,199,66,252,252,237,248,7,139,116,36,24,137,68,36,20,185,252,248,252,255,
165 142,233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7,248,9,139,12, 165 252,255,252,255,252,247,198,237,255,15,132,244,13,252,233,244,14,248,8,199,
166 36,137,185,233,137,252,242,137,252,233,232,251,1,0,139,52,36,139,149,233, 166 66,252,252,237,139,142,233,131,252,233,8,137,142,233,139,1,137,2,139,65,4,
167 252,233,244,4,248,77,139,106,252,248,139,173,233,139,114,252,252,137,116, 167 137,66,4,184,237,252,233,244,7,248,9,139,12,36,137,185,233,137,252,242,137,
168 36,24,137,44,36,131,189,233,0,15,133,244,55,255,128,189,233,235,15,135,244, 168 252,233,232,251,1,0,139,52,36,139,149,233,252,233,244,4,248,78,139,106,252,
169 55,139,141,233,15,132,244,247,59,141,233,15,132,244,55,248,1,141,116,193, 169 248,139,173,233,139,114,252,252,137,116,36,24,137,44,36,131,189,233,0,15,
170 252,248,59,181,233,15,135,244,55,137,181,233,139,108,36,48,137,149,233,137, 170 133,244,56,255,128,189,233,235,15,135,244,56,139,141,233,15,132,244,247,59,
171 149,233,141,108,194,252,240,41,252,245,57,206,15,132,244,249,248,2,255,139, 171 141,233,15,132,244,56,248,1,141,116,193,252,248,59,181,233,15,135,244,56,
172 68,46,4,137,70,252,252,139,4,46,137,70,252,248,131,252,238,8,57,206,15,133, 172 137,181,233,139,108,36,48,137,149,233,137,149,233,141,108,194,252,240,41,
173 244,2,248,3,137,76,36,4,49,201,137,76,36,12,137,76,36,8,232,244,24,199,131, 173 252,245,57,206,15,132,244,249,248,2,255,139,68,46,4,137,70,252,252,139,4,
174 233,237,139,108,36,48,139,52,36,139,149,233,129,252,248,239,15,135,244,254, 174 46,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248,3,137,76,36,4,49,
175 248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252, 175 201,137,76,36,12,137,76,36,8,232,244,24,199,131,233,237,139,108,36,48,139,
176 141,4,50,193,252,238,3,59,133,233,15,135,244,255,255,137,213,41,205,248,5, 176 52,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,
177 139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248, 177 233,137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,
178 6,141,70,1,248,7,139,116,36,24,137,68,36,20,49,201,252,247,198,237,15,132, 178 59,133,233,15,135,244,255,255,137,213,41,205,248,5,139,1,137,4,41,139,65,
179 244,13,252,233,244,14,248,8,137,252,242,137,252,233,232,251,1,13,248,9,139, 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 12,36,137,185,233,137,252,242,137,252,233,232,251,1,0,139,52,36,139,149,233, 180 116,36,24,137,68,36,20,49,201,252,247,198,237,15,132,244,13,252,233,244,14,
181 252,233,244,4,248,78,139,108,36,48,252,247,133,233,237,15,132,244,55,255, 181 248,8,137,252,242,137,252,233,232,251,1,14,248,9,139,12,36,137,185,233,137,
182 137,149,233,141,68,194,252,248,137,133,233,49,192,137,133,233,176,235,136, 182 252,242,137,252,233,232,251,1,0,139,52,36,139,149,233,252,233,244,4,248,79,
183 133,233,252,233,244,16,255,248,64,139,114,252,252,221,90,252,248,252,233, 183 139,108,36,48,252,247,133,233,237,15,132,244,56,255,137,149,233,141,68,194,
184 244,58,248,79,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, 184 252,248,137,133,233,49,192,137,133,233,176,235,136,133,233,252,233,244,16,
185 55,252,242,15,16,2,102,15,252,239,201,102,15,118,201,102,15,115,209,1,15, 185 255,248,65,139,114,252,252,221,90,252,248,252,233,244,59,248,80,129,252,248,
186 84,193,248,63,139,114,252,252,252,242,15,17,66,252,248,255,248,79,129,252, 186 239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,102,15,
187 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,225,248,63, 187 252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,248,64,139,114,252,
188 248,64,139,114,252,252,221,90,252,248,255,248,58,184,237,248,69,137,68,36, 188 252,252,242,15,17,66,252,248,255,248,80,129,252,248,239,15,130,244,56,129,
189 20,248,56,252,247,198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252, 189 122,253,4,239,15,135,244,56,221,2,217,225,248,64,248,65,139,114,252,252,221,
190 15,182,78,252,253,252,247,209,141,20,202,139,6,15,182,204,15,182,232,131, 190 90,252,248,255,248,59,184,237,248,70,137,68,36,20,248,57,252,247,198,237,
191 198,4,193,232,16,252,255,36,171,248,6,199,68,194,252,244,237,131,192,1,252, 191 15,133,244,253,248,5,56,70,252,255,15,135,244,252,15,182,78,252,253,252,247,
192 233,244,5,248,7,185,252,248,252,255,252,255,252,255,252,233,244,14,255,248, 192 209,141,20,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
193 80,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242, 193 171,248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,185,252,248,
194 15,81,2,252,233,244,63,248,81,129,252,248,239,15,130,244,55,129,122,253,4, 194 252,255,252,255,252,255,252,233,244,14,255,248,81,129,252,248,239,15,130,
195 239,15,135,244,55,252,242,15,16,2,232,244,82,252,233,244,63,248,83,255,129, 195 244,56,129,122,253,4,239,15,135,244,56,252,242,15,81,2,252,233,244,64,248,
196 252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2, 196 82,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,
197 232,244,84,252,233,244,63,255,248,80,129,252,248,239,15,130,244,55,129,122, 197 15,16,2,232,244,83,252,233,244,64,248,84,255,129,252,248,239,15,130,244,56,
198 253,4,239,15,135,244,55,221,2,217,252,250,252,233,244,64,248,81,129,252,248, 198 129,122,253,4,239,15,135,244,56,252,242,15,16,2,232,244,85,252,233,244,64,
199 239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,82,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,64,248,83,255,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135, 200 221,2,217,252,250,252,233,244,65,248,82,129,252,248,239,15,130,244,56,129,
201 244,55,221,2,232,244,84,252,233,244,64,255,248,85,129,252,248,239,15,130, 201 122,253,4,239,15,135,244,56,221,2,232,244,83,252,233,244,65,248,84,255,129,
202 244,55,129,122,253,4,239,15,135,244,55,217,252,237,221,2,217,252,241,252, 202 252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,232,244,85,
203 233,244,64,248,86,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135, 203 252,233,244,65,255,248,86,129,252,248,239,15,130,244,56,129,122,253,4,239,
204 244,55,217,252,236,221,2,217,252,241,252,233,244,64,248,87,129,252,248,239, 204 15,135,244,56,217,252,237,221,2,217,252,241,252,233,244,65,248,87,129,252,
205 255,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,232,244,88,252,233, 205 248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,217,252,236,221,2,217,
206 244,64,248,89,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, 206 252,241,252,233,244,65,248,88,129,252,248,239,255,15,130,244,56,129,122,253,
207 55,221,2,217,252,254,252,233,244,64,248,90,129,252,248,239,255,15,130,244, 207 4,239,15,135,244,56,221,2,232,244,89,252,233,244,65,248,90,129,252,248,239,
208 55,129,122,253,4,239,15,135,244,55,221,2,217,252,255,252,233,244,64,248,91, 208 15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,217,252,254,252,233,244,
209 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,217,252, 209 65,248,91,129,252,248,239,255,15,130,244,56,129,122,253,4,239,15,135,244,
210 242,221,216,252,233,244,64,248,92,129,252,248,239,15,130,244,55,255,129,122, 210 56,221,2,217,252,255,252,233,244,65,248,92,129,252,248,239,15,130,244,56,
211 253,4,239,15,135,244,55,221,2,217,192,216,200,217,232,222,225,217,252,250, 211 129,122,253,4,239,15,135,244,56,221,2,217,252,242,221,216,252,233,244,65,
212 217,252,243,252,233,244,64,248,93,129,252,248,239,15,130,244,55,129,122,253, 212 248,93,129,252,248,239,15,130,244,56,255,129,122,253,4,239,15,135,244,56,
213 4,239,15,135,244,55,221,2,217,192,216,200,217,232,222,225,217,252,250,217, 213 221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252,233,244,
214 201,217,252,243,252,233,244,64,248,94,129,252,248,239,15,130,244,55,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,135,244,55,255,221,2,217,232,217,252,243,252,233,244,64,255, 215 2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252,243,252,233,
216 248,95,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252, 216 244,65,248,95,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,
217 242,15,16,2,252,242,15,17,4,36,255,248,95,129,252,248,239,15,130,244,55,129, 217 56,255,221,2,217,232,217,252,243,252,233,244,65,255,248,96,129,252,248,239,
218 122,253,4,239,15,135,244,55,221,2,221,28,36,255,137,213,232,251,1,14,137, 218 15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,252,242,15,
219 252,234,252,233,244,64,255,248,96,129,252,248,239,15,130,244,55,129,122,253, 219 17,4,36,255,248,96,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,
220 4,239,15,135,244,55,252,242,15,16,2,252,242,15,17,4,36,255,248,96,129,252, 220 244,56,221,2,221,28,36,255,137,213,232,251,1,15,137,252,234,252,233,244,65,
221 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,221,28,36,255, 221 255,248,97,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,
222 137,213,232,251,1,15,137,252,234,252,233,244,64,255,248,97,129,252,248,239, 222 252,242,15,16,2,252,242,15,17,4,36,255,248,97,129,252,248,239,15,130,244,
223 15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,252,242,15, 223 56,129,122,253,4,239,15,135,244,56,221,2,221,28,36,255,137,213,232,251,1,
224 17,4,36,255,248,97,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135, 224 16,137,252,234,252,233,244,65,255,248,98,129,252,248,239,15,130,244,56,129,
225 244,55,221,2,221,28,36,255,137,213,232,251,1,16,137,252,234,252,233,244,64, 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,98,255,248,99,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135, 226 129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,221,28,
227 244,55,252,242,15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244, 227 36,255,137,213,232,251,1,17,137,252,234,252,233,244,65,248,99,255,248,100,
228 63,255,248,99,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, 228 129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,
229 55,221,2,139,106,252,248,220,141,233,252,233,244,64,255,248,100,129,252,248, 229 16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,64,255,248,100,129,
230 239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135, 230 252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,139,106,252,
231 244,55,221,2,221,66,8,217,252,243,252,233,244,64,248,101,129,252,248,239, 231 248,220,141,233,252,233,244,65,255,248,101,129,252,248,239,15,130,244,56,
232 15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,255,15,135, 232 129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,221,2,221,
233 244,55,221,66,8,221,2,217,252,253,221,217,252,233,244,64,248,102,129,252, 233 66,8,217,252,243,252,233,244,65,248,102,129,252,248,239,15,130,244,56,129,
234 248,239,15,130,244,55,139,106,4,129,252,253,239,15,135,244,55,139,114,252, 234 122,253,4,239,15,135,244,56,129,122,253,12,239,255,15,135,244,56,221,66,8,
235 252,139,2,137,106,252,252,137,66,252,248,209,229,129,252,253,0,0,224,252, 235 221,2,217,252,253,221,217,252,233,244,65,248,103,129,252,248,239,15,130,244,
236 255,15,131,244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0, 236 56,139,106,4,129,252,253,239,15,135,244,56,139,114,252,252,139,2,137,106,
237 32,0,15,130,244,250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255, 237 252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,255,15,131,244,249,
238 137,108,36,16,219,68,36,16,255,139,106,252,252,129,229,252,255,252,255,15, 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 128,129,205,0,0,224,63,137,106,252,252,248,2,255,252,242,15,17,2,255,221, 239 248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,108,36,16,219,68,
240 26,255,184,237,252,233,244,69,248,3,255,15,87,192,252,233,244,2,255,217,252, 240 36,16,255,139,106,252,252,129,229,252,255,252,255,15,128,129,205,0,0,224,
241 238,252,233,244,2,255,248,4,255,252,242,15,16,2,189,0,0,80,67,102,15,110, 241 63,137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,
242 205,102,15,112,201,81,252,242,15,89,193,252,242,15,17,66,252,248,255,221, 242 244,70,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,
243 2,199,68,36,16,0,0,128,90,216,76,36,16,221,90,252,248,255,139,106,252,252, 243 248,4,255,252,242,15,16,2,189,0,0,80,67,102,15,110,205,102,15,112,201,81,
244 184,52,4,0,0,209,229,252,233,244,1,255,248,103,129,252,248,239,15,130,244, 244 252,242,15,89,193,252,242,15,17,66,252,248,255,221,2,199,68,36,16,0,0,128,
245 55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,255,248,103,129,252,248, 245 90,216,76,36,16,221,90,252,248,255,139,106,252,252,184,52,4,0,0,209,229,252,
246 239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,255,139,106,4,139, 246 233,244,1,255,248,104,129,252,248,239,15,130,244,56,129,122,253,4,239,15,
247 114,252,252,209,229,129,252,253,0,0,224,252,255,15,132,244,250,255,15,40, 247 135,244,56,252,242,15,16,2,255,248,104,129,252,248,239,15,130,244,56,129,
248 224,232,244,104,252,242,15,92,224,248,1,252,242,15,17,66,252,248,252,242, 248 122,253,4,239,15,135,244,56,221,2,255,139,106,4,139,114,252,252,209,229,129,
249 15,17,34,255,217,192,232,244,104,220,252,233,248,1,221,90,252,248,221,26, 249 252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,244,105,252,242,
250 255,139,66,252,252,139,106,4,49,232,15,136,244,249,248,2,184,237,252,233, 250 15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,34,255,217,192,232,
251 244,69,248,3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248,4,255,15,87, 251 244,105,220,252,233,248,1,221,90,252,248,221,26,255,139,66,252,252,139,106,
252 228,252,233,244,1,255,217,252,238,217,201,252,233,244,1,255,248,105,129,252, 252 4,49,232,15,136,244,249,248,2,184,237,252,233,244,70,248,3,129,252,245,0,
253 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239, 253 0,0,128,137,106,4,252,233,244,2,248,4,255,15,87,228,252,233,244,1,255,217,
254 15,135,244,55,221,66,8,221,2,248,1,217,252,248,223,224,158,15,138,244,1,221, 254 252,238,217,201,252,233,244,1,255,248,106,129,252,248,239,15,130,244,56,129,
255 217,252,233,244,64,255,248,106,129,252,248,239,15,130,244,55,129,122,253, 255 122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,221,66,8,221,
256 4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252, 256 2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,233,244,65,255,248,
257 242,15,16,74,8,232,244,107,252,233,244,63,255,248,106,129,252,248,239,15, 257 107,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,129,122,
258 130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244, 258 253,12,239,15,135,244,56,252,242,15,16,2,252,242,15,16,74,8,232,244,108,252,
259 55,221,2,221,66,8,232,244,107,252,233,244,64,255,248,108,129,252,248,239, 259 233,244,64,255,248,107,129,252,248,239,15,130,244,56,129,122,253,4,239,15,
260 15,130,244,55,129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,2,0,0,0, 260 135,244,56,129,122,253,12,239,15,135,244,56,221,2,221,66,8,232,244,108,252,
261 248,1,57,197,15,131,244,63,129,124,253,252,234,252,252,239,15,135,244,55, 261 233,244,65,255,248,109,129,252,248,239,15,130,244,56,129,122,253,4,239,15,
262 252,242,15,16,76,252,234,252,248,252,242,15,93,193,131,197,1,252,233,244, 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 1,255,248,108,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, 263 253,252,234,252,252,239,15,135,244,56,252,242,15,16,76,252,234,252,248,252,
264 55,221,2,189,2,0,0,0,248,1,57,197,15,131,244,64,129,124,253,252,234,252,252, 264 242,15,93,193,131,197,1,252,233,244,1,255,248,109,129,252,248,239,15,130,
265 239,15,135,244,251,221,68,252,234,252,248,255,219,252,233,219,209,221,217, 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 255,80,221,225,223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216, 266 131,244,65,129,124,253,252,234,252,252,239,15,135,244,251,221,68,252,234,
267 88,255,248,109,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244, 267 252,248,255,219,252,233,219,209,221,217,255,80,221,225,223,224,252,246,196,
268 55,252,242,15,16,2,189,2,0,0,0,248,1,57,197,15,131,244,63,129,124,253,252, 268 1,15,132,244,248,217,201,248,2,221,216,88,255,248,110,129,252,248,239,15,
269 234,252,252,239,15,135,244,55,252,242,15,16,76,252,234,252,248,252,242,15, 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 95,193,131,197,1,252,233,244,1,255,248,109,129,252,248,239,15,130,244,55, 270 1,57,197,15,131,244,64,129,124,253,252,234,252,252,239,15,135,244,56,252,
271 129,122,253,4,239,15,135,244,55,221,2,189,2,0,0,0,248,1,57,197,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 64,129,124,253,252,234,252,252,239,15,135,244,251,221,68,252,234,252,248, 272 248,110,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,
273 255,219,252,233,218,209,221,217,255,80,221,225,223,224,252,246,196,1,15,133, 273 2,189,2,0,0,0,248,1,57,197,15,131,244,65,129,124,253,252,234,252,252,239,
274 244,248,217,201,248,2,221,216,88,255,248,5,221,216,252,233,244,55,255,248, 274 15,135,244,251,221,68,252,234,252,248,255,219,252,233,218,209,221,217,255,
275 110,129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,139,42, 275 80,221,225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,88,
276 255,252,242,15,42,133,233,252,233,244,63,255,219,133,233,252,233,244,64,255, 276 255,248,5,221,216,252,233,244,56,255,248,111,129,252,248,239,15,130,244,56,
277 248,111,129,252,248,239,15,133,244,55,129,122,253,4,239,15,133,244,55,139, 277 129,122,253,4,239,15,133,244,56,139,42,255,252,242,15,42,133,233,252,233,
278 42,139,114,252,252,131,189,233,1,15,130,244,72,15,182,173,233,255,252,242, 278 244,64,255,219,133,233,252,233,244,65,255,248,112,129,252,248,239,15,133,
279 15,42,197,252,233,244,63,255,137,108,36,16,219,68,36,16,252,233,244,64,255, 279 244,56,129,122,253,4,239,15,133,244,56,139,42,139,114,252,252,131,189,233,
280 248,112,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,129,252,248, 280 1,15,130,244,73,15,182,173,233,255,252,242,15,42,197,252,233,244,64,255,137,
281 239,15,133,244,55,129,122,253,4,239,15,135,244,55,255,252,242,15,44,42,129, 281 108,36,16,219,68,36,16,252,233,244,65,255,248,113,139,171,233,59,171,233,
282 252,253,252,255,0,0,0,15,135,244,55,137,108,36,20,255,221,2,219,92,36,20, 282 15,130,244,247,232,244,67,248,1,129,252,248,239,15,133,244,56,129,122,253,
283 129,124,36,20,252,255,0,0,0,15,135,244,55,255,199,68,36,8,1,0,0,0,141,68, 283 4,239,15,135,244,56,255,252,242,15,44,42,129,252,253,252,255,0,0,0,15,135,
284 36,20,248,113,139,108,36,48,137,149,233,137,68,36,4,137,44,36,137,116,36, 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 24,232,251,1,17,139,149,233,139,114,252,252,199,66,252,252,237,137,66,252, 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 248,252,233,244,58,248,114,139,171,233,59,171,233,15,130,244,247,232,244, 286 149,233,137,68,36,4,137,44,36,137,116,36,24,232,251,1,18,139,149,233,139,
287 66,248,1,199,68,36,20,252,255,252,255,252,255,252,255,129,252,248,239,15, 287 114,252,252,199,66,252,252,237,137,66,252,248,252,233,244,59,248,115,139,
288 130,244,55,15,134,244,247,129,122,253,20,239,255,252,242,15,44,106,16,137, 288 171,233,59,171,233,15,130,244,247,232,244,67,248,1,199,68,36,20,252,255,252,
289 108,36,20,255,221,66,16,219,92,36,20,255,248,1,129,122,253,4,239,15,133,244, 289 255,252,255,252,255,129,252,248,239,15,130,244,56,15,134,244,247,129,122,
290 55,129,122,253,12,239,15,135,244,55,139,42,137,108,36,12,139,173,233,255, 290 253,20,239,255,252,242,15,44,106,16,137,108,36,20,255,221,66,16,219,92,36,
291 252,242,15,44,74,8,255,221,66,8,219,92,36,8,139,76,36,8,255,139,68,36,20, 291 20,255,248,1,129,122,253,4,239,15,133,244,56,129,122,253,12,239,15,135,244,
292 57,197,15,130,244,251,248,2,133,201,15,142,244,253,248,3,139,108,36,12,41, 292 56,139,42,137,108,36,12,139,173,233,255,252,242,15,44,74,8,255,221,66,8,219,
293 200,15,140,244,115,141,172,253,13,233,131,192,1,248,4,137,68,36,8,137,232, 293 92,36,8,139,76,36,8,255,139,68,36,20,57,197,15,130,244,251,248,2,133,201,
294 252,233,244,113,248,5,15,140,244,252,141,68,40,1,252,233,244,2,248,6,137, 294 15,142,244,253,248,3,139,108,36,12,41,200,15,140,244,116,141,172,253,13,233,
295 232,252,233,244,2,248,7,255,15,132,244,254,1,252,233,131,193,1,15,143,244, 295 131,192,1,248,4,137,68,36,8,137,232,252,233,244,114,248,5,15,140,244,252,
296 3,248,8,185,1,0,0,0,252,233,244,3,248,115,49,192,252,233,244,4,248,116,129, 296 141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,
297 252,248,239,15,130,244,55,139,171,233,59,171,233,15,130,244,247,232,244,66, 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 248,1,255,129,122,253,4,239,15,133,244,55,129,122,253,12,239,15,135,244,55, 298 116,49,192,252,233,244,4,248,117,129,252,248,239,15,130,244,56,139,171,233,
299 139,42,255,252,242,15,44,66,8,255,221,66,8,219,92,36,20,139,68,36,20,255, 299 59,171,233,15,130,244,247,232,244,67,248,1,255,129,122,253,4,239,15,133,244,
300 133,192,15,142,244,115,131,189,233,1,15,130,244,115,15,133,244,117,57,131, 300 56,129,122,253,12,239,15,135,244,56,139,42,255,252,242,15,44,66,8,255,221,
301 233,15,130,244,117,15,182,141,233,139,171,233,137,68,36,8,248,1,136,77,0, 301 66,8,219,92,36,20,139,68,36,20,255,133,192,15,142,244,116,131,189,233,1,15,
302 131,197,1,131,232,1,15,133,244,1,139,131,233,252,233,244,113,248,118,129, 302 130,244,116,15,133,244,118,57,131,233,15,130,244,118,15,182,141,233,139,171,
303 252,248,239,255,15,130,244,55,139,171,233,59,171,233,15,130,244,247,232,244, 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 66,248,1,129,122,253,4,239,15,133,244,55,139,42,139,133,233,133,192,15,132, 304 252,233,244,114,248,119,129,252,248,239,255,15,130,244,56,139,171,233,59,
305 244,115,57,131,233,15,130,244,119,129,197,239,137,116,36,20,137,68,36,8,139, 305 171,233,15,130,244,247,232,244,67,248,1,129,122,253,4,239,15,133,244,56,139,
306 179,233,248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,137, 306 42,139,133,233,133,192,15,132,244,116,57,131,233,15,130,244,120,129,197,239,
307 252,240,139,116,36,20,252,233,244,113,248,120,129,252,248,239,15,130,244, 307 137,116,36,20,137,68,36,8,139,179,233,248,1,255,15,182,77,0,131,197,1,131,
308 55,139,171,233,59,171,233,15,130,244,247,232,244,66,248,1,129,122,253,4,239, 308 232,1,136,12,6,15,133,244,1,137,252,240,139,116,36,20,252,233,244,114,248,
309 15,133,244,55,139,42,139,133,233,57,131,233,255,15,130,244,119,129,197,239, 309 121,129,252,248,239,15,130,244,56,139,171,233,59,171,233,15,130,244,247,232,
310 137,116,36,20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182,76,5,0, 310 244,67,248,1,129,122,253,4,239,15,133,244,56,139,42,139,133,233,57,131,233,
311 131,252,249,65,15,130,244,248,131,252,249,90,15,135,244,248,131,252,241,32, 311 255,15,130,244,120,129,197,239,137,116,36,20,137,68,36,8,139,179,233,252,
312 248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,252, 312 233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,
313 233,244,113,248,121,129,252,248,239,15,130,244,55,255,139,171,233,59,171, 313 90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,
314 233,15,130,244,247,232,244,66,248,1,129,122,253,4,239,15,133,244,55,139,42, 314 1,137,252,240,139,116,36,20,252,233,244,114,248,122,129,252,248,239,15,130,
315 139,133,233,57,131,233,15,130,244,119,129,197,239,137,116,36,20,137,68,36, 315 244,56,255,139,171,233,59,171,233,15,130,244,247,232,244,67,248,1,129,122,
316 8,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244, 316 253,4,239,15,133,244,56,139,42,139,133,233,57,131,233,15,130,244,120,129,
317 248,255,131,252,249,122,15,135,244,248,131,252,241,32,248,2,136,12,6,248, 317 197,239,137,116,36,20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182,
318 3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,252,233,244,113,248,122, 318 76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,
319 129,252,248,239,15,130,244,55,129,122,253,4,239,15,133,244,55,137,213,139, 319 252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,
320 10,232,251,1,18,137,252,234,255,252,242,15,42,192,252,233,244,63,255,137, 320 36,20,252,233,244,114,248,123,129,252,248,239,15,130,244,56,129,122,253,4,
321 4,36,219,4,36,252,233,244,64,255,248,123,129,252,248,239,15,130,244,55,129, 321 239,15,133,244,56,137,213,139,10,232,251,1,19,137,252,234,255,252,242,15,
322 122,253,4,239,15,135,244,55,252,242,15,16,2,189,0,0,56,67,102,15,110,205, 322 42,192,252,233,244,64,255,137,4,36,219,4,36,252,233,244,65,255,248,124,129,
323 102,15,112,201,81,252,242,15,88,193,102,15,126,197,252,242,15,42,197,252, 323 252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,
324 233,244,63,255,248,123,129,252,248,239,15,130,244,55,129,122,253,4,239,15, 324 189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,
325 135,244,55,221,2,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,219,4,36, 325 197,252,242,15,42,197,252,233,244,64,255,248,124,129,252,248,239,15,130,244,
326 252,233,244,64,255,248,124,129,252,248,239,15,130,244,55,129,122,253,4,239, 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 15,135,244,55,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201, 327 16,221,28,36,219,4,36,252,233,244,65,255,248,125,129,252,248,239,15,130,244,
328 81,252,242,15,88,193,102,15,126,197,255,248,124,129,252,248,239,15,130,244, 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 55,129,122,253,4,239,15,135,244,55,221,2,199,68,36,16,0,0,192,89,216,68,36, 329 205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,248,125,129,252,
330 16,221,28,36,139,44,36,255,137,68,36,20,141,68,194,252,240,248,1,57,208,15, 330 248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,2,199,68,36,16,
331 134,244,125,129,120,253,4,239,15,135,244,126,255,252,242,15,16,0,252,242, 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 15,88,193,102,15,126,193,33,205,255,221,0,216,68,36,16,221,28,36,35,44,36, 332 240,248,1,57,208,15,134,244,126,129,120,253,4,239,15,135,244,127,255,252,
333 255,131,232,8,252,233,244,1,255,248,127,129,252,248,239,15,130,244,55,129, 333 242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,221,0,216,68,36,16,
334 122,253,4,239,15,135,244,55,252,242,15,16,2,189,0,0,56,67,102,15,110,205, 334 221,28,36,35,44,36,255,131,232,8,252,233,244,1,255,248,128,129,252,248,239,
335 102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,248,127,129,252,248, 335 15,130,244,56,129,122,253,4,239,15,135,244,56,252,242,15,16,2,189,0,0,56,
336 239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,199,68,36,16,0,0, 336 67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,
337 192,89,216,68,36,16,221,28,36,139,44,36,255,252,242,15,16,0,252,242,15,88, 337 248,128,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,
338 193,102,15,126,193,9,205,255,221,0,216,68,36,16,221,28,36,11,44,36,255,248, 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 128,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,252,242, 339 16,0,252,242,15,88,193,102,15,126,193,9,205,255,221,0,216,68,36,16,221,28,
340 15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193, 340 36,11,44,36,255,248,129,129,252,248,239,15,130,244,56,129,122,253,4,239,15,
341 102,15,126,197,255,248,128,129,252,248,239,15,130,244,55,129,122,253,4,239, 341 135,244,56,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,
342 15,135,244,55,221,2,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44, 342 252,242,15,88,193,102,15,126,197,255,248,129,129,252,248,239,15,130,244,56,
343 36,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,205,255,221,0, 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 216,68,36,16,221,28,36,51,44,36,255,248,129,129,252,248,239,15,130,244,55, 344 221,28,36,139,44,36,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,
345 129,122,253,4,239,15,135,244,55,252,242,15,16,2,189,0,0,56,67,102,15,110, 345 49,205,255,221,0,216,68,36,16,221,28,36,51,44,36,255,248,130,129,252,248,
346 205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,248,129,129,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 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,221,2,199,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 0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,15,205,252,233,244,125,255, 348 248,130,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,221,
349 248,130,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,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,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88, 350 233,244,126,255,248,131,129,252,248,239,15,130,244,56,129,122,253,4,239,15,
351 193,102,15,126,197,255,248,130,129,252,248,239,15,130,244,55,129,122,253, 351 135,244,56,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,
352 4,239,15,135,244,55,221,2,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36, 352 252,242,15,88,193,102,15,126,197,255,248,131,129,252,248,239,15,130,244,56,
353 139,44,36,255,252,247,213,255,248,125,252,242,15,42,197,252,233,244,63,255, 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 248,125,137,44,36,219,4,36,252,233,244,64,255,248,126,139,68,36,20,252,233, 354 221,28,36,139,44,36,255,252,247,213,255,248,126,252,242,15,42,197,252,233,
355 244,55,255,248,131,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135, 355 244,64,255,248,126,137,44,36,219,4,36,252,233,244,65,255,248,127,139,68,36,
356 244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74, 356 20,252,233,244,56,255,248,132,129,252,248,239,15,130,244,56,129,122,253,4,
357 8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,252,242, 357 239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,242,
358 15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,131,129,252,248,239, 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 15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244, 359 252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,132,129,252,
360 55,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68, 360 248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,129,122,253,12,239,
361 36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,229,137,193,252,233, 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 244,125,255,248,132,129,252,248,239,15,130,244,55,129,122,253,4,239,15,135, 362 36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,229,137,
363 244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,74, 363 193,252,233,244,126,255,248,133,129,252,248,239,15,130,244,56,129,122,253,
364 8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,252,242, 364 4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,15,16,2,252,
365 15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,132,129,252,248,239,
366 15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,244,
367 55,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,
368 36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,252,237,137,193,252,
369 233,244,125,255,248,133,129,252,248,239,15,130,244,55,129,122,253,4,239,15,
370 135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,16,
371 74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,252,
372 242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,133,129,252,248,
373 239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,15,135,
374 244,55,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,
375 68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,252,253,137,193,
376 252,233,244,125,255,248,134,129,252,248,239,15,130,244,55,129,122,253,4,239,
377 15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,242,15,
378 16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,
379 252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,134,129,252,
380 248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253,12,239,
381 15,135,244,55,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,
382 36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,197,137,
383 193,252,233,244,125,255,248,135,129,252,248,239,15,130,244,55,129,122,253,
384 4,239,15,135,244,55,129,122,253,12,239,15,135,244,55,252,242,15,16,2,252,
385 242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15, 365 242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,
386 88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,135, 366 88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248,133,
387 129,252,248,239,15,130,244,55,129,122,253,4,239,15,135,244,55,129,122,253, 367 129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,129,122,253,
388 12,239,15,135,244,55,221,2,221,66,8,199,68,36,16,0,0,192,89,216,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,
389 221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211, 369 221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211,
390 205,137,193,252,233,244,125,248,117,184,237,252,233,244,55,248,119,184,237, 370 252,237,137,193,252,233,244,126,255,248,134,129,252,248,239,15,130,244,56,
391 248,55,139,108,36,48,139,114,252,252,137,116,36,24,137,149,233,141,68,194, 371 129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,242,
392 252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,15,135,244,251, 372 15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,
393 137,44,36,252,255,144,233,139,149,233,133,192,15,143,244,69,248,1,255,139, 373 252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,
394 141,233,41,209,193,252,233,3,133,192,141,65,1,139,106,252,248,15,133,244, 374 255,248,134,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,56,
395 248,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171, 375 129,122,253,12,239,15,135,244,56,221,2,221,66,8,199,68,36,16,0,0,192,89,216,
396 248,2,137,209,252,247,198,237,15,133,244,249,15,182,110,252,253,252,247,213, 376 68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,
397 141,20,252,234,252,233,244,27,248,3,137,252,245,131,229,252,248,41,252,234, 377 255,211,252,253,137,193,252,233,244,126,255,248,135,129,252,248,239,15,130,
398 252,233,244,27,248,5,186,237,137,252,233,232,251,1,0,139,149,233,49,192,252, 378 244,56,129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,
399 233,244,1,248,66,93,137,108,36,16,139,108,36,48,137,116,36,24,137,149,233, 379 242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,
400 255,141,68,194,252,248,137,252,233,137,133,233,232,251,1,19,139,149,233,139, 380 81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,
401 133,233,41,208,193,232,3,131,192,1,139,108,36,16,85,195,248,136,255,15,182, 381 201,255,248,135,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,
402 131,233,168,235,15,133,244,251,168,235,15,133,244,247,168,235,15,132,244, 382 56,129,122,253,12,239,15,135,244,56,221,2,221,66,8,199,68,36,16,0,0,192,89,
403 247,252,255,139,233,252,233,244,247,255,248,137,15,182,131,233,168,235,15, 383 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,
404 133,244,251,252,233,244,247,248,138,15,182,131,233,168,235,15,133,244,251, 384 36,255,211,197,137,193,252,233,244,126,255,248,136,129,252,248,239,15,130,
405 168,235,15,132,244,251,252,255,139,233,15,132,244,247,168,235,15,132,244, 385 244,56,129,122,253,4,239,15,135,244,56,129,122,253,12,239,15,135,244,56,252,
406 251,248,1,255,139,108,36,48,137,149,233,137,252,242,137,252,233,232,251,1, 386 242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,
407 20,248,3,139,149,233,248,4,15,182,78,252,253,248,5,15,182,110,252,252,15, 387 81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,
408 183,70,252,254,252,255,164,253,171,233,248,139,131,198,4,139,77,232,137,76, 388 201,255,248,136,129,252,248,239,15,130,244,56,129,122,253,4,239,15,135,244,
409 36,20,252,233,244,4,248,140,255,139,106,252,248,139,173,233,15,182,133,233, 389 56,129,122,253,12,239,15,135,244,56,221,2,221,66,8,199,68,36,16,0,0,192,89,
410 141,4,194,139,108,36,48,137,149,233,137,133,233,137,252,242,141,139,233,137, 390 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,
411 171,233,137,116,36,24,232,251,1,21,252,233,244,3,255,248,141,137,116,36,24, 391 36,255,211,205,137,193,252,233,244,126,248,118,184,237,252,233,244,56,248,
412 255,248,142,255,137,116,36,24,131,206,1,248,1,255,141,68,194,252,248,139, 392 120,184,237,248,56,139,108,36,48,139,114,252,252,137,116,36,24,137,149,233,
413 108,36,48,137,149,233,137,133,233,137,252,242,137,252,233,232,251,1,22,199, 393 141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,15,135,
414 68,36,24,0,0,0,0,255,131,230,252,254,255,139,149,233,137,193,139,133,233, 394 244,251,137,44,36,252,255,144,233,139,149,233,133,192,15,143,244,70,248,1,
415 41,208,137,205,15,182,78,252,253,193,232,3,131,192,1,252,255,229,248,143, 395 255,139,141,233,41,209,193,252,233,3,133,192,141,65,1,139,106,252,248,15,
416 255,85,141,108,36,12,85,83,82,81,80,15,182,69,252,252,138,101,252,248,137, 396 133,244,248,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,
417 125,252,252,137,117,252,248,139,93,0,139,139,233,199,131,233,237,137,131, 397 36,171,248,2,137,209,252,247,198,237,15,133,244,249,15,182,110,252,253,252,
418 233,137,139,233,129,252,236,239,252,242,15,17,125,216,252,242,15,17,117,208, 398 247,213,141,20,252,234,252,233,244,27,248,3,137,252,245,131,229,252,248,41,
419 252,242,15,17,109,200,252,242,15,17,101,192,252,242,15,17,93,184,252,242, 399 252,234,252,233,244,27,248,5,186,237,137,252,233,232,251,1,0,139,149,233,
420 15,17,85,176,252,242,15,17,77,168,252,242,15,17,69,160,139,171,233,139,147, 400 49,192,252,233,244,1,248,67,93,137,108,36,16,139,108,36,48,137,116,36,24,
421 233,137,171,233,199,131,233,0,0,0,0,137,149,233,141,84,36,16,141,139,233, 401 137,149,233,255,141,68,194,252,248,137,252,233,137,133,233,232,251,1,20,139,
422 232,251,1,23,139,141,233,129,225,239,137,204,137,169,233,139,149,233,139, 402 149,233,139,133,233,41,208,193,232,3,131,192,1,139,108,36,16,85,195,248,137,
423 177,233,255,248,144,255,133,192,15,136,244,249,137,68,36,20,139,122,252,248, 403 255,15,182,131,233,168,235,15,133,244,251,168,235,15,133,244,247,168,235,
424 139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139,6,15,182, 404 15,132,244,247,252,255,139,233,252,233,244,247,255,248,138,15,182,131,233,
425 204,15,182,232,131,198,4,193,232,16,129,252,253,239,15,130,244,248,139,68, 405 168,235,15,133,244,251,252,233,244,247,248,139,15,182,131,233,168,235,15,
426 36,20,248,2,252,255,36,171,248,3,252,247,216,137,252,233,137,194,232,251, 406 133,244,251,168,235,15,132,244,251,252,255,139,233,15,132,244,247,168,235,
427 1,24,255,248,82,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102, 407 15,132,244,251,248,1,255,139,108,36,48,137,149,233,137,252,242,137,252,233,
428 37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4, 408 232,251,1,21,248,3,139,149,233,248,4,15,182,78,252,253,248,5,15,182,110,252,
429 139,68,36,8,195,255,248,145,102,15,252,239,210,102,15,118,210,102,15,115, 409 252,15,183,70,252,254,252,255,164,253,171,233,248,140,131,198,4,139,77,232,
430 210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84, 410 137,76,36,20,252,233,244,4,248,141,255,139,106,252,248,139,173,233,15,182,
431 202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242, 411 133,233,141,4,194,139,108,36,48,137,149,233,137,133,233,137,252,242,141,139,
412 233,137,171,233,137,116,36,24,232,251,1,22,252,233,244,3,255,248,142,137,
413 116,36,24,255,248,143,255,137,116,36,24,131,206,1,248,1,255,141,68,194,252,
414 248,139,108,36,48,137,149,233,137,133,233,137,252,242,137,252,233,232,251,
415 1,23,199,68,36,24,0,0,0,0,255,131,230,252,254,255,139,149,233,137,193,139,
416 133,233,41,208,137,205,15,182,78,252,253,193,232,3,131,192,1,252,255,229,
417 248,144,255,85,141,108,36,12,85,83,82,81,80,15,182,69,252,252,138,101,252,
418 248,137,125,252,252,137,117,252,248,139,93,0,139,139,233,199,131,233,237,
419 137,131,233,137,139,233,129,252,236,239,252,242,15,17,125,216,252,242,15,
420 17,117,208,252,242,15,17,109,200,252,242,15,17,101,192,252,242,15,17,93,184,
421 252,242,15,17,85,176,252,242,15,17,77,168,252,242,15,17,69,160,139,171,233,
422 139,147,233,137,171,233,199,131,233,0,0,0,0,137,149,233,141,84,36,16,141,
423 139,233,232,251,1,24,139,141,233,129,225,239,137,204,137,169,233,139,149,
424 233,139,177,233,255,248,145,255,133,192,15,136,244,249,137,68,36,20,139,122,
425 252,248,139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139,6,
426 15,182,204,15,182,232,131,198,4,193,232,16,129,252,253,239,15,130,244,248,
427 139,68,36,20,248,2,252,255,36,171,248,3,252,247,216,137,252,233,137,194,232,
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 4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,
430 36,4,139,68,36,8,195,255,248,146,102,15,252,239,210,102,15,118,210,102,15,
431 115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,
432 84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,
432 15,92,203,102,15,86,202,184,0,0,252,240,63,102,15,110,208,102,15,112,210, 433 15,92,203,102,15,86,202,184,0,0,252,240,63,102,15,110,208,102,15,112,210,
433 81,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195, 434 81,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,
434 248,84,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,252, 435 248,85,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,252,
435 255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68, 436 255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,
436 36,8,195,255,248,146,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184, 437 36,8,195,255,248,147,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,
437 0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,102,15, 438 0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,102,15,
438 46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102, 439 46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,
439 15,86,202,184,0,0,252,240,191,102,15,110,208,102,15,112,210,81,252,242,15, 440 15,86,202,184,0,0,252,240,191,102,15,110,208,102,15,112,210,81,252,242,15,
440 194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,104,255, 441 194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,105,255,
441 217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217, 442 217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217,
442 108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,147,102,15,252, 443 108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,148,102,15,252,
443 239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102, 444 239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102,
444 15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15, 445 15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,
445 85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,184,0,0,252,240,63,102, 446 85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,184,0,0,252,240,63,102,
446 15,110,216,102,15,112,219,81,252,242,15,194,193,1,102,15,84,195,252,242,15, 447 15,110,216,102,15,112,219,81,252,242,15,194,193,1,102,15,84,195,252,242,15,
447 92,200,102,15,86,202,15,40,193,248,1,195,248,148,255,15,40,232,252,242,15, 448 92,200,102,15,86,202,15,40,193,248,1,195,248,149,255,15,40,232,252,242,15,
448 94,193,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102, 449 94,193,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,
449 15,110,216,102,15,112,219,81,15,40,224,102,15,84,226,102,15,46,220,15,134, 450 15,110,216,102,15,112,219,81,15,40,224,102,15,84,226,102,15,46,220,15,134,
450 244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,102,15,86,226,184, 451 244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,102,15,86,226,184,
@@ -453,10 +454,10 @@ static const unsigned char build_actionlist[15694] = {
453 195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216, 454 195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216,
454 252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102, 455 252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,
455 137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195, 456 137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195,
456 255,248,88,217,252,234,222,201,248,149,217,84,36,4,129,124,36,4,0,0,128,127, 457 255,248,89,217,252,234,222,201,248,150,217,84,36,4,129,124,36,4,0,0,128,127,
457 15,132,244,247,129,124,36,4,0,0,128,252,255,15,132,244,248,248,150,217,192, 458 15,132,244,247,129,124,36,4,0,0,128,252,255,15,132,244,248,248,151,217,192,
458 217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221, 459 217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,
459 217,248,1,195,248,2,221,216,217,252,238,195,255,248,107,219,84,36,4,219,68, 460 217,248,1,195,248,2,221,216,217,252,238,195,255,248,108,219,84,36,4,219,68,
460 36,4,255,223,252,233,255,221,252,233,223,224,158,255,15,133,244,254,15,138, 461 36,4,255,223,252,233,255,221,252,233,223,224,158,255,15,133,244,254,15,138,
461 244,255,221,216,139,68,36,4,131,252,248,1,15,142,244,252,248,1,169,1,0,0, 462 244,255,221,216,139,68,36,4,131,252,248,1,15,142,244,252,248,1,169,1,0,0,
462 0,15,133,244,248,216,200,209,232,252,233,244,1,248,2,209,232,15,132,244,251, 463 0,15,133,244,248,216,200,209,232,252,233,244,1,248,2,209,232,15,132,244,251,
@@ -465,14 +466,14 @@ static const unsigned char build_actionlist[15694] = {
465 222,252,241,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,221, 466 222,252,241,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,221,
466 216,217,232,195,248,8,217,84,36,4,217,201,217,84,36,8,139,68,36,4,209,224, 467 216,217,232,195,248,8,217,84,36,4,217,201,217,84,36,8,139,68,36,4,209,224,
467 61,0,0,0,252,255,15,132,244,248,139,68,36,8,209,224,15,132,244,250,61,0,0, 468 61,0,0,0,252,255,15,132,244,248,139,68,36,8,209,224,15,132,244,250,61,0,0,
468 0,252,255,15,132,244,250,217,252,241,252,233,244,150,248,9,255,217,232,255, 469 0,252,255,15,132,244,250,217,252,241,252,233,244,151,248,9,255,217,232,255,
469 223,252,234,255,221,252,234,223,224,158,255,15,132,244,247,217,201,248,1, 470 223,252,234,255,221,252,234,223,224,158,255,15,132,244,247,217,201,248,1,
470 221,216,195,248,2,217,225,217,232,255,15,132,244,249,221,216,217,225,217, 471 221,216,195,248,2,217,225,217,232,255,15,132,244,249,221,216,217,225,217,
471 252,238,184,0,0,0,0,15,146,208,209,200,51,68,36,4,15,137,244,249,217,201, 472 252,238,184,0,0,0,0,15,146,208,209,200,51,68,36,4,15,137,244,249,217,201,
472 248,3,221,217,217,225,195,248,4,131,124,36,4,0,15,141,244,3,221,216,221,216, 473 248,3,221,217,217,225,195,248,4,131,124,36,4,0,15,141,244,3,221,216,221,216,
473 133,192,15,132,244,251,217,252,238,195,248,5,199,68,36,4,0,0,128,127,217, 474 133,192,15,132,244,251,217,252,238,195,248,5,199,68,36,4,0,0,128,127,217,
474 68,36,4,195,255,248,107,255,248,151,252,242,15,45,193,252,242,15,42,208,102, 475 68,36,4,195,255,248,108,255,248,152,252,242,15,45,193,252,242,15,42,208,102,
475 15,46,202,15,133,244,254,15,138,244,255,248,152,131,252,248,1,15,142,244, 476 15,46,202,15,133,244,254,15,138,244,255,248,153,131,252,248,1,15,142,244,
476 252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244, 477 252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244,
477 1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232, 478 1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232,
478 15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252, 479 15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252,
@@ -491,30 +492,30 @@ static const unsigned char build_actionlist[15694] = {
491 102,15,112,210,81,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,136, 492 102,15,112,210,81,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,136,
492 196,15,146,208,48,224,15,133,244,1,248,3,184,0,0,252,240,127,102,15,110,192, 493 196,15,146,208,48,224,15,133,244,1,248,3,184,0,0,252,240,127,102,15,110,192,
493 102,15,112,192,81,195,248,4,102,15,80,193,133,192,15,133,244,3,255,15,87, 494 102,15,112,192,81,195,248,4,102,15,80,193,133,192,15,133,244,3,255,15,87,
494 192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,153,255, 495 192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,154,255,
495 139,68,36,12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247,15,135,244, 496 139,68,36,12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247,15,135,244,
496 248,232,244,82,252,233,244,253,248,1,232,244,84,252,233,244,253,248,2,131, 497 248,232,244,83,252,233,244,253,248,1,232,244,85,252,233,244,253,248,2,131,
497 252,248,3,15,132,244,247,15,135,244,248,232,244,104,255,252,233,244,253,248, 498 252,248,3,15,132,244,247,15,135,244,248,232,244,105,255,252,233,244,253,248,
498 1,252,242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,2,221, 499 1,252,242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,2,221,
499 68,36,4,131,252,248,5,15,130,244,88,15,132,244,149,248,2,131,252,248,7,15, 500 68,36,4,131,252,248,5,15,130,244,89,15,132,244,150,248,2,131,252,248,7,15,
500 132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217, 501 132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,
501 232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135,244, 502 232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135,244,
502 248,255,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131, 503 248,255,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,
503 252,248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242, 504 252,248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,
504 221,216,195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244,82,15,132, 505 221,216,195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244,83,15,132,
505 244,84,131,252,248,3,15,130,244,104,15,135,244,248,217,252,250,195,248,2, 506 244,85,131,252,248,3,15,130,244,105,15,135,244,248,217,252,250,195,248,2,
506 131,252,248,5,15,130,244,88,15,132,244,149,131,252,248,7,15,132,244,247,15, 507 131,252,248,5,15,130,244,89,15,132,244,150,131,252,248,7,15,132,244,247,15,
507 135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232,217,201,217, 508 135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232,217,201,217,
508 252,241,195,248,2,131,252,248,9,15,132,244,247,255,15,135,244,248,217,252, 509 252,241,195,248,2,131,252,248,9,15,132,244,247,255,15,135,244,248,217,252,
509 236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,248,11,15, 510 236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,248,11,15,
510 132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,216,195, 511 132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,216,195,
511 255,248,9,204,255,248,154,255,139,68,36,20,252,242,15,16,68,36,4,252,242, 512 255,248,9,204,255,248,155,255,139,68,36,20,252,242,15,16,68,36,4,252,242,
512 15,16,76,36,12,131,252,248,1,15,132,244,247,15,135,244,248,252,242,15,88, 513 15,16,76,36,12,131,252,248,1,15,132,244,247,15,135,244,248,252,242,15,88,
513 193,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,15,92,193,252, 514 193,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,15,92,193,252,
514 233,244,7,248,2,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,89, 515 233,244,7,248,2,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,89,
515 193,252,233,244,7,248,1,252,242,15,94,193,252,233,244,7,248,2,131,252,248, 516 193,252,233,244,7,248,1,252,242,15,94,193,252,233,244,7,248,2,131,252,248,
516 5,15,132,244,247,255,15,135,244,248,232,244,148,252,233,244,7,248,1,90,232, 517 5,15,132,244,247,255,15,135,244,248,232,244,149,252,233,244,7,248,1,90,232,
517 244,107,82,252,233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244,248, 518 244,108,82,252,233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244,248,
518 184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,233,244,7,248, 519 184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,233,244,7,248,
519 1,102,15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,252,233,244, 520 1,102,15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,252,233,244,
520 7,248,2,255,131,252,248,9,15,135,244,248,221,68,36,4,221,68,36,12,15,132, 521 7,248,2,255,131,252,248,9,15,135,244,248,221,68,36,4,221,68,36,12,15,132,
@@ -523,16 +524,16 @@ static const unsigned char build_actionlist[15694] = {
523 1,252,242,15,95,193,252,233,244,7,248,9,204,255,139,68,36,20,221,68,36,4, 524 1,252,242,15,95,193,252,233,244,7,248,9,204,255,139,68,36,20,221,68,36,4,
524 221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193,195,248, 525 221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193,195,248,
525 1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248,222,201, 526 1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248,222,201,
526 195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,148,15,132,244,107, 527 195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,149,15,132,244,108,
527 131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,248,1, 528 131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,248,1,
528 221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,217, 529 221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,217,
529 252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,15, 530 252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,15,
530 132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219, 531 132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,
531 252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244, 532 252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,
532 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133, 533 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,
533 244,248,217,201,248,2,221,216,195,255,248,155,156,90,137,209,129,252,242, 534 244,248,217,201,248,2,221,216,195,255,248,156,156,90,137,209,129,252,242,
534 0,0,32,0,82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15, 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 162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,248,156, 536 162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,248,157,
536 255,85,137,229,83,137,203,43,163,233,255,137,163,233,255,15,182,139,233,131, 537 255,85,137,229,83,137,203,43,163,233,255,137,163,233,255,15,182,139,233,131,
537 252,233,1,15,136,244,248,248,1,139,132,253,139,233,137,4,140,131,252,233, 538 252,233,1,15,136,244,248,248,1,139,132,253,139,233,137,4,140,131,252,233,
538 1,15,137,244,1,248,2,139,139,233,139,147,233,252,255,147,233,137,131,233, 539 1,15,137,244,1,248,2,139,139,233,139,147,233,252,255,147,233,137,131,233,
@@ -547,230 +548,236 @@ static const unsigned char build_actionlist[15694] = {
547 253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255, 548 253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,
548 221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248, 549 221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,
549 15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,255, 550 15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,255,
550 248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,248,5,57,108,202,4, 551 248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,248,5,255,129,252,253,
551 15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15, 552 239,15,132,244,46,129,124,253,202,4,239,15,132,244,46,255,57,108,202,4,15,
552 132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244, 553 133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,
553 2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252, 554 244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,
554 233,244,45,255,252,247,208,131,198,4,129,124,253,202,4,239,15,133,244,248, 555 246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,
555 139,12,202,59,12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,248,255, 556 45,255,248,3,129,252,253,239,15,133,244,2,252,233,244,46,255,252,247,208,
556 252,242,15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,252,247,208, 557 139,108,202,4,131,198,4,129,252,253,239,15,133,244,249,139,12,202,59,12,135,
557 131,198,4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,239,255,15, 558 255,139,108,202,4,131,198,4,129,252,253,239,15,135,244,249,255,252,242,15,
558 131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,202,255, 559 16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,252,247,208,139,108,
559 15,183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131, 560 202,4,131,198,4,57,197,255,15,133,244,249,15,183,70,252,254,141,180,253,134,
560 198,4,193,232,16,252,255,36,171,255,139,108,194,4,139,4,194,137,108,202,4, 561 233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
561 137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171, 562 248,3,129,252,253,239,15,133,244,2,252,233,244,46,255,15,132,244,248,129,
562 255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182, 563 252,253,239,15,132,244,46,15,183,70,252,254,141,180,253,134,233,248,2,139,
563 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,129,124,253,194,4, 564 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,
564 239,15,135,244,48,255,252,242,15,16,4,194,184,0,0,0,128,102,15,110,200,102, 565 4,131,198,4,129,252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,
565 15,112,201,81,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28, 566 108,202,4,139,44,194,137,44,202,255,15,183,70,252,254,141,180,253,134,233,
566 202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252, 567 248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,
567 242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28, 568 139,108,194,4,139,4,194,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,
568 202,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, 569 131,198,4,193,232,16,252,255,36,171,255,49,252,237,129,124,253,194,4,239,
569 2,129,124,253,194,4,239,15,133,244,50,139,12,194,137,213,232,251,1,18,255, 570 129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
570 252,242,15,42,192,137,252,234,255,137,4,36,137,252,234,219,4,36,255,15,182, 571 252,255,36,171,255,129,124,253,194,4,239,15,135,244,49,255,252,242,15,16,
571 78,252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252, 572 4,194,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,242,15,
572 234,4,239,15,135,244,46,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255, 573 17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253,194,4,239,15,133,
573 221,4,252,234,220,4,199,255,129,124,253,252,234,4,239,15,135,244,47,255,252, 574 244,248,139,4,194,255,15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,
574 242,15,16,4,199,252,242,15,88,4,252,234,255,221,4,199,220,4,252,234,255,129, 575 4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204,15,182,232,131,
575 124,253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15,135,244,49,255, 576 198,4,193,232,16,252,255,36,171,248,2,129,124,253,194,4,239,15,133,244,51,
576 252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255, 577 139,12,194,137,213,232,251,1,19,255,252,242,15,42,192,137,252,234,255,137,
577 252,242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,234,220,36,199, 578 4,36,137,252,234,219,4,36,255,15,182,78,252,253,252,233,244,1,255,15,182,
578 255,252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4,199,220,36,252, 579 252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244,47,255,252,242,
579 234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,4,252,234,220, 580 15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,124,
580 36,194,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,221,4,252,234, 581 253,252,234,4,239,15,135,244,48,255,252,242,15,16,4,199,252,242,15,88,4,252,
581 220,12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,255,221,4,199, 582 234,255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,135,244,
582 220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,255,221,4, 583 50,129,124,253,194,4,239,15,135,244,50,255,252,242,15,16,4,252,234,252,242,
583 252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,4,199,255,221, 584 15,88,4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252,234,252,242,
584 4,252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,4,252,234,255, 585 15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,199,252,242,
585 221,4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242,15,94,4,194, 586 15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,
586 255,221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,15,16,12, 587 252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,
587 199,255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,242,15,16,12, 588 234,252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242,15,16,4,
588 252,234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15, 589 199,252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252,242,15,16,
589 16,12,194,255,221,4,252,234,221,4,194,255,248,157,232,244,148,255,252,233, 590 4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,
590 244,157,255,232,244,107,255,15,182,252,236,15,182,192,141,12,194,41,232,137, 591 16,4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199,255,252,242,
591 76,36,4,137,68,36,8,248,33,139,108,36,48,137,44,36,137,149,233,137,116,36, 592 15,16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252,234,255,252,
592 24,232,251,1,25,139,149,233,133,192,15,133,244,42,15,182,110,252,255,15,182, 593 242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,
593 78,252,253,139,68,252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6, 594 252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,221,4,199,
594 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208, 595 255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,221,4,252,
595 139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198, 596 234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,
596 4,193,232,16,252,255,36,171,255,15,191,192,252,242,15,42,192,252,242,15,17, 597 4,194,255,248,158,232,244,149,255,252,233,244,158,255,232,244,108,255,15,
597 4,202,255,223,70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17, 598 182,252,236,15,182,192,141,12,194,41,232,137,76,36,4,137,68,36,8,248,33,139,
598 4,202,255,221,4,199,221,28,202,255,252,247,208,137,68,202,4,139,6,15,182, 599 108,36,48,137,44,36,137,149,233,137,116,36,24,232,251,1,26,139,149,233,133,
599 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,141,76,202,12,141, 600 192,15,133,244,42,15,182,110,252,255,15,182,78,252,253,139,68,252,234,4,139,
600 68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244, 601 44,252,234,137,68,202,4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,
601 1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139, 602 193,232,16,252,255,36,171,255,252,247,208,139,4,135,199,68,202,4,237,137,
602 106,252,248,139,172,253,133,233,139,173,233,139,69,4,139,109,0,137,68,202, 603 4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,
603 4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 604 15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,223,70,252,254,221,28,
604 171,255,139,106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139, 605 202,255,252,242,15,16,4,199,252,242,15,17,4,202,255,221,4,199,221,28,202,
605 12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235, 606 255,252,247,208,137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,
606 15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 607 16,252,255,36,171,255,141,76,202,12,141,68,194,4,189,237,137,105,252,248,
607 255,36,171,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233, 608 248,1,137,41,131,193,8,57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,
608 235,15,132,244,1,135,213,141,139,233,255,232,251,1,26,137,252,234,252,233, 609 198,4,193,232,16,252,255,36,171,255,139,106,252,248,139,172,253,133,233,139,
609 244,1,255,252,247,208,139,106,252,248,139,172,253,141,233,139,12,135,139, 610 173,233,139,69,4,139,109,0,137,68,202,4,137,44,202,139,6,15,182,204,15,182,
610 133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6, 611 232,131,198,4,193,232,16,252,255,36,171,255,139,106,252,248,139,172,253,141,
611 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,252,246,129, 612 233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,
612 233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233, 613 132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,
613 232,251,1,26,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,15, 614 182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,232,239,129,252,248,
614 16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221, 615 239,15,134,244,1,252,246,129,233,235,15,132,244,1,135,213,141,139,233,255,
615 25,255,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,65, 616 232,251,1,27,137,252,234,252,233,244,1,255,252,247,208,139,106,252,248,139,
616 4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,141, 617 172,253,141,233,139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,
617 180,253,134,233,139,108,36,48,131,189,233,0,15,132,244,247,137,149,233,141, 618 235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
618 20,202,137,252,233,232,251,1,27,139,149,233,248,1,139,6,15,182,204,15,182, 619 252,255,36,171,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,
619 232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,74,252,248,139, 620 244,1,137,213,137,194,141,139,233,232,251,1,27,137,252,234,252,233,244,1,
620 4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,44,36,137,149,233,137,116, 621 255,139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,
621 36,24,232,251,1,28,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237, 622 233,255,252,242,15,17,1,255,221,25,255,252,247,208,139,106,252,248,139,172,
622 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108, 623 253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,
623 36,48,137,149,233,139,139,233,59,139,233,137,116,36,24,15,131,244,251,248, 624 232,16,252,255,36,171,255,141,180,253,134,233,139,108,36,48,131,189,233,0,
624 1,137,193,37,252,255,7,0,0,193,252,233,11,137,76,36,8,61,252,255,7,0,0,15, 625 15,132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,28,139,149,233,
625 132,244,249,248,2,137,44,36,137,68,36,4,232,251,1,29,139,149,233,15,182,78, 626 248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,
627 252,247,208,139,74,252,248,139,4,135,139,108,36,48,137,76,36,8,137,68,36,
628 4,137,44,36,137,149,233,137,116,36,24,232,251,1,29,139,149,233,15,182,78,
626 252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4, 629 252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,
627 193,232,16,252,255,36,171,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233, 630 193,232,16,252,255,36,171,255,139,108,36,48,137,149,233,139,139,233,59,139,
628 232,251,1,30,15,183,70,252,254,252,233,244,1,255,252,247,208,139,108,36,48, 631 233,137,116,36,24,15,131,244,251,248,1,137,193,37,252,255,7,0,0,193,252,233,
629 139,139,233,137,116,36,24,59,139,233,137,149,233,15,131,244,249,248,2,139, 632 11,137,76,36,8,61,252,255,7,0,0,15,132,244,249,248,2,137,44,36,137,68,36,
630 20,135,137,252,233,232,251,1,31,139,149,233,15,182,78,252,253,137,4,202,199, 633 4,232,251,1,30,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,
631 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 634 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,184,1,8,
632 171,248,3,137,252,233,232,251,1,30,15,183,70,252,254,252,247,208,252,233, 635 0,0,252,233,244,2,248,5,137,252,233,232,251,1,31,15,183,70,252,254,252,233,
633 244,2,255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,158, 636 244,1,255,252,247,208,139,108,36,48,139,139,233,137,116,36,24,59,139,233,
634 255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,159,255, 637 137,149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,32,139,
635 15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,36,139,44, 638 149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,
636 252,234,129,124,253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252, 639 182,232,131,198,4,193,232,16,252,255,36,171,248,3,137,252,233,232,251,1,31,
637 242,15,45,192,252,242,15,42,200,102,15,46,193,255,221,4,194,219,20,36,219, 640 15,183,70,252,254,252,247,208,252,233,244,2,255,252,247,208,139,106,252,248,
638 4,36,255,15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120, 641 139,173,233,139,4,135,252,233,244,159,255,252,247,208,139,106,252,248,139,
639 253,4,239,15,132,244,248,139,40,139,64,4,137,44,202,137,68,202,4,248,1,139, 642 173,233,139,4,135,252,233,244,160,255,15,182,252,236,15,182,192,129,124,253,
640 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,131,189, 643 252,234,4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,244,
641 233,0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,244,36,15,182, 644 251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,
642 78,252,253,248,3,255,199,68,202,4,237,252,233,244,1,248,5,129,124,253,194, 645 193,255,221,4,194,219,20,36,219,4,36,255,15,133,244,36,59,133,233,15,131,
643 4,239,15,133,244,36,139,4,194,252,233,244,158,255,15,182,252,236,15,182,192, 646 244,36,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,139,40,139,64,
644 252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,34,139,44,252, 647 4,137,44,202,137,68,202,4,248,1,139,6,15,182,204,15,182,232,131,198,4,193,
645 234,248,158,139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233, 648 232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,249,139,141,233,252,
646 239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244, 649 246,129,233,235,15,132,244,36,15,182,78,252,253,248,3,255,199,68,202,4,237,
647 251,15,182,70,252,253,139,41,139,73,4,137,44,194,137,76,194,4,248,2,255,139, 650 252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,36,139,4,194,252,233,
648 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,15,182, 651 244,159,255,15,182,252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,
649 70,252,253,199,68,194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133, 652 234,4,239,15,133,244,34,139,44,252,234,248,159,139,141,233,35,136,233,105,
650 244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244, 653 201,239,3,141,233,248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,
651 3,252,233,244,34,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239, 654 244,250,129,121,253,4,239,15,132,244,251,15,182,70,252,253,139,41,139,73,
652 15,133,244,35,139,44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,233, 655 4,137,44,194,137,76,194,4,248,2,255,139,6,15,182,204,15,182,232,131,198,4,
653 129,120,253,4,239,15,132,244,248,139,40,139,64,4,137,44,202,137,68,202,4, 656 193,232,16,252,255,36,171,248,3,15,182,70,252,253,199,68,194,4,237,252,233,
654 248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, 657 244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141,233,133,201,15,
655 2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,244, 658 132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,34,255,15,182,252,
656 35,255,15,182,78,252,253,248,3,199,68,202,4,237,252,233,244,1,255,15,182, 659 236,15,182,192,129,124,253,252,234,4,239,15,133,244,35,139,44,252,234,59,
657 252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,139,44,252,234, 660 133,233,15,131,244,35,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,
658 129,124,253,194,4,239,15,135,244,251,255,15,133,244,39,59,133,233,15,131, 661 139,40,139,64,4,137,44,202,137,68,202,4,248,1,139,6,15,182,204,15,182,232,
659 244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246, 662 131,198,4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,249,139,
660 133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8, 663 141,233,252,246,129,233,235,15,132,244,35,255,15,182,78,252,253,248,3,199,
661 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,131, 664 68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,192,129,124,253,252,
662 189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132,244,39, 665 234,4,239,15,133,244,39,139,44,252,234,129,124,253,194,4,239,15,135,244,251,
663 15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,39, 666 255,15,133,244,39,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,
664 139,4,194,252,233,244,159,248,7,128,165,233,235,139,139,233,137,171,233,137, 667 4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,
665 141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182,192,252, 668 202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,
666 247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234, 669 232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,
667 248,159,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,248,1, 670 246,129,233,235,15,132,244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,
668 129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253,4,239, 671 253,194,4,239,15,133,244,39,139,4,194,252,233,244,160,248,7,128,165,233,235,
669 15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15,182, 672 139,139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,
670 70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,6,15,182,204,15,182, 673 182,252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,
671 232,131,198,4,193,232,16,252,255,36,171,248,4,131,189,233,0,15,132,244,2, 674 133,244,37,139,44,252,234,248,160,139,141,233,35,136,233,105,201,239,198,
672 137,76,36,16,139,141,233,252,246,129,233,235,15,132,244,37,139,76,36,16,252, 675 133,233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,
673 233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,201, 676 244,251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,
674 15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,68,36,16,199,68, 677 133,244,253,248,3,15,182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,
675 36,20,237,137,108,36,12,141,68,36,16,137,108,36,4,139,108,36,48,137,68,36, 678 1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,4,131,
676 8,137,44,36,137,149,233,137,116,36,24,232,251,1,32,139,149,233,139,108,36, 679 189,233,0,15,132,244,2,137,76,36,16,139,141,233,252,246,129,233,235,15,132,
677 12,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233,137, 680 244,37,139,76,36,16,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,
678 133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234,4, 681 255,139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,
679 239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133, 682 248,6,137,68,36,16,199,68,36,20,237,137,108,36,12,141,68,36,16,137,108,36,
680 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244, 683 4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,
681 253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182, 684 33,139,149,233,139,108,36,12,137,193,252,233,244,2,248,7,128,165,233,235,
682 232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1, 685 139,131,233,137,171,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,
683 255,139,141,233,252,246,129,233,235,15,132,244,38,15,182,78,252,253,252,233, 686 192,129,124,253,252,234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,
684 244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,141,233,15,182,78, 687 131,244,38,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,
685 252,253,252,233,244,2,255,137,124,36,16,139,60,199,248,1,141,12,202,139,105, 688 246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,
686 252,248,252,246,133,233,235,15,133,244,253,248,2,139,68,36,20,131,232,1,15, 689 8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,131,
687 132,244,250,1,252,248,59,133,233,15,135,244,251,41,252,248,193,231,3,3,189, 690 189,233,0,15,132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,38,
688 233,248,3,139,41,137,47,139,105,4,131,193,8,137,111,4,131,199,8,131,232,1, 691 15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,139,233,137,171,
689 15,133,244,3,248,4,139,124,36,16,139,6,15,182,204,15,182,232,131,198,4,193, 692 233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,124,36,16,139,60,
690 232,16,252,255,36,171,248,5,137,108,36,4,139,108,36,48,137,149,233,137,68, 693 199,248,1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,
691 36,8,137,44,36,137,116,36,24,232,251,1,33,139,149,233,15,182,78,252,253,252, 694 2,139,68,36,20,131,232,1,15,132,244,250,1,252,248,59,133,233,15,135,244,251,
692 233,244,1,248,7,255,128,165,233,235,139,131,233,137,171,233,137,133,233,252, 695 41,252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131,193,8,137,
693 233,244,2,255,3,68,36,20,255,129,124,253,202,4,239,139,44,202,15,133,244, 696 111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,16,139,6,15,182,204,
694 51,141,84,202,8,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182, 697 15,182,232,131,198,4,193,232,16,252,255,36,171,248,5,137,108,36,4,139,108,
695 205,131,198,4,252,255,36,171,255,141,76,202,8,137,215,139,105,252,248,129, 698 36,48,137,149,233,137,68,36,8,137,44,36,137,116,36,24,232,251,1,34,139,149,
696 121,253,252,252,239,15,133,244,28,248,52,139,114,252,252,252,247,198,237, 699 233,15,182,78,252,253,252,233,244,1,248,7,255,128,165,233,235,139,131,233,
697 15,133,244,253,248,1,137,106,252,248,137,68,36,20,131,232,1,15,132,244,249, 700 137,171,233,137,133,233,252,233,244,2,255,3,68,36,20,255,129,124,253,202,
698 248,2,139,41,137,47,139,105,4,131,193,8,137,111,4,131,199,8,131,232,1,15, 701 4,239,139,44,202,15,133,244,52,141,84,202,8,137,114,252,252,139,181,233,139,
699 133,244,2,139,106,252,248,248,3,139,68,36,20,128,189,233,1,15,135,244,251, 702 14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,141,76,202,8,137,
700 248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171, 703 215,139,105,252,248,129,121,253,252,252,239,15,133,244,28,248,53,139,114,
701 248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,253,252,247,209,141, 704 252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137,68,36,20,
702 12,202,139,121,252,248,139,191,233,139,191,233,252,233,244,4,248,7,129,252, 705 131,232,1,15,132,244,249,248,2,139,41,137,47,139,105,4,131,193,8,137,111,
703 238,239,252,247,198,237,15,133,244,254,41,252,242,137,215,139,114,252,252, 706 4,131,199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,20,128,
704 252,233,244,1,248,8,129,198,239,252,233,244,1,255,141,76,202,8,139,105,232, 707 189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15,182,205,
705 139,65,252,236,137,41,137,65,4,139,105,252,240,139,65,252,244,137,105,8,137, 708 131,198,4,252,255,36,171,248,5,255,252,247,198,237,15,133,244,4,15,182,78,
706 65,12,139,105,224,139,65,228,137,105,252,248,137,65,252,252,129,252,248,239, 709 252,253,252,247,209,141,12,202,139,121,252,248,139,191,233,139,191,233,252,
707 184,237,15,133,244,28,137,202,137,114,252,252,139,181,233,139,14,15,182,252, 710 233,244,4,248,7,129,252,238,239,252,247,198,237,15,133,244,254,41,252,242,
708 233,15,182,205,131,198,4,252,255,36,171,255,137,124,36,16,137,92,36,20,139, 711 137,215,139,114,252,252,252,233,244,1,248,8,129,198,239,252,233,244,1,255,
709 108,202,252,240,139,68,202,252,248,139,157,233,131,198,4,139,189,233,248, 712 141,76,202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139,
710 1,57,216,15,131,244,251,129,124,253,199,4,239,15,132,244,250,255,252,242, 713 65,252,244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137,
711 15,42,192,255,219,68,202,252,248,255,139,108,199,4,137,108,202,12,139,44, 714 65,252,252,129,252,248,239,184,237,15,133,244,28,137,202,137,114,252,252,
712 199,137,108,202,8,131,192,1,255,137,68,202,252,248,248,2,15,183,70,252,254, 715 139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,
713 141,180,253,134,233,248,3,139,92,36,20,139,124,36,16,139,6,15,182,204,15, 716 137,124,36,16,137,92,36,20,139,108,202,252,240,139,68,202,252,248,139,157,
714 182,232,131,198,4,193,232,16,252,255,36,171,248,4,131,192,1,255,137,68,202, 717 233,131,198,4,139,189,233,248,1,57,216,15,131,244,251,129,124,253,199,4,239,
715 252,248,255,252,233,244,1,248,5,41,216,248,6,59,133,233,15,135,244,3,105, 718 15,132,244,250,255,252,242,15,42,192,255,219,68,202,252,248,255,139,108,199,
716 252,248,239,3,189,233,129,191,233,239,15,132,244,253,141,92,24,1,139,175, 719 4,137,108,202,12,139,44,199,137,108,202,8,131,192,1,255,137,68,202,252,248,
717 233,139,135,233,137,44,202,137,68,202,4,139,175,233,139,135,233,137,108,202, 720 248,2,15,183,70,252,254,141,180,253,134,233,248,3,139,92,36,20,139,124,36,
718 8,137,68,202,12,137,92,202,252,248,252,233,244,2,248,7,255,131,192,1,252, 721 16,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,4,
719 233,244,6,255,129,124,253,202,252,236,239,15,133,244,251,139,108,202,232, 722 131,192,1,255,137,68,202,252,248,255,252,233,244,1,248,5,41,216,248,6,59,
720 129,124,253,202,252,244,239,15,133,244,251,129,124,253,202,252,252,239,15, 723 133,233,15,135,244,3,105,252,248,239,3,189,233,129,191,233,239,15,132,244,
721 133,244,251,128,189,233,235,15,133,244,251,141,180,253,134,233,199,68,202, 724 253,141,92,24,1,139,175,233,139,135,233,137,44,202,137,68,202,4,139,175,233,
722 252,248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 725 139,135,233,137,108,202,8,137,68,202,12,137,92,202,252,248,252,233,244,2,
723 255,36,171,248,5,198,70,252,252,235,141,180,253,134,233,198,6,235,252,233, 726 248,7,255,131,192,1,252,233,244,6,255,129,124,253,202,252,236,239,15,133,
724 244,1,255,15,182,252,236,15,182,192,137,124,36,16,141,188,253,194,233,141, 727 244,251,139,108,202,232,129,124,253,202,252,244,239,15,133,244,251,129,124,
725 12,202,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233,252,248, 728 253,202,252,252,239,15,133,244,251,128,189,233,235,15,133,244,251,141,180,
726 57,215,15,131,244,248,248,1,139,71,252,248,137,1,139,71,252,252,131,199,8, 729 253,134,233,199,68,202,252,248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,
727 137,65,4,131,193,8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,2,199, 730 131,198,4,193,232,16,252,255,36,171,248,5,198,70,252,252,235,141,180,253,
728 65,4,237,131,193,8,57,252,233,15,130,244,2,248,3,139,124,36,16,139,6,15,182, 731 134,233,198,6,235,252,233,244,1,255,15,182,252,236,15,182,192,137,124,36,
729 204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,5,199,68,36,20,1,0, 732 16,141,188,253,194,233,141,12,202,43,122,252,252,133,252,237,15,132,244,251,
730 0,0,137,208,41,252,248,15,134,244,3,137,197,193,252,237,3,131,197,1,137,108, 733 141,108,252,233,252,248,57,215,15,131,244,248,248,1,139,71,252,248,137,1,
731 36,20,139,108,36,48,1,200,59,133,233,15,135,244,253,248,6,255,139,71,252, 734 139,71,252,252,131,199,8,137,65,4,131,193,8,57,252,233,15,131,244,249,57,
732 248,137,1,139,71,252,252,131,199,8,137,65,4,131,193,8,57,215,15,130,244,6, 735 215,15,130,244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,
733 252,233,244,3,248,7,137,149,233,137,141,233,137,116,36,24,41,215,139,84,36, 736 3,139,124,36,16,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
734 20,131,252,234,1,137,252,233,232,251,1,0,139,149,233,139,141,233,1,215,252, 737 36,171,248,5,199,68,36,20,1,0,0,0,137,208,41,252,248,15,134,244,3,137,197,
735 233,244,6,255,193,225,3,255,248,1,139,114,252,252,137,68,36,20,252,247,198, 738 193,252,237,3,131,197,1,137,108,36,20,139,108,36,48,1,200,59,133,233,15,135,
736 237,15,133,244,253,255,248,13,137,215,131,232,1,15,132,244,249,248,2,139, 739 244,253,248,6,255,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65,4,
737 44,15,137,111,252,248,139,108,15,4,137,111,252,252,131,199,8,131,232,1,15, 740 131,193,8,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,
738 133,244,2,248,3,139,68,36,20,15,182,110,252,255,248,5,57,197,15,135,244,252, 741 137,116,36,24,41,215,139,84,36,20,131,252,234,1,137,252,233,232,251,1,0,139,
739 255,139,108,10,4,137,106,252,252,139,44,10,137,106,252,248,255,248,5,56,70, 742 149,233,139,141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,114,252,
740 252,255,15,135,244,252,255,15,182,78,252,253,252,247,209,141,20,202,139,122, 743 252,137,68,36,20,252,247,198,237,15,133,244,253,255,248,13,137,215,131,232,
741 252,248,139,191,233,139,191,233,139,6,15,182,204,15,182,232,131,198,4,193, 744 1,15,132,244,249,248,2,139,44,15,137,111,252,248,139,108,15,4,137,111,252,
742 232,16,252,255,36,171,248,6,255,199,71,252,252,237,131,199,8,255,199,68,194, 745 252,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,20,15,182,110,252,255,
743 252,244,237,255,131,192,1,252,233,244,5,248,7,141,174,233,252,247,197,237, 746 248,5,57,197,15,135,244,252,255,139,108,10,4,137,106,252,252,139,44,10,137,
744 15,133,244,14,41,252,234,255,1,252,233,255,137,252,245,209,252,237,129,229, 747 106,252,248,255,248,5,56,70,252,255,15,135,244,252,255,15,182,78,252,253,
745 239,102,131,172,253,43,233,1,15,132,244,140,255,141,12,202,255,129,121,253, 748 252,247,209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,
746 4,239,15,135,244,53,129,121,253,12,239,15,135,244,53,255,139,105,20,255,129, 749 204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,6,255,199,71,252,252,
747 252,253,239,15,135,244,53,255,252,242,15,16,1,252,242,15,16,73,8,255,252, 750 237,131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,
748 242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,249,255,15,140,244, 751 7,141,174,233,252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,255,
749 249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221,1,255,220, 752 137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,141,
750 65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,15,140,244, 753 255,141,12,202,255,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,
751 247,255,217,201,248,1,255,15,183,70,252,254,255,15,131,244,248,141,180,253, 754 135,244,54,255,139,105,20,255,129,252,253,239,15,135,244,54,255,252,242,15,
752 134,233,255,141,180,253,134,233,15,183,70,252,254,15,131,245,255,15,130,244, 755 16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,
753 248,141,180,253,134,233,255,248,3,102,15,46,193,252,233,244,1,255,141,12, 756 15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,
754 202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,139,41,137, 757 24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,
755 105,252,248,252,233,245,255,141,180,253,134,233,139,1,137,105,252,252,137, 758 247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70,252,254,
756 65,252,248,255,139,139,233,139,4,129,139,128,233,139,108,36,48,137,147,233, 759 255,15,131,244,248,141,180,253,134,233,255,141,180,253,134,233,15,183,70,
757 137,171,233,252,255,224,255,141,180,253,134,233,139,6,15,182,204,15,182,232, 760 252,254,15,131,245,255,15,130,244,248,141,180,253,134,233,255,248,3,102,15,
758 131,198,4,193,232,16,252,255,36,171,255,137,252,245,209,252,237,129,229,239, 761 46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244,
759 102,131,172,253,43,233,1,15,132,244,142,255,139,190,233,139,108,36,48,141, 762 247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253,
760 12,202,59,141,233,15,135,244,23,15,182,142,233,57,200,15,134,244,249,248, 763 134,233,139,1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,139,
761 2,255,15,183,70,252,254,252,233,245,255,248,3,199,68,194,252,252,237,131, 764 128,233,139,108,36,48,137,147,233,137,171,233,252,255,224,255,141,180,253,
762 192,1,57,200,15,134,244,3,252,233,244,2,255,141,44,197,237,141,4,194,139, 765 134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,
763 122,252,248,137,104,252,252,137,120,252,248,139,108,36,48,141,12,200,59,141, 766 137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244,143,
764 233,15,135,244,22,137,209,137,194,15,182,174,233,133,252,237,15,132,244,248, 767 255,139,190,233,139,108,36,48,141,12,202,59,141,233,15,135,244,23,15,182,
765 248,1,131,193,8,57,209,15,131,244,249,139,121,252,248,137,56,139,121,252, 768 142,233,57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,233,245,255,
766 252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,244,1,248, 769 248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,
767 2,255,139,190,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 770 255,141,44,197,237,141,4,194,139,122,252,248,137,104,252,252,137,120,252,
768 36,171,255,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,3,252,233, 771 248,139,108,36,48,141,12,200,59,141,233,15,135,244,22,137,209,137,194,15,
769 244,2,255,139,106,252,248,139,189,233,139,108,36,48,141,68,194,252,248,137, 772 182,174,233,133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244,
770 149,233,141,136,233,59,141,233,137,133,233,255,137,44,36,255,137,124,36,4, 773 249,139,121,252,248,137,56,139,121,252,252,137,120,4,131,192,8,199,65,252,
771 137,44,36,255,15,135,244,21,199,131,233,237,255,252,255,215,255,252,255,147, 774 252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233,139,6,15,182,204,
772 233,255,199,131,233,237,139,149,233,141,12,194,252,247,217,3,141,233,139, 775 15,182,232,131,198,4,193,232,16,252,255,36,171,255,248,3,199,64,4,237,131,
773 114,252,252,252,233,244,12,255,254,0 776 192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139,106,252,248,139,189,
777 233,139,108,36,48,141,68,194,252,248,137,149,233,141,136,233,59,141,233,137,
778 133,233,255,137,44,36,255,137,124,36,4,137,44,36,255,15,135,244,21,199,131,
779 233,237,255,252,255,215,255,252,255,147,233,255,199,131,233,237,139,149,233,
780 141,12,194,252,247,217,3,141,233,139,114,252,252,252,233,244,12,255,254,0
774}; 781};
775 782
776enum { 783enum {
@@ -810,6 +817,7 @@ enum {
810 GLOB_cont_condt, 817 GLOB_cont_condt,
811 GLOB_cont_condf, 818 GLOB_cont_condf,
812 GLOB_vmeta_equal, 819 GLOB_vmeta_equal,
820 GLOB_vmeta_equal_cd,
813 GLOB_vmeta_arith_vn, 821 GLOB_vmeta_arith_vn,
814 GLOB_vmeta_arith_nv, 822 GLOB_vmeta_arith_nv,
815 GLOB_vmeta_unm, 823 GLOB_vmeta_unm,
@@ -963,6 +971,7 @@ static const char *const globnames[] = {
963 "cont_condt", 971 "cont_condt",
964 "cont_condf", 972 "cont_condf",
965 "vmeta_equal", 973 "vmeta_equal",
974 "vmeta_equal_cd",
966 "vmeta_arith_vn", 975 "vmeta_arith_vn",
967 "vmeta_arith_nv", 976 "vmeta_arith_nv",
968 "vmeta_unm", 977 "vmeta_unm",
@@ -1085,6 +1094,7 @@ static const char *const extnames[] = {
1085 "lj_meta_tset", 1094 "lj_meta_tset",
1086 "lj_meta_comp", 1095 "lj_meta_comp",
1087 "lj_meta_equal", 1096 "lj_meta_equal",
1097 "lj_meta_equal_cd@8",
1088 "lj_meta_arith", 1098 "lj_meta_arith",
1089 "lj_meta_len@8", 1099 "lj_meta_len@8",
1090 "lj_meta_call", 1100 "lj_meta_call",
@@ -1160,428 +1170,432 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1160 } 1170 }
1161 dasm_put(Dst, 1057, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base)); 1171 dasm_put(Dst, 1057, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
1162 dasm_put(Dst, 1251, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); 1172 dasm_put(Dst, 1251, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
1163 dasm_put(Dst, 1358, Dt1(->base), Dt1(->base), FRAME_CONT); 1173 dasm_put(Dst, 1358);
1164 dasm_put(Dst, 1482, 2+1, Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC); 1174#if LJ_HASFFI
1165 dasm_put(Dst, 1663, 1+1, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX); 1175 dasm_put(Dst, 1373, Dt1(->base));
1176#endif
1177 dasm_put(Dst, 1404, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1);
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);
1179 dasm_put(Dst, 1712, 1+1, ~LJ_TNUMX);
1166 if (cmov) { 1180 if (cmov) {
1167 dasm_put(Dst, 1765); 1181 dasm_put(Dst, 1799);
1168 } else { 1182 } else {
1169 dasm_put(Dst, 1769); 1183 dasm_put(Dst, 1803);
1170 } 1184 }
1171 dasm_put(Dst, 1778, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB); 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);
1172 dasm_put(Dst, 1861, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); 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);
1173 dasm_put(Dst, 1919, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1); 1187 dasm_put(Dst, 1953, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1);
1174 dasm_put(Dst, 1982, 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)); 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));
1175 dasm_put(Dst, 2054, 2+1, LJ_TTAB, 1+1, LJ_TISNUM); 1189 dasm_put(Dst, 2088, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
1176 if (sse) { 1190 if (sse) {
1177 dasm_put(Dst, 2147); 1191 dasm_put(Dst, 2181);
1178 } else { 1192 } else {
1179 dasm_put(Dst, 2157); 1193 dasm_put(Dst, 2191);
1180 } 1194 }
1181 dasm_put(Dst, 2164, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 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));
1182 dasm_put(Dst, 2230, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); 1196 dasm_put(Dst, 2264, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base));
1183 dasm_put(Dst, 2297, Dt1(->top), Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1); 1197 dasm_put(Dst, 2331, Dt1(->top), Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1);
1184 dasm_put(Dst, 2402, LJ_TTAB); 1198 dasm_put(Dst, 2436, LJ_TTAB);
1185#ifdef LUAJIT_ENABLE_LUA52COMPAT 1199#ifdef LUAJIT_ENABLE_LUA52COMPAT
1186 dasm_put(Dst, 2414, Dt6(->metatable)); 1200 dasm_put(Dst, 2448, Dt6(->metatable));
1187#endif 1201#endif
1188 dasm_put(Dst, 2423, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); 1202 dasm_put(Dst, 2457, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
1189 if (sse) { 1203 if (sse) {
1190 dasm_put(Dst, 2486); 1204 dasm_put(Dst, 2520);
1191 } else { 1205 } else {
1192 dasm_put(Dst, 2525); 1206 dasm_put(Dst, 2559);
1193 } 1207 }
1194 dasm_put(Dst, 2543, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); 1208 dasm_put(Dst, 2577, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
1195 dasm_put(Dst, 2624, 1+1, LJ_TTAB); 1209 dasm_put(Dst, 2658, 1+1, LJ_TTAB);
1196#ifdef LUAJIT_ENABLE_LUA52COMPAT 1210#ifdef LUAJIT_ENABLE_LUA52COMPAT
1197 dasm_put(Dst, 2414, Dt6(->metatable)); 1211 dasm_put(Dst, 2448, Dt6(->metatable));
1198#endif 1212#endif
1199 dasm_put(Dst, 2644, Dt8(->upvalue[0]), LJ_TFUNC); 1213 dasm_put(Dst, 2678, Dt8(->upvalue[0]), LJ_TFUNC);
1200 if (sse) { 1214 if (sse) {
1201 dasm_put(Dst, 2665); 1215 dasm_put(Dst, 2699);
1202 } else { 1216 } else {
1203 dasm_put(Dst, 2675); 1217 dasm_put(Dst, 2709);
1204 } 1218 }
1205 dasm_put(Dst, 2682, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC); 1219 dasm_put(Dst, 2716, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
1206 dasm_put(Dst, 2746, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top)); 1220 dasm_put(Dst, 2780, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
1207 dasm_put(Dst, 2834, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1221 dasm_put(Dst, 2868, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1208 dasm_put(Dst, 2935, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE); 1222 dasm_put(Dst, 2969, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
1209 dasm_put(Dst, 3049, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe)); 1223 dasm_put(Dst, 3083, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
1210 dasm_put(Dst, 3147, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); 1224 dasm_put(Dst, 3181, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
1211 dasm_put(Dst, 3213, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack)); 1225 dasm_put(Dst, 3247, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
1212 dasm_put(Dst, 3314, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME); 1226 dasm_put(Dst, 3348, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
1213 dasm_put(Dst, 3427, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); 1227 dasm_put(Dst, 3461, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
1214 if (sse) { 1228 if (sse) {
1215 dasm_put(Dst, 3453, 1+1, LJ_TISNUM); 1229 dasm_put(Dst, 3487, 1+1, LJ_TISNUM);
1216 } else { 1230 } else {
1217 dasm_put(Dst, 3522, 1+1, LJ_TISNUM); 1231 dasm_put(Dst, 3556, 1+1, LJ_TISNUM);
1218 } 1232 }
1219 dasm_put(Dst, 3558, 1+1, FRAME_TYPE, LJ_TNIL); 1233 dasm_put(Dst, 3592, 1+1, FRAME_TYPE, LJ_TNIL);
1220 if (sse) { 1234 if (sse) {
1221 dasm_put(Dst, 3648, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1235 dasm_put(Dst, 3682, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1222 dasm_put(Dst, 3710, 1+1, LJ_TISNUM); 1236 dasm_put(Dst, 3744, 1+1, LJ_TISNUM);
1223 } else { 1237 } else {
1224 dasm_put(Dst, 3740, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1238 dasm_put(Dst, 3774, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1225 dasm_put(Dst, 3799, 1+1, LJ_TISNUM); 1239 dasm_put(Dst, 3833, 1+1, LJ_TISNUM);
1226 } 1240 }
1227 dasm_put(Dst, 3826, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1241 dasm_put(Dst, 3860, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1228 dasm_put(Dst, 3895, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1242 dasm_put(Dst, 3929, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1229 dasm_put(Dst, 3952, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); 1243 dasm_put(Dst, 3986, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
1230 dasm_put(Dst, 4015, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); 1244 dasm_put(Dst, 4049, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
1231 dasm_put(Dst, 4105); 1245 dasm_put(Dst, 4139);
1232 if (sse) { 1246 if (sse) {
1233 dasm_put(Dst, 4117, 1+1, LJ_TISNUM); 1247 dasm_put(Dst, 4151, 1+1, LJ_TISNUM);
1234 } else { 1248 } else {
1235 dasm_put(Dst, 4148, 1+1, LJ_TISNUM); 1249 dasm_put(Dst, 4182, 1+1, LJ_TISNUM);
1236 } 1250 }
1237 dasm_put(Dst, 4173); 1251 dasm_put(Dst, 4207);
1238 if (sse) { 1252 if (sse) {
1239 dasm_put(Dst, 4187, 1+1, LJ_TISNUM); 1253 dasm_put(Dst, 4221, 1+1, LJ_TISNUM);
1240 } else { 1254 } else {
1241 dasm_put(Dst, 4218, 1+1, LJ_TISNUM); 1255 dasm_put(Dst, 4252, 1+1, LJ_TISNUM);
1242 } 1256 }
1243 dasm_put(Dst, 4243); 1257 dasm_put(Dst, 4277);
1244 if (sse) { 1258 if (sse) {
1245 dasm_put(Dst, 4257, 1+1, LJ_TISNUM); 1259 dasm_put(Dst, 4291, 1+1, LJ_TISNUM);
1246 } else { 1260 } else {
1247 dasm_put(Dst, 4288, 1+1, LJ_TISNUM); 1261 dasm_put(Dst, 4322, 1+1, LJ_TISNUM);
1248 } 1262 }
1249 dasm_put(Dst, 4313); 1263 dasm_put(Dst, 4347);
1250 if (sse) { 1264 if (sse) {
1251 dasm_put(Dst, 4329, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1265 dasm_put(Dst, 4363, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1252 } else { 1266 } else {
1253 dasm_put(Dst, 4368, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); 1267 dasm_put(Dst, 4402, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
1254 } 1268 }
1255 dasm_put(Dst, 4401, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); 1269 dasm_put(Dst, 4435, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
1256 dasm_put(Dst, 4466, 1+1, LJ_TISNUM); 1270 dasm_put(Dst, 4500, 1+1, LJ_TISNUM);
1257 if (sse) { 1271 if (sse) {
1258 dasm_put(Dst, 4565); 1272 dasm_put(Dst, 4599);
1259 } else { 1273 } else {
1260 dasm_put(Dst, 4571); 1274 dasm_put(Dst, 4605);
1261 } 1275 }
1262 dasm_put(Dst, 4580); 1276 dasm_put(Dst, 4614);
1263 if (sse) { 1277 if (sse) {
1264 dasm_put(Dst, 4605); 1278 dasm_put(Dst, 4639);
1265 } else { 1279 } else {
1266 dasm_put(Dst, 4611); 1280 dasm_put(Dst, 4645);
1267 } 1281 }
1268 dasm_put(Dst, 4614, 1+2); 1282 dasm_put(Dst, 4648, 1+2);
1269 if (sse) { 1283 if (sse) {
1270 dasm_put(Dst, 4623); 1284 dasm_put(Dst, 4657);
1271 } else { 1285 } else {
1272 dasm_put(Dst, 4631); 1286 dasm_put(Dst, 4665);
1273 } 1287 }
1274 dasm_put(Dst, 4639); 1288 dasm_put(Dst, 4673);
1275 if (sse) { 1289 if (sse) {
1276 dasm_put(Dst, 4642); 1290 dasm_put(Dst, 4676);
1277 } else { 1291 } else {
1278 dasm_put(Dst, 4674); 1292 dasm_put(Dst, 4708);
1279 } 1293 }
1280 dasm_put(Dst, 4693); 1294 dasm_put(Dst, 4727);
1281 if (sse) { 1295 if (sse) {
1282 dasm_put(Dst, 4709, 1+1, LJ_TISNUM); 1296 dasm_put(Dst, 4743, 1+1, LJ_TISNUM);
1283 } else { 1297 } else {
1284 dasm_put(Dst, 4734, 1+1, LJ_TISNUM); 1298 dasm_put(Dst, 4768, 1+1, LJ_TISNUM);
1285 } 1299 }
1286 dasm_put(Dst, 4756); 1300 dasm_put(Dst, 4790);
1287 if (sse) { 1301 if (sse) {
1288 dasm_put(Dst, 4778); 1302 dasm_put(Dst, 4812);
1289 } else { 1303 } else {
1290 dasm_put(Dst, 4804); 1304 dasm_put(Dst, 4838);
1291 } 1305 }
1292 dasm_put(Dst, 4821, 1+2); 1306 dasm_put(Dst, 4855, 1+2);
1293 if (sse) { 1307 if (sse) {
1294 dasm_put(Dst, 4861); 1308 dasm_put(Dst, 4895);
1295 } else { 1309 } else {
1296 dasm_put(Dst, 4869); 1310 dasm_put(Dst, 4903);
1297 } 1311 }
1298 dasm_put(Dst, 4879, 2+1, LJ_TISNUM, LJ_TISNUM); 1312 dasm_put(Dst, 4913, 2+1, LJ_TISNUM, LJ_TISNUM);
1299 if (sse) { 1313 if (sse) {
1300 dasm_put(Dst, 4931, 2+1, LJ_TISNUM, LJ_TISNUM); 1314 dasm_put(Dst, 4965, 2+1, LJ_TISNUM, LJ_TISNUM);
1301 } else { 1315 } else {
1302 dasm_put(Dst, 4978, 2+1, LJ_TISNUM, LJ_TISNUM); 1316 dasm_put(Dst, 5012, 2+1, LJ_TISNUM, LJ_TISNUM);
1303 } 1317 }
1304 if (sse) { 1318 if (sse) {
1305 dasm_put(Dst, 5019, 1+1, LJ_TISNUM, LJ_TISNUM); 1319 dasm_put(Dst, 5053, 1+1, LJ_TISNUM, LJ_TISNUM);
1306 } else { 1320 } else {
1307 dasm_put(Dst, 5090, 1+1, LJ_TISNUM, LJ_TISNUM); 1321 dasm_put(Dst, 5124, 1+1, LJ_TISNUM, LJ_TISNUM);
1308 if (cmov) { 1322 if (cmov) {
1309 dasm_put(Dst, 5143); 1323 dasm_put(Dst, 5177);
1310 } else { 1324 } else {
1311 dasm_put(Dst, 5151); 1325 dasm_put(Dst, 5185);
1312 } 1326 }
1313 dasm_put(Dst, 5082); 1327 dasm_put(Dst, 5116);
1314 } 1328 }
1315 if (sse) { 1329 if (sse) {
1316 dasm_put(Dst, 5172, 1+1, LJ_TISNUM, LJ_TISNUM); 1330 dasm_put(Dst, 5206, 1+1, LJ_TISNUM, LJ_TISNUM);
1317 } else { 1331 } else {
1318 dasm_put(Dst, 5243, 1+1, LJ_TISNUM, LJ_TISNUM); 1332 dasm_put(Dst, 5277, 1+1, LJ_TISNUM, LJ_TISNUM);
1319 if (cmov) { 1333 if (cmov) {
1320 dasm_put(Dst, 5296); 1334 dasm_put(Dst, 5330);
1321 } else { 1335 } else {
1322 dasm_put(Dst, 5304); 1336 dasm_put(Dst, 5338);
1323 } 1337 }
1324 dasm_put(Dst, 5082); 1338 dasm_put(Dst, 5116);
1325 } 1339 }
1326 if (!sse) { 1340 if (!sse) {
1327 dasm_put(Dst, 5325); 1341 dasm_put(Dst, 5359);
1328 } 1342 }
1329 dasm_put(Dst, 5334, 1+1, LJ_TSTR); 1343 dasm_put(Dst, 5368, 1+1, LJ_TSTR);
1330 if (sse) { 1344 if (sse) {
1331 dasm_put(Dst, 5356, Dt5(->len)); 1345 dasm_put(Dst, 5390, Dt5(->len));
1332 } else { 1346 } else {
1333 dasm_put(Dst, 5367, Dt5(->len)); 1347 dasm_put(Dst, 5401, Dt5(->len));
1334 } 1348 }
1335 dasm_put(Dst, 5375, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); 1349 dasm_put(Dst, 5409, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
1336 if (sse) { 1350 if (sse) {
1337 dasm_put(Dst, 5413); 1351 dasm_put(Dst, 5447);
1338 } else { 1352 } else {
1339 dasm_put(Dst, 5423); 1353 dasm_put(Dst, 5457);
1340 } 1354 }
1341 dasm_put(Dst, 5436, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); 1355 dasm_put(Dst, 5470, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
1342 if (sse) { 1356 if (sse) {
1343 dasm_put(Dst, 5471); 1357 dasm_put(Dst, 5505);
1344 } else { 1358 } else {
1345 dasm_put(Dst, 5493); 1359 dasm_put(Dst, 5527);
1346 } 1360 }
1347 dasm_put(Dst, 5513, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); 1361 dasm_put(Dst, 5547, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
1348 dasm_put(Dst, 2142); 1362 dasm_put(Dst, 2176);
1349 if (sse) { 1363 if (sse) {
1350 dasm_put(Dst, 5616); 1364 dasm_put(Dst, 5650);
1351 } else { 1365 } else {
1352 dasm_put(Dst, 5627); 1366 dasm_put(Dst, 5661);
1353 } 1367 }
1354 dasm_put(Dst, 5635, LJ_TSTR, LJ_TISNUM, Dt5(->len)); 1368 dasm_put(Dst, 5669, LJ_TSTR, LJ_TISNUM, Dt5(->len));
1355 if (sse) { 1369 if (sse) {
1356 dasm_put(Dst, 5665); 1370 dasm_put(Dst, 5699);
1357 } else { 1371 } else {
1358 dasm_put(Dst, 5672); 1372 dasm_put(Dst, 5706);
1359 } 1373 }
1360 dasm_put(Dst, 5684, sizeof(GCstr)-1); 1374 dasm_put(Dst, 5718, sizeof(GCstr)-1);
1361 dasm_put(Dst, 5759, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 1375 dasm_put(Dst, 5793, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
1362 dasm_put(Dst, 5818, LJ_TSTR, LJ_TISNUM); 1376 dasm_put(Dst, 5852, LJ_TSTR, LJ_TISNUM);
1363 if (sse) { 1377 if (sse) {
1364 dasm_put(Dst, 5839); 1378 dasm_put(Dst, 5873);
1365 } else { 1379 } else {
1366 dasm_put(Dst, 5846); 1380 dasm_put(Dst, 5880);
1367 } 1381 }
1368 dasm_put(Dst, 5858, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1); 1382 dasm_put(Dst, 5892, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
1369 dasm_put(Dst, 5923, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 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));
1370 dasm_put(Dst, 5986, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); 1384 dasm_put(Dst, 6020, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
1371 dasm_put(Dst, 6057, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1); 1385 dasm_put(Dst, 6091, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
1372 dasm_put(Dst, 6142, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 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));
1373 dasm_put(Dst, 6212, 1+1, LJ_TTAB); 1387 dasm_put(Dst, 6246, 1+1, LJ_TTAB);
1374 if (sse) { 1388 if (sse) {
1375 dasm_put(Dst, 6280); 1389 dasm_put(Dst, 6314);
1376 } else { 1390 } else {
1377 dasm_put(Dst, 6290); 1391 dasm_put(Dst, 6324);
1378 } 1392 }
1379 if (sse) { 1393 if (sse) {
1380 dasm_put(Dst, 6301, 1+1, LJ_TISNUM); 1394 dasm_put(Dst, 6335, 1+1, LJ_TISNUM);
1381 } else { 1395 } else {
1382 dasm_put(Dst, 6358, 1+1, LJ_TISNUM); 1396 dasm_put(Dst, 6392, 1+1, LJ_TISNUM);
1383 } 1397 }
1384 if (sse) { 1398 if (sse) {
1385 dasm_put(Dst, 6402, 1+1, LJ_TISNUM); 1399 dasm_put(Dst, 6436, 1+1, LJ_TISNUM);
1386 } else { 1400 } else {
1387 dasm_put(Dst, 6450, 1+1, LJ_TISNUM); 1401 dasm_put(Dst, 6484, 1+1, LJ_TISNUM);
1388 } 1402 }
1389 dasm_put(Dst, 6490, LJ_TISNUM); 1403 dasm_put(Dst, 6524, LJ_TISNUM);
1390 if (sse) { 1404 if (sse) {
1391 dasm_put(Dst, 6517); 1405 dasm_put(Dst, 6551);
1392 } else { 1406 } else {
1393 dasm_put(Dst, 6534); 1407 dasm_put(Dst, 6568);
1394 } 1408 }
1395 dasm_put(Dst, 6547); 1409 dasm_put(Dst, 6581);
1396 if (sse) { 1410 if (sse) {
1397 dasm_put(Dst, 6555, 1+1, LJ_TISNUM); 1411 dasm_put(Dst, 6589, 1+1, LJ_TISNUM);
1398 } else { 1412 } else {
1399 dasm_put(Dst, 6603, 1+1, LJ_TISNUM); 1413 dasm_put(Dst, 6637, 1+1, LJ_TISNUM);
1400 } 1414 }
1401 dasm_put(Dst, 6490, LJ_TISNUM); 1415 dasm_put(Dst, 6524, LJ_TISNUM);
1402 if (sse) { 1416 if (sse) {
1403 dasm_put(Dst, 6643); 1417 dasm_put(Dst, 6677);
1404 } else { 1418 } else {
1405 dasm_put(Dst, 6660); 1419 dasm_put(Dst, 6694);
1406 } 1420 }
1407 dasm_put(Dst, 6547); 1421 dasm_put(Dst, 6581);
1408 if (sse) { 1422 if (sse) {
1409 dasm_put(Dst, 6673, 1+1, LJ_TISNUM); 1423 dasm_put(Dst, 6707, 1+1, LJ_TISNUM);
1410 } else { 1424 } else {
1411 dasm_put(Dst, 6721, 1+1, LJ_TISNUM); 1425 dasm_put(Dst, 6755, 1+1, LJ_TISNUM);
1412 } 1426 }
1413 dasm_put(Dst, 6490, LJ_TISNUM); 1427 dasm_put(Dst, 6524, LJ_TISNUM);
1414 if (sse) { 1428 if (sse) {
1415 dasm_put(Dst, 6761); 1429 dasm_put(Dst, 6795);
1416 } else { 1430 } else {
1417 dasm_put(Dst, 6778); 1431 dasm_put(Dst, 6812);
1418 } 1432 }
1419 dasm_put(Dst, 6547); 1433 dasm_put(Dst, 6581);
1420 if (sse) { 1434 if (sse) {
1421 dasm_put(Dst, 6791, 1+1, LJ_TISNUM); 1435 dasm_put(Dst, 6825, 1+1, LJ_TISNUM);
1422 } else { 1436 } else {
1423 dasm_put(Dst, 6839, 1+1, LJ_TISNUM); 1437 dasm_put(Dst, 6873, 1+1, LJ_TISNUM);
1424 } 1438 }
1425 dasm_put(Dst, 6879); 1439 dasm_put(Dst, 6913);
1426 if (sse) { 1440 if (sse) {
1427 dasm_put(Dst, 6886, 1+1, LJ_TISNUM); 1441 dasm_put(Dst, 6920, 1+1, LJ_TISNUM);
1428 } else { 1442 } else {
1429 dasm_put(Dst, 6934, 1+1, LJ_TISNUM); 1443 dasm_put(Dst, 6968, 1+1, LJ_TISNUM);
1430 } 1444 }
1431 dasm_put(Dst, 6974); 1445 dasm_put(Dst, 7008);
1432 if (sse) { 1446 if (sse) {
1433 dasm_put(Dst, 6978); 1447 dasm_put(Dst, 7012);
1434 } else { 1448 } else {
1435 dasm_put(Dst, 6990); 1449 dasm_put(Dst, 7024);
1436 } 1450 }
1437 dasm_put(Dst, 7003); 1451 dasm_put(Dst, 7037);
1438 if (sse) { 1452 if (sse) {
1439 dasm_put(Dst, 7014, 2+1, LJ_TISNUM, LJ_TISNUM); 1453 dasm_put(Dst, 7048, 2+1, LJ_TISNUM, LJ_TISNUM);
1440 } else { 1454 } else {
1441 dasm_put(Dst, 7088, 2+1, LJ_TISNUM, LJ_TISNUM); 1455 dasm_put(Dst, 7122, 2+1, LJ_TISNUM, LJ_TISNUM);
1442 } 1456 }
1443 dasm_put(Dst, 7154); 1457 dasm_put(Dst, 7188);
1444 if (sse) { 1458 if (sse) {
1445 dasm_put(Dst, 7163, 2+1, LJ_TISNUM, LJ_TISNUM); 1459 dasm_put(Dst, 7197, 2+1, LJ_TISNUM, LJ_TISNUM);
1446 } else { 1460 } else {
1447 dasm_put(Dst, 7237, 2+1, LJ_TISNUM, LJ_TISNUM); 1461 dasm_put(Dst, 7271, 2+1, LJ_TISNUM, LJ_TISNUM);
1448 } 1462 }
1449 dasm_put(Dst, 7303); 1463 dasm_put(Dst, 7337);
1450 if (sse) { 1464 if (sse) {
1451 dasm_put(Dst, 7313, 2+1, LJ_TISNUM, LJ_TISNUM); 1465 dasm_put(Dst, 7347, 2+1, LJ_TISNUM, LJ_TISNUM);
1452 } else { 1466 } else {
1453 dasm_put(Dst, 7387, 2+1, LJ_TISNUM, LJ_TISNUM); 1467 dasm_put(Dst, 7421, 2+1, LJ_TISNUM, LJ_TISNUM);
1454 } 1468 }
1455 dasm_put(Dst, 7453); 1469 dasm_put(Dst, 7487);
1456 if (sse) { 1470 if (sse) {
1457 dasm_put(Dst, 7463, 2+1, LJ_TISNUM, LJ_TISNUM); 1471 dasm_put(Dst, 7497, 2+1, LJ_TISNUM, LJ_TISNUM);
1458 } else { 1472 } else {
1459 dasm_put(Dst, 7537, 2+1, LJ_TISNUM, LJ_TISNUM); 1473 dasm_put(Dst, 7571, 2+1, LJ_TISNUM, LJ_TISNUM);
1460 } 1474 }
1461 dasm_put(Dst, 7603); 1475 dasm_put(Dst, 7637);
1462 if (sse) { 1476 if (sse) {
1463 dasm_put(Dst, 7612, 2+1, LJ_TISNUM, LJ_TISNUM); 1477 dasm_put(Dst, 7646, 2+1, LJ_TISNUM, LJ_TISNUM);
1464 } else { 1478 } else {
1465 dasm_put(Dst, 7686, 2+1, LJ_TISNUM, LJ_TISNUM); 1479 dasm_put(Dst, 7720, 2+1, LJ_TISNUM, LJ_TISNUM);
1466 } 1480 }
1467 dasm_put(Dst, 7752, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); 1481 dasm_put(Dst, 7786, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
1468 dasm_put(Dst, 7830, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base)); 1482 dasm_put(Dst, 7864, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
1469 dasm_put(Dst, 7954, Dt1(->top), Dt1(->base), Dt1(->top)); 1483 dasm_put(Dst, 7988, Dt1(->top), Dt1(->base), Dt1(->top));
1470#if LJ_HASJIT 1484#if LJ_HASJIT
1471 dasm_put(Dst, 7992, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); 1485 dasm_put(Dst, 8026, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
1472#endif 1486#endif
1473 dasm_put(Dst, 8023, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE); 1487 dasm_put(Dst, 8057, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
1474 dasm_put(Dst, 8074, Dt1(->base), Dt1(->base), GG_DISP2STATIC); 1488 dasm_put(Dst, 8108, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
1475#if LJ_HASJIT 1489#if LJ_HASJIT
1476 dasm_put(Dst, 8140, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L)); 1490 dasm_put(Dst, 8174, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
1477#endif 1491#endif
1478 dasm_put(Dst, 8186); 1492 dasm_put(Dst, 8220);
1479#if LJ_HASJIT 1493#if LJ_HASJIT
1480 dasm_put(Dst, 8018); 1494 dasm_put(Dst, 8052);
1481#endif 1495#endif
1482 dasm_put(Dst, 8193); 1496 dasm_put(Dst, 8227);
1483#if LJ_HASJIT 1497#if LJ_HASJIT
1484 dasm_put(Dst, 8196); 1498 dasm_put(Dst, 8230);
1485#endif 1499#endif
1486 dasm_put(Dst, 8206, Dt1(->base), Dt1(->top)); 1500 dasm_put(Dst, 8240, Dt1(->base), Dt1(->top));
1487#if LJ_HASJIT 1501#if LJ_HASJIT
1488 dasm_put(Dst, 8240); 1502 dasm_put(Dst, 8274);
1489#endif 1503#endif
1490 dasm_put(Dst, 8245, Dt1(->base), Dt1(->top)); 1504 dasm_put(Dst, 8279, Dt1(->base), Dt1(->top));
1491#if LJ_HASJIT 1505#if LJ_HASJIT
1492 dasm_put(Dst, 8274, 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); 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);
1493#endif 1507#endif
1494 dasm_put(Dst, 8417); 1508 dasm_put(Dst, 8451);
1495#if LJ_HASJIT 1509#if LJ_HASJIT
1496 dasm_put(Dst, 8420, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF); 1510 dasm_put(Dst, 8454, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
1497#endif 1511#endif
1498 dasm_put(Dst, 8498); 1512 dasm_put(Dst, 8532);
1499 if (!sse) { 1513 if (!sse) {
1500 dasm_put(Dst, 8501); 1514 dasm_put(Dst, 8535);
1501 } 1515 }
1502 dasm_put(Dst, 8546); 1516 dasm_put(Dst, 8580);
1503 if (!sse) { 1517 if (!sse) {
1504 dasm_put(Dst, 8648); 1518 dasm_put(Dst, 8682);
1505 } 1519 }
1506 dasm_put(Dst, 8693); 1520 dasm_put(Dst, 8727);
1507 if (!sse) { 1521 if (!sse) {
1508 dasm_put(Dst, 8795); 1522 dasm_put(Dst, 8829);
1509 } 1523 }
1510 dasm_put(Dst, 8834); 1524 dasm_put(Dst, 8868);
1511 if (sse) { 1525 if (sse) {
1512 dasm_put(Dst, 8939); 1526 dasm_put(Dst, 8973);
1513 } else { 1527 } else {
1514 dasm_put(Dst, 9069); 1528 dasm_put(Dst, 9103);
1515 } 1529 }
1516 dasm_put(Dst, 9116); 1530 dasm_put(Dst, 9150);
1517 if (!sse) { 1531 if (!sse) {
1518 dasm_put(Dst, 9190); 1532 dasm_put(Dst, 9224);
1519 if (cmov) { 1533 if (cmov) {
1520 dasm_put(Dst, 9201); 1534 dasm_put(Dst, 9235);
1521 } else { 1535 } else {
1522 dasm_put(Dst, 9205); 1536 dasm_put(Dst, 9239);
1523 } 1537 }
1524 dasm_put(Dst, 9212); 1538 dasm_put(Dst, 9246);
1525 dasm_put(Dst, 9286); 1539 dasm_put(Dst, 9320);
1526 dasm_put(Dst, 9386); 1540 dasm_put(Dst, 9420);
1527 if (cmov) { 1541 if (cmov) {
1528 dasm_put(Dst, 9389); 1542 dasm_put(Dst, 9423);
1529 } else { 1543 } else {
1530 dasm_put(Dst, 9393); 1544 dasm_put(Dst, 9427);
1531 } 1545 }
1532 dasm_put(Dst, 9400); 1546 dasm_put(Dst, 9434);
1533 if (cmov) { 1547 if (cmov) {
1534 dasm_put(Dst, 9201); 1548 dasm_put(Dst, 9235);
1535 } else { 1549 } else {
1536 dasm_put(Dst, 9205); 1550 dasm_put(Dst, 9239);
1537 } 1551 }
1538 dasm_put(Dst, 9418); 1552 dasm_put(Dst, 9452);
1539 } else { 1553 } else {
1540 dasm_put(Dst, 9497); 1554 dasm_put(Dst, 9531);
1541 } 1555 }
1542 dasm_put(Dst, 9500); 1556 dasm_put(Dst, 9534);
1543 dasm_put(Dst, 9585); 1557 dasm_put(Dst, 9619);
1544 dasm_put(Dst, 9716); 1558 dasm_put(Dst, 9750);
1545 dasm_put(Dst, 9915); 1559 dasm_put(Dst, 9949);
1546#if LJ_HASJIT 1560#if LJ_HASJIT
1547 if (sse) { 1561 if (sse) {
1548 dasm_put(Dst, 9938); 1562 dasm_put(Dst, 9972);
1549 dasm_put(Dst, 9995); 1563 dasm_put(Dst, 10029);
1550 dasm_put(Dst, 10086); 1564 dasm_put(Dst, 10120);
1551 } else { 1565 } else {
1552 dasm_put(Dst, 10128); 1566 dasm_put(Dst, 10162);
1553 dasm_put(Dst, 10220); 1567 dasm_put(Dst, 10254);
1554 } 1568 }
1555 dasm_put(Dst, 10266); 1569 dasm_put(Dst, 10300);
1556#endif 1570#endif
1557 dasm_put(Dst, 10270); 1571 dasm_put(Dst, 10304);
1558 if (sse) { 1572 if (sse) {
1559 dasm_put(Dst, 10273); 1573 dasm_put(Dst, 10307);
1560 dasm_put(Dst, 10378); 1574 dasm_put(Dst, 10412);
1561 dasm_put(Dst, 10461); 1575 dasm_put(Dst, 10495);
1562 } else { 1576 } else {
1563 dasm_put(Dst, 10533); 1577 dasm_put(Dst, 10567);
1564 dasm_put(Dst, 10616); 1578 dasm_put(Dst, 10650);
1565 if (cmov) { 1579 if (cmov) {
1566 dasm_put(Dst, 10671); 1580 dasm_put(Dst, 10705);
1567 } else { 1581 } else {
1568 dasm_put(Dst, 10690); 1582 dasm_put(Dst, 10724);
1569 } 1583 }
1570 dasm_put(Dst, 10266); 1584 dasm_put(Dst, 10300);
1571 } 1585 }
1572 dasm_put(Dst, 10731); 1586 dasm_put(Dst, 10765);
1573#if LJ_HASFFI 1587#if LJ_HASFFI
1574#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) 1588#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
1575 dasm_put(Dst, 10787, DtE(->spadj)); 1589 dasm_put(Dst, 10821, DtE(->spadj));
1576#if LJ_TARGET_WINDOWS 1590#if LJ_TARGET_WINDOWS
1577 dasm_put(Dst, 10797, DtE(->spadj)); 1591 dasm_put(Dst, 10831, DtE(->spadj));
1578#endif 1592#endif
1579 dasm_put(Dst, 10801, DtE(->nsp), offsetof(CCallState, stack), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->func), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->resx87), DtE(->fpr[0].d[0])); 1593 dasm_put(Dst, 10835, 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]));
1580 dasm_put(Dst, 10871, DtE(->fpr[0].f[0])); 1594 dasm_put(Dst, 10905, DtE(->fpr[0].f[0]));
1581#if LJ_TARGET_WINDOWS 1595#if LJ_TARGET_WINDOWS
1582 dasm_put(Dst, 10877, DtE(->spadj)); 1596 dasm_put(Dst, 10911, DtE(->spadj));
1583#endif 1597#endif
1584 dasm_put(Dst, 10881); 1598 dasm_put(Dst, 10915);
1585#endif 1599#endif
1586} 1600}
1587 1601
@@ -1589,7 +1603,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1589static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1603static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1590{ 1604{
1591 int vk = 0; 1605 int vk = 0;
1592 dasm_put(Dst, 10888, defop); 1606 dasm_put(Dst, 10922, defop);
1593 1607
1594 switch (op) { 1608 switch (op) {
1595 1609
@@ -1598,639 +1612,657 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1598 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1612 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1599 1613
1600 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1614 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1601 dasm_put(Dst, 10890, LJ_TISNUM, LJ_TISNUM); 1615 dasm_put(Dst, 10924, LJ_TISNUM, LJ_TISNUM);
1602 if (sse) { 1616 if (sse) {
1603 dasm_put(Dst, 10911); 1617 dasm_put(Dst, 10945);
1604 } else { 1618 } else {
1605 dasm_put(Dst, 10926); 1619 dasm_put(Dst, 10960);
1606 if (cmov) { 1620 if (cmov) {
1607 dasm_put(Dst, 10936); 1621 dasm_put(Dst, 10970);
1608 } else { 1622 } else {
1609 dasm_put(Dst, 10942); 1623 dasm_put(Dst, 10976);
1610 } 1624 }
1611 } 1625 }
1612 switch (op) { 1626 switch (op) {
1613 case BC_ISLT: 1627 case BC_ISLT:
1614 dasm_put(Dst, 10949); 1628 dasm_put(Dst, 10983);
1615 break; 1629 break;
1616 case BC_ISGE: 1630 case BC_ISGE:
1617 dasm_put(Dst, 10081); 1631 dasm_put(Dst, 10115);
1618 break; 1632 break;
1619 case BC_ISLE: 1633 case BC_ISLE:
1620 dasm_put(Dst, 6207); 1634 dasm_put(Dst, 6241);
1621 break; 1635 break;
1622 case BC_ISGT: 1636 case BC_ISGT:
1623 dasm_put(Dst, 10954); 1637 dasm_put(Dst, 10988);
1624 break; 1638 break;
1625 default: break; /* Shut up GCC. */ 1639 default: break; /* Shut up GCC. */
1626 } 1640 }
1627 dasm_put(Dst, 10959, -BCBIAS_J*4); 1641 dasm_put(Dst, 10993, -BCBIAS_J*4);
1628 break; 1642 break;
1629 1643
1630 case BC_ISEQV: case BC_ISNEV: 1644 case BC_ISEQV: case BC_ISNEV:
1631 vk = op == BC_ISEQV; 1645 vk = op == BC_ISEQV;
1632 dasm_put(Dst, 10992, LJ_TISNUM, LJ_TISNUM); 1646 dasm_put(Dst, 11026, LJ_TISNUM, LJ_TISNUM);
1633 if (sse) { 1647 if (sse) {
1634 dasm_put(Dst, 11018); 1648 dasm_put(Dst, 11052);
1635 } else { 1649 } else {
1636 dasm_put(Dst, 11030); 1650 dasm_put(Dst, 11064);
1637 if (cmov) { 1651 if (cmov) {
1638 dasm_put(Dst, 10936); 1652 dasm_put(Dst, 10970);
1639 } else { 1653 } else {
1640 dasm_put(Dst, 10942); 1654 dasm_put(Dst, 10976);
1641 } 1655 }
1642 } 1656 }
1643 iseqne_fp: 1657 iseqne_fp:
1644 if (vk) { 1658 if (vk) {
1645 dasm_put(Dst, 11037); 1659 dasm_put(Dst, 11071);
1646 } else { 1660 } else {
1647 dasm_put(Dst, 11046); 1661 dasm_put(Dst, 11080);
1648 } 1662 }
1649 iseqne_end: 1663 iseqne_end:
1650 if (vk) { 1664 if (vk) {
1651 dasm_put(Dst, 11055, -BCBIAS_J*4); 1665 dasm_put(Dst, 11089, -BCBIAS_J*4);
1666 if (!LJ_HASFFI) {
1667 dasm_put(Dst, 4654);
1668 }
1652 } else { 1669 } else {
1653 dasm_put(Dst, 11070, -BCBIAS_J*4); 1670 if (!LJ_HASFFI) {
1671 dasm_put(Dst, 4654);
1672 }
1673 dasm_put(Dst, 11104, -BCBIAS_J*4);
1654 } 1674 }
1655 dasm_put(Dst, 10973); 1675 dasm_put(Dst, 11007);
1656 if (op == BC_ISEQV || op == BC_ISNEV) { 1676 if (op == BC_ISEQV || op == BC_ISNEV) {
1657 dasm_put(Dst, 11085, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 1677 dasm_put(Dst, 11119);
1678 if (LJ_HASFFI) {
1679 dasm_put(Dst, 11122, LJ_TCDATA, LJ_TCDATA);
1680 }
1681 dasm_put(Dst, 11141, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1658 if (vk) { 1682 if (vk) {
1659 dasm_put(Dst, 11143); 1683 dasm_put(Dst, 11197);
1660 } else { 1684 } else {
1661 dasm_put(Dst, 11147); 1685 dasm_put(Dst, 11201);
1662 } 1686 }
1663 dasm_put(Dst, 11153); 1687 dasm_put(Dst, 11207);
1688 } else if (LJ_HASFFI) {
1689 dasm_put(Dst, 11212, LJ_TCDATA);
1664 } 1690 }
1665 break; 1691 break;
1666 case BC_ISEQS: case BC_ISNES: 1692 case BC_ISEQS: case BC_ISNES:
1667 vk = op == BC_ISEQS; 1693 vk = op == BC_ISEQS;
1668 dasm_put(Dst, 11158, LJ_TSTR); 1694 dasm_put(Dst, 11227, LJ_TSTR);
1669 iseqne_test: 1695 iseqne_test:
1670 if (vk) { 1696 if (vk) {
1671 dasm_put(Dst, 11041); 1697 dasm_put(Dst, 11075);
1672 } else { 1698 } else {
1673 dasm_put(Dst, 2829); 1699 dasm_put(Dst, 2863);
1674 } 1700 }
1675 goto iseqne_end; 1701 goto iseqne_end;
1676 case BC_ISEQN: case BC_ISNEN: 1702 case BC_ISEQN: case BC_ISNEN:
1677 vk = op == BC_ISEQN; 1703 vk = op == BC_ISEQN;
1678 dasm_put(Dst, 11181, LJ_TISNUM); 1704 dasm_put(Dst, 11252, LJ_TISNUM);
1679 if (sse) { 1705 if (sse) {
1680 dasm_put(Dst, 11195); 1706 dasm_put(Dst, 11268);
1681 } else { 1707 } else {
1682 dasm_put(Dst, 11207); 1708 dasm_put(Dst, 11280);
1683 if (cmov) { 1709 if (cmov) {
1684 dasm_put(Dst, 10936); 1710 dasm_put(Dst, 10970);
1685 } else { 1711 } else {
1686 dasm_put(Dst, 10942); 1712 dasm_put(Dst, 10976);
1687 } 1713 }
1688 } 1714 }
1689 goto iseqne_fp; 1715 goto iseqne_fp;
1690 case BC_ISEQP: case BC_ISNEP: 1716 case BC_ISEQP: case BC_ISNEP:
1691 vk = op == BC_ISEQP; 1717 vk = op == BC_ISEQP;
1692 dasm_put(Dst, 11214); 1718 dasm_put(Dst, 11287);
1693 goto iseqne_test; 1719 if (!LJ_HASFFI) goto iseqne_test;
1720 if (vk) {
1721 dasm_put(Dst, 11300, -BCBIAS_J*4, LJ_TCDATA);
1722 } else {
1723 dasm_put(Dst, 11349, LJ_TCDATA, -BCBIAS_J*4);
1724 }
1725 break;
1694 1726
1695 /* -- Unary test and copy ops ------------------------------------------- */ 1727 /* -- Unary test and copy ops ------------------------------------------- */
1696 1728
1697 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 1729 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1698 dasm_put(Dst, 11225, LJ_TISTRUECOND); 1730 dasm_put(Dst, 11392, LJ_TISTRUECOND);
1699 if (op == BC_IST || op == BC_ISTC) { 1731 if (op == BC_IST || op == BC_ISTC) {
1700 dasm_put(Dst, 11237); 1732 dasm_put(Dst, 11404);
1701 } else { 1733 } else {
1702 dasm_put(Dst, 11242); 1734 dasm_put(Dst, 11409);
1703 } 1735 }
1704 if (op == BC_ISTC || op == BC_ISFC) { 1736 if (op == BC_ISTC || op == BC_ISFC) {
1705 dasm_put(Dst, 11247); 1737 dasm_put(Dst, 11414);
1706 } 1738 }
1707 dasm_put(Dst, 11258, -BCBIAS_J*4); 1739 dasm_put(Dst, 11425, -BCBIAS_J*4);
1708 break; 1740 break;
1709 1741
1710 /* -- Unary ops --------------------------------------------------------- */ 1742 /* -- Unary ops --------------------------------------------------------- */
1711 1743
1712 case BC_MOV: 1744 case BC_MOV:
1713 dasm_put(Dst, 11289); 1745 dasm_put(Dst, 11456);
1714 break; 1746 break;
1715 case BC_NOT: 1747 case BC_NOT:
1716 dasm_put(Dst, 11322, LJ_TISTRUECOND, LJ_TTRUE); 1748 dasm_put(Dst, 11489, LJ_TISTRUECOND, LJ_TTRUE);
1717 break; 1749 break;
1718 case BC_UNM: 1750 case BC_UNM:
1719 dasm_put(Dst, 11357, LJ_TISNUM); 1751 dasm_put(Dst, 11524, LJ_TISNUM);
1720 if (sse) { 1752 if (sse) {
1721 dasm_put(Dst, 11368); 1753 dasm_put(Dst, 11535);
1722 } else { 1754 } else {
1723 dasm_put(Dst, 11398); 1755 dasm_put(Dst, 11565);
1724 } 1756 }
1725 dasm_put(Dst, 10973); 1757 dasm_put(Dst, 11007);
1726 break; 1758 break;
1727 case BC_LEN: 1759 case BC_LEN:
1728 dasm_put(Dst, 11407, LJ_TSTR); 1760 dasm_put(Dst, 11574, LJ_TSTR);
1729 if (sse) { 1761 if (sse) {
1730 dasm_put(Dst, 11421, Dt5(->len)); 1762 dasm_put(Dst, 11588, Dt5(->len));
1731 } else { 1763 } else {
1732 dasm_put(Dst, 11439, Dt5(->len)); 1764 dasm_put(Dst, 11606, Dt5(->len));
1733 } 1765 }
1734 dasm_put(Dst, 11448, LJ_TTAB); 1766 dasm_put(Dst, 11615, LJ_TTAB);
1735 if (sse) { 1767 if (sse) {
1736 dasm_put(Dst, 11488); 1768 dasm_put(Dst, 11655);
1737 } else { 1769 } else {
1738 dasm_put(Dst, 11497); 1770 dasm_put(Dst, 11664);
1739 } 1771 }
1740 dasm_put(Dst, 11507); 1772 dasm_put(Dst, 11674);
1741 break; 1773 break;
1742 1774
1743 /* -- Binary ops -------------------------------------------------------- */ 1775 /* -- Binary ops -------------------------------------------------------- */
1744 1776
1745 1777
1746 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 1778 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1747 dasm_put(Dst, 11517); 1779 dasm_put(Dst, 11684);
1748 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1780 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1749 switch (vk) { 1781 switch (vk) {
1750 case 0: 1782 case 0:
1751 dasm_put(Dst, 11525, LJ_TISNUM); 1783 dasm_put(Dst, 11692, LJ_TISNUM);
1752 if (sse) { 1784 if (sse) {
1753 dasm_put(Dst, 11537); 1785 dasm_put(Dst, 11704);
1754 } else { 1786 } else {
1755 dasm_put(Dst, 11551); 1787 dasm_put(Dst, 11718);
1756 } 1788 }
1757 break; 1789 break;
1758 case 1: 1790 case 1:
1759 dasm_put(Dst, 11559, LJ_TISNUM); 1791 dasm_put(Dst, 11726, LJ_TISNUM);
1760 if (sse) { 1792 if (sse) {
1761 dasm_put(Dst, 11571); 1793 dasm_put(Dst, 11738);
1762 } else { 1794 } else {
1763 dasm_put(Dst, 11585); 1795 dasm_put(Dst, 11752);
1764 } 1796 }
1765 break; 1797 break;
1766 default: 1798 default:
1767 dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM); 1799 dasm_put(Dst, 11760, LJ_TISNUM, LJ_TISNUM);
1768 if (sse) { 1800 if (sse) {
1769 dasm_put(Dst, 11615); 1801 dasm_put(Dst, 11782);
1770 } else { 1802 } else {
1771 dasm_put(Dst, 11629); 1803 dasm_put(Dst, 11796);
1772 } 1804 }
1773 break; 1805 break;
1774 } 1806 }
1775 if (sse) { 1807 if (sse) {
1776 dasm_put(Dst, 11391); 1808 dasm_put(Dst, 11558);
1777 } else { 1809 } else {
1778 dasm_put(Dst, 11403); 1810 dasm_put(Dst, 11570);
1779 } 1811 }
1780 dasm_put(Dst, 10973); 1812 dasm_put(Dst, 11007);
1781 break; 1813 break;
1782 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 1814 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1783 dasm_put(Dst, 11517); 1815 dasm_put(Dst, 11684);
1784 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1816 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1785 switch (vk) { 1817 switch (vk) {
1786 case 0: 1818 case 0:
1787 dasm_put(Dst, 11525, LJ_TISNUM); 1819 dasm_put(Dst, 11692, LJ_TISNUM);
1788 if (sse) { 1820 if (sse) {
1789 dasm_put(Dst, 11637); 1821 dasm_put(Dst, 11804);
1790 } else { 1822 } else {
1791 dasm_put(Dst, 11651); 1823 dasm_put(Dst, 11818);
1792 } 1824 }
1793 break; 1825 break;
1794 case 1: 1826 case 1:
1795 dasm_put(Dst, 11559, LJ_TISNUM); 1827 dasm_put(Dst, 11726, LJ_TISNUM);
1796 if (sse) { 1828 if (sse) {
1797 dasm_put(Dst, 11659); 1829 dasm_put(Dst, 11826);
1798 } else { 1830 } else {
1799 dasm_put(Dst, 11673); 1831 dasm_put(Dst, 11840);
1800 } 1832 }
1801 break; 1833 break;
1802 default: 1834 default:
1803 dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM); 1835 dasm_put(Dst, 11760, LJ_TISNUM, LJ_TISNUM);
1804 if (sse) { 1836 if (sse) {
1805 dasm_put(Dst, 11681); 1837 dasm_put(Dst, 11848);
1806 } else { 1838 } else {
1807 dasm_put(Dst, 11695); 1839 dasm_put(Dst, 11862);
1808 } 1840 }
1809 break; 1841 break;
1810 } 1842 }
1811 if (sse) { 1843 if (sse) {
1812 dasm_put(Dst, 11391); 1844 dasm_put(Dst, 11558);
1813 } else { 1845 } else {
1814 dasm_put(Dst, 11403); 1846 dasm_put(Dst, 11570);
1815 } 1847 }
1816 dasm_put(Dst, 10973); 1848 dasm_put(Dst, 11007);
1817 break; 1849 break;
1818 case BC_MULVN: case BC_MULNV: case BC_MULVV: 1850 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1819 dasm_put(Dst, 11517); 1851 dasm_put(Dst, 11684);
1820 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1852 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1821 switch (vk) { 1853 switch (vk) {
1822 case 0: 1854 case 0:
1823 dasm_put(Dst, 11525, LJ_TISNUM); 1855 dasm_put(Dst, 11692, LJ_TISNUM);
1824 if (sse) { 1856 if (sse) {
1825 dasm_put(Dst, 11703); 1857 dasm_put(Dst, 11870);
1826 } else { 1858 } else {
1827 dasm_put(Dst, 11717); 1859 dasm_put(Dst, 11884);
1828 } 1860 }
1829 break; 1861 break;
1830 case 1: 1862 case 1:
1831 dasm_put(Dst, 11559, LJ_TISNUM); 1863 dasm_put(Dst, 11726, LJ_TISNUM);
1832 if (sse) { 1864 if (sse) {
1833 dasm_put(Dst, 11725); 1865 dasm_put(Dst, 11892);
1834 } else { 1866 } else {
1835 dasm_put(Dst, 11739); 1867 dasm_put(Dst, 11906);
1836 } 1868 }
1837 break; 1869 break;
1838 default: 1870 default:
1839 dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM); 1871 dasm_put(Dst, 11760, LJ_TISNUM, LJ_TISNUM);
1840 if (sse) { 1872 if (sse) {
1841 dasm_put(Dst, 11747); 1873 dasm_put(Dst, 11914);
1842 } else { 1874 } else {
1843 dasm_put(Dst, 11761); 1875 dasm_put(Dst, 11928);
1844 } 1876 }
1845 break; 1877 break;
1846 } 1878 }
1847 if (sse) { 1879 if (sse) {
1848 dasm_put(Dst, 11391); 1880 dasm_put(Dst, 11558);
1849 } else { 1881 } else {
1850 dasm_put(Dst, 11403); 1882 dasm_put(Dst, 11570);
1851 } 1883 }
1852 dasm_put(Dst, 10973); 1884 dasm_put(Dst, 11007);
1853 break; 1885 break;
1854 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 1886 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1855 dasm_put(Dst, 11517); 1887 dasm_put(Dst, 11684);
1856 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1888 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1857 switch (vk) { 1889 switch (vk) {
1858 case 0: 1890 case 0:
1859 dasm_put(Dst, 11525, LJ_TISNUM); 1891 dasm_put(Dst, 11692, LJ_TISNUM);
1860 if (sse) { 1892 if (sse) {
1861 dasm_put(Dst, 11769); 1893 dasm_put(Dst, 11936);
1862 } else { 1894 } else {
1863 dasm_put(Dst, 11783); 1895 dasm_put(Dst, 11950);
1864 } 1896 }
1865 break; 1897 break;
1866 case 1: 1898 case 1:
1867 dasm_put(Dst, 11559, LJ_TISNUM); 1899 dasm_put(Dst, 11726, LJ_TISNUM);
1868 if (sse) { 1900 if (sse) {
1869 dasm_put(Dst, 11791); 1901 dasm_put(Dst, 11958);
1870 } else { 1902 } else {
1871 dasm_put(Dst, 11805); 1903 dasm_put(Dst, 11972);
1872 } 1904 }
1873 break; 1905 break;
1874 default: 1906 default:
1875 dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM); 1907 dasm_put(Dst, 11760, LJ_TISNUM, LJ_TISNUM);
1876 if (sse) { 1908 if (sse) {
1877 dasm_put(Dst, 11813); 1909 dasm_put(Dst, 11980);
1878 } else { 1910 } else {
1879 dasm_put(Dst, 11827); 1911 dasm_put(Dst, 11994);
1880 } 1912 }
1881 break; 1913 break;
1882 } 1914 }
1883 if (sse) { 1915 if (sse) {
1884 dasm_put(Dst, 11391); 1916 dasm_put(Dst, 11558);
1885 } else { 1917 } else {
1886 dasm_put(Dst, 11403); 1918 dasm_put(Dst, 11570);
1887 } 1919 }
1888 dasm_put(Dst, 10973); 1920 dasm_put(Dst, 11007);
1889 break; 1921 break;
1890 case BC_MODVN: 1922 case BC_MODVN:
1891 dasm_put(Dst, 11517); 1923 dasm_put(Dst, 11684);
1892 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1924 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1893 switch (vk) { 1925 switch (vk) {
1894 case 0: 1926 case 0:
1895 dasm_put(Dst, 11525, LJ_TISNUM); 1927 dasm_put(Dst, 11692, LJ_TISNUM);
1896 if (sse) { 1928 if (sse) {
1897 dasm_put(Dst, 11835); 1929 dasm_put(Dst, 12002);
1898 } else { 1930 } else {
1899 dasm_put(Dst, 11849); 1931 dasm_put(Dst, 12016);
1900 } 1932 }
1901 break; 1933 break;
1902 case 1: 1934 case 1:
1903 dasm_put(Dst, 11559, LJ_TISNUM); 1935 dasm_put(Dst, 11726, LJ_TISNUM);
1904 if (sse) { 1936 if (sse) {
1905 dasm_put(Dst, 11857); 1937 dasm_put(Dst, 12024);
1906 } else { 1938 } else {
1907 dasm_put(Dst, 11871); 1939 dasm_put(Dst, 12038);
1908 } 1940 }
1909 break; 1941 break;
1910 default: 1942 default:
1911 dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM); 1943 dasm_put(Dst, 11760, LJ_TISNUM, LJ_TISNUM);
1912 if (sse) { 1944 if (sse) {
1913 dasm_put(Dst, 11879); 1945 dasm_put(Dst, 12046);
1914 } else { 1946 } else {
1915 dasm_put(Dst, 11893); 1947 dasm_put(Dst, 12060);
1916 } 1948 }
1917 break; 1949 break;
1918 } 1950 }
1919 dasm_put(Dst, 11901); 1951 dasm_put(Dst, 12068);
1920 if (sse) { 1952 if (sse) {
1921 dasm_put(Dst, 11391); 1953 dasm_put(Dst, 11558);
1922 } else { 1954 } else {
1923 dasm_put(Dst, 11403); 1955 dasm_put(Dst, 11570);
1924 } 1956 }
1925 dasm_put(Dst, 10973); 1957 dasm_put(Dst, 11007);
1926 break; 1958 break;
1927 case BC_MODNV: case BC_MODVV: 1959 case BC_MODNV: case BC_MODVV:
1928 dasm_put(Dst, 11517); 1960 dasm_put(Dst, 11684);
1929 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1961 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1930 switch (vk) { 1962 switch (vk) {
1931 case 0: 1963 case 0:
1932 dasm_put(Dst, 11525, LJ_TISNUM); 1964 dasm_put(Dst, 11692, LJ_TISNUM);
1933 if (sse) { 1965 if (sse) {
1934 dasm_put(Dst, 11835); 1966 dasm_put(Dst, 12002);
1935 } else { 1967 } else {
1936 dasm_put(Dst, 11849); 1968 dasm_put(Dst, 12016);
1937 } 1969 }
1938 break; 1970 break;
1939 case 1: 1971 case 1:
1940 dasm_put(Dst, 11559, LJ_TISNUM); 1972 dasm_put(Dst, 11726, LJ_TISNUM);
1941 if (sse) { 1973 if (sse) {
1942 dasm_put(Dst, 11857); 1974 dasm_put(Dst, 12024);
1943 } else { 1975 } else {
1944 dasm_put(Dst, 11871); 1976 dasm_put(Dst, 12038);
1945 } 1977 }
1946 break; 1978 break;
1947 default: 1979 default:
1948 dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM); 1980 dasm_put(Dst, 11760, LJ_TISNUM, LJ_TISNUM);
1949 if (sse) { 1981 if (sse) {
1950 dasm_put(Dst, 11879); 1982 dasm_put(Dst, 12046);
1951 } else { 1983 } else {
1952 dasm_put(Dst, 11893); 1984 dasm_put(Dst, 12060);
1953 } 1985 }
1954 break; 1986 break;
1955 } 1987 }
1956 dasm_put(Dst, 11907); 1988 dasm_put(Dst, 12074);
1957 break; 1989 break;
1958 case BC_POW: 1990 case BC_POW:
1959 dasm_put(Dst, 11517); 1991 dasm_put(Dst, 11684);
1960 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1992 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1961 switch (vk) { 1993 switch (vk) {
1962 case 0: 1994 case 0:
1963 dasm_put(Dst, 11525, LJ_TISNUM); 1995 dasm_put(Dst, 11692, LJ_TISNUM);
1964 if (sse) { 1996 if (sse) {
1965 dasm_put(Dst, 11835); 1997 dasm_put(Dst, 12002);
1966 } else { 1998 } else {
1967 dasm_put(Dst, 11849); 1999 dasm_put(Dst, 12016);
1968 } 2000 }
1969 break; 2001 break;
1970 case 1: 2002 case 1:
1971 dasm_put(Dst, 11559, LJ_TISNUM); 2003 dasm_put(Dst, 11726, LJ_TISNUM);
1972 if (sse) { 2004 if (sse) {
1973 dasm_put(Dst, 11857); 2005 dasm_put(Dst, 12024);
1974 } else { 2006 } else {
1975 dasm_put(Dst, 11871); 2007 dasm_put(Dst, 12038);
1976 } 2008 }
1977 break; 2009 break;
1978 default: 2010 default:
1979 dasm_put(Dst, 11593, LJ_TISNUM, LJ_TISNUM); 2011 dasm_put(Dst, 11760, LJ_TISNUM, LJ_TISNUM);
1980 if (sse) { 2012 if (sse) {
1981 dasm_put(Dst, 11879); 2013 dasm_put(Dst, 12046);
1982 } else { 2014 } else {
1983 dasm_put(Dst, 11893); 2015 dasm_put(Dst, 12060);
1984 } 2016 }
1985 break; 2017 break;
1986 } 2018 }
1987 dasm_put(Dst, 11912); 2019 dasm_put(Dst, 12079);
1988 if (sse) { 2020 if (sse) {
1989 dasm_put(Dst, 11391); 2021 dasm_put(Dst, 11558);
1990 } else { 2022 } else {
1991 dasm_put(Dst, 11403); 2023 dasm_put(Dst, 11570);
1992 } 2024 }
1993 dasm_put(Dst, 10973); 2025 dasm_put(Dst, 11007);
1994 break; 2026 break;
1995 2027
1996 case BC_CAT: 2028 case BC_CAT:
1997 dasm_put(Dst, 11916, Dt1(->base), Dt1(->base)); 2029 dasm_put(Dst, 12083, Dt1(->base), Dt1(->base));
1998 break; 2030 break;
1999 2031
2000 /* -- Constant ops ------------------------------------------------------ */ 2032 /* -- Constant ops ------------------------------------------------------ */
2001 2033
2002 case BC_KSTR: 2034 case BC_KSTR:
2003 dasm_put(Dst, 12010, LJ_TSTR); 2035 dasm_put(Dst, 12177, LJ_TSTR);
2004 break; 2036 break;
2005 case BC_KCDATA: 2037 case BC_KCDATA:
2006#if LJ_HASFFI 2038#if LJ_HASFFI
2007 dasm_put(Dst, 12010, LJ_TCDATA); 2039 dasm_put(Dst, 12177, LJ_TCDATA);
2008#endif 2040#endif
2009 break; 2041 break;
2010 case BC_KSHORT: 2042 case BC_KSHORT:
2011 if (sse) { 2043 if (sse) {
2012 dasm_put(Dst, 12043); 2044 dasm_put(Dst, 12210);
2013 } else { 2045 } else {
2014 dasm_put(Dst, 12058); 2046 dasm_put(Dst, 12225);
2015 } 2047 }
2016 dasm_put(Dst, 10973); 2048 dasm_put(Dst, 11007);
2017 break; 2049 break;
2018 case BC_KNUM: 2050 case BC_KNUM:
2019 if (sse) { 2051 if (sse) {
2020 dasm_put(Dst, 12066); 2052 dasm_put(Dst, 12233);
2021 } else { 2053 } else {
2022 dasm_put(Dst, 12079); 2054 dasm_put(Dst, 12246);
2023 } 2055 }
2024 dasm_put(Dst, 10973); 2056 dasm_put(Dst, 11007);
2025 break; 2057 break;
2026 case BC_KPRI: 2058 case BC_KPRI:
2027 dasm_put(Dst, 12086); 2059 dasm_put(Dst, 12253);
2028 break; 2060 break;
2029 case BC_KNIL: 2061 case BC_KNIL:
2030 dasm_put(Dst, 12112, LJ_TNIL); 2062 dasm_put(Dst, 12279, LJ_TNIL);
2031 break; 2063 break;
2032 2064
2033 /* -- Upvalue and function ops ------------------------------------------ */ 2065 /* -- Upvalue and function ops ------------------------------------------ */
2034 2066
2035 case BC_UGET: 2067 case BC_UGET:
2036 dasm_put(Dst, 12158, offsetof(GCfuncL, uvptr), DtA(->v)); 2068 dasm_put(Dst, 12325, offsetof(GCfuncL, uvptr), DtA(->v));
2037 break; 2069 break;
2038 case BC_USETV: 2070 case BC_USETV:
2039#define TV2MARKOFS \ 2071#define TV2MARKOFS \
2040 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 2072 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
2041 dasm_put(Dst, 12202, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 2073 dasm_put(Dst, 12369, 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);
2042 dasm_put(Dst, 12292); 2074 dasm_put(Dst, 12459);
2043 break; 2075 break;
2044#undef TV2MARKOFS 2076#undef TV2MARKOFS
2045 case BC_USETS: 2077 case BC_USETS:
2046 dasm_put(Dst, 12304, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 2078 dasm_put(Dst, 12471, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
2047 break; 2079 break;
2048 case BC_USETN: 2080 case BC_USETN:
2049 dasm_put(Dst, 12395); 2081 dasm_put(Dst, 12562);
2050 if (sse) { 2082 if (sse) {
2051 dasm_put(Dst, 12400); 2083 dasm_put(Dst, 12567);
2052 } else { 2084 } else {
2053 dasm_put(Dst, 11210); 2085 dasm_put(Dst, 11283);
2054 } 2086 }
2055 dasm_put(Dst, 12407, offsetof(GCfuncL, uvptr), DtA(->v)); 2087 dasm_put(Dst, 12574, offsetof(GCfuncL, uvptr), DtA(->v));
2056 if (sse) { 2088 if (sse) {
2057 dasm_put(Dst, 12416); 2089 dasm_put(Dst, 12583);
2058 } else { 2090 } else {
2059 dasm_put(Dst, 12422); 2091 dasm_put(Dst, 12589);
2060 } 2092 }
2061 dasm_put(Dst, 10973); 2093 dasm_put(Dst, 11007);
2062 break; 2094 break;
2063 case BC_USETP: 2095 case BC_USETP:
2064 dasm_put(Dst, 12425, offsetof(GCfuncL, uvptr), DtA(->v)); 2096 dasm_put(Dst, 12592, offsetof(GCfuncL, uvptr), DtA(->v));
2065 break; 2097 break;
2066 case BC_UCLO: 2098 case BC_UCLO:
2067 dasm_put(Dst, 12462, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 2099 dasm_put(Dst, 12629, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
2068 break; 2100 break;
2069 2101
2070 case BC_FNEW: 2102 case BC_FNEW:
2071 dasm_put(Dst, 12516, Dt1(->base), Dt1(->base), LJ_TFUNC); 2103 dasm_put(Dst, 12683, Dt1(->base), Dt1(->base), LJ_TFUNC);
2072 break; 2104 break;
2073 2105
2074 /* -- Table ops --------------------------------------------------------- */ 2106 /* -- Table ops --------------------------------------------------------- */
2075 2107
2076 case BC_TNEW: 2108 case BC_TNEW:
2077 dasm_put(Dst, 12587, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 2109 dasm_put(Dst, 12754, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
2078 break; 2110 break;
2079 case BC_TDUP: 2111 case BC_TDUP:
2080 dasm_put(Dst, 12713, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2112 dasm_put(Dst, 12880, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
2081 break; 2113 break;
2082 2114
2083 case BC_GGET: 2115 case BC_GGET:
2084 dasm_put(Dst, 12805, Dt7(->env)); 2116 dasm_put(Dst, 12972, Dt7(->env));
2085 break; 2117 break;
2086 case BC_GSET: 2118 case BC_GSET:
2087 dasm_put(Dst, 12823, Dt7(->env)); 2119 dasm_put(Dst, 12990, Dt7(->env));
2088 break; 2120 break;
2089 2121
2090 case BC_TGETV: 2122 case BC_TGETV:
2091 dasm_put(Dst, 12841, LJ_TTAB, LJ_TISNUM); 2123 dasm_put(Dst, 13008, LJ_TTAB, LJ_TISNUM);
2092 if (sse) { 2124 if (sse) {
2093 dasm_put(Dst, 12874); 2125 dasm_put(Dst, 13041);
2094 } else { 2126 } else {
2095 dasm_put(Dst, 12895); 2127 dasm_put(Dst, 13062);
2096 if (cmov) { 2128 if (cmov) {
2097 dasm_put(Dst, 10936); 2129 dasm_put(Dst, 10970);
2098 } else { 2130 } else {
2099 dasm_put(Dst, 10942); 2131 dasm_put(Dst, 10976);
2100 } 2132 }
2101 dasm_put(Dst, 2539); 2133 dasm_put(Dst, 2573);
2102 } 2134 }
2103 dasm_put(Dst, 12905, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2135 dasm_put(Dst, 13072, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2104 dasm_put(Dst, 12993, LJ_TNIL, LJ_TSTR); 2136 dasm_put(Dst, 13160, LJ_TNIL, LJ_TSTR);
2105 break; 2137 break;
2106 case BC_TGETS: 2138 case BC_TGETS:
2107 dasm_put(Dst, 13022, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2139 dasm_put(Dst, 13189, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2108 dasm_put(Dst, 13110, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2140 dasm_put(Dst, 13277, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2109 break; 2141 break;
2110 case BC_TGETB: 2142 case BC_TGETB:
2111 dasm_put(Dst, 13180, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2143 dasm_put(Dst, 13347, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2112 dasm_put(Dst, 13279, LJ_TNIL); 2144 dasm_put(Dst, 13446, LJ_TNIL);
2113 break; 2145 break;
2114 2146
2115 case BC_TSETV: 2147 case BC_TSETV:
2116 dasm_put(Dst, 13296, LJ_TTAB, LJ_TISNUM); 2148 dasm_put(Dst, 13463, LJ_TTAB, LJ_TISNUM);
2117 if (sse) { 2149 if (sse) {
2118 dasm_put(Dst, 12874); 2150 dasm_put(Dst, 13041);
2119 } else { 2151 } else {
2120 dasm_put(Dst, 12895); 2152 dasm_put(Dst, 13062);
2121 if (cmov) { 2153 if (cmov) {
2122 dasm_put(Dst, 10936); 2154 dasm_put(Dst, 10970);
2123 } else { 2155 } else {
2124 dasm_put(Dst, 10942); 2156 dasm_put(Dst, 10976);
2125 } 2157 }
2126 dasm_put(Dst, 2539); 2158 dasm_put(Dst, 2573);
2127 } 2159 }
2128 dasm_put(Dst, 13329, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 2160 dasm_put(Dst, 13496, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
2129 dasm_put(Dst, 13412, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2161 dasm_put(Dst, 13579, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2130 break; 2162 break;
2131 case BC_TSETS: 2163 case BC_TSETS:
2132 dasm_put(Dst, 13474, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2164 dasm_put(Dst, 13641, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2133 dasm_put(Dst, 13549, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 2165 dasm_put(Dst, 13716, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
2134 dasm_put(Dst, 13641, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2166 dasm_put(Dst, 13808, 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));
2135 break; 2167 break;
2136 case BC_TSETB: 2168 case BC_TSETB:
2137 dasm_put(Dst, 13737, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 2169 dasm_put(Dst, 13904, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
2138 dasm_put(Dst, 13835, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2170 dasm_put(Dst, 14002, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2139 break; 2171 break;
2140 2172
2141 case BC_TSETM: 2173 case BC_TSETM:
2142 dasm_put(Dst, 13881, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); 2174 dasm_put(Dst, 14048, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
2143 dasm_put(Dst, 14030, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2175 dasm_put(Dst, 14197, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2144 break; 2176 break;
2145 2177
2146 /* -- Calls and vararg handling ----------------------------------------- */ 2178 /* -- Calls and vararg handling ----------------------------------------- */
2147 2179
2148 case BC_CALL: case BC_CALLM: 2180 case BC_CALL: case BC_CALLM:
2149 dasm_put(Dst, 11521); 2181 dasm_put(Dst, 11688);
2150 if (op == BC_CALLM) { 2182 if (op == BC_CALLM) {
2151 dasm_put(Dst, 14048); 2183 dasm_put(Dst, 14215);
2152 } 2184 }
2153 dasm_put(Dst, 14053, LJ_TFUNC, Dt7(->pc)); 2185 dasm_put(Dst, 14220, LJ_TFUNC, Dt7(->pc));
2154 break; 2186 break;
2155 2187
2156 case BC_CALLMT: 2188 case BC_CALLMT:
2157 dasm_put(Dst, 14048); 2189 dasm_put(Dst, 14215);
2158 break; 2190 break;
2159 case BC_CALLT: 2191 case BC_CALLT:
2160 dasm_put(Dst, 14094, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); 2192 dasm_put(Dst, 14261, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
2161 dasm_put(Dst, 14212, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); 2193 dasm_put(Dst, 14379, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
2162 break; 2194 break;
2163 2195
2164 case BC_ITERC: 2196 case BC_ITERC:
2165 dasm_put(Dst, 14282, LJ_TFUNC, 2+1, Dt7(->pc)); 2197 dasm_put(Dst, 14449, LJ_TFUNC, 2+1, Dt7(->pc));
2166 break; 2198 break;
2167 2199
2168 case BC_ITERN: 2200 case BC_ITERN:
2169#if LJ_HASJIT 2201#if LJ_HASJIT
2170#endif 2202#endif
2171 dasm_put(Dst, 14362, Dt6(->asize), Dt6(->array), LJ_TNIL); 2203 dasm_put(Dst, 14529, Dt6(->asize), Dt6(->array), LJ_TNIL);
2172 if (sse) { 2204 if (sse) {
2173 dasm_put(Dst, 14408); 2205 dasm_put(Dst, 14575);
2174 } else { 2206 } else {
2175 dasm_put(Dst, 14414); 2207 dasm_put(Dst, 14581);
2176 } 2208 }
2177 dasm_put(Dst, 14420); 2209 dasm_put(Dst, 14587);
2178 if (sse) { 2210 if (sse) {
2179 dasm_put(Dst, 11391); 2211 dasm_put(Dst, 11558);
2180 } else { 2212 } else {
2181 dasm_put(Dst, 11403); 2213 dasm_put(Dst, 11570);
2182 } 2214 }
2183 dasm_put(Dst, 14439, -BCBIAS_J*4); 2215 dasm_put(Dst, 14606, -BCBIAS_J*4);
2184 if (!sse) { 2216 if (!sse) {
2185 dasm_put(Dst, 14490); 2217 dasm_put(Dst, 14657);
2186 } 2218 }
2187 dasm_put(Dst, 14496, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key.gcr), DtB(->key.it), DtB(->val.gcr), DtB(->val.it)); 2219 dasm_put(Dst, 14663, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key.gcr), DtB(->key.it), DtB(->val.gcr), DtB(->val.it));
2188 dasm_put(Dst, 14571); 2220 dasm_put(Dst, 14738);
2189 break; 2221 break;
2190 2222
2191 case BC_ISNEXT: 2223 case BC_ISNEXT:
2192 dasm_put(Dst, 14579, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC); 2224 dasm_put(Dst, 14746, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
2193 break; 2225 break;
2194 2226
2195 case BC_VARG: 2227 case BC_VARG:
2196 dasm_put(Dst, 14678, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); 2228 dasm_put(Dst, 14845, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
2197 dasm_put(Dst, 14842, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 2229 dasm_put(Dst, 15009, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
2198 break; 2230 break;
2199 2231
2200 /* -- Returns ----------------------------------------------------------- */ 2232 /* -- Returns ----------------------------------------------------------- */
2201 2233
2202 case BC_RETM: 2234 case BC_RETM:
2203 dasm_put(Dst, 14048); 2235 dasm_put(Dst, 14215);
2204 break; 2236 break;
2205 2237
2206 case BC_RET: case BC_RET0: case BC_RET1: 2238 case BC_RET: case BC_RET0: case BC_RET1:
2207 if (op != BC_RET0) { 2239 if (op != BC_RET0) {
2208 dasm_put(Dst, 14913); 2240 dasm_put(Dst, 15080);
2209 } 2241 }
2210 dasm_put(Dst, 14917, FRAME_TYPE); 2242 dasm_put(Dst, 15084, FRAME_TYPE);
2211 switch (op) { 2243 switch (op) {
2212 case BC_RET: 2244 case BC_RET:
2213 dasm_put(Dst, 14936); 2245 dasm_put(Dst, 15103);
2214 break; 2246 break;
2215 case BC_RET1: 2247 case BC_RET1:
2216 dasm_put(Dst, 14994); 2248 dasm_put(Dst, 15161);
2217 /* fallthrough */ 2249 /* fallthrough */
2218 case BC_RET0: 2250 case BC_RET0:
2219 dasm_put(Dst, 15010); 2251 dasm_put(Dst, 15177);
2220 default: 2252 default:
2221 break; 2253 break;
2222 } 2254 }
2223 dasm_put(Dst, 15021, Dt7(->pc), PC2PROTO(k)); 2255 dasm_put(Dst, 15188, Dt7(->pc), PC2PROTO(k));
2224 if (op == BC_RET) { 2256 if (op == BC_RET) {
2225 dasm_put(Dst, 15063, LJ_TNIL); 2257 dasm_put(Dst, 15230, LJ_TNIL);
2226 } else { 2258 } else {
2227 dasm_put(Dst, 15072, LJ_TNIL); 2259 dasm_put(Dst, 15239, LJ_TNIL);
2228 } 2260 }
2229 dasm_put(Dst, 15079, -FRAME_VARG, FRAME_TYPEP); 2261 dasm_put(Dst, 15246, -FRAME_VARG, FRAME_TYPEP);
2230 if (op != BC_RET0) { 2262 if (op != BC_RET0) {
2231 dasm_put(Dst, 15103); 2263 dasm_put(Dst, 15270);
2232 } 2264 }
2233 dasm_put(Dst, 4704); 2265 dasm_put(Dst, 4738);
2234 break; 2266 break;
2235 2267
2236 /* -- Loops and branches ------------------------------------------------ */ 2268 /* -- Loops and branches ------------------------------------------------ */
@@ -2238,7 +2270,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2238 2270
2239 case BC_FORL: 2271 case BC_FORL:
2240#if LJ_HASJIT 2272#if LJ_HASJIT
2241 dasm_put(Dst, 15107, HOTCOUNT_PCMASK, GG_DISP2HOT); 2273 dasm_put(Dst, 15274, HOTCOUNT_PCMASK, GG_DISP2HOT);
2242#endif 2274#endif
2243 break; 2275 break;
2244 2276
@@ -2250,57 +2282,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2250 case BC_FORI: 2282 case BC_FORI:
2251 case BC_IFORL: 2283 case BC_IFORL:
2252 vk = (op == BC_IFORL || op == BC_JFORL); 2284 vk = (op == BC_IFORL || op == BC_JFORL);
2253 dasm_put(Dst, 15128); 2285 dasm_put(Dst, 15295);
2254 if (!vk) { 2286 if (!vk) {
2255 dasm_put(Dst, 15132, LJ_TISNUM, LJ_TISNUM); 2287 dasm_put(Dst, 15299, LJ_TISNUM, LJ_TISNUM);
2256 } 2288 }
2257 dasm_put(Dst, 15151); 2289 dasm_put(Dst, 15318);
2258 if (!vk) { 2290 if (!vk) {
2259 dasm_put(Dst, 15155, LJ_TISNUM); 2291 dasm_put(Dst, 15322, LJ_TISNUM);
2260 } 2292 }
2261 if (sse) { 2293 if (sse) {
2262 dasm_put(Dst, 15164); 2294 dasm_put(Dst, 15331);
2263 if (vk) { 2295 if (vk) {
2264 dasm_put(Dst, 15176); 2296 dasm_put(Dst, 15343);
2265 } else { 2297 } else {
2266 dasm_put(Dst, 15195); 2298 dasm_put(Dst, 15362);
2267 } 2299 }
2268 dasm_put(Dst, 15200); 2300 dasm_put(Dst, 15367);
2269 } else { 2301 } else {
2270 dasm_put(Dst, 15213); 2302 dasm_put(Dst, 15380);
2271 if (vk) { 2303 if (vk) {
2272 dasm_put(Dst, 15219); 2304 dasm_put(Dst, 15386);
2273 } else { 2305 } else {
2274 dasm_put(Dst, 15235); 2306 dasm_put(Dst, 15402);
2275 } 2307 }
2276 dasm_put(Dst, 15243); 2308 dasm_put(Dst, 15410);
2277 if (cmov) { 2309 if (cmov) {
2278 dasm_put(Dst, 10936); 2310 dasm_put(Dst, 10970);
2279 } else { 2311 } else {
2280 dasm_put(Dst, 10942); 2312 dasm_put(Dst, 10976);
2281 } 2313 }
2282 if (!cmov) { 2314 if (!cmov) {
2283 dasm_put(Dst, 15248); 2315 dasm_put(Dst, 15415);
2284 } 2316 }
2285 } 2317 }
2286 if (op == BC_FORI) { 2318 if (op == BC_FORI) {
2287 dasm_put(Dst, 15254, -BCBIAS_J*4); 2319 dasm_put(Dst, 15421, -BCBIAS_J*4);
2288 } else if (op == BC_JFORI) { 2320 } else if (op == BC_JFORI) {
2289 dasm_put(Dst, 15264, -BCBIAS_J*4, BC_JLOOP); 2321 dasm_put(Dst, 15431, -BCBIAS_J*4, BC_JLOOP);
2290 } else if (op == BC_IFORL) { 2322 } else if (op == BC_IFORL) {
2291 dasm_put(Dst, 15278, -BCBIAS_J*4); 2323 dasm_put(Dst, 15445, -BCBIAS_J*4);
2292 } else { 2324 } else {
2293 dasm_put(Dst, 15274, BC_JLOOP); 2325 dasm_put(Dst, 15441, BC_JLOOP);
2294 } 2326 }
2295 dasm_put(Dst, 10971); 2327 dasm_put(Dst, 11005);
2296 if (sse) { 2328 if (sse) {
2297 dasm_put(Dst, 15288); 2329 dasm_put(Dst, 15455);
2298 } 2330 }
2299 break; 2331 break;
2300 2332
2301 case BC_ITERL: 2333 case BC_ITERL:
2302#if LJ_HASJIT 2334#if LJ_HASJIT
2303 dasm_put(Dst, 15107, HOTCOUNT_PCMASK, GG_DISP2HOT); 2335 dasm_put(Dst, 15274, HOTCOUNT_PCMASK, GG_DISP2HOT);
2304#endif 2336#endif
2305 break; 2337 break;
2306 2338
@@ -2309,33 +2341,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2309 break; 2341 break;
2310#endif 2342#endif
2311 case BC_IITERL: 2343 case BC_IITERL:
2312 dasm_put(Dst, 15299, LJ_TNIL); 2344 dasm_put(Dst, 15466, LJ_TNIL);
2313 if (op == BC_JITERL) { 2345 if (op == BC_JITERL) {
2314 dasm_put(Dst, 15314, BC_JLOOP); 2346 dasm_put(Dst, 15481, BC_JLOOP);
2315 } else { 2347 } else {
2316 dasm_put(Dst, 15328, -BCBIAS_J*4); 2348 dasm_put(Dst, 15495, -BCBIAS_J*4);
2317 } 2349 }
2318 dasm_put(Dst, 11268); 2350 dasm_put(Dst, 11435);
2319 break; 2351 break;
2320 2352
2321 case BC_LOOP: 2353 case BC_LOOP:
2322#if LJ_HASJIT 2354#if LJ_HASJIT
2323 dasm_put(Dst, 15107, HOTCOUNT_PCMASK, GG_DISP2HOT); 2355 dasm_put(Dst, 15274, HOTCOUNT_PCMASK, GG_DISP2HOT);
2324#endif 2356#endif
2325 break; 2357 break;
2326 2358
2327 case BC_ILOOP: 2359 case BC_ILOOP:
2328 dasm_put(Dst, 10973); 2360 dasm_put(Dst, 11007);
2329 break; 2361 break;
2330 2362
2331 case BC_JLOOP: 2363 case BC_JLOOP:
2332#if LJ_HASJIT 2364#if LJ_HASJIT
2333 dasm_put(Dst, 15344, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 2365 dasm_put(Dst, 15511, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
2334#endif 2366#endif
2335 break; 2367 break;
2336 2368
2337 case BC_JMP: 2369 case BC_JMP:
2338 dasm_put(Dst, 15367, -BCBIAS_J*4); 2370 dasm_put(Dst, 15534, -BCBIAS_J*4);
2339 break; 2371 break;
2340 2372
2341 /* -- Function headers -------------------------------------------------- */ 2373 /* -- Function headers -------------------------------------------------- */
@@ -2349,7 +2381,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2349 2381
2350 case BC_FUNCF: 2382 case BC_FUNCF:
2351#if LJ_HASJIT 2383#if LJ_HASJIT
2352 dasm_put(Dst, 15391, HOTCOUNT_PCMASK, GG_DISP2HOT); 2384 dasm_put(Dst, 15558, HOTCOUNT_PCMASK, GG_DISP2HOT);
2353#endif 2385#endif
2354 case BC_FUNCV: /* NYI: compiled vararg functions. */ 2386 case BC_FUNCV: /* NYI: compiled vararg functions. */
2355 break; 2387 break;
@@ -2359,47 +2391,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2359 break; 2391 break;
2360#endif 2392#endif
2361 case BC_IFUNCF: 2393 case BC_IFUNCF:
2362 dasm_put(Dst, 15412, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); 2394 dasm_put(Dst, 15579, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2363 if (op == BC_JFUNCF) { 2395 if (op == BC_JFUNCF) {
2364 dasm_put(Dst, 15442, BC_JLOOP); 2396 dasm_put(Dst, 15609, BC_JLOOP);
2365 } else { 2397 } else {
2366 dasm_put(Dst, 10973); 2398 dasm_put(Dst, 11007);
2367 } 2399 }
2368 dasm_put(Dst, 15451, LJ_TNIL); 2400 dasm_put(Dst, 15618, LJ_TNIL);
2369 break; 2401 break;
2370 2402
2371 case BC_JFUNCV: 2403 case BC_JFUNCV:
2372#if !LJ_HASJIT 2404#if !LJ_HASJIT
2373 break; 2405 break;
2374#endif 2406#endif
2375 dasm_put(Dst, 10268); 2407 dasm_put(Dst, 10302);
2376 break; /* NYI: compiled vararg functions. */ 2408 break; /* NYI: compiled vararg functions. */
2377 2409
2378 case BC_IFUNCV: 2410 case BC_IFUNCV:
2379 dasm_put(Dst, 15473, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); 2411 dasm_put(Dst, 15640, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2380 if (op == BC_JFUNCV) { 2412 if (op == BC_JFUNCV) {
2381 dasm_put(Dst, 15442, BC_JLOOP); 2413 dasm_put(Dst, 15609, BC_JLOOP);
2382 } else { 2414 } else {
2383 dasm_put(Dst, 15564, -4+PC2PROTO(k)); 2415 dasm_put(Dst, 15731, -4+PC2PROTO(k));
2384 } 2416 }
2385 dasm_put(Dst, 15586, LJ_TNIL); 2417 dasm_put(Dst, 15753, LJ_TNIL);
2386 break; 2418 break;
2387 2419
2388 case BC_FUNCC: 2420 case BC_FUNCC:
2389 case BC_FUNCCW: 2421 case BC_FUNCCW:
2390 dasm_put(Dst, 15608, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); 2422 dasm_put(Dst, 15775, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2391 if (op == BC_FUNCC) { 2423 if (op == BC_FUNCC) {
2392 dasm_put(Dst, 15637); 2424 dasm_put(Dst, 15804);
2393 } else { 2425 } else {
2394 dasm_put(Dst, 15641); 2426 dasm_put(Dst, 15808);
2395 } 2427 }
2396 dasm_put(Dst, 15649, DISPATCH_GL(vmstate), ~LJ_VMST_C); 2428 dasm_put(Dst, 15816, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2397 if (op == BC_FUNCC) { 2429 if (op == BC_FUNCC) {
2398 dasm_put(Dst, 15658); 2430 dasm_put(Dst, 15825);
2399 } else { 2431 } else {
2400 dasm_put(Dst, 15662, DISPATCH_GL(wrapf)); 2432 dasm_put(Dst, 15829, DISPATCH_GL(wrapf));
2401 } 2433 }
2402 dasm_put(Dst, 15667, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 2434 dasm_put(Dst, 15834, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2403 break; 2435 break;
2404 2436
2405 /* ---------------------------------------------------------------------- */ 2437 /* ---------------------------------------------------------------------- */
@@ -2427,7 +2459,7 @@ static int build_backend(BuildCtx *ctx)
2427 2459
2428 build_subroutines(ctx, cmov, sse); 2460 build_subroutines(ctx, cmov, sse);
2429 2461
2430 dasm_put(Dst, 15692); 2462 dasm_put(Dst, 15859);
2431 for (op = 0; op < BC__MAX; op++) 2463 for (op = 0; op < BC__MAX; op++)
2432 build_ins(ctx, (BCOp)op, op, cmov, sse); 2464 build_ins(ctx, (BCOp)op, op, cmov, sse);
2433 2465
diff --git a/src/lib_ffi.c b/src/lib_ffi.c
index aeeb0bc1..89baa356 100644
--- a/src/lib_ffi.c
+++ b/src/lib_ffi.c
@@ -85,9 +85,10 @@ typedef struct FFIArith {
85} FFIArith; 85} FFIArith;
86 86
87/* Check arguments for arithmetic metamethods. */ 87/* Check arguments for arithmetic metamethods. */
88static void ffi_checkarith(lua_State *L, CTState *cts, FFIArith *fa) 88static int ffi_checkarith(lua_State *L, CTState *cts, FFIArith *fa)
89{ 89{
90 TValue *o = L->base; 90 TValue *o = L->base;
91 int ok = 1;
91 MSize i; 92 MSize i;
92 if (o+1 >= L->top) 93 if (o+1 >= L->top)
93 lj_err_argt(L, 1, LUA_TCDATA); 94 lj_err_argt(L, 1, LUA_TCDATA);
@@ -105,10 +106,16 @@ static void ffi_checkarith(lua_State *L, CTState *cts, FFIArith *fa)
105 } else if (tvisnum(o)) { 106 } else if (tvisnum(o)) {
106 fa->ct[i] = ctype_get(cts, CTID_DOUBLE); 107 fa->ct[i] = ctype_get(cts, CTID_DOUBLE);
107 fa->p[i] = (uint8_t *)&o->n; 108 fa->p[i] = (uint8_t *)&o->n;
109 } else if (tvisnil(o)) {
110 fa->ct[i] = ctype_get(cts, CTID_P_VOID);
111 fa->p[i] = (uint8_t *)0;
108 } else { 112 } else {
109 lj_err_optype(L, o, LJ_ERR_OPARITH); 113 fa->ct[i] = NULL;
114 fa->p[i] = NULL;
115 ok = 0;
110 } 116 }
111 } 117 }
118 return ok;
112} 119}
113 120
114/* Pointer arithmetic. */ 121/* Pointer arithmetic. */
@@ -120,26 +127,38 @@ static int ffi_arith_ptr(lua_State *L, CTState *cts, FFIArith *fa, MMS mm)
120 CTSize sz; 127 CTSize sz;
121 CTypeID id; 128 CTypeID id;
122 GCcdata *cd; 129 GCcdata *cd;
123 if (!(mm == MM_add || mm == MM_sub))
124 return 0;
125 if (ctype_isptr(ctp->info) || ctype_isrefarray(ctp->info)) { 130 if (ctype_isptr(ctp->info) || ctype_isrefarray(ctp->info)) {
126 if (mm == MM_sub && 131 if ((mm == MM_sub || mm == MM_eq || mm == MM_lt || mm == MM_le) &&
127 (ctype_isptr(fa->ct[1]->info) || ctype_isrefarray(fa->ct[1]->info))) { 132 (ctype_isptr(fa->ct[1]->info) || ctype_isrefarray(fa->ct[1]->info))) {
128 /* Pointer difference. */ 133 uint8_t *pp2 = fa->p[1];
129 intptr_t diff; 134 if (mm == MM_eq) { /* Pointer equality. Incompatible pointers are ok. */
135 setboolV(L->top-1, (pp == pp2));
136 return 1;
137 }
130 if (!lj_cconv_compatptr(cts, ctp, fa->ct[1], CCF_IGNQUAL)) 138 if (!lj_cconv_compatptr(cts, ctp, fa->ct[1], CCF_IGNQUAL))
131 lj_err_caller(L, LJ_ERR_FFI_INVTYPE); 139 return 0;
132 sz = lj_ctype_size(cts, ctype_cid(ctp->info)); /* Element size. */ 140 if (mm == MM_sub) { /* Pointer difference. */
133 if (sz == 0 || sz == CTSIZE_INVALID) 141 intptr_t diff;
134 lj_err_caller(L, LJ_ERR_FFI_INVSIZE); 142 sz = lj_ctype_size(cts, ctype_cid(ctp->info)); /* Element size. */
135 diff = ((intptr_t)pp - (intptr_t)fa->p[1]) / (int32_t)sz; 143 if (sz == 0 || sz == CTSIZE_INVALID)
136 /* All valid pointer differences on x64 are in (-2^47, +2^47), 144 return 0;
137 ** which fits into a double without loss of precision. 145 diff = ((intptr_t)pp - (intptr_t)pp2) / (int32_t)sz;
138 */ 146 /* All valid pointer differences on x64 are in (-2^47, +2^47),
139 setnumV(L->top-1, (lua_Number)diff); 147 ** which fits into a double without loss of precision.
140 return 1; 148 */
149 setnumV(L->top-1, (lua_Number)diff);
150 return 1;
151 } else if (mm == MM_lt) { /* Pointer comparison (unsigned). */
152 setboolV(L->top-1, ((uintptr_t)pp < (uintptr_t)pp2));
153 return 1;
154 } else {
155 lua_assert(mm == MM_le);
156 setboolV(L->top-1, ((uintptr_t)pp <= (uintptr_t)pp2));
157 return 1;
158 }
141 } 159 }
142 if (!ctype_isnum(fa->ct[1]->info)) return 0; 160 if (!((mm == MM_add || mm == MM_sub) &&
161 ctype_isnum(fa->ct[1]->info))) return 0;
143 lj_cconv_ct_ct(cts, ctype_get(cts, CTID_INT_PSZ), fa->ct[1], 162 lj_cconv_ct_ct(cts, ctype_get(cts, CTID_INT_PSZ), fa->ct[1],
144 (uint8_t *)&idx, fa->p[1], 0); 163 (uint8_t *)&idx, fa->p[1], 0);
145 if (mm == MM_sub) idx = -idx; 164 if (mm == MM_sub) idx = -idx;
@@ -155,7 +174,7 @@ static int ffi_arith_ptr(lua_State *L, CTState *cts, FFIArith *fa, MMS mm)
155 } 174 }
156 sz = lj_ctype_size(cts, ctype_cid(ctp->info)); /* Element size. */ 175 sz = lj_ctype_size(cts, ctype_cid(ctp->info)); /* Element size. */
157 if (sz == CTSIZE_INVALID) 176 if (sz == CTSIZE_INVALID)
158 lj_err_caller(L, LJ_ERR_FFI_INVSIZE); 177 return 0;
159 pp += idx*(int32_t)sz; /* Compute pointer + index. */ 178 pp += idx*(int32_t)sz; /* Compute pointer + index. */
160 id = lj_ctype_intern(cts, CTINFO(CT_PTR, CTALIGN_PTR|ctype_cid(ctp->info)), 179 id = lj_ctype_intern(cts, CTINFO(CT_PTR, CTALIGN_PTR|ctype_cid(ctp->info)),
161 CTSIZE_PTR); 180 CTSIZE_PTR);
@@ -180,7 +199,19 @@ static int ffi_arith_int64(lua_State *L, CTState *cts, FFIArith *fa, MMS mm)
180 lj_cconv_ct_ct(cts, ct, fa->ct[0], (uint8_t *)&u0, fa->p[0], 0); 199 lj_cconv_ct_ct(cts, ct, fa->ct[0], (uint8_t *)&u0, fa->p[0], 0);
181 if (mm != MM_unm) 200 if (mm != MM_unm)
182 lj_cconv_ct_ct(cts, ct, fa->ct[1], (uint8_t *)&u1, fa->p[1], 0); 201 lj_cconv_ct_ct(cts, ct, fa->ct[1], (uint8_t *)&u1, fa->p[1], 0);
183 if ((mm == MM_div || mm == MM_mod)) { 202 switch (mm) {
203 case MM_eq:
204 setboolV(L->top-1, (u0 == u1));
205 return 1;
206 case MM_lt:
207 setboolV(L->top-1,
208 id == CTID_INT64 ? ((int64_t)u0 < (int64_t)u1) : (u0 < u1));
209 return 1;
210 case MM_le:
211 setboolV(L->top-1,
212 id == CTID_INT64 ? ((int64_t)u0 <= (int64_t)u1) : (u0 <= u1));
213 return 1;
214 case MM_div: case MM_mod:
184 if (u1 == 0) { /* Division by zero. */ 215 if (u1 == 0) { /* Division by zero. */
185 if (u0 == 0) 216 if (u0 == 0)
186 setnanV(L->top-1); 217 setnanV(L->top-1);
@@ -194,6 +225,8 @@ static int ffi_arith_int64(lua_State *L, CTState *cts, FFIArith *fa, MMS mm)
194 if (mm == MM_div) id = CTID_UINT64; else u0 = 0; 225 if (mm == MM_div) id = CTID_UINT64; else u0 = 0;
195 mm = MM_unm; /* Result is 0x8000000000000000ULL or 0LL. */ 226 mm = MM_unm; /* Result is 0x8000000000000000ULL or 0LL. */
196 } 227 }
228 break;
229 default: break;
197 } 230 }
198 cd = lj_cdata_new(cts, id, 8); 231 cd = lj_cdata_new(cts, id, 8);
199 up = (uint64_t *)cdataptr(cd); 232 up = (uint64_t *)cdataptr(cd);
@@ -229,17 +262,27 @@ static int ffi_arith(lua_State *L)
229{ 262{
230 CTState *cts = ctype_cts(L); 263 CTState *cts = ctype_cts(L);
231 FFIArith fa; 264 FFIArith fa;
232 MMS mm = (MMS)(curr_func(L)->c.ffid - (int)FF_ffi_meta___add + (int)MM_add); 265 MMS mm = (MMS)(curr_func(L)->c.ffid - (int)FF_ffi_meta___eq + (int)MM_eq);
233 ffi_checkarith(L, cts, &fa); 266 if (ffi_checkarith(L, cts, &fa)) {
234 if (!ffi_arith_int64(L, cts, &fa, mm) && 267 if (ffi_arith_int64(L, cts, &fa, mm) || ffi_arith_ptr(L, cts, &fa, mm))
235 !ffi_arith_ptr(L, cts, &fa, mm)) { 268 return 1;
269 }
270 /* NYI: per-cdata metamethods. */
271 {
236 const char *repr[2]; 272 const char *repr[2];
237 int i; 273 int i;
238 for (i = 0; i < 2; i++) 274 for (i = 0; i < 2; i++) {
239 repr[i] = strdata(lj_ctype_repr(L, ctype_typeid(cts, fa.ct[i]), NULL)); 275 if (fa.ct[i])
240 lj_err_callerv(L, LJ_ERR_FFI_BADARITH, repr[0], repr[1]); 276 repr[i] = strdata(lj_ctype_repr(L, ctype_typeid(cts, fa.ct[i]), NULL));
277 else
278 repr[i] = typename(&L->base[i]);
279 }
280 lj_err_callerv(L, mm == MM_len ? LJ_ERR_FFI_BADLEN :
281 mm == MM_concat ? LJ_ERR_FFI_BADCONCAT :
282 mm < MM_add ? LJ_ERR_FFI_BADCOMP : LJ_ERR_FFI_BADARITH,
283 repr[0], repr[1]);
241 } 284 }
242 return 1; 285 return 0; /* unreachable */
243} 286}
244 287
245/* -- C type metamethods -------------------------------------------------- */ 288/* -- C type metamethods -------------------------------------------------- */
@@ -275,6 +318,32 @@ LJLIB_CF(ffi_meta___newindex) LJLIB_REC(cdata_index 1)
275 return 0; 318 return 0;
276} 319}
277 320
321/* The following functions must be in contiguous ORDER MM. */
322LJLIB_CF(ffi_meta___eq)
323{
324 return ffi_arith(L);
325}
326
327LJLIB_CF(ffi_meta___len)
328{
329 return ffi_arith(L);
330}
331
332LJLIB_CF(ffi_meta___lt)
333{
334 return ffi_arith(L);
335}
336
337LJLIB_CF(ffi_meta___le)
338{
339 return ffi_arith(L);
340}
341
342LJLIB_CF(ffi_meta___concat)
343{
344 return ffi_arith(L);
345}
346
278/* Forward declaration. */ 347/* Forward declaration. */
279static int lj_cf_ffi_new(lua_State *L); 348static int lj_cf_ffi_new(lua_State *L);
280 349
@@ -324,6 +393,7 @@ LJLIB_CF(ffi_meta___unm) LJLIB_REC(cdata_arith MM_unm)
324{ 393{
325 return ffi_arith(L); 394 return ffi_arith(L);
326} 395}
396/* End of contiguous ORDER MM. */
327 397
328LJLIB_CF(ffi_meta___tostring) 398LJLIB_CF(ffi_meta___tostring)
329{ 399{
diff --git a/src/lj_crecord.h b/src/lj_crecord.h
index 31e3c091..3b2249c5 100644
--- a/src/lj_crecord.h
+++ b/src/lj_crecord.h
@@ -19,6 +19,7 @@ LJ_FUNC void LJ_FASTCALL lj_crecord_tonumber(jit_State *J, RecordFFData *rd);
19#else 19#else
20#define recff_cdata_index recff_nyi 20#define recff_cdata_index recff_nyi
21#define recff_cdata_call recff_nyi 21#define recff_cdata_call recff_nyi
22#define recff_cdata_arith recff_nyi
22#define recff_ffi_new recff_nyi 23#define recff_ffi_new recff_nyi
23#endif 24#endif
24 25
diff --git a/src/lj_errmsg.h b/src/lj_errmsg.h
index b139fa8d..7b0c15cd 100644
--- a/src/lj_errmsg.h
+++ b/src/lj_errmsg.h
@@ -147,7 +147,10 @@ ERRDEF(FFI_BADTAG, "undeclared or implicit tag " LUA_QS)
147ERRDEF(FFI_REDEF, "attempt to redefine " LUA_QS) 147ERRDEF(FFI_REDEF, "attempt to redefine " LUA_QS)
148ERRDEF(FFI_INITOV, "too many initializers for " LUA_QS) 148ERRDEF(FFI_INITOV, "too many initializers for " LUA_QS)
149ERRDEF(FFI_BADCONV, "cannot convert " LUA_QS " to " LUA_QS) 149ERRDEF(FFI_BADCONV, "cannot convert " LUA_QS " to " LUA_QS)
150ERRDEF(FFI_BADLEN, "attempt to get length of " LUA_QS)
151ERRDEF(FFI_BADCONCAT, "attempt to concatenate " LUA_QS " and " LUA_QS)
150ERRDEF(FFI_BADARITH, "attempt to perform arithmetic on " LUA_QS " and " LUA_QS) 152ERRDEF(FFI_BADARITH, "attempt to perform arithmetic on " LUA_QS " and " LUA_QS)
153ERRDEF(FFI_BADCOMP, "attempt to compare " LUA_QS " with " LUA_QS)
151ERRDEF(FFI_BADCALL, LUA_QS " is not callable") 154ERRDEF(FFI_BADCALL, LUA_QS " is not callable")
152ERRDEF(FFI_NUMARG, "wrong number of arguments for function call") 155ERRDEF(FFI_NUMARG, "wrong number of arguments for function call")
153ERRDEF(FFI_BADMEMBER, LUA_QS " has no member named " LUA_QS) 156ERRDEF(FFI_BADMEMBER, LUA_QS " has no member named " LUA_QS)
diff --git a/src/lj_meta.c b/src/lj_meta.c
index 5353e4d4..ce851a22 100644
--- a/src/lj_meta.c
+++ b/src/lj_meta.c
@@ -302,10 +302,48 @@ TValue *lj_meta_equal(lua_State *L, GCobj *o1, GCobj *o2, int ne)
302 return cast(TValue *, (intptr_t)ne); 302 return cast(TValue *, (intptr_t)ne);
303} 303}
304 304
305#if LJ_HASFFI
306TValue * LJ_FASTCALL lj_meta_equal_cd(lua_State *L, BCIns ins)
307{
308 ASMFunction cont = (bc_op(ins) & 1) ? lj_cont_condf : lj_cont_condt;
309 int op = (int)bc_op(ins) & ~1;
310 TValue tv;
311 cTValue *mo, *o2, *o1 = &L->base[bc_a(ins)];
312 if (op == BC_ISEQV) {
313 cTValue *o = &L->base[bc_d(ins)];
314 if (tviscdata(o1)) {
315 o2 = o;
316 } else {
317 o2 = o1; o1 = o;
318 }
319 } else if (op == BC_ISEQS) {
320 setstrV(L, &tv, gco2str(proto_kgc(curr_proto(L), ~(ptrdiff_t)bc_d(ins))));
321 o2 = &tv;
322 } else if (op == BC_ISEQN) {
323 o2 = &mref(curr_proto(L)->k, cTValue)[bc_d(ins)];
324 } else {
325 lua_assert(op == BC_ISEQP);
326 setitype(&tv, ~bc_d(ins));
327 o2 = &tv;
328 }
329 mo = lj_meta_lookup(L, o1, MM_eq);
330 if (LJ_LIKELY(!tvisnil(mo)))
331 return mmcall(L, cont, mo, o1, o2);
332 else
333 return cast(TValue *, (intptr_t)(bc_op(ins) & 1));
334}
335#endif
336
305/* Helper for ordered comparisons. String compare, __lt/__le metamethods. */ 337/* Helper for ordered comparisons. String compare, __lt/__le metamethods. */
306TValue *lj_meta_comp(lua_State *L, cTValue *o1, cTValue *o2, int op) 338TValue *lj_meta_comp(lua_State *L, cTValue *o1, cTValue *o2, int op)
307{ 339{
308 if (itype(o1) == itype(o2)) { /* Never called with two numbers. */ 340 if (LJ_HASFFI && (tviscdata(o1) || tviscdata(o2))) {
341 ASMFunction cont = (op & 1) ? lj_cont_condf : lj_cont_condt;
342 MMS mm = (op & 2) ? MM_le : MM_lt;
343 cTValue *mo = lj_meta_lookup(L, tviscdata(o1) ? o1 : o2, mm);
344 if (LJ_UNLIKELY(tvisnil(mo))) goto err;
345 return mmcall(L, cont, mo, o1, o2);
346 } else if (itype(o1) == itype(o2)) { /* Never called with two numbers. */
309 if (tvisstr(o1) && tvisstr(o2)) { 347 if (tvisstr(o1) && tvisstr(o2)) {
310 int32_t res = lj_str_cmp(strV(o1), strV(o2)); 348 int32_t res = lj_str_cmp(strV(o1), strV(o2));
311 return cast(TValue *, (intptr_t)(((op&2) ? res <= 0 : res < 0) ^ (op&1))); 349 return cast(TValue *, (intptr_t)(((op&2) ? res <= 0 : res < 0) ^ (op&1)));
diff --git a/src/lj_meta.h b/src/lj_meta.h
index 3854c8a0..687e6c08 100644
--- a/src/lj_meta.h
+++ b/src/lj_meta.h
@@ -26,6 +26,7 @@ LJ_FUNCA TValue *lj_meta_arith(lua_State *L, TValue *ra, cTValue *rb,
26LJ_FUNCA TValue *lj_meta_cat(lua_State *L, TValue *top, int left); 26LJ_FUNCA TValue *lj_meta_cat(lua_State *L, TValue *top, int left);
27LJ_FUNCA TValue * LJ_FASTCALL lj_meta_len(lua_State *L, cTValue *o); 27LJ_FUNCA TValue * LJ_FASTCALL lj_meta_len(lua_State *L, cTValue *o);
28LJ_FUNCA TValue *lj_meta_equal(lua_State *L, GCobj *o1, GCobj *o2, int ne); 28LJ_FUNCA TValue *lj_meta_equal(lua_State *L, GCobj *o1, GCobj *o2, int ne);
29LJ_FUNCA TValue * LJ_FASTCALL lj_meta_equal_cd(lua_State *L, BCIns ins);
29LJ_FUNCA TValue *lj_meta_comp(lua_State *L, cTValue *o1, cTValue *o2, int op); 30LJ_FUNCA TValue *lj_meta_comp(lua_State *L, cTValue *o1, cTValue *o2, int op);
30LJ_FUNCA void lj_meta_call(lua_State *L, TValue *func, TValue *top); 31LJ_FUNCA void lj_meta_call(lua_State *L, TValue *func, TValue *top);
31LJ_FUNCA void LJ_FASTCALL lj_meta_for(lua_State *L, TValue *base); 32LJ_FUNCA void LJ_FASTCALL lj_meta_for(lua_State *L, TValue *base);
diff --git a/src/lj_obj.h b/src/lj_obj.h
index f49b12f9..1bd50809 100644
--- a/src/lj_obj.h
+++ b/src/lj_obj.h
@@ -434,7 +434,7 @@ enum {
434 434
435#define setvmstate(g, st) ((g)->vmstate = ~LJ_VMST_##st) 435#define setvmstate(g, st) ((g)->vmstate = ~LJ_VMST_##st)
436 436
437/* Metamethods. */ 437/* Metamethods. ORDER MM */
438#ifdef LUAJIT_ENABLE_LUA52COMPAT 438#ifdef LUAJIT_ENABLE_LUA52COMPAT
439#define MMDEF_52(_) _(pairs) _(ipairs) 439#define MMDEF_52(_) _(pairs) _(ipairs)
440#else 440#else
diff --git a/src/lj_record.c b/src/lj_record.c
index 3e5d3c89..2d92987e 100644
--- a/src/lj_record.c
+++ b/src/lj_record.c
@@ -812,6 +812,23 @@ static void rec_mm_comp(jit_State *J, RecordIndex *ix, int op)
812 } 812 }
813} 813}
814 814
815#if LJ_HASFFI
816/* Setup call to cdata comparison metamethod. */
817static void rec_mm_comp_cdata(jit_State *J, RecordIndex *ix, int op, MMS mm)
818{
819 if (tref_iscdata(ix->val)) {
820 ix->tab = ix->val;
821 copyTV(J->L, &ix->tabv, &ix->valv);
822 } else {
823 lua_assert(tref_iscdata(ix->key));
824 ix->tab = ix->key;
825 copyTV(J->L, &ix->tabv, &ix->keyv);
826 }
827 lj_record_mm_lookup(J, ix, mm);
828 rec_mm_callcomp(J, ix, op);
829}
830#endif
831
815/* -- Indexed access ------------------------------------------------------ */ 832/* -- Indexed access ------------------------------------------------------ */
816 833
817/* Record bounds-check. */ 834/* Record bounds-check. */
@@ -1410,6 +1427,12 @@ void lj_record_ins(jit_State *J)
1410 /* -- Comparison ops ---------------------------------------------------- */ 1427 /* -- Comparison ops ---------------------------------------------------- */
1411 1428
1412 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1429 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1430#if LJ_HASFFI
1431 if (tref_iscdata(ra) || tref_iscdata(rc)) {
1432 rec_mm_comp_cdata(J, &ix, op, ((int)op & 2) ? MM_le : MM_lt);
1433 break;
1434 }
1435#endif
1413 /* Emit nothing for two numeric or string consts. */ 1436 /* Emit nothing for two numeric or string consts. */
1414 if (!(tref_isk2(ra,rc) && tref_isnumber_str(ra) && tref_isnumber_str(rc))) { 1437 if (!(tref_isk2(ra,rc) && tref_isnumber_str(ra) && tref_isnumber_str(rc))) {
1415 IRType ta = tref_isinteger(ra) ? IRT_INT : tref_type(ra); 1438 IRType ta = tref_isinteger(ra) ? IRT_INT : tref_type(ra);
@@ -1452,6 +1475,12 @@ void lj_record_ins(jit_State *J)
1452 case BC_ISEQS: case BC_ISNES: 1475 case BC_ISEQS: case BC_ISNES:
1453 case BC_ISEQN: case BC_ISNEN: 1476 case BC_ISEQN: case BC_ISNEN:
1454 case BC_ISEQP: case BC_ISNEP: 1477 case BC_ISEQP: case BC_ISNEP:
1478#if LJ_HASFFI
1479 if (tref_iscdata(ra) || tref_iscdata(rc)) {
1480 rec_mm_comp_cdata(J, &ix, op, MM_eq);
1481 break;
1482 }
1483#endif
1455 /* Emit nothing for two non-table, non-udata consts. */ 1484 /* Emit nothing for two non-table, non-udata consts. */
1456 if (!(tref_isk2(ra, rc) && !(tref_istab(ra) || tref_isudata(ra)))) { 1485 if (!(tref_isk2(ra, rc) && !(tref_istab(ra) || tref_isudata(ra)))) {
1457 int diff; 1486 int diff;