1 /* Generated by Nim Compiler v1.6.2 */
2 #define NIM_INTBITS 64
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 (!((NU64)(((NU) (((NU8)(a->data[iNextA]))))) <= (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 31))) << (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 15))) << (NU64)(((NI) 12))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 7))) << (NU64)(((NI) 18))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 3))) << (NU64)(((NI) 24))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 18)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 3))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 1))) << (NU64)(((NI) 30))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 24)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((NI) 18)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 3))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 4))])))) & ((NU) 63))) << (NU64)(((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 (!((NU64)(((NU) (((NU8)(b->data[iNextB]))))) <= (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[iNextB]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[iNextB])))) & ((NU) 31))) << (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[iNextB]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[iNextB])))) & ((NU) 15))) << (NU64)(((NI) 12))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[iNextB]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[iNextB])))) & ((NU) 7))) << (NU64)(((NI) 18))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[iNextB]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[iNextB])))) & ((NU) 3))) << (NU64)(((NI) 24))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 18)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 3))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[iNextB]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[iNextB])))) & ((NU) 1))) << (NU64)(((NI) 30))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 24)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((NI) 18)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 3))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 4))])))) & ((NU) 63))) << (NU64)(((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 (!((NU64)(((NU) (((NU8)(a->data[iNextA]))))) <= (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 31))) << (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 15))) << (NU64)(((NI) 12))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 7))) << (NU64)(((NI) 18))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 3))) << (NU64)(((NI) 24))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 18)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 3))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 1))) << (NU64)(((NI) 30))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 24)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((NI) 18)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 3))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 4))])))) & ((NU) 63))) << (NU64)(((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 (!((NU64)(((NU) (((NU8)(b->data[iNextB]))))) <= (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[iNextB]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[iNextB])))) & ((NU) 31))) << (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[iNextB]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[iNextB])))) & ((NU) 15))) << (NU64)(((NI) 12))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[iNextB]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[iNextB])))) & ((NU) 7))) << (NU64)(((NI) 18))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[iNextB]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[iNextB])))) & ((NU) 3))) << (NU64)(((NI) 24))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 18)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 3))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[iNextB]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[iNextB])))) & ((NU) 1))) << (NU64)(((NI) 30))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 24)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((NI) 18)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 3))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iNextB + ((NI) 4))])))) & ((NU) 63))) << (NU64)(((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 (!((NU64)(((NU) (((NU8)(b->data[iEndB]))))) <= (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[iEndB]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[iEndB])))) & ((NU) 31))) << (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[iEndB]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[iEndB])))) & ((NU) 15))) << (NU64)(((NI) 12))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[iEndB]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[iEndB])))) & ((NU) 7))) << (NU64)(((NI) 18))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[iEndB]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[iEndB])))) & ((NU) 3))) << (NU64)(((NI) 24))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 18)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 3))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[iEndB]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[iEndB])))) & ((NU) 1))) << (NU64)(((NI) 30))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 24)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((NI) 18)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 3))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iEndB + ((NI) 4))])))) & ((NU) 63))) << (NU64)(((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 (!((NU64)(((NU) (((NU8)(a->data[iEndA]))))) <= (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iEndA]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iEndA])))) & ((NU) 31))) << (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iEndA]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iEndA])))) & ((NU) 15))) << (NU64)(((NI) 12))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iEndA]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iEndA])))) & ((NU) 7))) << (NU64)(((NI) 18))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iEndA]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iEndA])))) & ((NU) 3))) << (NU64)(((NI) 24))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 18)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 3))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iEndA]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iEndA])))) & ((NU) 1))) << (NU64)(((NI) 30))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 24)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((NI) 18)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 3))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iEndA + ((NI) 4))])))) & ((NU) 63))) << (NU64)(((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 (!((NU64)(((NU) (((NU8)(a->data[iStart]))))) <= (NU64)(((NU) 127)))) goto LA331_;
804 runeA = ((NI32) (((NU) (((NU8)(a->data[iStart]))))));
805 }
806 goto LA329_;
807 LA331_: ;
808 {
809 if (!((NU)((NU64)(((NU) (((NU8)(a->data[iStart]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iStart])))) & ((NU) 31))) << (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iStart]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iStart])))) & ((NU) 15))) << (NU64)(((NI) 12))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iStart]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iStart])))) & ((NU) 7))) << (NU64)(((NI) 18))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iStart]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iStart])))) & ((NU) 3))) << (NU64)(((NI) 24))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 18)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 3))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iStart]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iStart])))) & ((NU) 1))) << (NU64)(((NI) 30))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 24)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((NI) 18)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 3))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iStart + ((NI) 4))])))) & ((NU) 63))) << (NU64)(((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 (!((NU64)(((NU) (((NU8)(b->data[iCurrentB_2]))))) <= (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[iCurrentB_2]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[iCurrentB_2])))) & ((NU) 31))) << (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[iCurrentB_2]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[iCurrentB_2])))) & ((NU) 15))) << (NU64)(((NI) 12))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[iCurrentB_2]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[iCurrentB_2])))) & ((NU) 7))) << (NU64)(((NI) 18))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[iCurrentB_2]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[iCurrentB_2])))) & ((NU) 3))) << (NU64)(((NI) 24))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 18)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 3))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[iCurrentB_2]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[iCurrentB_2])))) & ((NU) 1))) << (NU64)(((NI) 30))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 24)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((NI) 18)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 3))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(iCurrentB_2 + ((NI) 4))])))) & ((NU) 63))) << (NU64)(((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 (!((NU64)(((NU) (((NU8)(a->data[iNextA]))))) <= (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 31))) << (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 15))) << (NU64)(((NI) 12))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 7))) << (NU64)(((NI) 18))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 3))) << (NU64)(((NI) 24))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 18)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 3))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(a->data[iNextA]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(a->data[iNextA])))) & ((NU) 1))) << (NU64)(((NI) 30))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 24)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((NI) 18)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 3))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(a->data[(NI)(iNextA + ((NI) 4))])))) & ((NU) 63))) << (NU64)(((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 (!((NU64)(((NU) (((NU8)(b->data[char2pPrev]))))) <= (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[char2pPrev]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[char2pPrev])))) & ((NU) 31))) << (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[char2pPrev]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[char2pPrev])))) & ((NU) 15))) << (NU64)(((NI) 12))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[char2pPrev]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[char2pPrev])))) & ((NU) 7))) << (NU64)(((NI) 18))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[char2pPrev]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[char2pPrev])))) & ((NU) 3))) << (NU64)(((NI) 24))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 18)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 3))])))) & ((NU) 63))) << (NU64)(((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)((NU64)(((NU) (((NU8)(b->data[char2pPrev]))))) >> (NU64)(((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)((NU64)((NU)(((NU) (((NU8)(b->data[char2pPrev])))) & ((NU) 1))) << (NU64)(((NI) 30))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 1))])))) & ((NU) 63))) << (NU64)(((NI) 24)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 2))])))) & ((NU) 63))) << (NU64)(((NI) 18)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 3))])))) & ((NU) 63))) << (NU64)(((NI) 12)))) | (NU)((NU64)((NU)(((NU) (((NU8)(b->data[(NI)(char2pPrev + ((NI) 4))])))) & ((NU) 63))) << (NU64)(((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