Stripped down to only use English/porter for now
[libstemmer_c.git] / src_c / stem_UTF_8_turkish.c
1
2 /* This file was generated automatically by the Snowball to ANSI C compiler */
3
4 #include "../runtime/header.h"
5
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
9 extern int turkish_UTF_8_stem(struct SN_env * z);
10 #ifdef __cplusplus
11 }
12 #endif
13 static int r_stem_suffix_chain_before_ki(struct SN_env * z);
14 static int r_stem_noun_suffixes(struct SN_env * z);
15 static int r_stem_nominal_verb_suffixes(struct SN_env * z);
16 static int r_postlude(struct SN_env * z);
17 static int r_post_process_last_consonants(struct SN_env * z);
18 static int r_more_than_one_syllable_word(struct SN_env * z);
19 static int r_mark_suffix_with_optional_s_consonant(struct SN_env * z);
20 static int r_mark_suffix_with_optional_n_consonant(struct SN_env * z);
21 static int r_mark_suffix_with_optional_U_vowel(struct SN_env * z);
22 static int r_mark_suffix_with_optional_y_consonant(struct SN_env * z);
23 static int r_mark_ysA(struct SN_env * z);
24 static int r_mark_ymUs_(struct SN_env * z);
25 static int r_mark_yken(struct SN_env * z);
26 static int r_mark_yDU(struct SN_env * z);
27 static int r_mark_yUz(struct SN_env * z);
28 static int r_mark_yUm(struct SN_env * z);
29 static int r_mark_yU(struct SN_env * z);
30 static int r_mark_ylA(struct SN_env * z);
31 static int r_mark_yA(struct SN_env * z);
32 static int r_mark_possessives(struct SN_env * z);
33 static int r_mark_sUnUz(struct SN_env * z);
34 static int r_mark_sUn(struct SN_env * z);
35 static int r_mark_sU(struct SN_env * z);
36 static int r_mark_nUz(struct SN_env * z);
37 static int r_mark_nUn(struct SN_env * z);
38 static int r_mark_nU(struct SN_env * z);
39 static int r_mark_ndAn(struct SN_env * z);
40 static int r_mark_ndA(struct SN_env * z);
41 static int r_mark_ncA(struct SN_env * z);
42 static int r_mark_nA(struct SN_env * z);
43 static int r_mark_lArI(struct SN_env * z);
44 static int r_mark_lAr(struct SN_env * z);
45 static int r_mark_ki(struct SN_env * z);
46 static int r_mark_DUr(struct SN_env * z);
47 static int r_mark_DAn(struct SN_env * z);
48 static int r_mark_DA(struct SN_env * z);
49 static int r_mark_cAsInA(struct SN_env * z);
50 static int r_is_reserved_word(struct SN_env * z);
51 static int r_check_vowel_harmony(struct SN_env * z);
52 static int r_append_U_to_stems_ending_with_d_or_g(struct SN_env * z);
53 #ifdef __cplusplus
54 extern "C" {
55 #endif
56
57
58 extern struct SN_env * turkish_UTF_8_create_env(void);
59 extern void turkish_UTF_8_close_env(struct SN_env * z);
60
61
62 #ifdef __cplusplus
63 }
64 #endif
65 static const symbol s_0_0[1] = { 'm' };
66 static const symbol s_0_1[1] = { 'n' };
67 static const symbol s_0_2[3] = { 'm', 'i', 'z' };
68 static const symbol s_0_3[3] = { 'n', 'i', 'z' };
69 static const symbol s_0_4[3] = { 'm', 'u', 'z' };
70 static const symbol s_0_5[3] = { 'n', 'u', 'z' };
71 static const symbol s_0_6[4] = { 'm', 0xC4, 0xB1, 'z' };
72 static const symbol s_0_7[4] = { 'n', 0xC4, 0xB1, 'z' };
73 static const symbol s_0_8[4] = { 'm', 0xC3, 0xBC, 'z' };
74 static const symbol s_0_9[4] = { 'n', 0xC3, 0xBC, 'z' };
75
76 static const struct among a_0[10] =
77 {
78 /*  0 */ { 1, s_0_0, -1, -1, 0},
79 /*  1 */ { 1, s_0_1, -1, -1, 0},
80 /*  2 */ { 3, s_0_2, -1, -1, 0},
81 /*  3 */ { 3, s_0_3, -1, -1, 0},
82 /*  4 */ { 3, s_0_4, -1, -1, 0},
83 /*  5 */ { 3, s_0_5, -1, -1, 0},
84 /*  6 */ { 4, s_0_6, -1, -1, 0},
85 /*  7 */ { 4, s_0_7, -1, -1, 0},
86 /*  8 */ { 4, s_0_8, -1, -1, 0},
87 /*  9 */ { 4, s_0_9, -1, -1, 0}
88 };
89
90 static const symbol s_1_0[4] = { 'l', 'e', 'r', 'i' };
91 static const symbol s_1_1[5] = { 'l', 'a', 'r', 0xC4, 0xB1 };
92
93 static const struct among a_1[2] =
94 {
95 /*  0 */ { 4, s_1_0, -1, -1, 0},
96 /*  1 */ { 5, s_1_1, -1, -1, 0}
97 };
98
99 static const symbol s_2_0[2] = { 'n', 'i' };
100 static const symbol s_2_1[2] = { 'n', 'u' };
101 static const symbol s_2_2[3] = { 'n', 0xC4, 0xB1 };
102 static const symbol s_2_3[3] = { 'n', 0xC3, 0xBC };
103
104 static const struct among a_2[4] =
105 {
106 /*  0 */ { 2, s_2_0, -1, -1, 0},
107 /*  1 */ { 2, s_2_1, -1, -1, 0},
108 /*  2 */ { 3, s_2_2, -1, -1, 0},
109 /*  3 */ { 3, s_2_3, -1, -1, 0}
110 };
111
112 static const symbol s_3_0[2] = { 'i', 'n' };
113 static const symbol s_3_1[2] = { 'u', 'n' };
114 static const symbol s_3_2[3] = { 0xC4, 0xB1, 'n' };
115 static const symbol s_3_3[3] = { 0xC3, 0xBC, 'n' };
116
117 static const struct among a_3[4] =
118 {
119 /*  0 */ { 2, s_3_0, -1, -1, 0},
120 /*  1 */ { 2, s_3_1, -1, -1, 0},
121 /*  2 */ { 3, s_3_2, -1, -1, 0},
122 /*  3 */ { 3, s_3_3, -1, -1, 0}
123 };
124
125 static const symbol s_4_0[1] = { 'a' };
126 static const symbol s_4_1[1] = { 'e' };
127
128 static const struct among a_4[2] =
129 {
130 /*  0 */ { 1, s_4_0, -1, -1, 0},
131 /*  1 */ { 1, s_4_1, -1, -1, 0}
132 };
133
134 static const symbol s_5_0[2] = { 'n', 'a' };
135 static const symbol s_5_1[2] = { 'n', 'e' };
136
137 static const struct among a_5[2] =
138 {
139 /*  0 */ { 2, s_5_0, -1, -1, 0},
140 /*  1 */ { 2, s_5_1, -1, -1, 0}
141 };
142
143 static const symbol s_6_0[2] = { 'd', 'a' };
144 static const symbol s_6_1[2] = { 't', 'a' };
145 static const symbol s_6_2[2] = { 'd', 'e' };
146 static const symbol s_6_3[2] = { 't', 'e' };
147
148 static const struct among a_6[4] =
149 {
150 /*  0 */ { 2, s_6_0, -1, -1, 0},
151 /*  1 */ { 2, s_6_1, -1, -1, 0},
152 /*  2 */ { 2, s_6_2, -1, -1, 0},
153 /*  3 */ { 2, s_6_3, -1, -1, 0}
154 };
155
156 static const symbol s_7_0[3] = { 'n', 'd', 'a' };
157 static const symbol s_7_1[3] = { 'n', 'd', 'e' };
158
159 static const struct among a_7[2] =
160 {
161 /*  0 */ { 3, s_7_0, -1, -1, 0},
162 /*  1 */ { 3, s_7_1, -1, -1, 0}
163 };
164
165 static const symbol s_8_0[3] = { 'd', 'a', 'n' };
166 static const symbol s_8_1[3] = { 't', 'a', 'n' };
167 static const symbol s_8_2[3] = { 'd', 'e', 'n' };
168 static const symbol s_8_3[3] = { 't', 'e', 'n' };
169
170 static const struct among a_8[4] =
171 {
172 /*  0 */ { 3, s_8_0, -1, -1, 0},
173 /*  1 */ { 3, s_8_1, -1, -1, 0},
174 /*  2 */ { 3, s_8_2, -1, -1, 0},
175 /*  3 */ { 3, s_8_3, -1, -1, 0}
176 };
177
178 static const symbol s_9_0[4] = { 'n', 'd', 'a', 'n' };
179 static const symbol s_9_1[4] = { 'n', 'd', 'e', 'n' };
180
181 static const struct among a_9[2] =
182 {
183 /*  0 */ { 4, s_9_0, -1, -1, 0},
184 /*  1 */ { 4, s_9_1, -1, -1, 0}
185 };
186
187 static const symbol s_10_0[2] = { 'l', 'a' };
188 static const symbol s_10_1[2] = { 'l', 'e' };
189
190 static const struct among a_10[2] =
191 {
192 /*  0 */ { 2, s_10_0, -1, -1, 0},
193 /*  1 */ { 2, s_10_1, -1, -1, 0}
194 };
195
196 static const symbol s_11_0[2] = { 'c', 'a' };
197 static const symbol s_11_1[2] = { 'c', 'e' };
198
199 static const struct among a_11[2] =
200 {
201 /*  0 */ { 2, s_11_0, -1, -1, 0},
202 /*  1 */ { 2, s_11_1, -1, -1, 0}
203 };
204
205 static const symbol s_12_0[2] = { 'i', 'm' };
206 static const symbol s_12_1[2] = { 'u', 'm' };
207 static const symbol s_12_2[3] = { 0xC4, 0xB1, 'm' };
208 static const symbol s_12_3[3] = { 0xC3, 0xBC, 'm' };
209
210 static const struct among a_12[4] =
211 {
212 /*  0 */ { 2, s_12_0, -1, -1, 0},
213 /*  1 */ { 2, s_12_1, -1, -1, 0},
214 /*  2 */ { 3, s_12_2, -1, -1, 0},
215 /*  3 */ { 3, s_12_3, -1, -1, 0}
216 };
217
218 static const symbol s_13_0[3] = { 's', 'i', 'n' };
219 static const symbol s_13_1[3] = { 's', 'u', 'n' };
220 static const symbol s_13_2[4] = { 's', 0xC4, 0xB1, 'n' };
221 static const symbol s_13_3[4] = { 's', 0xC3, 0xBC, 'n' };
222
223 static const struct among a_13[4] =
224 {
225 /*  0 */ { 3, s_13_0, -1, -1, 0},
226 /*  1 */ { 3, s_13_1, -1, -1, 0},
227 /*  2 */ { 4, s_13_2, -1, -1, 0},
228 /*  3 */ { 4, s_13_3, -1, -1, 0}
229 };
230
231 static const symbol s_14_0[2] = { 'i', 'z' };
232 static const symbol s_14_1[2] = { 'u', 'z' };
233 static const symbol s_14_2[3] = { 0xC4, 0xB1, 'z' };
234 static const symbol s_14_3[3] = { 0xC3, 0xBC, 'z' };
235
236 static const struct among a_14[4] =
237 {
238 /*  0 */ { 2, s_14_0, -1, -1, 0},
239 /*  1 */ { 2, s_14_1, -1, -1, 0},
240 /*  2 */ { 3, s_14_2, -1, -1, 0},
241 /*  3 */ { 3, s_14_3, -1, -1, 0}
242 };
243
244 static const symbol s_15_0[5] = { 's', 'i', 'n', 'i', 'z' };
245 static const symbol s_15_1[5] = { 's', 'u', 'n', 'u', 'z' };
246 static const symbol s_15_2[7] = { 's', 0xC4, 0xB1, 'n', 0xC4, 0xB1, 'z' };
247 static const symbol s_15_3[7] = { 's', 0xC3, 0xBC, 'n', 0xC3, 0xBC, 'z' };
248
249 static const struct among a_15[4] =
250 {
251 /*  0 */ { 5, s_15_0, -1, -1, 0},
252 /*  1 */ { 5, s_15_1, -1, -1, 0},
253 /*  2 */ { 7, s_15_2, -1, -1, 0},
254 /*  3 */ { 7, s_15_3, -1, -1, 0}
255 };
256
257 static const symbol s_16_0[3] = { 'l', 'a', 'r' };
258 static const symbol s_16_1[3] = { 'l', 'e', 'r' };
259
260 static const struct among a_16[2] =
261 {
262 /*  0 */ { 3, s_16_0, -1, -1, 0},
263 /*  1 */ { 3, s_16_1, -1, -1, 0}
264 };
265
266 static const symbol s_17_0[3] = { 'n', 'i', 'z' };
267 static const symbol s_17_1[3] = { 'n', 'u', 'z' };
268 static const symbol s_17_2[4] = { 'n', 0xC4, 0xB1, 'z' };
269 static const symbol s_17_3[4] = { 'n', 0xC3, 0xBC, 'z' };
270
271 static const struct among a_17[4] =
272 {
273 /*  0 */ { 3, s_17_0, -1, -1, 0},
274 /*  1 */ { 3, s_17_1, -1, -1, 0},
275 /*  2 */ { 4, s_17_2, -1, -1, 0},
276 /*  3 */ { 4, s_17_3, -1, -1, 0}
277 };
278
279 static const symbol s_18_0[3] = { 'd', 'i', 'r' };
280 static const symbol s_18_1[3] = { 't', 'i', 'r' };
281 static const symbol s_18_2[3] = { 'd', 'u', 'r' };
282 static const symbol s_18_3[3] = { 't', 'u', 'r' };
283 static const symbol s_18_4[4] = { 'd', 0xC4, 0xB1, 'r' };
284 static const symbol s_18_5[4] = { 't', 0xC4, 0xB1, 'r' };
285 static const symbol s_18_6[4] = { 'd', 0xC3, 0xBC, 'r' };
286 static const symbol s_18_7[4] = { 't', 0xC3, 0xBC, 'r' };
287
288 static const struct among a_18[8] =
289 {
290 /*  0 */ { 3, s_18_0, -1, -1, 0},
291 /*  1 */ { 3, s_18_1, -1, -1, 0},
292 /*  2 */ { 3, s_18_2, -1, -1, 0},
293 /*  3 */ { 3, s_18_3, -1, -1, 0},
294 /*  4 */ { 4, s_18_4, -1, -1, 0},
295 /*  5 */ { 4, s_18_5, -1, -1, 0},
296 /*  6 */ { 4, s_18_6, -1, -1, 0},
297 /*  7 */ { 4, s_18_7, -1, -1, 0}
298 };
299
300 static const symbol s_19_0[7] = { 'c', 'a', 's', 0xC4, 0xB1, 'n', 'a' };
301 static const symbol s_19_1[6] = { 'c', 'e', 's', 'i', 'n', 'e' };
302
303 static const struct among a_19[2] =
304 {
305 /*  0 */ { 7, s_19_0, -1, -1, 0},
306 /*  1 */ { 6, s_19_1, -1, -1, 0}
307 };
308
309 static const symbol s_20_0[2] = { 'd', 'i' };
310 static const symbol s_20_1[2] = { 't', 'i' };
311 static const symbol s_20_2[3] = { 'd', 'i', 'k' };
312 static const symbol s_20_3[3] = { 't', 'i', 'k' };
313 static const symbol s_20_4[3] = { 'd', 'u', 'k' };
314 static const symbol s_20_5[3] = { 't', 'u', 'k' };
315 static const symbol s_20_6[4] = { 'd', 0xC4, 0xB1, 'k' };
316 static const symbol s_20_7[4] = { 't', 0xC4, 0xB1, 'k' };
317 static const symbol s_20_8[4] = { 'd', 0xC3, 0xBC, 'k' };
318 static const symbol s_20_9[4] = { 't', 0xC3, 0xBC, 'k' };
319 static const symbol s_20_10[3] = { 'd', 'i', 'm' };
320 static const symbol s_20_11[3] = { 't', 'i', 'm' };
321 static const symbol s_20_12[3] = { 'd', 'u', 'm' };
322 static const symbol s_20_13[3] = { 't', 'u', 'm' };
323 static const symbol s_20_14[4] = { 'd', 0xC4, 0xB1, 'm' };
324 static const symbol s_20_15[4] = { 't', 0xC4, 0xB1, 'm' };
325 static const symbol s_20_16[4] = { 'd', 0xC3, 0xBC, 'm' };
326 static const symbol s_20_17[4] = { 't', 0xC3, 0xBC, 'm' };
327 static const symbol s_20_18[3] = { 'd', 'i', 'n' };
328 static const symbol s_20_19[3] = { 't', 'i', 'n' };
329 static const symbol s_20_20[3] = { 'd', 'u', 'n' };
330 static const symbol s_20_21[3] = { 't', 'u', 'n' };
331 static const symbol s_20_22[4] = { 'd', 0xC4, 0xB1, 'n' };
332 static const symbol s_20_23[4] = { 't', 0xC4, 0xB1, 'n' };
333 static const symbol s_20_24[4] = { 'd', 0xC3, 0xBC, 'n' };
334 static const symbol s_20_25[4] = { 't', 0xC3, 0xBC, 'n' };
335 static const symbol s_20_26[2] = { 'd', 'u' };
336 static const symbol s_20_27[2] = { 't', 'u' };
337 static const symbol s_20_28[3] = { 'd', 0xC4, 0xB1 };
338 static const symbol s_20_29[3] = { 't', 0xC4, 0xB1 };
339 static const symbol s_20_30[3] = { 'd', 0xC3, 0xBC };
340 static const symbol s_20_31[3] = { 't', 0xC3, 0xBC };
341
342 static const struct among a_20[32] =
343 {
344 /*  0 */ { 2, s_20_0, -1, -1, 0},
345 /*  1 */ { 2, s_20_1, -1, -1, 0},
346 /*  2 */ { 3, s_20_2, -1, -1, 0},
347 /*  3 */ { 3, s_20_3, -1, -1, 0},
348 /*  4 */ { 3, s_20_4, -1, -1, 0},
349 /*  5 */ { 3, s_20_5, -1, -1, 0},
350 /*  6 */ { 4, s_20_6, -1, -1, 0},
351 /*  7 */ { 4, s_20_7, -1, -1, 0},
352 /*  8 */ { 4, s_20_8, -1, -1, 0},
353 /*  9 */ { 4, s_20_9, -1, -1, 0},
354 /* 10 */ { 3, s_20_10, -1, -1, 0},
355 /* 11 */ { 3, s_20_11, -1, -1, 0},
356 /* 12 */ { 3, s_20_12, -1, -1, 0},
357 /* 13 */ { 3, s_20_13, -1, -1, 0},
358 /* 14 */ { 4, s_20_14, -1, -1, 0},
359 /* 15 */ { 4, s_20_15, -1, -1, 0},
360 /* 16 */ { 4, s_20_16, -1, -1, 0},
361 /* 17 */ { 4, s_20_17, -1, -1, 0},
362 /* 18 */ { 3, s_20_18, -1, -1, 0},
363 /* 19 */ { 3, s_20_19, -1, -1, 0},
364 /* 20 */ { 3, s_20_20, -1, -1, 0},
365 /* 21 */ { 3, s_20_21, -1, -1, 0},
366 /* 22 */ { 4, s_20_22, -1, -1, 0},
367 /* 23 */ { 4, s_20_23, -1, -1, 0},
368 /* 24 */ { 4, s_20_24, -1, -1, 0},
369 /* 25 */ { 4, s_20_25, -1, -1, 0},
370 /* 26 */ { 2, s_20_26, -1, -1, 0},
371 /* 27 */ { 2, s_20_27, -1, -1, 0},
372 /* 28 */ { 3, s_20_28, -1, -1, 0},
373 /* 29 */ { 3, s_20_29, -1, -1, 0},
374 /* 30 */ { 3, s_20_30, -1, -1, 0},
375 /* 31 */ { 3, s_20_31, -1, -1, 0}
376 };
377
378 static const symbol s_21_0[2] = { 's', 'a' };
379 static const symbol s_21_1[2] = { 's', 'e' };
380 static const symbol s_21_2[3] = { 's', 'a', 'k' };
381 static const symbol s_21_3[3] = { 's', 'e', 'k' };
382 static const symbol s_21_4[3] = { 's', 'a', 'm' };
383 static const symbol s_21_5[3] = { 's', 'e', 'm' };
384 static const symbol s_21_6[3] = { 's', 'a', 'n' };
385 static const symbol s_21_7[3] = { 's', 'e', 'n' };
386
387 static const struct among a_21[8] =
388 {
389 /*  0 */ { 2, s_21_0, -1, -1, 0},
390 /*  1 */ { 2, s_21_1, -1, -1, 0},
391 /*  2 */ { 3, s_21_2, -1, -1, 0},
392 /*  3 */ { 3, s_21_3, -1, -1, 0},
393 /*  4 */ { 3, s_21_4, -1, -1, 0},
394 /*  5 */ { 3, s_21_5, -1, -1, 0},
395 /*  6 */ { 3, s_21_6, -1, -1, 0},
396 /*  7 */ { 3, s_21_7, -1, -1, 0}
397 };
398
399 static const symbol s_22_0[4] = { 'm', 'i', 0xC5, 0x9F };
400 static const symbol s_22_1[4] = { 'm', 'u', 0xC5, 0x9F };
401 static const symbol s_22_2[5] = { 'm', 0xC4, 0xB1, 0xC5, 0x9F };
402 static const symbol s_22_3[5] = { 'm', 0xC3, 0xBC, 0xC5, 0x9F };
403
404 static const struct among a_22[4] =
405 {
406 /*  0 */ { 4, s_22_0, -1, -1, 0},
407 /*  1 */ { 4, s_22_1, -1, -1, 0},
408 /*  2 */ { 5, s_22_2, -1, -1, 0},
409 /*  3 */ { 5, s_22_3, -1, -1, 0}
410 };
411
412 static const symbol s_23_0[1] = { 'b' };
413 static const symbol s_23_1[1] = { 'c' };
414 static const symbol s_23_2[1] = { 'd' };
415 static const symbol s_23_3[2] = { 0xC4, 0x9F };
416
417 static const struct among a_23[4] =
418 {
419 /*  0 */ { 1, s_23_0, -1, 1, 0},
420 /*  1 */ { 1, s_23_1, -1, 2, 0},
421 /*  2 */ { 1, s_23_2, -1, 3, 0},
422 /*  3 */ { 2, s_23_3, -1, 4, 0}
423 };
424
425 static const unsigned char g_vowel[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 0, 1 };
426
427 static const unsigned char g_U[] = { 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1 };
428
429 static const unsigned char g_vowel1[] = { 1, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 };
430
431 static const unsigned char g_vowel2[] = { 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130 };
432
433 static const unsigned char g_vowel3[] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 };
434
435 static const unsigned char g_vowel4[] = { 17 };
436
437 static const unsigned char g_vowel5[] = { 65 };
438
439 static const unsigned char g_vowel6[] = { 65 };
440
441 static const symbol s_0[] = { 'a' };
442 static const symbol s_1[] = { 'e' };
443 static const symbol s_2[] = { 0xC4, 0xB1 };
444 static const symbol s_3[] = { 'i' };
445 static const symbol s_4[] = { 'o' };
446 static const symbol s_5[] = { 0xC3, 0xB6 };
447 static const symbol s_6[] = { 'u' };
448 static const symbol s_7[] = { 0xC3, 0xBC };
449 static const symbol s_8[] = { 'n' };
450 static const symbol s_9[] = { 'n' };
451 static const symbol s_10[] = { 's' };
452 static const symbol s_11[] = { 's' };
453 static const symbol s_12[] = { 'y' };
454 static const symbol s_13[] = { 'y' };
455 static const symbol s_14[] = { 'k', 'i' };
456 static const symbol s_15[] = { 'k', 'e', 'n' };
457 static const symbol s_16[] = { 'p' };
458 static const symbol s_17[] = { 0xC3, 0xA7 };
459 static const symbol s_18[] = { 't' };
460 static const symbol s_19[] = { 'k' };
461 static const symbol s_20[] = { 'd' };
462 static const symbol s_21[] = { 'g' };
463 static const symbol s_22[] = { 'a' };
464 static const symbol s_23[] = { 0xC4, 0xB1 };
465 static const symbol s_24[] = { 0xC4, 0xB1 };
466 static const symbol s_25[] = { 'e' };
467 static const symbol s_26[] = { 'i' };
468 static const symbol s_27[] = { 'i' };
469 static const symbol s_28[] = { 'o' };
470 static const symbol s_29[] = { 'u' };
471 static const symbol s_30[] = { 'u' };
472 static const symbol s_31[] = { 0xC3, 0xB6 };
473 static const symbol s_32[] = { 0xC3, 0xBC };
474 static const symbol s_33[] = { 0xC3, 0xBC };
475 static const symbol s_34[] = { 'a', 'd' };
476 static const symbol s_35[] = { 's', 'o', 'y', 'a', 'd' };
477
478 static int r_check_vowel_harmony(struct SN_env * z) {
479     {   int m_test = z->l - z->c; /* test, line 112 */
480         if (out_grouping_b_U(z, g_vowel, 97, 305, 1) < 0) return 0; /* goto */ /* grouping vowel, line 114 */
481         {   int m1 = z->l - z->c; (void)m1; /* or, line 116 */
482             if (!(eq_s_b(z, 1, s_0))) goto lab1;
483             if (out_grouping_b_U(z, g_vowel1, 97, 305, 1) < 0) goto lab1; /* goto */ /* grouping vowel1, line 116 */
484             goto lab0;
485         lab1:
486             z->c = z->l - m1;
487             if (!(eq_s_b(z, 1, s_1))) goto lab2;
488             if (out_grouping_b_U(z, g_vowel2, 101, 252, 1) < 0) goto lab2; /* goto */ /* grouping vowel2, line 117 */
489             goto lab0;
490         lab2:
491             z->c = z->l - m1;
492             if (!(eq_s_b(z, 2, s_2))) goto lab3;
493             if (out_grouping_b_U(z, g_vowel3, 97, 305, 1) < 0) goto lab3; /* goto */ /* grouping vowel3, line 118 */
494             goto lab0;
495         lab3:
496             z->c = z->l - m1;
497             if (!(eq_s_b(z, 1, s_3))) goto lab4;
498             if (out_grouping_b_U(z, g_vowel4, 101, 105, 1) < 0) goto lab4; /* goto */ /* grouping vowel4, line 119 */
499             goto lab0;
500         lab4:
501             z->c = z->l - m1;
502             if (!(eq_s_b(z, 1, s_4))) goto lab5;
503             if (out_grouping_b_U(z, g_vowel5, 111, 117, 1) < 0) goto lab5; /* goto */ /* grouping vowel5, line 120 */
504             goto lab0;
505         lab5:
506             z->c = z->l - m1;
507             if (!(eq_s_b(z, 2, s_5))) goto lab6;
508             if (out_grouping_b_U(z, g_vowel6, 246, 252, 1) < 0) goto lab6; /* goto */ /* grouping vowel6, line 121 */
509             goto lab0;
510         lab6:
511             z->c = z->l - m1;
512             if (!(eq_s_b(z, 1, s_6))) goto lab7;
513             if (out_grouping_b_U(z, g_vowel5, 111, 117, 1) < 0) goto lab7; /* goto */ /* grouping vowel5, line 122 */
514             goto lab0;
515         lab7:
516             z->c = z->l - m1;
517             if (!(eq_s_b(z, 2, s_7))) return 0;
518             if (out_grouping_b_U(z, g_vowel6, 246, 252, 1) < 0) return 0; /* goto */ /* grouping vowel6, line 123 */
519         }
520     lab0:
521         z->c = z->l - m_test;
522     }
523     return 1;
524 }
525
526 static int r_mark_suffix_with_optional_n_consonant(struct SN_env * z) {
527     {   int m1 = z->l - z->c; (void)m1; /* or, line 134 */
528         {   int m_test = z->l - z->c; /* test, line 133 */
529             if (!(eq_s_b(z, 1, s_8))) goto lab1;
530             z->c = z->l - m_test;
531         }
532         {   int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
533             if (ret < 0) goto lab1;
534             z->c = ret; /* next, line 133 */
535         }
536         {   int m_test = z->l - z->c; /* test, line 133 */
537             if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) goto lab1;
538             z->c = z->l - m_test;
539         }
540         goto lab0;
541     lab1:
542         z->c = z->l - m1;
543         {   int m2 = z->l - z->c; (void)m2; /* not, line 135 */
544             {   int m_test = z->l - z->c; /* test, line 135 */
545                 if (!(eq_s_b(z, 1, s_9))) goto lab2;
546                 z->c = z->l - m_test;
547             }
548             return 0;
549         lab2:
550             z->c = z->l - m2;
551         }
552         {   int m_test = z->l - z->c; /* test, line 135 */
553             {   int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
554                 if (ret < 0) return 0;
555                 z->c = ret; /* next, line 135 */
556             }
557             {   int m_test = z->l - z->c; /* test, line 135 */
558                 if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) return 0;
559                 z->c = z->l - m_test;
560             }
561             z->c = z->l - m_test;
562         }
563     }
564 lab0:
565     return 1;
566 }
567
568 static int r_mark_suffix_with_optional_s_consonant(struct SN_env * z) {
569     {   int m1 = z->l - z->c; (void)m1; /* or, line 145 */
570         {   int m_test = z->l - z->c; /* test, line 144 */
571             if (!(eq_s_b(z, 1, s_10))) goto lab1;
572             z->c = z->l - m_test;
573         }
574         {   int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
575             if (ret < 0) goto lab1;
576             z->c = ret; /* next, line 144 */
577         }
578         {   int m_test = z->l - z->c; /* test, line 144 */
579             if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) goto lab1;
580             z->c = z->l - m_test;
581         }
582         goto lab0;
583     lab1:
584         z->c = z->l - m1;
585         {   int m2 = z->l - z->c; (void)m2; /* not, line 146 */
586             {   int m_test = z->l - z->c; /* test, line 146 */
587                 if (!(eq_s_b(z, 1, s_11))) goto lab2;
588                 z->c = z->l - m_test;
589             }
590             return 0;
591         lab2:
592             z->c = z->l - m2;
593         }
594         {   int m_test = z->l - z->c; /* test, line 146 */
595             {   int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
596                 if (ret < 0) return 0;
597                 z->c = ret; /* next, line 146 */
598             }
599             {   int m_test = z->l - z->c; /* test, line 146 */
600                 if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) return 0;
601                 z->c = z->l - m_test;
602             }
603             z->c = z->l - m_test;
604         }
605     }
606 lab0:
607     return 1;
608 }
609
610 static int r_mark_suffix_with_optional_y_consonant(struct SN_env * z) {
611     {   int m1 = z->l - z->c; (void)m1; /* or, line 155 */
612         {   int m_test = z->l - z->c; /* test, line 154 */
613             if (!(eq_s_b(z, 1, s_12))) goto lab1;
614             z->c = z->l - m_test;
615         }
616         {   int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
617             if (ret < 0) goto lab1;
618             z->c = ret; /* next, line 154 */
619         }
620         {   int m_test = z->l - z->c; /* test, line 154 */
621             if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) goto lab1;
622             z->c = z->l - m_test;
623         }
624         goto lab0;
625     lab1:
626         z->c = z->l - m1;
627         {   int m2 = z->l - z->c; (void)m2; /* not, line 156 */
628             {   int m_test = z->l - z->c; /* test, line 156 */
629                 if (!(eq_s_b(z, 1, s_13))) goto lab2;
630                 z->c = z->l - m_test;
631             }
632             return 0;
633         lab2:
634             z->c = z->l - m2;
635         }
636         {   int m_test = z->l - z->c; /* test, line 156 */
637             {   int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
638                 if (ret < 0) return 0;
639                 z->c = ret; /* next, line 156 */
640             }
641             {   int m_test = z->l - z->c; /* test, line 156 */
642                 if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) return 0;
643                 z->c = z->l - m_test;
644             }
645             z->c = z->l - m_test;
646         }
647     }
648 lab0:
649     return 1;
650 }
651
652 static int r_mark_suffix_with_optional_U_vowel(struct SN_env * z) {
653     {   int m1 = z->l - z->c; (void)m1; /* or, line 161 */
654         {   int m_test = z->l - z->c; /* test, line 160 */
655             if (in_grouping_b_U(z, g_U, 105, 305, 0)) goto lab1;
656             z->c = z->l - m_test;
657         }
658         {   int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
659             if (ret < 0) goto lab1;
660             z->c = ret; /* next, line 160 */
661         }
662         {   int m_test = z->l - z->c; /* test, line 160 */
663             if (out_grouping_b_U(z, g_vowel, 97, 305, 0)) goto lab1;
664             z->c = z->l - m_test;
665         }
666         goto lab0;
667     lab1:
668         z->c = z->l - m1;
669         {   int m2 = z->l - z->c; (void)m2; /* not, line 162 */
670             {   int m_test = z->l - z->c; /* test, line 162 */
671                 if (in_grouping_b_U(z, g_U, 105, 305, 0)) goto lab2;
672                 z->c = z->l - m_test;
673             }
674             return 0;
675         lab2:
676             z->c = z->l - m2;
677         }
678         {   int m_test = z->l - z->c; /* test, line 162 */
679             {   int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
680                 if (ret < 0) return 0;
681                 z->c = ret; /* next, line 162 */
682             }
683             {   int m_test = z->l - z->c; /* test, line 162 */
684                 if (out_grouping_b_U(z, g_vowel, 97, 305, 0)) return 0;
685                 z->c = z->l - m_test;
686             }
687             z->c = z->l - m_test;
688         }
689     }
690 lab0:
691     return 1;
692 }
693
694 static int r_mark_possessives(struct SN_env * z) {
695     if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((67133440 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
696     if (!(find_among_b(z, a_0, 10))) return 0; /* among, line 167 */
697     {   int ret = r_mark_suffix_with_optional_U_vowel(z);
698         if (ret == 0) return 0; /* call mark_suffix_with_optional_U_vowel, line 169 */
699         if (ret < 0) return ret;
700     }
701     return 1;
702 }
703
704 static int r_mark_sU(struct SN_env * z) {
705     {   int ret = r_check_vowel_harmony(z);
706         if (ret == 0) return 0; /* call check_vowel_harmony, line 173 */
707         if (ret < 0) return ret;
708     }
709     if (in_grouping_b_U(z, g_U, 105, 305, 0)) return 0;
710     {   int ret = r_mark_suffix_with_optional_s_consonant(z);
711         if (ret == 0) return 0; /* call mark_suffix_with_optional_s_consonant, line 175 */
712         if (ret < 0) return ret;
713     }
714     return 1;
715 }
716
717 static int r_mark_lArI(struct SN_env * z) {
718     if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 177)) return 0;
719     if (!(find_among_b(z, a_1, 2))) return 0; /* among, line 179 */
720     return 1;
721 }
722
723 static int r_mark_yU(struct SN_env * z) {
724     {   int ret = r_check_vowel_harmony(z);
725         if (ret == 0) return 0; /* call check_vowel_harmony, line 183 */
726         if (ret < 0) return ret;
727     }
728     if (in_grouping_b_U(z, g_U, 105, 305, 0)) return 0;
729     {   int ret = r_mark_suffix_with_optional_y_consonant(z);
730         if (ret == 0) return 0; /* call mark_suffix_with_optional_y_consonant, line 185 */
731         if (ret < 0) return ret;
732     }
733     return 1;
734 }
735
736 static int r_mark_nU(struct SN_env * z) {
737     {   int ret = r_check_vowel_harmony(z);
738         if (ret == 0) return 0; /* call check_vowel_harmony, line 189 */
739         if (ret < 0) return ret;
740     }
741     if (!(find_among_b(z, a_2, 4))) return 0; /* among, line 190 */
742     return 1;
743 }
744
745 static int r_mark_nUn(struct SN_env * z) {
746     {   int ret = r_check_vowel_harmony(z);
747         if (ret == 0) return 0; /* call check_vowel_harmony, line 194 */
748         if (ret < 0) return ret;
749     }
750     if (z->c - 1 <= z->lb || z->p[z->c - 1] != 110) return 0;
751     if (!(find_among_b(z, a_3, 4))) return 0; /* among, line 195 */
752     {   int ret = r_mark_suffix_with_optional_n_consonant(z);
753         if (ret == 0) return 0; /* call mark_suffix_with_optional_n_consonant, line 196 */
754         if (ret < 0) return ret;
755     }
756     return 1;
757 }
758
759 static int r_mark_yA(struct SN_env * z) {
760     {   int ret = r_check_vowel_harmony(z);
761         if (ret == 0) return 0; /* call check_vowel_harmony, line 200 */
762         if (ret < 0) return ret;
763     }
764     if (z->c <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0;
765     if (!(find_among_b(z, a_4, 2))) return 0; /* among, line 201 */
766     {   int ret = r_mark_suffix_with_optional_y_consonant(z);
767         if (ret == 0) return 0; /* call mark_suffix_with_optional_y_consonant, line 202 */
768         if (ret < 0) return ret;
769     }
770     return 1;
771 }
772
773 static int r_mark_nA(struct SN_env * z) {
774     {   int ret = r_check_vowel_harmony(z);
775         if (ret == 0) return 0; /* call check_vowel_harmony, line 206 */
776         if (ret < 0) return ret;
777     }
778     if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0;
779     if (!(find_among_b(z, a_5, 2))) return 0; /* among, line 207 */
780     return 1;
781 }
782
783 static int r_mark_DA(struct SN_env * z) {
784     {   int ret = r_check_vowel_harmony(z);
785         if (ret == 0) return 0; /* call check_vowel_harmony, line 211 */
786         if (ret < 0) return ret;
787     }
788     if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0;
789     if (!(find_among_b(z, a_6, 4))) return 0; /* among, line 212 */
790     return 1;
791 }
792
793 static int r_mark_ndA(struct SN_env * z) {
794     {   int ret = r_check_vowel_harmony(z);
795         if (ret == 0) return 0; /* call check_vowel_harmony, line 216 */
796         if (ret < 0) return ret;
797     }
798     if (z->c - 2 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0;
799     if (!(find_among_b(z, a_7, 2))) return 0; /* among, line 217 */
800     return 1;
801 }
802
803 static int r_mark_DAn(struct SN_env * z) {
804     {   int ret = r_check_vowel_harmony(z);
805         if (ret == 0) return 0; /* call check_vowel_harmony, line 221 */
806         if (ret < 0) return ret;
807     }
808     if (z->c - 2 <= z->lb || z->p[z->c - 1] != 110) return 0;
809     if (!(find_among_b(z, a_8, 4))) return 0; /* among, line 222 */
810     return 1;
811 }
812
813 static int r_mark_ndAn(struct SN_env * z) {
814     {   int ret = r_check_vowel_harmony(z);
815         if (ret == 0) return 0; /* call check_vowel_harmony, line 226 */
816         if (ret < 0) return ret;
817     }
818     if (z->c - 3 <= z->lb || z->p[z->c - 1] != 110) return 0;
819     if (!(find_among_b(z, a_9, 2))) return 0; /* among, line 227 */
820     return 1;
821 }
822
823 static int r_mark_ylA(struct SN_env * z) {
824     {   int ret = r_check_vowel_harmony(z);
825         if (ret == 0) return 0; /* call check_vowel_harmony, line 231 */
826         if (ret < 0) return ret;
827     }
828     if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0;
829     if (!(find_among_b(z, a_10, 2))) return 0; /* among, line 232 */
830     {   int ret = r_mark_suffix_with_optional_y_consonant(z);
831         if (ret == 0) return 0; /* call mark_suffix_with_optional_y_consonant, line 233 */
832         if (ret < 0) return ret;
833     }
834     return 1;
835 }
836
837 static int r_mark_ki(struct SN_env * z) {
838     if (!(eq_s_b(z, 2, s_14))) return 0;
839     return 1;
840 }
841
842 static int r_mark_ncA(struct SN_env * z) {
843     {   int ret = r_check_vowel_harmony(z);
844         if (ret == 0) return 0; /* call check_vowel_harmony, line 241 */
845         if (ret < 0) return ret;
846     }
847     if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0;
848     if (!(find_among_b(z, a_11, 2))) return 0; /* among, line 242 */
849     {   int ret = r_mark_suffix_with_optional_n_consonant(z);
850         if (ret == 0) return 0; /* call mark_suffix_with_optional_n_consonant, line 243 */
851         if (ret < 0) return ret;
852     }
853     return 1;
854 }
855
856 static int r_mark_yUm(struct SN_env * z) {
857     {   int ret = r_check_vowel_harmony(z);
858         if (ret == 0) return 0; /* call check_vowel_harmony, line 247 */
859         if (ret < 0) return ret;
860     }
861     if (z->c - 1 <= z->lb || z->p[z->c - 1] != 109) return 0;
862     if (!(find_among_b(z, a_12, 4))) return 0; /* among, line 248 */
863     {   int ret = r_mark_suffix_with_optional_y_consonant(z);
864         if (ret == 0) return 0; /* call mark_suffix_with_optional_y_consonant, line 249 */
865         if (ret < 0) return ret;
866     }
867     return 1;
868 }
869
870 static int r_mark_sUn(struct SN_env * z) {
871     {   int ret = r_check_vowel_harmony(z);
872         if (ret == 0) return 0; /* call check_vowel_harmony, line 253 */
873         if (ret < 0) return ret;
874     }
875     if (z->c - 2 <= z->lb || z->p[z->c - 1] != 110) return 0;
876     if (!(find_among_b(z, a_13, 4))) return 0; /* among, line 254 */
877     return 1;
878 }
879
880 static int r_mark_yUz(struct SN_env * z) {
881     {   int ret = r_check_vowel_harmony(z);
882         if (ret == 0) return 0; /* call check_vowel_harmony, line 258 */
883         if (ret < 0) return ret;
884     }
885     if (z->c - 1 <= z->lb || z->p[z->c - 1] != 122) return 0;
886     if (!(find_among_b(z, a_14, 4))) return 0; /* among, line 259 */
887     {   int ret = r_mark_suffix_with_optional_y_consonant(z);
888         if (ret == 0) return 0; /* call mark_suffix_with_optional_y_consonant, line 260 */
889         if (ret < 0) return ret;
890     }
891     return 1;
892 }
893
894 static int r_mark_sUnUz(struct SN_env * z) {
895     if (z->c - 4 <= z->lb || z->p[z->c - 1] != 122) return 0;
896     if (!(find_among_b(z, a_15, 4))) return 0; /* among, line 264 */
897     return 1;
898 }
899
900 static int r_mark_lAr(struct SN_env * z) {
901     {   int ret = r_check_vowel_harmony(z);
902         if (ret == 0) return 0; /* call check_vowel_harmony, line 268 */
903         if (ret < 0) return ret;
904     }
905     if (z->c - 2 <= z->lb || z->p[z->c - 1] != 114) return 0;
906     if (!(find_among_b(z, a_16, 2))) return 0; /* among, line 269 */
907     return 1;
908 }
909
910 static int r_mark_nUz(struct SN_env * z) {
911     {   int ret = r_check_vowel_harmony(z);
912         if (ret == 0) return 0; /* call check_vowel_harmony, line 273 */
913         if (ret < 0) return ret;
914     }
915     if (z->c - 2 <= z->lb || z->p[z->c - 1] != 122) return 0;
916     if (!(find_among_b(z, a_17, 4))) return 0; /* among, line 274 */
917     return 1;
918 }
919
920 static int r_mark_DUr(struct SN_env * z) {
921     {   int ret = r_check_vowel_harmony(z);
922         if (ret == 0) return 0; /* call check_vowel_harmony, line 278 */
923         if (ret < 0) return ret;
924     }
925     if (z->c - 2 <= z->lb || z->p[z->c - 1] != 114) return 0;
926     if (!(find_among_b(z, a_18, 8))) return 0; /* among, line 279 */
927     return 1;
928 }
929
930 static int r_mark_cAsInA(struct SN_env * z) {
931     if (z->c - 5 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0;
932     if (!(find_among_b(z, a_19, 2))) return 0; /* among, line 283 */
933     return 1;
934 }
935
936 static int r_mark_yDU(struct SN_env * z) {
937     {   int ret = r_check_vowel_harmony(z);
938         if (ret == 0) return 0; /* call check_vowel_harmony, line 287 */
939         if (ret < 0) return ret;
940     }
941     if (!(find_among_b(z, a_20, 32))) return 0; /* among, line 288 */
942     {   int ret = r_mark_suffix_with_optional_y_consonant(z);
943         if (ret == 0) return 0; /* call mark_suffix_with_optional_y_consonant, line 292 */
944         if (ret < 0) return ret;
945     }
946     return 1;
947 }
948
949 static int r_mark_ysA(struct SN_env * z) {
950     if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((26658 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
951     if (!(find_among_b(z, a_21, 8))) return 0; /* among, line 297 */
952     {   int ret = r_mark_suffix_with_optional_y_consonant(z);
953         if (ret == 0) return 0; /* call mark_suffix_with_optional_y_consonant, line 298 */
954         if (ret < 0) return ret;
955     }
956     return 1;
957 }
958
959 static int r_mark_ymUs_(struct SN_env * z) {
960     {   int ret = r_check_vowel_harmony(z);
961         if (ret == 0) return 0; /* call check_vowel_harmony, line 302 */
962         if (ret < 0) return ret;
963     }
964     if (z->c - 3 <= z->lb || z->p[z->c - 1] != 159) return 0;
965     if (!(find_among_b(z, a_22, 4))) return 0; /* among, line 303 */
966     {   int ret = r_mark_suffix_with_optional_y_consonant(z);
967         if (ret == 0) return 0; /* call mark_suffix_with_optional_y_consonant, line 304 */
968         if (ret < 0) return ret;
969     }
970     return 1;
971 }
972
973 static int r_mark_yken(struct SN_env * z) {
974     if (!(eq_s_b(z, 3, s_15))) return 0;
975     {   int ret = r_mark_suffix_with_optional_y_consonant(z);
976         if (ret == 0) return 0; /* call mark_suffix_with_optional_y_consonant, line 308 */
977         if (ret < 0) return ret;
978     }
979     return 1;
980 }
981
982 static int r_stem_nominal_verb_suffixes(struct SN_env * z) {
983     z->ket = z->c; /* [, line 312 */
984     z->B[0] = 1; /* set continue_stemming_noun_suffixes, line 313 */
985     {   int m1 = z->l - z->c; (void)m1; /* or, line 315 */
986         {   int m2 = z->l - z->c; (void)m2; /* or, line 314 */
987             {   int ret = r_mark_ymUs_(z);
988                 if (ret == 0) goto lab3; /* call mark_ymUs_, line 314 */
989                 if (ret < 0) return ret;
990             }
991             goto lab2;
992         lab3:
993             z->c = z->l - m2;
994             {   int ret = r_mark_yDU(z);
995                 if (ret == 0) goto lab4; /* call mark_yDU, line 314 */
996                 if (ret < 0) return ret;
997             }
998             goto lab2;
999         lab4:
1000             z->c = z->l - m2;
1001             {   int ret = r_mark_ysA(z);
1002                 if (ret == 0) goto lab5; /* call mark_ysA, line 314 */
1003                 if (ret < 0) return ret;
1004             }
1005             goto lab2;
1006         lab5:
1007             z->c = z->l - m2;
1008             {   int ret = r_mark_yken(z);
1009                 if (ret == 0) goto lab1; /* call mark_yken, line 314 */
1010                 if (ret < 0) return ret;
1011             }
1012         }
1013     lab2:
1014         goto lab0;
1015     lab1:
1016         z->c = z->l - m1;
1017         {   int ret = r_mark_cAsInA(z);
1018             if (ret == 0) goto lab6; /* call mark_cAsInA, line 316 */
1019             if (ret < 0) return ret;
1020         }
1021         {   int m3 = z->l - z->c; (void)m3; /* or, line 316 */
1022             {   int ret = r_mark_sUnUz(z);
1023                 if (ret == 0) goto lab8; /* call mark_sUnUz, line 316 */
1024                 if (ret < 0) return ret;
1025             }
1026             goto lab7;
1027         lab8:
1028             z->c = z->l - m3;
1029             {   int ret = r_mark_lAr(z);
1030                 if (ret == 0) goto lab9; /* call mark_lAr, line 316 */
1031                 if (ret < 0) return ret;
1032             }
1033             goto lab7;
1034         lab9:
1035             z->c = z->l - m3;
1036             {   int ret = r_mark_yUm(z);
1037                 if (ret == 0) goto lab10; /* call mark_yUm, line 316 */
1038                 if (ret < 0) return ret;
1039             }
1040             goto lab7;
1041         lab10:
1042             z->c = z->l - m3;
1043             {   int ret = r_mark_sUn(z);
1044                 if (ret == 0) goto lab11; /* call mark_sUn, line 316 */
1045                 if (ret < 0) return ret;
1046             }
1047             goto lab7;
1048         lab11:
1049             z->c = z->l - m3;
1050             {   int ret = r_mark_yUz(z);
1051                 if (ret == 0) goto lab12; /* call mark_yUz, line 316 */
1052                 if (ret < 0) return ret;
1053             }
1054             goto lab7;
1055         lab12:
1056             z->c = z->l - m3;
1057         }
1058     lab7:
1059         {   int ret = r_mark_ymUs_(z);
1060             if (ret == 0) goto lab6; /* call mark_ymUs_, line 316 */
1061             if (ret < 0) return ret;
1062         }
1063         goto lab0;
1064     lab6:
1065         z->c = z->l - m1;
1066         {   int ret = r_mark_lAr(z);
1067             if (ret == 0) goto lab13; /* call mark_lAr, line 319 */
1068             if (ret < 0) return ret;
1069         }
1070         z->bra = z->c; /* ], line 319 */
1071         {   int ret = slice_del(z); /* delete, line 319 */
1072             if (ret < 0) return ret;
1073         }
1074         {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 319 */
1075             z->ket = z->c; /* [, line 319 */
1076             {   int m4 = z->l - z->c; (void)m4; /* or, line 319 */
1077                 {   int ret = r_mark_DUr(z);
1078                     if (ret == 0) goto lab16; /* call mark_DUr, line 319 */
1079                     if (ret < 0) return ret;
1080                 }
1081                 goto lab15;
1082             lab16:
1083                 z->c = z->l - m4;
1084                 {   int ret = r_mark_yDU(z);
1085                     if (ret == 0) goto lab17; /* call mark_yDU, line 319 */
1086                     if (ret < 0) return ret;
1087                 }
1088                 goto lab15;
1089             lab17:
1090                 z->c = z->l - m4;
1091                 {   int ret = r_mark_ysA(z);
1092                     if (ret == 0) goto lab18; /* call mark_ysA, line 319 */
1093                     if (ret < 0) return ret;
1094                 }
1095                 goto lab15;
1096             lab18:
1097                 z->c = z->l - m4;
1098                 {   int ret = r_mark_ymUs_(z);
1099                     if (ret == 0) { z->c = z->l - m_keep; goto lab14; } /* call mark_ymUs_, line 319 */
1100                     if (ret < 0) return ret;
1101                 }
1102             }
1103         lab15:
1104         lab14:
1105             ;
1106         }
1107         z->B[0] = 0; /* unset continue_stemming_noun_suffixes, line 320 */
1108         goto lab0;
1109     lab13:
1110         z->c = z->l - m1;
1111         {   int ret = r_mark_nUz(z);
1112             if (ret == 0) goto lab19; /* call mark_nUz, line 323 */
1113             if (ret < 0) return ret;
1114         }
1115         {   int m5 = z->l - z->c; (void)m5; /* or, line 323 */
1116             {   int ret = r_mark_yDU(z);
1117                 if (ret == 0) goto lab21; /* call mark_yDU, line 323 */
1118                 if (ret < 0) return ret;
1119             }
1120             goto lab20;
1121         lab21:
1122             z->c = z->l - m5;
1123             {   int ret = r_mark_ysA(z);
1124                 if (ret == 0) goto lab19; /* call mark_ysA, line 323 */
1125                 if (ret < 0) return ret;
1126             }
1127         }
1128     lab20:
1129         goto lab0;
1130     lab19:
1131         z->c = z->l - m1;
1132         {   int m6 = z->l - z->c; (void)m6; /* or, line 325 */
1133             {   int ret = r_mark_sUnUz(z);
1134                 if (ret == 0) goto lab24; /* call mark_sUnUz, line 325 */
1135                 if (ret < 0) return ret;
1136             }
1137             goto lab23;
1138         lab24:
1139             z->c = z->l - m6;
1140             {   int ret = r_mark_yUz(z);
1141                 if (ret == 0) goto lab25; /* call mark_yUz, line 325 */
1142                 if (ret < 0) return ret;
1143             }
1144             goto lab23;
1145         lab25:
1146             z->c = z->l - m6;
1147             {   int ret = r_mark_sUn(z);
1148                 if (ret == 0) goto lab26; /* call mark_sUn, line 325 */
1149                 if (ret < 0) return ret;
1150             }
1151             goto lab23;
1152         lab26:
1153             z->c = z->l - m6;
1154             {   int ret = r_mark_yUm(z);
1155                 if (ret == 0) goto lab22; /* call mark_yUm, line 325 */
1156                 if (ret < 0) return ret;
1157             }
1158         }
1159     lab23:
1160         z->bra = z->c; /* ], line 325 */
1161         {   int ret = slice_del(z); /* delete, line 325 */
1162             if (ret < 0) return ret;
1163         }
1164         {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 325 */
1165             z->ket = z->c; /* [, line 325 */
1166             {   int ret = r_mark_ymUs_(z);
1167                 if (ret == 0) { z->c = z->l - m_keep; goto lab27; } /* call mark_ymUs_, line 325 */
1168                 if (ret < 0) return ret;
1169             }
1170         lab27:
1171             ;
1172         }
1173         goto lab0;
1174     lab22:
1175         z->c = z->l - m1;
1176         {   int ret = r_mark_DUr(z);
1177             if (ret == 0) return 0; /* call mark_DUr, line 327 */
1178             if (ret < 0) return ret;
1179         }
1180         z->bra = z->c; /* ], line 327 */
1181         {   int ret = slice_del(z); /* delete, line 327 */
1182             if (ret < 0) return ret;
1183         }
1184         {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 327 */
1185             z->ket = z->c; /* [, line 327 */
1186             {   int m7 = z->l - z->c; (void)m7; /* or, line 327 */
1187                 {   int ret = r_mark_sUnUz(z);
1188                     if (ret == 0) goto lab30; /* call mark_sUnUz, line 327 */
1189                     if (ret < 0) return ret;
1190                 }
1191                 goto lab29;
1192             lab30:
1193                 z->c = z->l - m7;
1194                 {   int ret = r_mark_lAr(z);
1195                     if (ret == 0) goto lab31; /* call mark_lAr, line 327 */
1196                     if (ret < 0) return ret;
1197                 }
1198                 goto lab29;
1199             lab31:
1200                 z->c = z->l - m7;
1201                 {   int ret = r_mark_yUm(z);
1202                     if (ret == 0) goto lab32; /* call mark_yUm, line 327 */
1203                     if (ret < 0) return ret;
1204                 }
1205                 goto lab29;
1206             lab32:
1207                 z->c = z->l - m7;
1208                 {   int ret = r_mark_sUn(z);
1209                     if (ret == 0) goto lab33; /* call mark_sUn, line 327 */
1210                     if (ret < 0) return ret;
1211                 }
1212                 goto lab29;
1213             lab33:
1214                 z->c = z->l - m7;
1215                 {   int ret = r_mark_yUz(z);
1216                     if (ret == 0) goto lab34; /* call mark_yUz, line 327 */
1217                     if (ret < 0) return ret;
1218                 }
1219                 goto lab29;
1220             lab34:
1221                 z->c = z->l - m7;
1222             }
1223         lab29:
1224             {   int ret = r_mark_ymUs_(z);
1225                 if (ret == 0) { z->c = z->l - m_keep; goto lab28; } /* call mark_ymUs_, line 327 */
1226                 if (ret < 0) return ret;
1227             }
1228         lab28:
1229             ;
1230         }
1231     }
1232 lab0:
1233     z->bra = z->c; /* ], line 328 */
1234     {   int ret = slice_del(z); /* delete, line 328 */
1235         if (ret < 0) return ret;
1236     }
1237     return 1;
1238 }
1239
1240 static int r_stem_suffix_chain_before_ki(struct SN_env * z) {
1241     z->ket = z->c; /* [, line 333 */
1242     {   int ret = r_mark_ki(z);
1243         if (ret == 0) return 0; /* call mark_ki, line 334 */
1244         if (ret < 0) return ret;
1245     }
1246     {   int m1 = z->l - z->c; (void)m1; /* or, line 342 */
1247         {   int ret = r_mark_DA(z);
1248             if (ret == 0) goto lab1; /* call mark_DA, line 336 */
1249             if (ret < 0) return ret;
1250         }
1251         z->bra = z->c; /* ], line 336 */
1252         {   int ret = slice_del(z); /* delete, line 336 */
1253             if (ret < 0) return ret;
1254         }
1255         {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 336 */
1256             z->ket = z->c; /* [, line 336 */
1257             {   int m2 = z->l - z->c; (void)m2; /* or, line 338 */
1258                 {   int ret = r_mark_lAr(z);
1259                     if (ret == 0) goto lab4; /* call mark_lAr, line 337 */
1260                     if (ret < 0) return ret;
1261                 }
1262                 z->bra = z->c; /* ], line 337 */
1263                 {   int ret = slice_del(z); /* delete, line 337 */
1264                     if (ret < 0) return ret;
1265                 }
1266                 {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 337 */
1267                     {   int ret = r_stem_suffix_chain_before_ki(z);
1268                         if (ret == 0) { z->c = z->l - m_keep; goto lab5; } /* call stem_suffix_chain_before_ki, line 337 */
1269                         if (ret < 0) return ret;
1270                     }
1271                 lab5:
1272                     ;
1273                 }
1274                 goto lab3;
1275             lab4:
1276                 z->c = z->l - m2;
1277                 {   int ret = r_mark_possessives(z);
1278                     if (ret == 0) { z->c = z->l - m_keep; goto lab2; } /* call mark_possessives, line 339 */
1279                     if (ret < 0) return ret;
1280                 }
1281                 z->bra = z->c; /* ], line 339 */
1282                 {   int ret = slice_del(z); /* delete, line 339 */
1283                     if (ret < 0) return ret;
1284                 }
1285                 {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 339 */
1286                     z->ket = z->c; /* [, line 339 */
1287                     {   int ret = r_mark_lAr(z);
1288                         if (ret == 0) { z->c = z->l - m_keep; goto lab6; } /* call mark_lAr, line 339 */
1289                         if (ret < 0) return ret;
1290                     }
1291                     z->bra = z->c; /* ], line 339 */
1292                     {   int ret = slice_del(z); /* delete, line 339 */
1293                         if (ret < 0) return ret;
1294                     }
1295                     {   int ret = r_stem_suffix_chain_before_ki(z);
1296                         if (ret == 0) { z->c = z->l - m_keep; goto lab6; } /* call stem_suffix_chain_before_ki, line 339 */
1297                         if (ret < 0) return ret;
1298                     }
1299                 lab6:
1300                     ;
1301                 }
1302             }
1303         lab3:
1304         lab2:
1305             ;
1306         }
1307         goto lab0;
1308     lab1:
1309         z->c = z->l - m1;
1310         {   int ret = r_mark_nUn(z);
1311             if (ret == 0) goto lab7; /* call mark_nUn, line 343 */
1312             if (ret < 0) return ret;
1313         }
1314         z->bra = z->c; /* ], line 343 */
1315         {   int ret = slice_del(z); /* delete, line 343 */
1316             if (ret < 0) return ret;
1317         }
1318         {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 343 */
1319             z->ket = z->c; /* [, line 343 */
1320             {   int m3 = z->l - z->c; (void)m3; /* or, line 345 */
1321                 {   int ret = r_mark_lArI(z);
1322                     if (ret == 0) goto lab10; /* call mark_lArI, line 344 */
1323                     if (ret < 0) return ret;
1324                 }
1325                 z->bra = z->c; /* ], line 344 */
1326                 {   int ret = slice_del(z); /* delete, line 344 */
1327                     if (ret < 0) return ret;
1328                 }
1329                 goto lab9;
1330             lab10:
1331                 z->c = z->l - m3;
1332                 z->ket = z->c; /* [, line 346 */
1333                 {   int m4 = z->l - z->c; (void)m4; /* or, line 346 */
1334                     {   int ret = r_mark_possessives(z);
1335                         if (ret == 0) goto lab13; /* call mark_possessives, line 346 */
1336                         if (ret < 0) return ret;
1337                     }
1338                     goto lab12;
1339                 lab13:
1340                     z->c = z->l - m4;
1341                     {   int ret = r_mark_sU(z);
1342                         if (ret == 0) goto lab11; /* call mark_sU, line 346 */
1343                         if (ret < 0) return ret;
1344                     }
1345                 }
1346             lab12:
1347                 z->bra = z->c; /* ], line 346 */
1348                 {   int ret = slice_del(z); /* delete, line 346 */
1349                     if (ret < 0) return ret;
1350                 }
1351                 {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 346 */
1352                     z->ket = z->c; /* [, line 346 */
1353                     {   int ret = r_mark_lAr(z);
1354                         if (ret == 0) { z->c = z->l - m_keep; goto lab14; } /* call mark_lAr, line 346 */
1355                         if (ret < 0) return ret;
1356                     }
1357                     z->bra = z->c; /* ], line 346 */
1358                     {   int ret = slice_del(z); /* delete, line 346 */
1359                         if (ret < 0) return ret;
1360                     }
1361                     {   int ret = r_stem_suffix_chain_before_ki(z);
1362                         if (ret == 0) { z->c = z->l - m_keep; goto lab14; } /* call stem_suffix_chain_before_ki, line 346 */
1363                         if (ret < 0) return ret;
1364                     }
1365                 lab14:
1366                     ;
1367                 }
1368                 goto lab9;
1369             lab11:
1370                 z->c = z->l - m3;
1371                 {   int ret = r_stem_suffix_chain_before_ki(z);
1372                     if (ret == 0) { z->c = z->l - m_keep; goto lab8; } /* call stem_suffix_chain_before_ki, line 348 */
1373                     if (ret < 0) return ret;
1374                 }
1375             }
1376         lab9:
1377         lab8:
1378             ;
1379         }
1380         goto lab0;
1381     lab7:
1382         z->c = z->l - m1;
1383         {   int ret = r_mark_ndA(z);
1384             if (ret == 0) return 0; /* call mark_ndA, line 351 */
1385             if (ret < 0) return ret;
1386         }
1387         {   int m5 = z->l - z->c; (void)m5; /* or, line 353 */
1388             {   int ret = r_mark_lArI(z);
1389                 if (ret == 0) goto lab16; /* call mark_lArI, line 352 */
1390                 if (ret < 0) return ret;
1391             }
1392             z->bra = z->c; /* ], line 352 */
1393             {   int ret = slice_del(z); /* delete, line 352 */
1394                 if (ret < 0) return ret;
1395             }
1396             goto lab15;
1397         lab16:
1398             z->c = z->l - m5;
1399             {   int ret = r_mark_sU(z);
1400                 if (ret == 0) goto lab17; /* call mark_sU, line 354 */
1401                 if (ret < 0) return ret;
1402             }
1403             z->bra = z->c; /* ], line 354 */
1404             {   int ret = slice_del(z); /* delete, line 354 */
1405                 if (ret < 0) return ret;
1406             }
1407             {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 354 */
1408                 z->ket = z->c; /* [, line 354 */
1409                 {   int ret = r_mark_lAr(z);
1410                     if (ret == 0) { z->c = z->l - m_keep; goto lab18; } /* call mark_lAr, line 354 */
1411                     if (ret < 0) return ret;
1412                 }
1413                 z->bra = z->c; /* ], line 354 */
1414                 {   int ret = slice_del(z); /* delete, line 354 */
1415                     if (ret < 0) return ret;
1416                 }
1417                 {   int ret = r_stem_suffix_chain_before_ki(z);
1418                     if (ret == 0) { z->c = z->l - m_keep; goto lab18; } /* call stem_suffix_chain_before_ki, line 354 */
1419                     if (ret < 0) return ret;
1420                 }
1421             lab18:
1422                 ;
1423             }
1424             goto lab15;
1425         lab17:
1426             z->c = z->l - m5;
1427             {   int ret = r_stem_suffix_chain_before_ki(z);
1428                 if (ret == 0) return 0; /* call stem_suffix_chain_before_ki, line 356 */
1429                 if (ret < 0) return ret;
1430             }
1431         }
1432     lab15:
1433         ;
1434     }
1435 lab0:
1436     return 1;
1437 }
1438
1439 static int r_stem_noun_suffixes(struct SN_env * z) {
1440     {   int m1 = z->l - z->c; (void)m1; /* or, line 363 */
1441         z->ket = z->c; /* [, line 362 */
1442         {   int ret = r_mark_lAr(z);
1443             if (ret == 0) goto lab1; /* call mark_lAr, line 362 */
1444             if (ret < 0) return ret;
1445         }
1446         z->bra = z->c; /* ], line 362 */
1447         {   int ret = slice_del(z); /* delete, line 362 */
1448             if (ret < 0) return ret;
1449         }
1450         {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 362 */
1451             {   int ret = r_stem_suffix_chain_before_ki(z);
1452                 if (ret == 0) { z->c = z->l - m_keep; goto lab2; } /* call stem_suffix_chain_before_ki, line 362 */
1453                 if (ret < 0) return ret;
1454             }
1455         lab2:
1456             ;
1457         }
1458         goto lab0;
1459     lab1:
1460         z->c = z->l - m1;
1461         z->ket = z->c; /* [, line 364 */
1462         {   int ret = r_mark_ncA(z);
1463             if (ret == 0) goto lab3; /* call mark_ncA, line 364 */
1464             if (ret < 0) return ret;
1465         }
1466         z->bra = z->c; /* ], line 364 */
1467         {   int ret = slice_del(z); /* delete, line 364 */
1468             if (ret < 0) return ret;
1469         }
1470         {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 365 */
1471             {   int m2 = z->l - z->c; (void)m2; /* or, line 367 */
1472                 z->ket = z->c; /* [, line 366 */
1473                 {   int ret = r_mark_lArI(z);
1474                     if (ret == 0) goto lab6; /* call mark_lArI, line 366 */
1475                     if (ret < 0) return ret;
1476                 }
1477                 z->bra = z->c; /* ], line 366 */
1478                 {   int ret = slice_del(z); /* delete, line 366 */
1479                     if (ret < 0) return ret;
1480                 }
1481                 goto lab5;
1482             lab6:
1483                 z->c = z->l - m2;
1484                 z->ket = z->c; /* [, line 368 */
1485                 {   int m3 = z->l - z->c; (void)m3; /* or, line 368 */
1486                     {   int ret = r_mark_possessives(z);
1487                         if (ret == 0) goto lab9; /* call mark_possessives, line 368 */
1488                         if (ret < 0) return ret;
1489                     }
1490                     goto lab8;
1491                 lab9:
1492                     z->c = z->l - m3;
1493                     {   int ret = r_mark_sU(z);
1494                         if (ret == 0) goto lab7; /* call mark_sU, line 368 */
1495                         if (ret < 0) return ret;
1496                     }
1497                 }
1498             lab8:
1499                 z->bra = z->c; /* ], line 368 */
1500                 {   int ret = slice_del(z); /* delete, line 368 */
1501                     if (ret < 0) return ret;
1502                 }
1503                 {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 368 */
1504                     z->ket = z->c; /* [, line 368 */
1505                     {   int ret = r_mark_lAr(z);
1506                         if (ret == 0) { z->c = z->l - m_keep; goto lab10; } /* call mark_lAr, line 368 */
1507                         if (ret < 0) return ret;
1508                     }
1509                     z->bra = z->c; /* ], line 368 */
1510                     {   int ret = slice_del(z); /* delete, line 368 */
1511                         if (ret < 0) return ret;
1512                     }
1513                     {   int ret = r_stem_suffix_chain_before_ki(z);
1514                         if (ret == 0) { z->c = z->l - m_keep; goto lab10; } /* call stem_suffix_chain_before_ki, line 368 */
1515                         if (ret < 0) return ret;
1516                     }
1517                 lab10:
1518                     ;
1519                 }
1520                 goto lab5;
1521             lab7:
1522                 z->c = z->l - m2;
1523                 z->ket = z->c; /* [, line 370 */
1524                 {   int ret = r_mark_lAr(z);
1525                     if (ret == 0) { z->c = z->l - m_keep; goto lab4; } /* call mark_lAr, line 370 */
1526                     if (ret < 0) return ret;
1527                 }
1528                 z->bra = z->c; /* ], line 370 */
1529                 {   int ret = slice_del(z); /* delete, line 370 */
1530                     if (ret < 0) return ret;
1531                 }
1532                 {   int ret = r_stem_suffix_chain_before_ki(z);
1533                     if (ret == 0) { z->c = z->l - m_keep; goto lab4; } /* call stem_suffix_chain_before_ki, line 370 */
1534                     if (ret < 0) return ret;
1535                 }
1536             }
1537         lab5:
1538         lab4:
1539             ;
1540         }
1541         goto lab0;
1542     lab3:
1543         z->c = z->l - m1;
1544         z->ket = z->c; /* [, line 374 */
1545         {   int m4 = z->l - z->c; (void)m4; /* or, line 374 */
1546             {   int ret = r_mark_ndA(z);
1547                 if (ret == 0) goto lab13; /* call mark_ndA, line 374 */
1548                 if (ret < 0) return ret;
1549             }
1550             goto lab12;
1551         lab13:
1552             z->c = z->l - m4;
1553             {   int ret = r_mark_nA(z);
1554                 if (ret == 0) goto lab11; /* call mark_nA, line 374 */
1555                 if (ret < 0) return ret;
1556             }
1557         }
1558     lab12:
1559         {   int m5 = z->l - z->c; (void)m5; /* or, line 377 */
1560             {   int ret = r_mark_lArI(z);
1561                 if (ret == 0) goto lab15; /* call mark_lArI, line 376 */
1562                 if (ret < 0) return ret;
1563             }
1564             z->bra = z->c; /* ], line 376 */
1565             {   int ret = slice_del(z); /* delete, line 376 */
1566                 if (ret < 0) return ret;
1567             }
1568             goto lab14;
1569         lab15:
1570             z->c = z->l - m5;
1571             {   int ret = r_mark_sU(z);
1572                 if (ret == 0) goto lab16; /* call mark_sU, line 378 */
1573                 if (ret < 0) return ret;
1574             }
1575             z->bra = z->c; /* ], line 378 */
1576             {   int ret = slice_del(z); /* delete, line 378 */
1577                 if (ret < 0) return ret;
1578             }
1579             {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 378 */
1580                 z->ket = z->c; /* [, line 378 */
1581                 {   int ret = r_mark_lAr(z);
1582                     if (ret == 0) { z->c = z->l - m_keep; goto lab17; } /* call mark_lAr, line 378 */
1583                     if (ret < 0) return ret;
1584                 }
1585                 z->bra = z->c; /* ], line 378 */
1586                 {   int ret = slice_del(z); /* delete, line 378 */
1587                     if (ret < 0) return ret;
1588                 }
1589                 {   int ret = r_stem_suffix_chain_before_ki(z);
1590                     if (ret == 0) { z->c = z->l - m_keep; goto lab17; } /* call stem_suffix_chain_before_ki, line 378 */
1591                     if (ret < 0) return ret;
1592                 }
1593             lab17:
1594                 ;
1595             }
1596             goto lab14;
1597         lab16:
1598             z->c = z->l - m5;
1599             {   int ret = r_stem_suffix_chain_before_ki(z);
1600                 if (ret == 0) goto lab11; /* call stem_suffix_chain_before_ki, line 380 */
1601                 if (ret < 0) return ret;
1602             }
1603         }
1604     lab14:
1605         goto lab0;
1606     lab11:
1607         z->c = z->l - m1;
1608         z->ket = z->c; /* [, line 384 */
1609         {   int m6 = z->l - z->c; (void)m6; /* or, line 384 */
1610             {   int ret = r_mark_ndAn(z);
1611                 if (ret == 0) goto lab20; /* call mark_ndAn, line 384 */
1612                 if (ret < 0) return ret;
1613             }
1614             goto lab19;
1615         lab20:
1616             z->c = z->l - m6;
1617             {   int ret = r_mark_nU(z);
1618                 if (ret == 0) goto lab18; /* call mark_nU, line 384 */
1619                 if (ret < 0) return ret;
1620             }
1621         }
1622     lab19:
1623         {   int m7 = z->l - z->c; (void)m7; /* or, line 384 */
1624             {   int ret = r_mark_sU(z);
1625                 if (ret == 0) goto lab22; /* call mark_sU, line 384 */
1626                 if (ret < 0) return ret;
1627             }
1628             z->bra = z->c; /* ], line 384 */
1629             {   int ret = slice_del(z); /* delete, line 384 */
1630                 if (ret < 0) return ret;
1631             }
1632             {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 384 */
1633                 z->ket = z->c; /* [, line 384 */
1634                 {   int ret = r_mark_lAr(z);
1635                     if (ret == 0) { z->c = z->l - m_keep; goto lab23; } /* call mark_lAr, line 384 */
1636                     if (ret < 0) return ret;
1637                 }
1638                 z->bra = z->c; /* ], line 384 */
1639                 {   int ret = slice_del(z); /* delete, line 384 */
1640                     if (ret < 0) return ret;
1641                 }
1642                 {   int ret = r_stem_suffix_chain_before_ki(z);
1643                     if (ret == 0) { z->c = z->l - m_keep; goto lab23; } /* call stem_suffix_chain_before_ki, line 384 */
1644                     if (ret < 0) return ret;
1645                 }
1646             lab23:
1647                 ;
1648             }
1649             goto lab21;
1650         lab22:
1651             z->c = z->l - m7;
1652             {   int ret = r_mark_lArI(z);
1653                 if (ret == 0) goto lab18; /* call mark_lArI, line 384 */
1654                 if (ret < 0) return ret;
1655             }
1656         }
1657     lab21:
1658         goto lab0;
1659     lab18:
1660         z->c = z->l - m1;
1661         z->ket = z->c; /* [, line 386 */
1662         {   int ret = r_mark_DAn(z);
1663             if (ret == 0) goto lab24; /* call mark_DAn, line 386 */
1664             if (ret < 0) return ret;
1665         }
1666         z->bra = z->c; /* ], line 386 */
1667         {   int ret = slice_del(z); /* delete, line 386 */
1668             if (ret < 0) return ret;
1669         }
1670         {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 386 */
1671             z->ket = z->c; /* [, line 386 */
1672             {   int m8 = z->l - z->c; (void)m8; /* or, line 389 */
1673                 {   int ret = r_mark_possessives(z);
1674                     if (ret == 0) goto lab27; /* call mark_possessives, line 388 */
1675                     if (ret < 0) return ret;
1676                 }
1677                 z->bra = z->c; /* ], line 388 */
1678                 {   int ret = slice_del(z); /* delete, line 388 */
1679                     if (ret < 0) return ret;
1680                 }
1681                 {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 388 */
1682                     z->ket = z->c; /* [, line 388 */
1683                     {   int ret = r_mark_lAr(z);
1684                         if (ret == 0) { z->c = z->l - m_keep; goto lab28; } /* call mark_lAr, line 388 */
1685                         if (ret < 0) return ret;
1686                     }
1687                     z->bra = z->c; /* ], line 388 */
1688                     {   int ret = slice_del(z); /* delete, line 388 */
1689                         if (ret < 0) return ret;
1690                     }
1691                     {   int ret = r_stem_suffix_chain_before_ki(z);
1692                         if (ret == 0) { z->c = z->l - m_keep; goto lab28; } /* call stem_suffix_chain_before_ki, line 388 */
1693                         if (ret < 0) return ret;
1694                     }
1695                 lab28:
1696                     ;
1697                 }
1698                 goto lab26;
1699             lab27:
1700                 z->c = z->l - m8;
1701                 {   int ret = r_mark_lAr(z);
1702                     if (ret == 0) goto lab29; /* call mark_lAr, line 390 */
1703                     if (ret < 0) return ret;
1704                 }
1705                 z->bra = z->c; /* ], line 390 */
1706                 {   int ret = slice_del(z); /* delete, line 390 */
1707                     if (ret < 0) return ret;
1708                 }
1709                 {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 390 */
1710                     {   int ret = r_stem_suffix_chain_before_ki(z);
1711                         if (ret == 0) { z->c = z->l - m_keep; goto lab30; } /* call stem_suffix_chain_before_ki, line 390 */
1712                         if (ret < 0) return ret;
1713                     }
1714                 lab30:
1715                     ;
1716                 }
1717                 goto lab26;
1718             lab29:
1719                 z->c = z->l - m8;
1720                 {   int ret = r_stem_suffix_chain_before_ki(z);
1721                     if (ret == 0) { z->c = z->l - m_keep; goto lab25; } /* call stem_suffix_chain_before_ki, line 392 */
1722                     if (ret < 0) return ret;
1723                 }
1724             }
1725         lab26:
1726         lab25:
1727             ;
1728         }
1729         goto lab0;
1730     lab24:
1731         z->c = z->l - m1;
1732         z->ket = z->c; /* [, line 396 */
1733         {   int m9 = z->l - z->c; (void)m9; /* or, line 396 */
1734             {   int ret = r_mark_nUn(z);
1735                 if (ret == 0) goto lab33; /* call mark_nUn, line 396 */
1736                 if (ret < 0) return ret;
1737             }
1738             goto lab32;
1739         lab33:
1740             z->c = z->l - m9;
1741             {   int ret = r_mark_ylA(z);
1742                 if (ret == 0) goto lab31; /* call mark_ylA, line 396 */
1743                 if (ret < 0) return ret;
1744             }
1745         }
1746     lab32:
1747         z->bra = z->c; /* ], line 396 */
1748         {   int ret = slice_del(z); /* delete, line 396 */
1749             if (ret < 0) return ret;
1750         }
1751         {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 397 */
1752             {   int m10 = z->l - z->c; (void)m10; /* or, line 399 */
1753                 z->ket = z->c; /* [, line 398 */
1754                 {   int ret = r_mark_lAr(z);
1755                     if (ret == 0) goto lab36; /* call mark_lAr, line 398 */
1756                     if (ret < 0) return ret;
1757                 }
1758                 z->bra = z->c; /* ], line 398 */
1759                 {   int ret = slice_del(z); /* delete, line 398 */
1760                     if (ret < 0) return ret;
1761                 }
1762                 {   int ret = r_stem_suffix_chain_before_ki(z);
1763                     if (ret == 0) goto lab36; /* call stem_suffix_chain_before_ki, line 398 */
1764                     if (ret < 0) return ret;
1765                 }
1766                 goto lab35;
1767             lab36:
1768                 z->c = z->l - m10;
1769                 z->ket = z->c; /* [, line 400 */
1770                 {   int m11 = z->l - z->c; (void)m11; /* or, line 400 */
1771                     {   int ret = r_mark_possessives(z);
1772                         if (ret == 0) goto lab39; /* call mark_possessives, line 400 */
1773                         if (ret < 0) return ret;
1774                     }
1775                     goto lab38;
1776                 lab39:
1777                     z->c = z->l - m11;
1778                     {   int ret = r_mark_sU(z);
1779                         if (ret == 0) goto lab37; /* call mark_sU, line 400 */
1780                         if (ret < 0) return ret;
1781                     }
1782                 }
1783             lab38:
1784                 z->bra = z->c; /* ], line 400 */
1785                 {   int ret = slice_del(z); /* delete, line 400 */
1786                     if (ret < 0) return ret;
1787                 }
1788                 {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 400 */
1789                     z->ket = z->c; /* [, line 400 */
1790                     {   int ret = r_mark_lAr(z);
1791                         if (ret == 0) { z->c = z->l - m_keep; goto lab40; } /* call mark_lAr, line 400 */
1792                         if (ret < 0) return ret;
1793                     }
1794                     z->bra = z->c; /* ], line 400 */
1795                     {   int ret = slice_del(z); /* delete, line 400 */
1796                         if (ret < 0) return ret;
1797                     }
1798                     {   int ret = r_stem_suffix_chain_before_ki(z);
1799                         if (ret == 0) { z->c = z->l - m_keep; goto lab40; } /* call stem_suffix_chain_before_ki, line 400 */
1800                         if (ret < 0) return ret;
1801                     }
1802                 lab40:
1803                     ;
1804                 }
1805                 goto lab35;
1806             lab37:
1807                 z->c = z->l - m10;
1808                 {   int ret = r_stem_suffix_chain_before_ki(z);
1809                     if (ret == 0) { z->c = z->l - m_keep; goto lab34; } /* call stem_suffix_chain_before_ki, line 402 */
1810                     if (ret < 0) return ret;
1811                 }
1812             }
1813         lab35:
1814         lab34:
1815             ;
1816         }
1817         goto lab0;
1818     lab31:
1819         z->c = z->l - m1;
1820         z->ket = z->c; /* [, line 406 */
1821         {   int ret = r_mark_lArI(z);
1822             if (ret == 0) goto lab41; /* call mark_lArI, line 406 */
1823             if (ret < 0) return ret;
1824         }
1825         z->bra = z->c; /* ], line 406 */
1826         {   int ret = slice_del(z); /* delete, line 406 */
1827             if (ret < 0) return ret;
1828         }
1829         goto lab0;
1830     lab41:
1831         z->c = z->l - m1;
1832         {   int ret = r_stem_suffix_chain_before_ki(z);
1833             if (ret == 0) goto lab42; /* call stem_suffix_chain_before_ki, line 408 */
1834             if (ret < 0) return ret;
1835         }
1836         goto lab0;
1837     lab42:
1838         z->c = z->l - m1;
1839         z->ket = z->c; /* [, line 410 */
1840         {   int m12 = z->l - z->c; (void)m12; /* or, line 410 */
1841             {   int ret = r_mark_DA(z);
1842                 if (ret == 0) goto lab45; /* call mark_DA, line 410 */
1843                 if (ret < 0) return ret;
1844             }
1845             goto lab44;
1846         lab45:
1847             z->c = z->l - m12;
1848             {   int ret = r_mark_yU(z);
1849                 if (ret == 0) goto lab46; /* call mark_yU, line 410 */
1850                 if (ret < 0) return ret;
1851             }
1852             goto lab44;
1853         lab46:
1854             z->c = z->l - m12;
1855             {   int ret = r_mark_yA(z);
1856                 if (ret == 0) goto lab43; /* call mark_yA, line 410 */
1857                 if (ret < 0) return ret;
1858             }
1859         }
1860     lab44:
1861         z->bra = z->c; /* ], line 410 */
1862         {   int ret = slice_del(z); /* delete, line 410 */
1863             if (ret < 0) return ret;
1864         }
1865         {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 410 */
1866             z->ket = z->c; /* [, line 410 */
1867             {   int m13 = z->l - z->c; (void)m13; /* or, line 410 */
1868                 {   int ret = r_mark_possessives(z);
1869                     if (ret == 0) goto lab49; /* call mark_possessives, line 410 */
1870                     if (ret < 0) return ret;
1871                 }
1872                 z->bra = z->c; /* ], line 410 */
1873                 {   int ret = slice_del(z); /* delete, line 410 */
1874                     if (ret < 0) return ret;
1875                 }
1876                 {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 410 */
1877                     z->ket = z->c; /* [, line 410 */
1878                     {   int ret = r_mark_lAr(z);
1879                         if (ret == 0) { z->c = z->l - m_keep; goto lab50; } /* call mark_lAr, line 410 */
1880                         if (ret < 0) return ret;
1881                     }
1882                 lab50:
1883                     ;
1884                 }
1885                 goto lab48;
1886             lab49:
1887                 z->c = z->l - m13;
1888                 {   int ret = r_mark_lAr(z);
1889                     if (ret == 0) { z->c = z->l - m_keep; goto lab47; } /* call mark_lAr, line 410 */
1890                     if (ret < 0) return ret;
1891                 }
1892             }
1893         lab48:
1894             z->bra = z->c; /* ], line 410 */
1895             {   int ret = slice_del(z); /* delete, line 410 */
1896                 if (ret < 0) return ret;
1897             }
1898             z->ket = z->c; /* [, line 410 */
1899             {   int ret = r_stem_suffix_chain_before_ki(z);
1900                 if (ret == 0) { z->c = z->l - m_keep; goto lab47; } /* call stem_suffix_chain_before_ki, line 410 */
1901                 if (ret < 0) return ret;
1902             }
1903         lab47:
1904             ;
1905         }
1906         goto lab0;
1907     lab43:
1908         z->c = z->l - m1;
1909         z->ket = z->c; /* [, line 412 */
1910         {   int m14 = z->l - z->c; (void)m14; /* or, line 412 */
1911             {   int ret = r_mark_possessives(z);
1912                 if (ret == 0) goto lab52; /* call mark_possessives, line 412 */
1913                 if (ret < 0) return ret;
1914             }
1915             goto lab51;
1916         lab52:
1917             z->c = z->l - m14;
1918             {   int ret = r_mark_sU(z);
1919                 if (ret == 0) return 0; /* call mark_sU, line 412 */
1920                 if (ret < 0) return ret;
1921             }
1922         }
1923     lab51:
1924         z->bra = z->c; /* ], line 412 */
1925         {   int ret = slice_del(z); /* delete, line 412 */
1926             if (ret < 0) return ret;
1927         }
1928         {   int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 412 */
1929             z->ket = z->c; /* [, line 412 */
1930             {   int ret = r_mark_lAr(z);
1931                 if (ret == 0) { z->c = z->l - m_keep; goto lab53; } /* call mark_lAr, line 412 */
1932                 if (ret < 0) return ret;
1933             }
1934             z->bra = z->c; /* ], line 412 */
1935             {   int ret = slice_del(z); /* delete, line 412 */
1936                 if (ret < 0) return ret;
1937             }
1938             {   int ret = r_stem_suffix_chain_before_ki(z);
1939                 if (ret == 0) { z->c = z->l - m_keep; goto lab53; } /* call stem_suffix_chain_before_ki, line 412 */
1940                 if (ret < 0) return ret;
1941             }
1942         lab53:
1943             ;
1944         }
1945     }
1946 lab0:
1947     return 1;
1948 }
1949
1950 static int r_post_process_last_consonants(struct SN_env * z) {
1951     int among_var;
1952     z->ket = z->c; /* [, line 416 */
1953     among_var = find_among_b(z, a_23, 4); /* substring, line 416 */
1954     if (!(among_var)) return 0;
1955     z->bra = z->c; /* ], line 416 */
1956     switch(among_var) {
1957         case 0: return 0;
1958         case 1:
1959             {   int ret = slice_from_s(z, 1, s_16); /* <-, line 417 */
1960                 if (ret < 0) return ret;
1961             }
1962             break;
1963         case 2:
1964             {   int ret = slice_from_s(z, 2, s_17); /* <-, line 418 */
1965                 if (ret < 0) return ret;
1966             }
1967             break;
1968         case 3:
1969             {   int ret = slice_from_s(z, 1, s_18); /* <-, line 419 */
1970                 if (ret < 0) return ret;
1971             }
1972             break;
1973         case 4:
1974             {   int ret = slice_from_s(z, 1, s_19); /* <-, line 420 */
1975                 if (ret < 0) return ret;
1976             }
1977             break;
1978     }
1979     return 1;
1980 }
1981
1982 static int r_append_U_to_stems_ending_with_d_or_g(struct SN_env * z) {
1983     {   int m_test = z->l - z->c; /* test, line 431 */
1984         {   int m1 = z->l - z->c; (void)m1; /* or, line 431 */
1985             if (!(eq_s_b(z, 1, s_20))) goto lab1;
1986             goto lab0;
1987         lab1:
1988             z->c = z->l - m1;
1989             if (!(eq_s_b(z, 1, s_21))) return 0;
1990         }
1991     lab0:
1992         z->c = z->l - m_test;
1993     }
1994     {   int m2 = z->l - z->c; (void)m2; /* or, line 433 */
1995         {   int m_test = z->l - z->c; /* test, line 432 */
1996             if (out_grouping_b_U(z, g_vowel, 97, 305, 1) < 0) goto lab3; /* goto */ /* grouping vowel, line 432 */
1997             {   int m3 = z->l - z->c; (void)m3; /* or, line 432 */
1998                 if (!(eq_s_b(z, 1, s_22))) goto lab5;
1999                 goto lab4;
2000             lab5:
2001                 z->c = z->l - m3;
2002                 if (!(eq_s_b(z, 2, s_23))) goto lab3;
2003             }
2004         lab4:
2005             z->c = z->l - m_test;
2006         }
2007         {   int c_keep = z->c;
2008             int ret = insert_s(z, z->c, z->c, 2, s_24); /* <+, line 432 */
2009             z->c = c_keep;
2010             if (ret < 0) return ret;
2011         }
2012         goto lab2;
2013     lab3:
2014         z->c = z->l - m2;
2015         {   int m_test = z->l - z->c; /* test, line 434 */
2016             if (out_grouping_b_U(z, g_vowel, 97, 305, 1) < 0) goto lab6; /* goto */ /* grouping vowel, line 434 */
2017             {   int m4 = z->l - z->c; (void)m4; /* or, line 434 */
2018                 if (!(eq_s_b(z, 1, s_25))) goto lab8;
2019                 goto lab7;
2020             lab8:
2021                 z->c = z->l - m4;
2022                 if (!(eq_s_b(z, 1, s_26))) goto lab6;
2023             }
2024         lab7:
2025             z->c = z->l - m_test;
2026         }
2027         {   int c_keep = z->c;
2028             int ret = insert_s(z, z->c, z->c, 1, s_27); /* <+, line 434 */
2029             z->c = c_keep;
2030             if (ret < 0) return ret;
2031         }
2032         goto lab2;
2033     lab6:
2034         z->c = z->l - m2;
2035         {   int m_test = z->l - z->c; /* test, line 436 */
2036             if (out_grouping_b_U(z, g_vowel, 97, 305, 1) < 0) goto lab9; /* goto */ /* grouping vowel, line 436 */
2037             {   int m5 = z->l - z->c; (void)m5; /* or, line 436 */
2038                 if (!(eq_s_b(z, 1, s_28))) goto lab11;
2039                 goto lab10;
2040             lab11:
2041                 z->c = z->l - m5;
2042                 if (!(eq_s_b(z, 1, s_29))) goto lab9;
2043             }
2044         lab10:
2045             z->c = z->l - m_test;
2046         }
2047         {   int c_keep = z->c;
2048             int ret = insert_s(z, z->c, z->c, 1, s_30); /* <+, line 436 */
2049             z->c = c_keep;
2050             if (ret < 0) return ret;
2051         }
2052         goto lab2;
2053     lab9:
2054         z->c = z->l - m2;
2055         {   int m_test = z->l - z->c; /* test, line 438 */
2056             if (out_grouping_b_U(z, g_vowel, 97, 305, 1) < 0) return 0; /* goto */ /* grouping vowel, line 438 */
2057             {   int m6 = z->l - z->c; (void)m6; /* or, line 438 */
2058                 if (!(eq_s_b(z, 2, s_31))) goto lab13;
2059                 goto lab12;
2060             lab13:
2061                 z->c = z->l - m6;
2062                 if (!(eq_s_b(z, 2, s_32))) return 0;
2063             }
2064         lab12:
2065             z->c = z->l - m_test;
2066         }
2067         {   int c_keep = z->c;
2068             int ret = insert_s(z, z->c, z->c, 2, s_33); /* <+, line 438 */
2069             z->c = c_keep;
2070             if (ret < 0) return ret;
2071         }
2072     }
2073 lab2:
2074     return 1;
2075 }
2076
2077 static int r_more_than_one_syllable_word(struct SN_env * z) {
2078     {   int c_test = z->c; /* test, line 446 */
2079         {   int i = 2;
2080             while(1) { /* atleast, line 446 */
2081                 int c1 = z->c;
2082                 {    /* gopast */ /* grouping vowel, line 446 */
2083                     int ret = out_grouping_U(z, g_vowel, 97, 305, 1);
2084                     if (ret < 0) goto lab0;
2085                     z->c += ret;
2086                 }
2087                 i--;
2088                 continue;
2089             lab0:
2090                 z->c = c1;
2091                 break;
2092             }
2093             if (i > 0) return 0;
2094         }
2095         z->c = c_test;
2096     }
2097     return 1;
2098 }
2099
2100 static int r_is_reserved_word(struct SN_env * z) {
2101     {   int c1 = z->c; /* or, line 451 */
2102         {   int c_test = z->c; /* test, line 450 */
2103             while(1) { /* gopast, line 450 */
2104                 if (!(eq_s(z, 2, s_34))) goto lab2;
2105                 break;
2106             lab2:
2107                 {   int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
2108                     if (ret < 0) goto lab1;
2109                     z->c = ret; /* gopast, line 450 */
2110                 }
2111             }
2112             z->I[0] = 2;
2113             if (!(z->I[0] == z->l)) goto lab1;
2114             z->c = c_test;
2115         }
2116         goto lab0;
2117     lab1:
2118         z->c = c1;
2119         {   int c_test = z->c; /* test, line 452 */
2120             while(1) { /* gopast, line 452 */
2121                 if (!(eq_s(z, 5, s_35))) goto lab3;
2122                 break;
2123             lab3:
2124                 {   int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
2125                     if (ret < 0) return 0;
2126                     z->c = ret; /* gopast, line 452 */
2127                 }
2128             }
2129             z->I[0] = 5;
2130             if (!(z->I[0] == z->l)) return 0;
2131             z->c = c_test;
2132         }
2133     }
2134 lab0:
2135     return 1;
2136 }
2137
2138 static int r_postlude(struct SN_env * z) {
2139     {   int c1 = z->c; /* not, line 456 */
2140         {   int ret = r_is_reserved_word(z);
2141             if (ret == 0) goto lab0; /* call is_reserved_word, line 456 */
2142             if (ret < 0) return ret;
2143         }
2144         return 0;
2145     lab0:
2146         z->c = c1;
2147     }
2148     z->lb = z->c; z->c = z->l; /* backwards, line 457 */
2149
2150     {   int m2 = z->l - z->c; (void)m2; /* do, line 458 */
2151         {   int ret = r_append_U_to_stems_ending_with_d_or_g(z);
2152             if (ret == 0) goto lab1; /* call append_U_to_stems_ending_with_d_or_g, line 458 */
2153             if (ret < 0) return ret;
2154         }
2155     lab1:
2156         z->c = z->l - m2;
2157     }
2158     {   int m3 = z->l - z->c; (void)m3; /* do, line 459 */
2159         {   int ret = r_post_process_last_consonants(z);
2160             if (ret == 0) goto lab2; /* call post_process_last_consonants, line 459 */
2161             if (ret < 0) return ret;
2162         }
2163     lab2:
2164         z->c = z->l - m3;
2165     }
2166     z->c = z->lb;
2167     return 1;
2168 }
2169
2170 extern int turkish_UTF_8_stem(struct SN_env * z) {
2171     {   int ret = r_more_than_one_syllable_word(z);
2172         if (ret == 0) return 0; /* call more_than_one_syllable_word, line 465 */
2173         if (ret < 0) return ret;
2174     }
2175     z->lb = z->c; z->c = z->l; /* backwards, line 467 */
2176
2177     {   int m1 = z->l - z->c; (void)m1; /* do, line 468 */
2178         {   int ret = r_stem_nominal_verb_suffixes(z);
2179             if (ret == 0) goto lab0; /* call stem_nominal_verb_suffixes, line 468 */
2180             if (ret < 0) return ret;
2181         }
2182     lab0:
2183         z->c = z->l - m1;
2184     }
2185     if (!(z->B[0])) return 0; /* Boolean test continue_stemming_noun_suffixes, line 469 */
2186     {   int m2 = z->l - z->c; (void)m2; /* do, line 470 */
2187         {   int ret = r_stem_noun_suffixes(z);
2188             if (ret == 0) goto lab1; /* call stem_noun_suffixes, line 470 */
2189             if (ret < 0) return ret;
2190         }
2191     lab1:
2192         z->c = z->l - m2;
2193     }
2194     z->c = z->lb;
2195     {   int ret = r_postlude(z);
2196         if (ret == 0) return 0; /* call postlude, line 473 */
2197         if (ret < 0) return ret;
2198     }
2199     return 1;
2200 }
2201
2202 extern struct SN_env * turkish_UTF_8_create_env(void) { return SN_create_env(0, 1, 1); }
2203
2204 extern void turkish_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }
2205