1 /* Generated by Nim Compiler v1.6.2 */
2 #define NIM_INTBITS 32
3 
4 #include "nimbase.h"
5 #undef LANGUAGE_C
6 #undef MIPSEB
7 #undef MIPSEL
8 #undef PPC
9 #undef R3000
10 #undef R4000
11 #undef i386
12 #undef linux
13 #undef mips
14 #undef near
15 #undef far
16 #undef powerpc
17 #undef unix
18 #define nimfr_(x, y)
19 #define nimln_(x, y)
20 typedef struct NimStringDesc NimStringDesc;
21 typedef struct TGenericSeq TGenericSeq;
22 typedef struct tySequence__qwqHTkRvwhrRyENtudHQ7g tySequence__qwqHTkRvwhrRyENtudHQ7g;
23 typedef struct TNimType TNimType;
24 typedef struct TNimNode TNimNode;
25 struct TGenericSeq {
26 NI len;
27 NI reserved;
28 };
29 struct NimStringDesc {
30   TGenericSeq Sup;
31 NIM_CHAR data[SEQ_DECL_SIZE];
32 };
33 typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
34 typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
35 typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
36 typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
37 struct TNimType {
38 NI size;
39 NI align;
40 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
41 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
42 TNimType* base;
43 TNimNode* node;
44 void* finalizer;
45 tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
46 tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
47 };
48 typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
49 struct TNimNode {
50 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
51 NI offset;
52 TNimType* typ;
53 NCSTRING name;
54 NI len;
55 TNimNode** sons;
56 };
57 struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
58   TGenericSeq Sup;
59   NI data[SEQ_DECL_SIZE];
60 };
61 N_LIB_PRIVATE N_NIMCALL(NI, editDistance__stdZeditdistance_2)(NimStringDesc* a, NimStringDesc* b);
62 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, eqeq___pureZunicode_908)(NI32 a, NI32 b);
63 N_LIB_PRIVATE N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
64 N_LIB_PRIVATE N_NIMCALL(NI32, runeAt__pureZunicode_95)(NimStringDesc* s, NI i);
65 N_LIB_PRIVATE N_NIMCALL(NI, size__pureZunicode_5119)(NI32 r);
66 extern TNimType NTIseqLtpositionT__qwqHTkRvwhrRyENtudHQ7g_;
N_NIMCALL(NI,editDistance__stdZeditdistance_2)67 N_LIB_PRIVATE N_NIMCALL(NI, editDistance__stdZeditdistance_2)(NimStringDesc* a, NimStringDesc* b) {
68 	NI result;
69 	NI iStart;
70 	NI iNextA;
71 	NI iNextB;
72 	NI32 runeA;
73 	NI32 runeB;
74 	NI lenRunesA;
75 	NI lenRunesB;
76 	NI iEndA;
77 	NI iEndB;
78 	NI iCurrentA;
79 	NI iCurrentB;
80 	NI len1;
81 	NI len2;
82 	tySequence__qwqHTkRvwhrRyENtudHQ7g* row;
83 	NI half;
84 	NI e;
85 	NI char2pI;
86 	NI char2pPrev;
87 {	result = (NI)0;
88 	{
89 		if (!((b ? b->Sup.len : 0) < (a ? a->Sup.len : 0))) goto LA3_;
90 		result = editDistance__stdZeditdistance_2(b, a);
91 		goto BeforeRet_;
92 	}
93 	LA3_: ;
94 	iStart = ((NI) 0);
95 	iNextA = ((NI) 0);
96 	iNextB = ((NI) 0);
97 	runeA = (NI32)0;
98 	runeB = (NI32)0;
99 	lenRunesA = ((NI) 0);
100 	lenRunesB = ((NI) 0);
101 	{
102 		{
103 			while (1) {
104 				if (!(iStart < (a ? a->Sup.len : 0))) goto LA7;
105 				iNextA = iStart;
106 				{
107 					if (!((NU32)(((NU) (((NU8)(a->data[iNextA]))))) <= (NU32)(((NU) 127)))) goto LA10_;
108 					runeA = ((NI32) (((NU) (((NU8)(a->data[iNextA]))))));
109 					iNextA += ((NI) 1);
110 				}
111 				goto LA8_;
112 				LA10_: ;
113 				{
114 					if (!((NU)((NU32)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU32)(((NI) 5))) == ((NU) 6))) goto LA13_;
115 					{
116 						if (!(iNextA <= (NI)((a ? a->Sup.len : 0) - ((NI) 2)))) goto LA17_;
117 						runeA = ((NI32) ((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 31))) << (NU32)(((NI) 6))) | (NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63)))));
118 						iNextA += ((NI) 2);
119 					}
120 					goto LA15_;
121 					LA17_: ;
122 					{
123 						runeA = ((NI32) 65533);
124 						iNextA += ((NI) 1);
125 					}
126 					LA15_: ;
127 				}
128 				goto LA8_;
129 				LA13_: ;
130 				{
131 					if (!((NU)((NU32)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU32)(((NI) 4))) == ((NU) 14))) goto LA21_;
132 					{
133 						if (!(iNextA <= (NI)((a ? a->Sup.len : 0) - ((NI) 3)))) goto LA25_;
134 						runeA = ((NI32) ((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 15))) << (NU32)(((NI) 12))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63)))));
135 						iNextA += ((NI) 3);
136 					}
137 					goto LA23_;
138 					LA25_: ;
139 					{
140 						runeA = ((NI32) 65533);
141 						iNextA += ((NI) 1);
142 					}
143 					LA23_: ;
144 				}
145 				goto LA8_;
146 				LA21_: ;
147 				{
148 					if (!((NU)((NU32)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU32)(((NI) 3))) == ((NU) 30))) goto LA29_;
149 					{
150 						if (!(iNextA <= (NI)((a ? a->Sup.len : 0) - ((NI) 4)))) goto LA33_;
151 						runeA = ((NI32) ((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 7))) << (NU32)(((NI) 18))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 3))])))) & ((NU) 63)))));
152 						iNextA += ((NI) 4);
153 					}
154 					goto LA31_;
155 					LA33_: ;
156 					{
157 						runeA = ((NI32) 65533);
158 						iNextA += ((NI) 1);
159 					}
160 					LA31_: ;
161 				}
162 				goto LA8_;
163 				LA29_: ;
164 				{
165 					if (!((NU)((NU32)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU32)(((NI) 2))) == ((NU) 62))) goto LA37_;
166 					{
167 						if (!(iNextA <= (NI)((a ? a->Sup.len : 0) - ((NI) 5)))) goto LA41_;
168 						runeA = ((NI32) ((NU)((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 3))) << (NU32)(((NI) 24))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 18)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 3))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 4))])))) & ((NU) 63)))));
169 						iNextA += ((NI) 5);
170 					}
171 					goto LA39_;
172 					LA41_: ;
173 					{
174 						runeA = ((NI32) 65533);
175 						iNextA += ((NI) 1);
176 					}
177 					LA39_: ;
178 				}
179 				goto LA8_;
180 				LA37_: ;
181 				{
182 					if (!((NU)((NU32)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU32)(((NI) 1))) == ((NU) 126))) goto LA45_;
183 					{
184 						if (!(iNextA <= (NI)((a ? a->Sup.len : 0) - ((NI) 6)))) goto LA49_;
185 						runeA = ((NI32) ((NU)((NU)((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 1))) << (NU32)(((NI) 30))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 24)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 18)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 3))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 4))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 5))])))) & ((NU) 63)))));
186 						iNextA += ((NI) 6);
187 					}
188 					goto LA47_;
189 					LA49_: ;
190 					{
191 						runeA = ((NI32) 65533);
192 						iNextA += ((NI) 1);
193 					}
194 					LA47_: ;
195 				}
196 				goto LA8_;
197 				LA45_: ;
198 				{
199 					runeA = ((NI32) (((NU) (((NU8)(a->data[iNextA]))))));
200 					iNextA += ((NI) 1);
201 				}
202 				LA8_: ;
203 				iNextB = iStart;
204 				{
205 					if (!((NU32)(((NU) (((NU8)(b->data[iNextB]))))) <= (NU32)(((NU) 127)))) goto LA55_;
206 					runeB = ((NI32) (((NU) (((NU8)(b->data[iNextB]))))));
207 					iNextB += ((NI) 1);
208 				}
209 				goto LA53_;
210 				LA55_: ;
211 				{
212 					if (!((NU)((NU32)(((NU) (((NU8)(b->data[iNextB]))))) >> (NU32)(((NI) 5))) == ((NU) 6))) goto LA58_;
213 					{
214 						if (!(iNextB <= (NI)((b ? b->Sup.len : 0) - ((NI) 2)))) goto LA62_;
215 						runeB = ((NI32) ((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[iNextB])))) & ((NU) 31))) << (NU32)(((NI) 6))) | (NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 1))])))) & ((NU) 63)))));
216 						iNextB += ((NI) 2);
217 					}
218 					goto LA60_;
219 					LA62_: ;
220 					{
221 						runeB = ((NI32) 65533);
222 						iNextB += ((NI) 1);
223 					}
224 					LA60_: ;
225 				}
226 				goto LA53_;
227 				LA58_: ;
228 				{
229 					if (!((NU)((NU32)(((NU) (((NU8)(b->data[iNextB]))))) >> (NU32)(((NI) 4))) == ((NU) 14))) goto LA66_;
230 					{
231 						if (!(iNextB <= (NI)((b ? b->Sup.len : 0) - ((NI) 3)))) goto LA70_;
232 						runeB = ((NI32) ((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[iNextB])))) & ((NU) 15))) << (NU32)(((NI) 12))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 2))])))) & ((NU) 63)))));
233 						iNextB += ((NI) 3);
234 					}
235 					goto LA68_;
236 					LA70_: ;
237 					{
238 						runeB = ((NI32) 65533);
239 						iNextB += ((NI) 1);
240 					}
241 					LA68_: ;
242 				}
243 				goto LA53_;
244 				LA66_: ;
245 				{
246 					if (!((NU)((NU32)(((NU) (((NU8)(b->data[iNextB]))))) >> (NU32)(((NI) 3))) == ((NU) 30))) goto LA74_;
247 					{
248 						if (!(iNextB <= (NI)((b ? b->Sup.len : 0) - ((NI) 4)))) goto LA78_;
249 						runeB = ((NI32) ((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[iNextB])))) & ((NU) 7))) << (NU32)(((NI) 18))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 3))])))) & ((NU) 63)))));
250 						iNextB += ((NI) 4);
251 					}
252 					goto LA76_;
253 					LA78_: ;
254 					{
255 						runeB = ((NI32) 65533);
256 						iNextB += ((NI) 1);
257 					}
258 					LA76_: ;
259 				}
260 				goto LA53_;
261 				LA74_: ;
262 				{
263 					if (!((NU)((NU32)(((NU) (((NU8)(b->data[iNextB]))))) >> (NU32)(((NI) 2))) == ((NU) 62))) goto LA82_;
264 					{
265 						if (!(iNextB <= (NI)((b ? b->Sup.len : 0) - ((NI) 5)))) goto LA86_;
266 						runeB = ((NI32) ((NU)((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[iNextB])))) & ((NU) 3))) << (NU32)(((NI) 24))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 18)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 3))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 4))])))) & ((NU) 63)))));
267 						iNextB += ((NI) 5);
268 					}
269 					goto LA84_;
270 					LA86_: ;
271 					{
272 						runeB = ((NI32) 65533);
273 						iNextB += ((NI) 1);
274 					}
275 					LA84_: ;
276 				}
277 				goto LA53_;
278 				LA82_: ;
279 				{
280 					if (!((NU)((NU32)(((NU) (((NU8)(b->data[iNextB]))))) >> (NU32)(((NI) 1))) == ((NU) 126))) goto LA90_;
281 					{
282 						if (!(iNextB <= (NI)((b ? b->Sup.len : 0) - ((NI) 6)))) goto LA94_;
283 						runeB = ((NI32) ((NU)((NU)((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[iNextB])))) & ((NU) 1))) << (NU32)(((NI) 30))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 24)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 18)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 3))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 4))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 5))])))) & ((NU) 63)))));
284 						iNextB += ((NI) 6);
285 					}
286 					goto LA92_;
287 					LA94_: ;
288 					{
289 						runeB = ((NI32) 65533);
290 						iNextB += ((NI) 1);
291 					}
292 					LA92_: ;
293 				}
294 				goto LA53_;
295 				LA90_: ;
296 				{
297 					runeB = ((NI32) (((NU) (((NU8)(b->data[iNextB]))))));
298 					iNextB += ((NI) 1);
299 				}
300 				LA53_: ;
301 				{
302 					NIM_BOOL T100_;
303 					T100_ = (NIM_BOOL)0;
304 					T100_ = eqeq___pureZunicode_908(runeA, runeB);
305 					if (!!(T100_)) goto LA101_;
306 					lenRunesA += ((NI) 1);
307 					lenRunesB += ((NI) 1);
308 					goto LA6;
309 				}
310 				LA101_: ;
311 				iStart = iNextA;
312 			} LA7: ;
313 		} LA6: ;
314 	}
315 	iEndA = iNextA;
316 	iEndB = iNextB;
317 	iCurrentA = iNextA;
318 	iCurrentB = iNextB;
319 	{
320 		NI addRunesA;
321 		NI addRunesB;
322 		addRunesA = ((NI) 0);
323 		addRunesB = ((NI) 0);
324 		{
325 			while (1) {
326 				NIM_BOOL T106_;
327 				T106_ = (NIM_BOOL)0;
328 				T106_ = (iCurrentA < (a ? a->Sup.len : 0));
329 				if (!(T106_)) goto LA107_;
330 				T106_ = (iCurrentB < (b ? b->Sup.len : 0));
331 				LA107_: ;
332 				if (!T106_) goto LA105;
333 				iNextA = iCurrentA;
334 				{
335 					if (!((NU32)(((NU) (((NU8)(a->data[iNextA]))))) <= (NU32)(((NU) 127)))) goto LA110_;
336 					runeA = ((NI32) (((NU) (((NU8)(a->data[iNextA]))))));
337 					iNextA += ((NI) 1);
338 				}
339 				goto LA108_;
340 				LA110_: ;
341 				{
342 					if (!((NU)((NU32)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU32)(((NI) 5))) == ((NU) 6))) goto LA113_;
343 					{
344 						if (!(iNextA <= (NI)((a ? a->Sup.len : 0) - ((NI) 2)))) goto LA117_;
345 						runeA = ((NI32) ((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 31))) << (NU32)(((NI) 6))) | (NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63)))));
346 						iNextA += ((NI) 2);
347 					}
348 					goto LA115_;
349 					LA117_: ;
350 					{
351 						runeA = ((NI32) 65533);
352 						iNextA += ((NI) 1);
353 					}
354 					LA115_: ;
355 				}
356 				goto LA108_;
357 				LA113_: ;
358 				{
359 					if (!((NU)((NU32)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU32)(((NI) 4))) == ((NU) 14))) goto LA121_;
360 					{
361 						if (!(iNextA <= (NI)((a ? a->Sup.len : 0) - ((NI) 3)))) goto LA125_;
362 						runeA = ((NI32) ((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 15))) << (NU32)(((NI) 12))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63)))));
363 						iNextA += ((NI) 3);
364 					}
365 					goto LA123_;
366 					LA125_: ;
367 					{
368 						runeA = ((NI32) 65533);
369 						iNextA += ((NI) 1);
370 					}
371 					LA123_: ;
372 				}
373 				goto LA108_;
374 				LA121_: ;
375 				{
376 					if (!((NU)((NU32)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU32)(((NI) 3))) == ((NU) 30))) goto LA129_;
377 					{
378 						if (!(iNextA <= (NI)((a ? a->Sup.len : 0) - ((NI) 4)))) goto LA133_;
379 						runeA = ((NI32) ((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 7))) << (NU32)(((NI) 18))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 3))])))) & ((NU) 63)))));
380 						iNextA += ((NI) 4);
381 					}
382 					goto LA131_;
383 					LA133_: ;
384 					{
385 						runeA = ((NI32) 65533);
386 						iNextA += ((NI) 1);
387 					}
388 					LA131_: ;
389 				}
390 				goto LA108_;
391 				LA129_: ;
392 				{
393 					if (!((NU)((NU32)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU32)(((NI) 2))) == ((NU) 62))) goto LA137_;
394 					{
395 						if (!(iNextA <= (NI)((a ? a->Sup.len : 0) - ((NI) 5)))) goto LA141_;
396 						runeA = ((NI32) ((NU)((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 3))) << (NU32)(((NI) 24))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 18)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 3))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 4))])))) & ((NU) 63)))));
397 						iNextA += ((NI) 5);
398 					}
399 					goto LA139_;
400 					LA141_: ;
401 					{
402 						runeA = ((NI32) 65533);
403 						iNextA += ((NI) 1);
404 					}
405 					LA139_: ;
406 				}
407 				goto LA108_;
408 				LA137_: ;
409 				{
410 					if (!((NU)((NU32)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU32)(((NI) 1))) == ((NU) 126))) goto LA145_;
411 					{
412 						if (!(iNextA <= (NI)((a ? a->Sup.len : 0) - ((NI) 6)))) goto LA149_;
413 						runeA = ((NI32) ((NU)((NU)((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 1))) << (NU32)(((NI) 30))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 24)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 18)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 3))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 4))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 5))])))) & ((NU) 63)))));
414 						iNextA += ((NI) 6);
415 					}
416 					goto LA147_;
417 					LA149_: ;
418 					{
419 						runeA = ((NI32) 65533);
420 						iNextA += ((NI) 1);
421 					}
422 					LA147_: ;
423 				}
424 				goto LA108_;
425 				LA145_: ;
426 				{
427 					runeA = ((NI32) (((NU) (((NU8)(a->data[iNextA]))))));
428 					iNextA += ((NI) 1);
429 				}
430 				LA108_: ;
431 				iNextB = iCurrentB;
432 				{
433 					if (!((NU32)(((NU) (((NU8)(b->data[iNextB]))))) <= (NU32)(((NU) 127)))) goto LA155_;
434 					runeB = ((NI32) (((NU) (((NU8)(b->data[iNextB]))))));
435 					iNextB += ((NI) 1);
436 				}
437 				goto LA153_;
438 				LA155_: ;
439 				{
440 					if (!((NU)((NU32)(((NU) (((NU8)(b->data[iNextB]))))) >> (NU32)(((NI) 5))) == ((NU) 6))) goto LA158_;
441 					{
442 						if (!(iNextB <= (NI)((b ? b->Sup.len : 0) - ((NI) 2)))) goto LA162_;
443 						runeB = ((NI32) ((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[iNextB])))) & ((NU) 31))) << (NU32)(((NI) 6))) | (NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 1))])))) & ((NU) 63)))));
444 						iNextB += ((NI) 2);
445 					}
446 					goto LA160_;
447 					LA162_: ;
448 					{
449 						runeB = ((NI32) 65533);
450 						iNextB += ((NI) 1);
451 					}
452 					LA160_: ;
453 				}
454 				goto LA153_;
455 				LA158_: ;
456 				{
457 					if (!((NU)((NU32)(((NU) (((NU8)(b->data[iNextB]))))) >> (NU32)(((NI) 4))) == ((NU) 14))) goto LA166_;
458 					{
459 						if (!(iNextB <= (NI)((b ? b->Sup.len : 0) - ((NI) 3)))) goto LA170_;
460 						runeB = ((NI32) ((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[iNextB])))) & ((NU) 15))) << (NU32)(((NI) 12))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 2))])))) & ((NU) 63)))));
461 						iNextB += ((NI) 3);
462 					}
463 					goto LA168_;
464 					LA170_: ;
465 					{
466 						runeB = ((NI32) 65533);
467 						iNextB += ((NI) 1);
468 					}
469 					LA168_: ;
470 				}
471 				goto LA153_;
472 				LA166_: ;
473 				{
474 					if (!((NU)((NU32)(((NU) (((NU8)(b->data[iNextB]))))) >> (NU32)(((NI) 3))) == ((NU) 30))) goto LA174_;
475 					{
476 						if (!(iNextB <= (NI)((b ? b->Sup.len : 0) - ((NI) 4)))) goto LA178_;
477 						runeB = ((NI32) ((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[iNextB])))) & ((NU) 7))) << (NU32)(((NI) 18))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 3))])))) & ((NU) 63)))));
478 						iNextB += ((NI) 4);
479 					}
480 					goto LA176_;
481 					LA178_: ;
482 					{
483 						runeB = ((NI32) 65533);
484 						iNextB += ((NI) 1);
485 					}
486 					LA176_: ;
487 				}
488 				goto LA153_;
489 				LA174_: ;
490 				{
491 					if (!((NU)((NU32)(((NU) (((NU8)(b->data[iNextB]))))) >> (NU32)(((NI) 2))) == ((NU) 62))) goto LA182_;
492 					{
493 						if (!(iNextB <= (NI)((b ? b->Sup.len : 0) - ((NI) 5)))) goto LA186_;
494 						runeB = ((NI32) ((NU)((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[iNextB])))) & ((NU) 3))) << (NU32)(((NI) 24))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 18)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 3))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 4))])))) & ((NU) 63)))));
495 						iNextB += ((NI) 5);
496 					}
497 					goto LA184_;
498 					LA186_: ;
499 					{
500 						runeB = ((NI32) 65533);
501 						iNextB += ((NI) 1);
502 					}
503 					LA184_: ;
504 				}
505 				goto LA153_;
506 				LA182_: ;
507 				{
508 					if (!((NU)((NU32)(((NU) (((NU8)(b->data[iNextB]))))) >> (NU32)(((NI) 1))) == ((NU) 126))) goto LA190_;
509 					{
510 						if (!(iNextB <= (NI)((b ? b->Sup.len : 0) - ((NI) 6)))) goto LA194_;
511 						runeB = ((NI32) ((NU)((NU)((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[iNextB])))) & ((NU) 1))) << (NU32)(((NI) 30))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 24)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 18)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 3))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 4))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 5))])))) & ((NU) 63)))));
512 						iNextB += ((NI) 6);
513 					}
514 					goto LA192_;
515 					LA194_: ;
516 					{
517 						runeB = ((NI32) 65533);
518 						iNextB += ((NI) 1);
519 					}
520 					LA192_: ;
521 				}
522 				goto LA153_;
523 				LA190_: ;
524 				{
525 					runeB = ((NI32) (((NU) (((NU8)(b->data[iNextB]))))));
526 					iNextB += ((NI) 1);
527 				}
528 				LA153_: ;
529 				addRunesA += ((NI) 1);
530 				addRunesB += ((NI) 1);
531 				{
532 					NIM_BOOL T200_;
533 					T200_ = (NIM_BOOL)0;
534 					T200_ = eqeq___pureZunicode_908(runeA, runeB);
535 					if (!!(T200_)) goto LA201_;
536 					iEndA = iNextA;
537 					iEndB = iNextB;
538 					lenRunesA += addRunesA;
539 					lenRunesB += addRunesB;
540 					addRunesA = ((NI) 0);
541 					addRunesB = ((NI) 0);
542 				}
543 				LA201_: ;
544 				iCurrentA = iNextA;
545 				iCurrentB = iNextB;
546 			} LA105: ;
547 		}
548 		{
549 			if (!((a ? a->Sup.len : 0) <= iCurrentA)) goto LA205_;
550 			{
551 				if (!(iCurrentB < (b ? b->Sup.len : 0))) goto LA209_;
552 				iEndA = iCurrentA;
553 				iEndB = iCurrentB;
554 				lenRunesA += addRunesA;
555 				lenRunesB += addRunesB;
556 				{
557 					while (1) {
558 						{
559 							if (!((NU32)(((NU) (((NU8)(b->data[iEndB]))))) <= (NU32)(((NU) 127)))) goto LA215_;
560 							runeB = ((NI32) (((NU) (((NU8)(b->data[iEndB]))))));
561 							iEndB += ((NI) 1);
562 						}
563 						goto LA213_;
564 						LA215_: ;
565 						{
566 							if (!((NU)((NU32)(((NU) (((NU8)(b->data[iEndB]))))) >> (NU32)(((NI) 5))) == ((NU) 6))) goto LA218_;
567 							{
568 								if (!(iEndB <= (NI)((b ? b->Sup.len : 0) - ((NI) 2)))) goto LA222_;
569 								runeB = ((NI32) ((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[iEndB])))) & ((NU) 31))) << (NU32)(((NI) 6))) | (NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 1))])))) & ((NU) 63)))));
570 								iEndB += ((NI) 2);
571 							}
572 							goto LA220_;
573 							LA222_: ;
574 							{
575 								runeB = ((NI32) 65533);
576 								iEndB += ((NI) 1);
577 							}
578 							LA220_: ;
579 						}
580 						goto LA213_;
581 						LA218_: ;
582 						{
583 							if (!((NU)((NU32)(((NU) (((NU8)(b->data[iEndB]))))) >> (NU32)(((NI) 4))) == ((NU) 14))) goto LA226_;
584 							{
585 								if (!(iEndB <= (NI)((b ? b->Sup.len : 0) - ((NI) 3)))) goto LA230_;
586 								runeB = ((NI32) ((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[iEndB])))) & ((NU) 15))) << (NU32)(((NI) 12))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 2))])))) & ((NU) 63)))));
587 								iEndB += ((NI) 3);
588 							}
589 							goto LA228_;
590 							LA230_: ;
591 							{
592 								runeB = ((NI32) 65533);
593 								iEndB += ((NI) 1);
594 							}
595 							LA228_: ;
596 						}
597 						goto LA213_;
598 						LA226_: ;
599 						{
600 							if (!((NU)((NU32)(((NU) (((NU8)(b->data[iEndB]))))) >> (NU32)(((NI) 3))) == ((NU) 30))) goto LA234_;
601 							{
602 								if (!(iEndB <= (NI)((b ? b->Sup.len : 0) - ((NI) 4)))) goto LA238_;
603 								runeB = ((NI32) ((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[iEndB])))) & ((NU) 7))) << (NU32)(((NI) 18))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 3))])))) & ((NU) 63)))));
604 								iEndB += ((NI) 4);
605 							}
606 							goto LA236_;
607 							LA238_: ;
608 							{
609 								runeB = ((NI32) 65533);
610 								iEndB += ((NI) 1);
611 							}
612 							LA236_: ;
613 						}
614 						goto LA213_;
615 						LA234_: ;
616 						{
617 							if (!((NU)((NU32)(((NU) (((NU8)(b->data[iEndB]))))) >> (NU32)(((NI) 2))) == ((NU) 62))) goto LA242_;
618 							{
619 								if (!(iEndB <= (NI)((b ? b->Sup.len : 0) - ((NI) 5)))) goto LA246_;
620 								runeB = ((NI32) ((NU)((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[iEndB])))) & ((NU) 3))) << (NU32)(((NI) 24))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 18)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 3))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 4))])))) & ((NU) 63)))));
621 								iEndB += ((NI) 5);
622 							}
623 							goto LA244_;
624 							LA246_: ;
625 							{
626 								runeB = ((NI32) 65533);
627 								iEndB += ((NI) 1);
628 							}
629 							LA244_: ;
630 						}
631 						goto LA213_;
632 						LA242_: ;
633 						{
634 							if (!((NU)((NU32)(((NU) (((NU8)(b->data[iEndB]))))) >> (NU32)(((NI) 1))) == ((NU) 126))) goto LA250_;
635 							{
636 								if (!(iEndB <= (NI)((b ? b->Sup.len : 0) - ((NI) 6)))) goto LA254_;
637 								runeB = ((NI32) ((NU)((NU)((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[iEndB])))) & ((NU) 1))) << (NU32)(((NI) 30))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 24)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 18)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 3))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 4))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 5))])))) & ((NU) 63)))));
638 								iEndB += ((NI) 6);
639 							}
640 							goto LA252_;
641 							LA254_: ;
642 							{
643 								runeB = ((NI32) 65533);
644 								iEndB += ((NI) 1);
645 							}
646 							LA252_: ;
647 						}
648 						goto LA213_;
649 						LA250_: ;
650 						{
651 							runeB = ((NI32) (((NU) (((NU8)(b->data[iEndB]))))));
652 							iEndB += ((NI) 1);
653 						}
654 						LA213_: ;
655 						lenRunesB += ((NI) 1);
656 						{
657 							if (!((b ? b->Sup.len : 0) <= iEndB)) goto LA260_;
658 							goto LA211;
659 						}
660 						LA260_: ;
661 					}
662 				} LA211: ;
663 			}
664 			LA209_: ;
665 		}
666 		goto LA203_;
667 		LA205_: ;
668 		{
669 			if (!((b ? b->Sup.len : 0) <= iCurrentB)) goto LA263_;
670 			iEndA = iCurrentA;
671 			iEndB = iCurrentB;
672 			lenRunesA += addRunesA;
673 			lenRunesB += addRunesB;
674 			{
675 				while (1) {
676 					{
677 						if (!((NU32)(((NU) (((NU8)(a->data[iEndA]))))) <= (NU32)(((NU) 127)))) goto LA269_;
678 						runeA = ((NI32) (((NU) (((NU8)(a->data[iEndA]))))));
679 						iEndA += ((NI) 1);
680 					}
681 					goto LA267_;
682 					LA269_: ;
683 					{
684 						if (!((NU)((NU32)(((NU) (((NU8)(a->data[iEndA]))))) >> (NU32)(((NI) 5))) == ((NU) 6))) goto LA272_;
685 						{
686 							if (!(iEndA <= (NI)((a ? a->Sup.len : 0) - ((NI) 2)))) goto LA276_;
687 							runeA = ((NI32) ((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iEndA])))) & ((NU) 31))) << (NU32)(((NI) 6))) | (NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 1))])))) & ((NU) 63)))));
688 							iEndA += ((NI) 2);
689 						}
690 						goto LA274_;
691 						LA276_: ;
692 						{
693 							runeA = ((NI32) 65533);
694 							iEndA += ((NI) 1);
695 						}
696 						LA274_: ;
697 					}
698 					goto LA267_;
699 					LA272_: ;
700 					{
701 						if (!((NU)((NU32)(((NU) (((NU8)(a->data[iEndA]))))) >> (NU32)(((NI) 4))) == ((NU) 14))) goto LA280_;
702 						{
703 							if (!(iEndA <= (NI)((a ? a->Sup.len : 0) - ((NI) 3)))) goto LA284_;
704 							runeA = ((NI32) ((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iEndA])))) & ((NU) 15))) << (NU32)(((NI) 12))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 2))])))) & ((NU) 63)))));
705 							iEndA += ((NI) 3);
706 						}
707 						goto LA282_;
708 						LA284_: ;
709 						{
710 							runeA = ((NI32) 65533);
711 							iEndA += ((NI) 1);
712 						}
713 						LA282_: ;
714 					}
715 					goto LA267_;
716 					LA280_: ;
717 					{
718 						if (!((NU)((NU32)(((NU) (((NU8)(a->data[iEndA]))))) >> (NU32)(((NI) 3))) == ((NU) 30))) goto LA288_;
719 						{
720 							if (!(iEndA <= (NI)((a ? a->Sup.len : 0) - ((NI) 4)))) goto LA292_;
721 							runeA = ((NI32) ((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iEndA])))) & ((NU) 7))) << (NU32)(((NI) 18))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 3))])))) & ((NU) 63)))));
722 							iEndA += ((NI) 4);
723 						}
724 						goto LA290_;
725 						LA292_: ;
726 						{
727 							runeA = ((NI32) 65533);
728 							iEndA += ((NI) 1);
729 						}
730 						LA290_: ;
731 					}
732 					goto LA267_;
733 					LA288_: ;
734 					{
735 						if (!((NU)((NU32)(((NU) (((NU8)(a->data[iEndA]))))) >> (NU32)(((NI) 2))) == ((NU) 62))) goto LA296_;
736 						{
737 							if (!(iEndA <= (NI)((a ? a->Sup.len : 0) - ((NI) 5)))) goto LA300_;
738 							runeA = ((NI32) ((NU)((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iEndA])))) & ((NU) 3))) << (NU32)(((NI) 24))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 18)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 3))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 4))])))) & ((NU) 63)))));
739 							iEndA += ((NI) 5);
740 						}
741 						goto LA298_;
742 						LA300_: ;
743 						{
744 							runeA = ((NI32) 65533);
745 							iEndA += ((NI) 1);
746 						}
747 						LA298_: ;
748 					}
749 					goto LA267_;
750 					LA296_: ;
751 					{
752 						if (!((NU)((NU32)(((NU) (((NU8)(a->data[iEndA]))))) >> (NU32)(((NI) 1))) == ((NU) 126))) goto LA304_;
753 						{
754 							if (!(iEndA <= (NI)((a ? a->Sup.len : 0) - ((NI) 6)))) goto LA308_;
755 							runeA = ((NI32) ((NU)((NU)((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iEndA])))) & ((NU) 1))) << (NU32)(((NI) 30))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 24)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 18)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 3))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 4))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 5))])))) & ((NU) 63)))));
756 							iEndA += ((NI) 6);
757 						}
758 						goto LA306_;
759 						LA308_: ;
760 						{
761 							runeA = ((NI32) 65533);
762 							iEndA += ((NI) 1);
763 						}
764 						LA306_: ;
765 					}
766 					goto LA267_;
767 					LA304_: ;
768 					{
769 						runeA = ((NI32) (((NU) (((NU8)(a->data[iEndA]))))));
770 						iEndA += ((NI) 1);
771 					}
772 					LA267_: ;
773 					lenRunesA += ((NI) 1);
774 					{
775 						if (!((a ? a->Sup.len : 0) <= iEndA)) goto LA314_;
776 						goto LA265;
777 					}
778 					LA314_: ;
779 				}
780 			} LA265: ;
781 		}
782 		goto LA203_;
783 		LA263_: ;
784 		LA203_: ;
785 	}
786 	{
787 		{
788 			if (!(lenRunesA == ((NI) 0))) goto LA319_;
789 			result = lenRunesB;
790 			goto BeforeRet_;
791 		}
792 		LA319_: ;
793 		{
794 			if (!(lenRunesB == ((NI) 0))) goto LA323_;
795 			result = lenRunesA;
796 			goto BeforeRet_;
797 		}
798 		LA323_: ;
799 		{
800 			NI iCurrentB_2;
801 			if (!(lenRunesA == ((NI) 1))) goto LA327_;
802 			{
803 				if (!((NU32)(((NU) (((NU8)(a->data[iStart]))))) <= (NU32)(((NU) 127)))) goto LA331_;
804 				runeA = ((NI32) (((NU) (((NU8)(a->data[iStart]))))));
805 			}
806 			goto LA329_;
807 			LA331_: ;
808 			{
809 				if (!((NU)((NU32)(((NU) (((NU8)(a->data[iStart]))))) >> (NU32)(((NI) 5))) == ((NU) 6))) goto LA334_;
810 				{
811 					if (!(iStart <= (NI)((a ? a->Sup.len : 0) - ((NI) 2)))) goto LA338_;
812 					runeA = ((NI32) ((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iStart])))) & ((NU) 31))) << (NU32)(((NI) 6))) | (NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 1))])))) & ((NU) 63)))));
813 				}
814 				goto LA336_;
815 				LA338_: ;
816 				{
817 					runeA = ((NI32) 65533);
818 				}
819 				LA336_: ;
820 			}
821 			goto LA329_;
822 			LA334_: ;
823 			{
824 				if (!((NU)((NU32)(((NU) (((NU8)(a->data[iStart]))))) >> (NU32)(((NI) 4))) == ((NU) 14))) goto LA342_;
825 				{
826 					if (!(iStart <= (NI)((a ? a->Sup.len : 0) - ((NI) 3)))) goto LA346_;
827 					runeA = ((NI32) ((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iStart])))) & ((NU) 15))) << (NU32)(((NI) 12))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 2))])))) & ((NU) 63)))));
828 				}
829 				goto LA344_;
830 				LA346_: ;
831 				{
832 					runeA = ((NI32) 65533);
833 				}
834 				LA344_: ;
835 			}
836 			goto LA329_;
837 			LA342_: ;
838 			{
839 				if (!((NU)((NU32)(((NU) (((NU8)(a->data[iStart]))))) >> (NU32)(((NI) 3))) == ((NU) 30))) goto LA350_;
840 				{
841 					if (!(iStart <= (NI)((a ? a->Sup.len : 0) - ((NI) 4)))) goto LA354_;
842 					runeA = ((NI32) ((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iStart])))) & ((NU) 7))) << (NU32)(((NI) 18))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 3))])))) & ((NU) 63)))));
843 				}
844 				goto LA352_;
845 				LA354_: ;
846 				{
847 					runeA = ((NI32) 65533);
848 				}
849 				LA352_: ;
850 			}
851 			goto LA329_;
852 			LA350_: ;
853 			{
854 				if (!((NU)((NU32)(((NU) (((NU8)(a->data[iStart]))))) >> (NU32)(((NI) 2))) == ((NU) 62))) goto LA358_;
855 				{
856 					if (!(iStart <= (NI)((a ? a->Sup.len : 0) - ((NI) 5)))) goto LA362_;
857 					runeA = ((NI32) ((NU)((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iStart])))) & ((NU) 3))) << (NU32)(((NI) 24))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 18)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 3))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 4))])))) & ((NU) 63)))));
858 				}
859 				goto LA360_;
860 				LA362_: ;
861 				{
862 					runeA = ((NI32) 65533);
863 				}
864 				LA360_: ;
865 			}
866 			goto LA329_;
867 			LA358_: ;
868 			{
869 				if (!((NU)((NU32)(((NU) (((NU8)(a->data[iStart]))))) >> (NU32)(((NI) 1))) == ((NU) 126))) goto LA366_;
870 				{
871 					if (!(iStart <= (NI)((a ? a->Sup.len : 0) - ((NI) 6)))) goto LA370_;
872 					runeA = ((NI32) ((NU)((NU)((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iStart])))) & ((NU) 1))) << (NU32)(((NI) 30))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 24)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 18)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 3))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 4))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 5))])))) & ((NU) 63)))));
873 				}
874 				goto LA368_;
875 				LA370_: ;
876 				{
877 					runeA = ((NI32) 65533);
878 				}
879 				LA368_: ;
880 			}
881 			goto LA329_;
882 			LA366_: ;
883 			{
884 				runeA = ((NI32) (((NU) (((NU8)(a->data[iStart]))))));
885 			}
886 			LA329_: ;
887 			iCurrentB_2 = iStart;
888 			{
889 				while (1) {
890 					if (!(iCurrentB_2 < iEndB)) goto LA375;
891 					{
892 						if (!((NU32)(((NU) (((NU8)(b->data[iCurrentB_2]))))) <= (NU32)(((NU) 127)))) goto LA378_;
893 						runeB = ((NI32) (((NU) (((NU8)(b->data[iCurrentB_2]))))));
894 						iCurrentB_2 += ((NI) 1);
895 					}
896 					goto LA376_;
897 					LA378_: ;
898 					{
899 						if (!((NU)((NU32)(((NU) (((NU8)(b->data[iCurrentB_2]))))) >> (NU32)(((NI) 5))) == ((NU) 6))) goto LA381_;
900 						{
901 							if (!(iCurrentB_2 <= (NI)((b ? b->Sup.len : 0) - ((NI) 2)))) goto LA385_;
902 							runeB = ((NI32) ((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[iCurrentB_2])))) & ((NU) 31))) << (NU32)(((NI) 6))) | (NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 1))])))) & ((NU) 63)))));
903 							iCurrentB_2 += ((NI) 2);
904 						}
905 						goto LA383_;
906 						LA385_: ;
907 						{
908 							runeB = ((NI32) 65533);
909 							iCurrentB_2 += ((NI) 1);
910 						}
911 						LA383_: ;
912 					}
913 					goto LA376_;
914 					LA381_: ;
915 					{
916 						if (!((NU)((NU32)(((NU) (((NU8)(b->data[iCurrentB_2]))))) >> (NU32)(((NI) 4))) == ((NU) 14))) goto LA389_;
917 						{
918 							if (!(iCurrentB_2 <= (NI)((b ? b->Sup.len : 0) - ((NI) 3)))) goto LA393_;
919 							runeB = ((NI32) ((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[iCurrentB_2])))) & ((NU) 15))) << (NU32)(((NI) 12))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 2))])))) & ((NU) 63)))));
920 							iCurrentB_2 += ((NI) 3);
921 						}
922 						goto LA391_;
923 						LA393_: ;
924 						{
925 							runeB = ((NI32) 65533);
926 							iCurrentB_2 += ((NI) 1);
927 						}
928 						LA391_: ;
929 					}
930 					goto LA376_;
931 					LA389_: ;
932 					{
933 						if (!((NU)((NU32)(((NU) (((NU8)(b->data[iCurrentB_2]))))) >> (NU32)(((NI) 3))) == ((NU) 30))) goto LA397_;
934 						{
935 							if (!(iCurrentB_2 <= (NI)((b ? b->Sup.len : 0) - ((NI) 4)))) goto LA401_;
936 							runeB = ((NI32) ((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[iCurrentB_2])))) & ((NU) 7))) << (NU32)(((NI) 18))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 3))])))) & ((NU) 63)))));
937 							iCurrentB_2 += ((NI) 4);
938 						}
939 						goto LA399_;
940 						LA401_: ;
941 						{
942 							runeB = ((NI32) 65533);
943 							iCurrentB_2 += ((NI) 1);
944 						}
945 						LA399_: ;
946 					}
947 					goto LA376_;
948 					LA397_: ;
949 					{
950 						if (!((NU)((NU32)(((NU) (((NU8)(b->data[iCurrentB_2]))))) >> (NU32)(((NI) 2))) == ((NU) 62))) goto LA405_;
951 						{
952 							if (!(iCurrentB_2 <= (NI)((b ? b->Sup.len : 0) - ((NI) 5)))) goto LA409_;
953 							runeB = ((NI32) ((NU)((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[iCurrentB_2])))) & ((NU) 3))) << (NU32)(((NI) 24))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 18)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 3))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 4))])))) & ((NU) 63)))));
954 							iCurrentB_2 += ((NI) 5);
955 						}
956 						goto LA407_;
957 						LA409_: ;
958 						{
959 							runeB = ((NI32) 65533);
960 							iCurrentB_2 += ((NI) 1);
961 						}
962 						LA407_: ;
963 					}
964 					goto LA376_;
965 					LA405_: ;
966 					{
967 						if (!((NU)((NU32)(((NU) (((NU8)(b->data[iCurrentB_2]))))) >> (NU32)(((NI) 1))) == ((NU) 126))) goto LA413_;
968 						{
969 							if (!(iCurrentB_2 <= (NI)((b ? b->Sup.len : 0) - ((NI) 6)))) goto LA417_;
970 							runeB = ((NI32) ((NU)((NU)((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[iCurrentB_2])))) & ((NU) 1))) << (NU32)(((NI) 30))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 24)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 18)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 3))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 4))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 5))])))) & ((NU) 63)))));
971 							iCurrentB_2 += ((NI) 6);
972 						}
973 						goto LA415_;
974 						LA417_: ;
975 						{
976 							runeB = ((NI32) 65533);
977 							iCurrentB_2 += ((NI) 1);
978 						}
979 						LA415_: ;
980 					}
981 					goto LA376_;
982 					LA413_: ;
983 					{
984 						runeB = ((NI32) (((NU) (((NU8)(b->data[iCurrentB_2]))))));
985 						iCurrentB_2 += ((NI) 1);
986 					}
987 					LA376_: ;
988 					{
989 						NIM_BOOL T423_;
990 						T423_ = (NIM_BOOL)0;
991 						T423_ = eqeq___pureZunicode_908(runeA, runeB);
992 						if (!T423_) goto LA424_;
993 						result = (NI)(lenRunesB - ((NI) 1));
994 						goto BeforeRet_;
995 					}
996 					LA424_: ;
997 				} LA375: ;
998 			}
999 			result = lenRunesB;
1000 			goto BeforeRet_;
1001 		}
1002 		LA327_: ;
1003 	}
1004 	len1 = (NI)(lenRunesA + ((NI) 1));
1005 	len2 = (NI)(lenRunesB + ((NI) 1));
1006 	row = NIM_NIL;
1007 	half = (NI)(lenRunesA / ((NI) 2));
1008 	row = (tySequence__qwqHTkRvwhrRyENtudHQ7g*) newSeq((&NTIseqLtpositionT__qwqHTkRvwhrRyENtudHQ7g_), ((NI) (len2)));
1009 	e = (NI)((NI)(iStart + len2) - ((NI) 1));
1010 	{
1011 		NI i;
1012 		NI colontmp_;
1013 		NI res;
1014 		i = (NI)0;
1015 		colontmp_ = (NI)0;
1016 		colontmp_ = (NI)((NI)(len2 - half) - ((NI) 1));
1017 		res = ((NI) 1);
1018 		{
1019 			while (1) {
1020 				if (!(res <= colontmp_)) goto LA428;
1021 				i = res;
1022 				row->data[i] = i;
1023 				res += ((NI) 1);
1024 			} LA428: ;
1025 		}
1026 	}
1027 	row->data[((NI) 0)] = (NI)((NI)(len1 - half) - ((NI) 1));
1028 	iCurrentA = iStart;
1029 	char2pI = ((NI) -1);
1030 	char2pPrev = (NI)0;
1031 	{
1032 		NI i_2;
1033 		NI colontmp__2;
1034 		NI res_2;
1035 		i_2 = (NI)0;
1036 		colontmp__2 = (NI)0;
1037 		colontmp__2 = (NI)(len1 - ((NI) 1));
1038 		res_2 = ((NI) 1);
1039 		{
1040 			while (1) {
1041 				NI char2p;
1042 				NI diff;
1043 				NI x;
1044 				NI p;
1045 				if (!(res_2 <= colontmp__2)) goto LA431;
1046 				i_2 = res_2;
1047 				iNextA = iCurrentA;
1048 				{
1049 					if (!((NU32)(((NU) (((NU8)(a->data[iNextA]))))) <= (NU32)(((NU) 127)))) goto LA434_;
1050 					runeA = ((NI32) (((NU) (((NU8)(a->data[iNextA]))))));
1051 					iNextA += ((NI) 1);
1052 				}
1053 				goto LA432_;
1054 				LA434_: ;
1055 				{
1056 					if (!((NU)((NU32)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU32)(((NI) 5))) == ((NU) 6))) goto LA437_;
1057 					{
1058 						if (!(iNextA <= (NI)((a ? a->Sup.len : 0) - ((NI) 2)))) goto LA441_;
1059 						runeA = ((NI32) ((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 31))) << (NU32)(((NI) 6))) | (NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63)))));
1060 						iNextA += ((NI) 2);
1061 					}
1062 					goto LA439_;
1063 					LA441_: ;
1064 					{
1065 						runeA = ((NI32) 65533);
1066 						iNextA += ((NI) 1);
1067 					}
1068 					LA439_: ;
1069 				}
1070 				goto LA432_;
1071 				LA437_: ;
1072 				{
1073 					if (!((NU)((NU32)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU32)(((NI) 4))) == ((NU) 14))) goto LA445_;
1074 					{
1075 						if (!(iNextA <= (NI)((a ? a->Sup.len : 0) - ((NI) 3)))) goto LA449_;
1076 						runeA = ((NI32) ((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 15))) << (NU32)(((NI) 12))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63)))));
1077 						iNextA += ((NI) 3);
1078 					}
1079 					goto LA447_;
1080 					LA449_: ;
1081 					{
1082 						runeA = ((NI32) 65533);
1083 						iNextA += ((NI) 1);
1084 					}
1085 					LA447_: ;
1086 				}
1087 				goto LA432_;
1088 				LA445_: ;
1089 				{
1090 					if (!((NU)((NU32)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU32)(((NI) 3))) == ((NU) 30))) goto LA453_;
1091 					{
1092 						if (!(iNextA <= (NI)((a ? a->Sup.len : 0) - ((NI) 4)))) goto LA457_;
1093 						runeA = ((NI32) ((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 7))) << (NU32)(((NI) 18))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 3))])))) & ((NU) 63)))));
1094 						iNextA += ((NI) 4);
1095 					}
1096 					goto LA455_;
1097 					LA457_: ;
1098 					{
1099 						runeA = ((NI32) 65533);
1100 						iNextA += ((NI) 1);
1101 					}
1102 					LA455_: ;
1103 				}
1104 				goto LA432_;
1105 				LA453_: ;
1106 				{
1107 					if (!((NU)((NU32)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU32)(((NI) 2))) == ((NU) 62))) goto LA461_;
1108 					{
1109 						if (!(iNextA <= (NI)((a ? a->Sup.len : 0) - ((NI) 5)))) goto LA465_;
1110 						runeA = ((NI32) ((NU)((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 3))) << (NU32)(((NI) 24))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 18)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 3))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 4))])))) & ((NU) 63)))));
1111 						iNextA += ((NI) 5);
1112 					}
1113 					goto LA463_;
1114 					LA465_: ;
1115 					{
1116 						runeA = ((NI32) 65533);
1117 						iNextA += ((NI) 1);
1118 					}
1119 					LA463_: ;
1120 				}
1121 				goto LA432_;
1122 				LA461_: ;
1123 				{
1124 					if (!((NU)((NU32)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU32)(((NI) 1))) == ((NU) 126))) goto LA469_;
1125 					{
1126 						if (!(iNextA <= (NI)((a ? a->Sup.len : 0) - ((NI) 6)))) goto LA473_;
1127 						runeA = ((NI32) ((NU)((NU)((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 1))) << (NU32)(((NI) 30))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 24)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 18)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 3))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 4))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 5))])))) & ((NU) 63)))));
1128 						iNextA += ((NI) 6);
1129 					}
1130 					goto LA471_;
1131 					LA473_: ;
1132 					{
1133 						runeA = ((NI32) 65533);
1134 						iNextA += ((NI) 1);
1135 					}
1136 					LA471_: ;
1137 				}
1138 				goto LA432_;
1139 				LA469_: ;
1140 				{
1141 					runeA = ((NI32) (((NU) (((NU8)(a->data[iNextA]))))));
1142 					iNextA += ((NI) 1);
1143 				}
1144 				LA432_: ;
1145 				char2p = (NI)0;
1146 				diff = (NI)0;
1147 				x = (NI)0;
1148 				p = (NI)0;
1149 				{
1150 					NI offset;
1151 					NI c3;
1152 					NI T535_;
1153 					NI T542_;
1154 					if (!((NI)(len1 - half) <= i_2)) goto LA479_;
1155 					offset = (NI)((NI)(i_2 + half) - len1);
1156 					{
1157 						if (!(char2pI == i_2)) goto LA483_;
1158 						{
1159 							if (!((NU32)(((NU) (((NU8)(b->data[char2pPrev]))))) <= (NU32)(((NU) 127)))) goto LA487_;
1160 							runeB = ((NI32) (((NU) (((NU8)(b->data[char2pPrev]))))));
1161 							char2pPrev += ((NI) 1);
1162 						}
1163 						goto LA485_;
1164 						LA487_: ;
1165 						{
1166 							if (!((NU)((NU32)(((NU) (((NU8)(b->data[char2pPrev]))))) >> (NU32)(((NI) 5))) == ((NU) 6))) goto LA490_;
1167 							{
1168 								if (!(char2pPrev <= (NI)((b ? b->Sup.len : 0) - ((NI) 2)))) goto LA494_;
1169 								runeB = ((NI32) ((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[char2pPrev])))) & ((NU) 31))) << (NU32)(((NI) 6))) | (NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 1))])))) & ((NU) 63)))));
1170 								char2pPrev += ((NI) 2);
1171 							}
1172 							goto LA492_;
1173 							LA494_: ;
1174 							{
1175 								runeB = ((NI32) 65533);
1176 								char2pPrev += ((NI) 1);
1177 							}
1178 							LA492_: ;
1179 						}
1180 						goto LA485_;
1181 						LA490_: ;
1182 						{
1183 							if (!((NU)((NU32)(((NU) (((NU8)(b->data[char2pPrev]))))) >> (NU32)(((NI) 4))) == ((NU) 14))) goto LA498_;
1184 							{
1185 								if (!(char2pPrev <= (NI)((b ? b->Sup.len : 0) - ((NI) 3)))) goto LA502_;
1186 								runeB = ((NI32) ((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[char2pPrev])))) & ((NU) 15))) << (NU32)(((NI) 12))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 2))])))) & ((NU) 63)))));
1187 								char2pPrev += ((NI) 3);
1188 							}
1189 							goto LA500_;
1190 							LA502_: ;
1191 							{
1192 								runeB = ((NI32) 65533);
1193 								char2pPrev += ((NI) 1);
1194 							}
1195 							LA500_: ;
1196 						}
1197 						goto LA485_;
1198 						LA498_: ;
1199 						{
1200 							if (!((NU)((NU32)(((NU) (((NU8)(b->data[char2pPrev]))))) >> (NU32)(((NI) 3))) == ((NU) 30))) goto LA506_;
1201 							{
1202 								if (!(char2pPrev <= (NI)((b ? b->Sup.len : 0) - ((NI) 4)))) goto LA510_;
1203 								runeB = ((NI32) ((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[char2pPrev])))) & ((NU) 7))) << (NU32)(((NI) 18))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 3))])))) & ((NU) 63)))));
1204 								char2pPrev += ((NI) 4);
1205 							}
1206 							goto LA508_;
1207 							LA510_: ;
1208 							{
1209 								runeB = ((NI32) 65533);
1210 								char2pPrev += ((NI) 1);
1211 							}
1212 							LA508_: ;
1213 						}
1214 						goto LA485_;
1215 						LA506_: ;
1216 						{
1217 							if (!((NU)((NU32)(((NU) (((NU8)(b->data[char2pPrev]))))) >> (NU32)(((NI) 2))) == ((NU) 62))) goto LA514_;
1218 							{
1219 								if (!(char2pPrev <= (NI)((b ? b->Sup.len : 0) - ((NI) 5)))) goto LA518_;
1220 								runeB = ((NI32) ((NU)((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[char2pPrev])))) & ((NU) 3))) << (NU32)(((NI) 24))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 18)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 3))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 4))])))) & ((NU) 63)))));
1221 								char2pPrev += ((NI) 5);
1222 							}
1223 							goto LA516_;
1224 							LA518_: ;
1225 							{
1226 								runeB = ((NI32) 65533);
1227 								char2pPrev += ((NI) 1);
1228 							}
1229 							LA516_: ;
1230 						}
1231 						goto LA485_;
1232 						LA514_: ;
1233 						{
1234 							if (!((NU)((NU32)(((NU) (((NU8)(b->data[char2pPrev]))))) >> (NU32)(((NI) 1))) == ((NU) 126))) goto LA522_;
1235 							{
1236 								if (!(char2pPrev <= (NI)((b ? b->Sup.len : 0) - ((NI) 6)))) goto LA526_;
1237 								runeB = ((NI32) ((NU)((NU)((NU)((NU)((NU)((NU)((NU32)((NU)(((NU) (((NU8)(b->data[char2pPrev])))) & ((NU) 1))) << (NU32)(((NI) 30))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 1))])))) & ((NU) 63))) << (NU32)(((NI) 24)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 2))])))) & ((NU) 63))) << (NU32)(((NI) 18)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 3))])))) & ((NU) 63))) << (NU32)(((NI) 12)))) | (NU)((NU32)((NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 4))])))) & ((NU) 63))) << (NU32)(((NI) 6)))) | (NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 5))])))) & ((NU) 63)))));
1238 								char2pPrev += ((NI) 6);
1239 							}
1240 							goto LA524_;
1241 							LA526_: ;
1242 							{
1243 								runeB = ((NI32) 65533);
1244 								char2pPrev += ((NI) 1);
1245 							}
1246 							LA524_: ;
1247 						}
1248 						goto LA485_;
1249 						LA522_: ;
1250 						{
1251 							runeB = ((NI32) (((NU) (((NU8)(b->data[char2pPrev]))))));
1252 							char2pPrev += ((NI) 1);
1253 						}
1254 						LA485_: ;
1255 						char2p = char2pPrev;
1256 						char2pI = (NI)(i_2 + ((NI) 1));
1257 					}
1258 					goto LA481_;
1259 					LA483_: ;
1260 					{
1261 						char2p = iStart;
1262 						{
1263 							NI j;
1264 							NI i_3;
1265 							j = (NI)0;
1266 							i_3 = ((NI) 0);
1267 							{
1268 								while (1) {
1269 									NI T534_;
1270 									if (!(i_3 < offset)) goto LA533;
1271 									j = i_3;
1272 									runeB = runeAt__pureZunicode_95(b, ((NI) (char2p)));
1273 									T534_ = (NI)0;
1274 									T534_ = size__pureZunicode_5119(runeB);
1275 									char2p += T534_;
1276 									i_3 += ((NI) 1);
1277 								} LA533: ;
1278 							}
1279 						}
1280 						char2pI = (NI)(i_2 + ((NI) 1));
1281 						char2pPrev = char2p;
1282 					}
1283 					LA481_: ;
1284 					p = offset;
1285 					runeB = runeAt__pureZunicode_95(b, ((NI) (char2p)));
1286 					T535_ = (NI)0;
1287 					{
1288 						NIM_BOOL T538_;
1289 						T538_ = (NIM_BOOL)0;
1290 						T538_ = eqeq___pureZunicode_908(runeA, runeB);
1291 						if (!!(T538_)) goto LA539_;
1292 						T535_ = ((NI) 1);
1293 					}
1294 					goto LA536_;
1295 					LA539_: ;
1296 					{
1297 						T535_ = ((NI) 0);
1298 					}
1299 					LA536_: ;
1300 					c3 = (NI)(row->data[p] + T535_);
1301 					T542_ = (NI)0;
1302 					T542_ = size__pureZunicode_5119(runeB);
1303 					char2p += T542_;
1304 					p += ((NI) 1);
1305 					x = (NI)(row->data[p] + ((NI) 1));
1306 					diff = x;
1307 					{
1308 						if (!(c3 < x)) goto LA545_;
1309 						x = c3;
1310 					}
1311 					LA545_: ;
1312 					row->data[p] = x;
1313 					p += ((NI) 1);
1314 				}
1315 				goto LA477_;
1316 				LA479_: ;
1317 				{
1318 					p = ((NI) 1);
1319 					char2p = iStart;
1320 					diff = i_2;
1321 					x = i_2;
1322 				}
1323 				LA477_: ;
1324 				{
1325 					if (!(i_2 <= (NI)(half + ((NI) 1)))) goto LA550_;
1326 					e = (NI)((NI)((NI)(len2 + i_2) - half) - ((NI) 2));
1327 				}
1328 				LA550_: ;
1329 				{
1330 					while (1) {
1331 						NI c3_2;
1332 						NI T554_;
1333 						NI T561_;
1334 						if (!(p <= e)) goto LA553;
1335 						diff -= ((NI) 1);
1336 						runeB = runeAt__pureZunicode_95(b, ((NI) (char2p)));
1337 						T554_ = (NI)0;
1338 						{
1339 							NIM_BOOL T557_;
1340 							T557_ = (NIM_BOOL)0;
1341 							T557_ = eqeq___pureZunicode_908(runeA, runeB);
1342 							if (!!(T557_)) goto LA558_;
1343 							T554_ = ((NI) 1);
1344 						}
1345 						goto LA555_;
1346 						LA558_: ;
1347 						{
1348 							T554_ = ((NI) 0);
1349 						}
1350 						LA555_: ;
1351 						c3_2 = (NI)(diff + T554_);
1352 						T561_ = (NI)0;
1353 						T561_ = size__pureZunicode_5119(runeB);
1354 						char2p += T561_;
1355 						x += ((NI) 1);
1356 						{
1357 							if (!(c3_2 < x)) goto LA564_;
1358 							x = c3_2;
1359 						}
1360 						LA564_: ;
1361 						diff = (NI)(row->data[p] + ((NI) 1));
1362 						{
1363 							if (!(diff < x)) goto LA568_;
1364 							x = diff;
1365 						}
1366 						LA568_: ;
1367 						row->data[p] = x;
1368 						p += ((NI) 1);
1369 					} LA553: ;
1370 				}
1371 				{
1372 					NI c3_3;
1373 					NI T574_;
1374 					if (!(i_2 <= half)) goto LA572_;
1375 					diff -= ((NI) 1);
1376 					runeB = runeAt__pureZunicode_95(b, ((NI) (char2p)));
1377 					T574_ = (NI)0;
1378 					{
1379 						NIM_BOOL T577_;
1380 						T577_ = (NIM_BOOL)0;
1381 						T577_ = eqeq___pureZunicode_908(runeA, runeB);
1382 						if (!!(T577_)) goto LA578_;
1383 						T574_ = ((NI) 1);
1384 					}
1385 					goto LA575_;
1386 					LA578_: ;
1387 					{
1388 						T574_ = ((NI) 0);
1389 					}
1390 					LA575_: ;
1391 					c3_3 = (NI)(diff + T574_);
1392 					x += ((NI) 1);
1393 					{
1394 						if (!(c3_3 < x)) goto LA583_;
1395 						x = c3_3;
1396 					}
1397 					LA583_: ;
1398 					row->data[p] = x;
1399 				}
1400 				LA572_: ;
1401 				iCurrentA = iNextA;
1402 				res_2 += ((NI) 1);
1403 			} LA431: ;
1404 		}
1405 	}
1406 	result = row->data[e];
1407 	}BeforeRet_: ;
1408 	return result;
1409 }
1410