/* This file was generated automatically by the Snowball to ISO C++ compiler */
/* http://snowballstem.org/ */

#include <config.h>
#include <limits.h>
#include "tamil.h"

static const symbol s_pool[] = {
#define s_0_0 0
0xE0, 0xAE, 0x95,
#define s_0_1 3
0xE0, 0xAE, 0x99,
#define s_0_2 6
0xE0, 0xAE, 0x9A,
#define s_0_3 9
0xE0, 0xAE, 0x9E,
#define s_0_4 12
0xE0, 0xAE, 0xA4,
#define s_0_5 15
0xE0, 0xAE, 0xA8,
#define s_0_6 18
0xE0, 0xAE, 0xAA,
#define s_0_7 21
0xE0, 0xAE, 0xAE,
#define s_0_8 24
0xE0, 0xAE, 0xAF,
#define s_0_9 27
0xE0, 0xAE, 0xB5,
#define s_1_0 30
0xE0, 0xAE, 0xA8, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0xA4, 0xE0, 0xAF, 0x8D,
#define s_1_1 s_1_0
#define s_1_2 s_1_0
#define s_2_0 42
0xE0, 0xAF, 0x80,
#define s_2_1 45
0xE0, 0xAF, 0x88,
#define s_2_2 48
0xE0, 0xAE, 0xBF,
#define s_3_0 51
0xE0, 0xAE, 0x95,
#define s_3_1 54
0xE0, 0xAE, 0x9A,
#define s_3_2 57
0xE0, 0xAE, 0x9F,
#define s_3_3 60
0xE0, 0xAE, 0xA4,
#define s_3_4 63
0xE0, 0xAE, 0xAA,
#define s_3_5 66
0xE0, 0xAE, 0xB1,
#define s_4_0 69
0xE0, 0xAE, 0x95,
#define s_4_1 72
0xE0, 0xAE, 0x9A,
#define s_4_2 75
0xE0, 0xAE, 0x9F,
#define s_4_3 78
0xE0, 0xAE, 0xA4,
#define s_4_4 81
0xE0, 0xAE, 0xAA,
#define s_4_5 84
0xE0, 0xAE, 0xB1,
#define s_5_0 87
0xE0, 0xAE, 0x95,
#define s_5_1 90
0xE0, 0xAE, 0x9A,
#define s_5_2 93
0xE0, 0xAE, 0x9F,
#define s_5_3 96
0xE0, 0xAE, 0xA4,
#define s_5_4 99
0xE0, 0xAE, 0xAA,
#define s_5_5 102
0xE0, 0xAE, 0xB1,
#define s_6_0 105
0xE0, 0xAE, 0xAF,
#define s_6_1 108
0xE0, 0xAE, 0xB0,
#define s_6_2 111
0xE0, 0xAE, 0xB2,
#define s_6_3 114
0xE0, 0xAE, 0xB3,
#define s_6_4 117
0xE0, 0xAE, 0xB4,
#define s_6_5 120
0xE0, 0xAE, 0xB5,
#define s_7_0 123
0xE0, 0xAE, 0x99,
#define s_7_1 126
0xE0, 0xAE, 0x9E,
#define s_7_2 129
0xE0, 0xAE, 0xA3,
#define s_7_3 132
0xE0, 0xAE, 0xA8,
#define s_7_4 135
0xE0, 0xAE, 0xA9,
#define s_7_5 138
0xE0, 0xAE, 0xAE,
#define s_8_0 141
0xE0, 0xAE, 0xB5, 0xE0, 0xAF, 0x8D,
#define s_8_1 147
0xE0, 0xAE, 0xAF,
#define s_8_2 s_8_0
#define s_9_0 150
0xE0, 0xAF, 0x80,
#define s_9_1 153
0xE0, 0xAF, 0x81,
#define s_9_2 156
0xE0, 0xAF, 0x82,
#define s_9_3 159
0xE0, 0xAF, 0x86,
#define s_9_4 162
0xE0, 0xAF, 0x87,
#define s_9_5 165
0xE0, 0xAF, 0x88,
#define s_9_6 168
0xE0, 0xAE, 0xBE,
#define s_9_7 171
0xE0, 0xAE, 0xBF,
#define s_10_0 174
0xE0, 0xAF, 0x80,
#define s_10_1 177
0xE0, 0xAF, 0x81,
#define s_10_2 180
0xE0, 0xAF, 0x82,
#define s_10_3 183
0xE0, 0xAF, 0x86,
#define s_10_4 186
0xE0, 0xAF, 0x87,
#define s_10_5 189
0xE0, 0xAF, 0x88,
#define s_10_6 192
0xE0, 0xAE, 0xBE,
#define s_10_7 195
0xE0, 0xAE, 0xBF,
#define s_11_0 198
0xE0, 0xAE, 0x85,
#define s_11_1 201
0xE0, 0xAE, 0x87,
#define s_11_2 204
0xE0, 0xAE, 0x89,
#define s_12_0 207
0xE0, 0xAE, 0x95,
#define s_12_1 210
0xE0, 0xAE, 0x99,
#define s_12_2 213
0xE0, 0xAE, 0x9A,
#define s_12_3 216
0xE0, 0xAE, 0x9E,
#define s_12_4 219
0xE0, 0xAE, 0xA4,
#define s_12_5 222
0xE0, 0xAE, 0xA8,
#define s_12_6 225
0xE0, 0xAE, 0xAA,
#define s_12_7 228
0xE0, 0xAE, 0xAE,
#define s_12_8 231
0xE0, 0xAE, 0xAF,
#define s_12_9 234
0xE0, 0xAE, 0xB5,
#define s_13_0 237
0xE0, 0xAE, 0x95,
#define s_13_1 240
0xE0, 0xAE, 0x9A,
#define s_13_2 243
0xE0, 0xAE, 0x9F,
#define s_13_3 246
0xE0, 0xAE, 0xA4,
#define s_13_4 249
0xE0, 0xAE, 0xAA,
#define s_13_5 252
0xE0, 0xAE, 0xB1,
#define s_14_0 255
0xE0, 0xAF, 0x87,
#define s_14_1 258
0xE0, 0xAF, 0x8B,
#define s_14_2 261
0xE0, 0xAE, 0xBE,
#define s_15_0 264
0xE0, 0xAE, 0xAA, 0xE0, 0xAE, 0xBF,
#define s_15_1 270
0xE0, 0xAE, 0xB5, 0xE0, 0xAE, 0xBF,
#define s_16_0 276
0xE0, 0xAF, 0x80,
#define s_16_1 279
0xE0, 0xAF, 0x81,
#define s_16_2 282
0xE0, 0xAF, 0x82,
#define s_16_3 285
0xE0, 0xAF, 0x86,
#define s_16_4 288
0xE0, 0xAF, 0x87,
#define s_16_5 291
0xE0, 0xAF, 0x88,
#define s_16_6 294
0xE0, 0xAE, 0xBE,
#define s_16_7 297
0xE0, 0xAE, 0xBF,
#define s_17_0 300
0xE0, 0xAE, 0xAA, 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x81,
#define s_17_1 315
0xE0, 0xAE, 0xB5, 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x81,
#define s_17_2 333
0xE0, 0xAE, 0xAA, 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x81,
#define s_17_3 342
0xE0, 0xAE, 0xB5, 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x81,
#define s_17_4 354
0xE0, 0xAE, 0xAA, 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0x9F, 0xE0, 0xAE, 0xA4, 0xE0, 0xAF, 0x81,
#define s_17_5 372
0xE0, 0xAF, 0x86, 0xE0, 0xAE, 0xB2, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0xB2, 0xE0, 0xAE, 0xBE, 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x8D,
#define s_17_6 s_17_0
#define s_17_7 393
0xE0, 0xAE, 0xAA, 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0x9F, 0xE0, 0xAE, 0xA3,
#define s_17_8 (s_17_9 + 9)
#define s_17_9 408
0xE0, 0xAE, 0xAA, 0xE0, 0xAE, 0x9F, 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0xA4, 0xE0, 0xAE, 0xBE, 0xE0, 0xAE, 0xA9,
#define s_17_10 426
0xE0, 0xAE, 0x95, 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0xB0, 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0xAF,
#define s_17_11 s_17_9
#define s_17_12 441
0xE0, 0xAE, 0xAA, 0xE0, 0xAE, 0xB1, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0xB1, 0xE0, 0xAE, 0xBF,
#define s_18_0 456
0xE0, 0xAE, 0x95,
#define s_18_1 459
0xE0, 0xAE, 0x9A,
#define s_18_2 462
0xE0, 0xAE, 0x9F,
#define s_18_3 465
0xE0, 0xAE, 0xA4,
#define s_18_4 468
0xE0, 0xAE, 0xAA,
#define s_18_5 471
0xE0, 0xAE, 0xB1,
#define s_19_0 474
0xE0, 0xAE, 0x95,
#define s_19_1 477
0xE0, 0xAE, 0x9A,
#define s_19_2 480
0xE0, 0xAE, 0x9F,
#define s_19_3 483
0xE0, 0xAE, 0xA4,
#define s_19_4 486
0xE0, 0xAE, 0xAA,
#define s_19_5 489
0xE0, 0xAE, 0xB1,
#define s_20_0 492
0xE0, 0xAF, 0x80,
#define s_20_1 495
0xE0, 0xAF, 0x81,
#define s_20_2 498
0xE0, 0xAF, 0x82,
#define s_20_3 501
0xE0, 0xAF, 0x86,
#define s_20_4 504
0xE0, 0xAF, 0x87,
#define s_20_5 507
0xE0, 0xAF, 0x88,
#define s_20_6 510
0xE0, 0xAE, 0xBE,
#define s_20_7 513
0xE0, 0xAE, 0xBF,
#define s_21_0 516
0xE0, 0xAF, 0x80,
#define s_21_1 519
0xE0, 0xAF, 0x81,
#define s_21_2 522
0xE0, 0xAF, 0x82,
#define s_21_3 525
0xE0, 0xAF, 0x86,
#define s_21_4 528
0xE0, 0xAF, 0x87,
#define s_21_5 531
0xE0, 0xAF, 0x88,
#define s_21_6 534
0xE0, 0xAE, 0xBE,
#define s_21_7 537
0xE0, 0xAE, 0xBF,
#define s_22_0 540
0xE0, 0xAE, 0xAA, 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x81,
#define s_22_1 549
0xE0, 0xAE, 0x95, 0xE0, 0xAF, 0x8A, 0xE0, 0xAE, 0xA3, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0x9F, 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0xB0, 0xE0, 0xAF, 0x8D,
#define s_23_0 573
0xE0, 0xAE, 0x85,
#define s_23_1 576
0xE0, 0xAE, 0x86,
#define s_23_2 579
0xE0, 0xAE, 0x87,
#define s_23_3 582
0xE0, 0xAE, 0x88,
#define s_23_4 585
0xE0, 0xAE, 0x89,
#define s_23_5 588
0xE0, 0xAE, 0x8A,
#define s_23_6 591
0xE0, 0xAE, 0x8E,
#define s_23_7 594
0xE0, 0xAE, 0x8F,
#define s_23_8 597
0xE0, 0xAE, 0x90,
#define s_23_9 600
0xE0, 0xAE, 0x92,
#define s_23_10 603
0xE0, 0xAE, 0x93,
#define s_23_11 606
0xE0, 0xAE, 0x94,
#define s_24_0 609
0xE0, 0xAF, 0x80,
#define s_24_1 612
0xE0, 0xAF, 0x81,
#define s_24_2 615
0xE0, 0xAF, 0x82,
#define s_24_3 618
0xE0, 0xAF, 0x86,
#define s_24_4 621
0xE0, 0xAF, 0x87,
#define s_24_5 624
0xE0, 0xAF, 0x88,
#define s_24_6 627
0xE0, 0xAE, 0xBE,
#define s_24_7 630
0xE0, 0xAE, 0xBF,
#define s_25_0 633
0xE0, 0xAE, 0x95, 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0xB1, 0xE0, 0xAF, 0x8D,
#define s_25_1 651
0xE0, 0xAE, 0xBE, 0xE0, 0xAE, 0xA8, 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0xB1, 0xE0, 0xAF, 0x8D,
#define s_25_2 672
0xE0, 0xAE, 0x95, 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0xB1, 0xE0, 0xAF, 0x8D,
#define s_25_3 s_25_0
#define s_25_4 s_25_1
#define s_25_5 s_25_2
};


static const struct among a_0[10] =
{
/*  0 */ { 3, s_0_0, -1, -1},
/*  1 */ { 3, s_0_1, -1, -1},
/*  2 */ { 3, s_0_2, -1, -1},
/*  3 */ { 3, s_0_3, -1, -1},
/*  4 */ { 3, s_0_4, -1, -1},
/*  5 */ { 3, s_0_5, -1, -1},
/*  6 */ { 3, s_0_6, -1, -1},
/*  7 */ { 3, s_0_7, -1, -1},
/*  8 */ { 3, s_0_8, -1, -1},
/*  9 */ { 3, s_0_9, -1, -1}
};


static const struct among a_1[3] =
{
/*  0 */ { 12, s_1_0, -1, -1},
/*  1 */ { 6, s_1_1, -1, -1},
/*  2 */ { 9, s_1_2, -1, -1}
};


static const struct among a_2[3] =
{
/*  0 */ { 3, s_2_0, -1, -1},
/*  1 */ { 3, s_2_1, -1, -1},
/*  2 */ { 3, s_2_2, -1, -1}
};


static const struct among a_3[6] =
{
/*  0 */ { 3, s_3_0, -1, -1},
/*  1 */ { 3, s_3_1, -1, -1},
/*  2 */ { 3, s_3_2, -1, -1},
/*  3 */ { 3, s_3_3, -1, -1},
/*  4 */ { 3, s_3_4, -1, -1},
/*  5 */ { 3, s_3_5, -1, -1}
};


static const struct among a_4[6] =
{
/*  0 */ { 3, s_4_0, -1, -1},
/*  1 */ { 3, s_4_1, -1, -1},
/*  2 */ { 3, s_4_2, -1, -1},
/*  3 */ { 3, s_4_3, -1, -1},
/*  4 */ { 3, s_4_4, -1, -1},
/*  5 */ { 3, s_4_5, -1, -1}
};


static const struct among a_5[6] =
{
/*  0 */ { 3, s_5_0, -1, -1},
/*  1 */ { 3, s_5_1, -1, -1},
/*  2 */ { 3, s_5_2, -1, -1},
/*  3 */ { 3, s_5_3, -1, -1},
/*  4 */ { 3, s_5_4, -1, -1},
/*  5 */ { 3, s_5_5, -1, -1}
};


static const struct among a_6[6] =
{
/*  0 */ { 3, s_6_0, -1, -1},
/*  1 */ { 3, s_6_1, -1, -1},
/*  2 */ { 3, s_6_2, -1, -1},
/*  3 */ { 3, s_6_3, -1, -1},
/*  4 */ { 3, s_6_4, -1, -1},
/*  5 */ { 3, s_6_5, -1, -1}
};


static const struct among a_7[6] =
{
/*  0 */ { 3, s_7_0, -1, -1},
/*  1 */ { 3, s_7_1, -1, -1},
/*  2 */ { 3, s_7_2, -1, -1},
/*  3 */ { 3, s_7_3, -1, -1},
/*  4 */ { 3, s_7_4, -1, -1},
/*  5 */ { 3, s_7_5, -1, -1}
};


static const struct among a_8[3] =
{
/*  0 */ { 6, s_8_0, -1, -1},
/*  1 */ { 3, s_8_1, -1, -1},
/*  2 */ { 3, s_8_2, -1, -1}
};


static const struct among a_9[8] =
{
/*  0 */ { 3, s_9_0, -1, -1},
/*  1 */ { 3, s_9_1, -1, -1},
/*  2 */ { 3, s_9_2, -1, -1},
/*  3 */ { 3, s_9_3, -1, -1},
/*  4 */ { 3, s_9_4, -1, -1},
/*  5 */ { 3, s_9_5, -1, -1},
/*  6 */ { 3, s_9_6, -1, -1},
/*  7 */ { 3, s_9_7, -1, -1}
};


static const struct among a_10[8] =
{
/*  0 */ { 3, s_10_0, -1, -1},
/*  1 */ { 3, s_10_1, -1, -1},
/*  2 */ { 3, s_10_2, -1, -1},
/*  3 */ { 3, s_10_3, -1, -1},
/*  4 */ { 3, s_10_4, -1, -1},
/*  5 */ { 3, s_10_5, -1, -1},
/*  6 */ { 3, s_10_6, -1, -1},
/*  7 */ { 3, s_10_7, -1, -1}
};


static const struct among a_11[3] =
{
/*  0 */ { 3, s_11_0, -1, -1},
/*  1 */ { 3, s_11_1, -1, -1},
/*  2 */ { 3, s_11_2, -1, -1}
};


static const struct among a_12[10] =
{
/*  0 */ { 3, s_12_0, -1, -1},
/*  1 */ { 3, s_12_1, -1, -1},
/*  2 */ { 3, s_12_2, -1, -1},
/*  3 */ { 3, s_12_3, -1, -1},
/*  4 */ { 3, s_12_4, -1, -1},
/*  5 */ { 3, s_12_5, -1, -1},
/*  6 */ { 3, s_12_6, -1, -1},
/*  7 */ { 3, s_12_7, -1, -1},
/*  8 */ { 3, s_12_8, -1, -1},
/*  9 */ { 3, s_12_9, -1, -1}
};


static const struct among a_13[6] =
{
/*  0 */ { 3, s_13_0, -1, -1},
/*  1 */ { 3, s_13_1, -1, -1},
/*  2 */ { 3, s_13_2, -1, -1},
/*  3 */ { 3, s_13_3, -1, -1},
/*  4 */ { 3, s_13_4, -1, -1},
/*  5 */ { 3, s_13_5, -1, -1}
};


static const struct among a_14[3] =
{
/*  0 */ { 3, s_14_0, -1, -1},
/*  1 */ { 3, s_14_1, -1, -1},
/*  2 */ { 3, s_14_2, -1, -1}
};


static const struct among a_15[2] =
{
/*  0 */ { 6, s_15_0, -1, -1},
/*  1 */ { 6, s_15_1, -1, -1}
};


static const struct among a_16[8] =
{
/*  0 */ { 3, s_16_0, -1, -1},
/*  1 */ { 3, s_16_1, -1, -1},
/*  2 */ { 3, s_16_2, -1, -1},
/*  3 */ { 3, s_16_3, -1, -1},
/*  4 */ { 3, s_16_4, -1, -1},
/*  5 */ { 3, s_16_5, -1, -1},
/*  6 */ { 3, s_16_6, -1, -1},
/*  7 */ { 3, s_16_7, -1, -1}
};


static const struct among a_17[13] =
{
/*  0 */ { 15, s_17_0, -1, -1},
/*  1 */ { 18, s_17_1, -1, -1},
/*  2 */ { 9, s_17_2, -1, -1},
/*  3 */ { 12, s_17_3, -1, -1},
/*  4 */ { 18, s_17_4, -1, -1},
/*  5 */ { 21, s_17_5, -1, -1},
/*  6 */ { 12, s_17_6, -1, -1},
/*  7 */ { 15, s_17_7, -1, -1},
/*  8 */ { 9, s_17_8, -1, -1},
/*  9 */ { 18, s_17_9, 8, -1},
/* 10 */ { 15, s_17_10, -1, -1},
/* 11 */ { 9, s_17_11, -1, -1},
/* 12 */ { 15, s_17_12, -1, -1}
};


static const struct among a_18[6] =
{
/*  0 */ { 3, s_18_0, -1, -1},
/*  1 */ { 3, s_18_1, -1, -1},
/*  2 */ { 3, s_18_2, -1, -1},
/*  3 */ { 3, s_18_3, -1, -1},
/*  4 */ { 3, s_18_4, -1, -1},
/*  5 */ { 3, s_18_5, -1, -1}
};


static const struct among a_19[6] =
{
/*  0 */ { 3, s_19_0, -1, -1},
/*  1 */ { 3, s_19_1, -1, -1},
/*  2 */ { 3, s_19_2, -1, -1},
/*  3 */ { 3, s_19_3, -1, -1},
/*  4 */ { 3, s_19_4, -1, -1},
/*  5 */ { 3, s_19_5, -1, -1}
};


static const struct among a_20[8] =
{
/*  0 */ { 3, s_20_0, -1, -1},
/*  1 */ { 3, s_20_1, -1, -1},
/*  2 */ { 3, s_20_2, -1, -1},
/*  3 */ { 3, s_20_3, -1, -1},
/*  4 */ { 3, s_20_4, -1, -1},
/*  5 */ { 3, s_20_5, -1, -1},
/*  6 */ { 3, s_20_6, -1, -1},
/*  7 */ { 3, s_20_7, -1, -1}
};


static const struct among a_21[8] =
{
/*  0 */ { 3, s_21_0, -1, -1},
/*  1 */ { 3, s_21_1, -1, -1},
/*  2 */ { 3, s_21_2, -1, -1},
/*  3 */ { 3, s_21_3, -1, -1},
/*  4 */ { 3, s_21_4, -1, -1},
/*  5 */ { 3, s_21_5, -1, -1},
/*  6 */ { 3, s_21_6, -1, -1},
/*  7 */ { 3, s_21_7, -1, -1}
};


static const struct among a_22[2] =
{
/*  0 */ { 9, s_22_0, -1, -1},
/*  1 */ { 24, s_22_1, -1, -1}
};


static const struct among a_23[12] =
{
/*  0 */ { 3, s_23_0, -1, -1},
/*  1 */ { 3, s_23_1, -1, -1},
/*  2 */ { 3, s_23_2, -1, -1},
/*  3 */ { 3, s_23_3, -1, -1},
/*  4 */ { 3, s_23_4, -1, -1},
/*  5 */ { 3, s_23_5, -1, -1},
/*  6 */ { 3, s_23_6, -1, -1},
/*  7 */ { 3, s_23_7, -1, -1},
/*  8 */ { 3, s_23_8, -1, -1},
/*  9 */ { 3, s_23_9, -1, -1},
/* 10 */ { 3, s_23_10, -1, -1},
/* 11 */ { 3, s_23_11, -1, -1}
};


static const struct among a_24[8] =
{
/*  0 */ { 3, s_24_0, -1, -1},
/*  1 */ { 3, s_24_1, -1, -1},
/*  2 */ { 3, s_24_2, -1, -1},
/*  3 */ { 3, s_24_3, -1, -1},
/*  4 */ { 3, s_24_4, -1, -1},
/*  5 */ { 3, s_24_5, -1, -1},
/*  6 */ { 3, s_24_6, -1, -1},
/*  7 */ { 3, s_24_7, -1, -1}
};


static const struct among a_25[6] =
{
/*  0 */ { 18, s_25_0, -1, -1},
/*  1 */ { 21, s_25_1, -1, -1},
/*  2 */ { 12, s_25_2, -1, -1},
/*  3 */ { 15, s_25_3, -1, -1},
/*  4 */ { 18, s_25_4, -1, -1},
/*  5 */ { 9, s_25_5, -1, -1}
};

static const symbol s_0[] = { 0xE0, 0xAE, 0xB5, 0xE0, 0xAF, 0x8B };
static const symbol s_1[] = { 0xE0, 0xAE, 0xB5, 0xE0, 0xAF, 0x8B };
static const symbol s_2[] = { 0xE0, 0xAE, 0x93 };
static const symbol s_3[] = { 0xE0, 0xAE, 0xB5, 0xE0, 0xAF, 0x8A };
static const symbol s_4[] = { 0xE0, 0xAE, 0xB5, 0xE0, 0xAF, 0x8A };
static const symbol s_5[] = { 0xE0, 0xAE, 0x92 };
static const symbol s_6[] = { 0xE0, 0xAE, 0xB5, 0xE0, 0xAF, 0x81 };
static const symbol s_7[] = { 0xE0, 0xAE, 0xB5, 0xE0, 0xAF, 0x81 };
static const symbol s_8[] = { 0xE0, 0xAE, 0x89 };
static const symbol s_9[] = { 0xE0, 0xAE, 0xB5, 0xE0, 0xAF, 0x82 };
static const symbol s_10[] = { 0xE0, 0xAE, 0xB5, 0xE0, 0xAF, 0x82 };
static const symbol s_11[] = { 0xE0, 0xAE, 0x8A };
static const symbol s_12[] = { 0xE0, 0xAE, 0x8E };
static const symbol s_13[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_14[] = { 0xE0, 0xAE, 0xAF, 0xE0, 0xAF, 0x8D };
static const symbol s_15[] = { 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0xAA, 0xE0, 0xAF, 0x8D };
static const symbol s_16[] = { 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0x95, 0xE0, 0xAF, 0x8D };
static const symbol s_17[] = { 0xE0, 0xAE, 0xB3, 0xE0, 0xAF, 0x8D };
static const symbol s_18[] = { 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0xB1, 0xE0, 0xAF, 0x8D };
static const symbol s_19[] = { 0xE0, 0xAE, 0xB2, 0xE0, 0xAF, 0x8D };
static const symbol s_20[] = { 0xE0, 0xAE, 0xB1, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0x95, 0xE0, 0xAF, 0x8D };
static const symbol s_21[] = { 0xE0, 0xAE, 0xB2, 0xE0, 0xAF, 0x8D };
static const symbol s_22[] = { 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x8D };
static const symbol s_23[] = { 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x81 };
static const symbol s_24[] = { 0xE0, 0xAE, 0xA4, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0xA4, 0xE0, 0xAF, 0x8D };
static const symbol s_25[] = { 0xE0, 0xAF, 0x88 };
static const symbol s_26[] = { 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x8D };
static const symbol s_27[] = { 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0x95, 0xE0, 0xAF, 0x8D };
static const symbol s_28[] = { 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0x95, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0x95, 0xE0, 0xAF, 0x8D };
static const symbol s_29[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_30[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_31[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_32[] = { 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0x95, 0xE0, 0xAF, 0x8D };
static const symbol s_33[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_34[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_35[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_36[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_37[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_38[] = { 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x81 };
static const symbol s_39[] = { 0xE0, 0xAE, 0x99, 0xE0, 0xAF, 0x8D };
static const symbol s_40[] = { 0xE0, 0xAF, 0x88 };
static const symbol s_41[] = { 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x8D };
static const symbol s_42[] = { 0xE0, 0xAE, 0x99, 0xE0, 0xAF, 0x8D };
static const symbol s_43[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_44[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_45[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_46[] = { 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0x99, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0x95, 0xE0, 0xAE, 0xB3, 0xE0, 0xAF, 0x8D };
static const symbol s_47[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_48[] = { 0xE0, 0xAE, 0xB1, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0x95, 0xE0, 0xAE, 0xB3, 0xE0, 0xAF, 0x8D };
static const symbol s_49[] = { 0xE0, 0xAE, 0xB2, 0xE0, 0xAF, 0x8D };
static const symbol s_50[] = { 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0x95, 0xE0, 0xAE, 0xB3, 0xE0, 0xAF, 0x8D };
static const symbol s_51[] = { 0xE0, 0xAE, 0xB3, 0xE0, 0xAF, 0x8D };
static const symbol s_52[] = { 0xE0, 0xAE, 0x95, 0xE0, 0xAE, 0xB3, 0xE0, 0xAF, 0x8D };
static const symbol s_53[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_54[] = { 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x8D };
static const symbol s_55[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_56[] = { 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0x9F, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x8D };
static const symbol s_57[] = { 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0xB2, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0xB2, 0xE0, 0xAF, 0x88 };
static const symbol s_58[] = { 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0x9F, 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x8D };
static const symbol s_59[] = { 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0xB1, 0xE0, 0xAE, 0xBF };
static const symbol s_60[] = { 0xE0, 0xAE, 0xBE, 0xE0, 0xAE, 0x95, 0xE0, 0xAE, 0xBF };
static const symbol s_61[] = { 0xE0, 0xAE, 0xBE, 0xE0, 0xAE, 0x95, 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0xAF };
static const symbol s_62[] = { 0xE0, 0xAF, 0x86, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0xB1, 0xE0, 0xAF, 0x81 };
static const symbol s_63[] = { 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0xB3, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0xB3 };
static const symbol s_64[] = { 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x88, 0xE0, 0xAE, 0xAF };
static const symbol s_65[] = { 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x88 };
static const symbol s_66[] = { 0xE0, 0xAF, 0x86, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x8D };
static const symbol s_67[] = { 0xE0, 0xAE, 0xB2, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0xB2 };
static const symbol s_68[] = { 0xE0, 0xAF, 0x86, 0xE0, 0xAE, 0xA9 };
static const symbol s_69[] = { 0xE0, 0xAE, 0xBE, 0xE0, 0xAE, 0x95, 0xE0, 0xAE, 0xBF };
static const symbol s_70[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_71[] = { 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x88 };
static const symbol s_72[] = { 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x88 };
static const symbol s_73[] = { 0xE0, 0xAF, 0x88 };
static const symbol s_74[] = { 0xE0, 0xAF, 0x88 };
static const symbol s_75[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_76[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_77[] = { 0xE0, 0xAF, 0x8A, 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x81 };
static const symbol s_78[] = { 0xE0, 0xAF, 0x8B, 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x81 };
static const symbol s_79[] = { 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0xB2, 0xE0, 0xAF, 0x8D };
static const symbol s_80[] = { 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0xB1, 0xE0, 0xAF, 0x8D };
static const symbol s_81[] = { 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x8D };
static const symbol s_82[] = { 0xE0, 0xAE, 0xAE };
static const symbol s_83[] = { 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0xB1, 0xE0, 0xAF, 0x81 };
static const symbol s_84[] = { 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0xB0, 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0xA8, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0xA4, 0xE0, 0xAF, 0x81 };
static const symbol s_85[] = { 0xE0, 0xAE, 0xB5, 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0x9F };
static const symbol s_86[] = { 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0x9F, 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x8D };
static const symbol s_87[] = { 0xE0, 0xAE, 0xBE, 0xE0, 0xAE, 0xB2, 0xE0, 0xAF, 0x8D };
static const symbol s_88[] = { 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x88 };
static const symbol s_89[] = { 0xE0, 0xAE, 0xBE, 0xE0, 0xAE, 0xAE, 0xE0, 0xAE, 0xB2, 0xE0, 0xAF, 0x8D };
static const symbol s_90[] = { 0xE0, 0xAE, 0xB2, 0xE0, 0xAF, 0x8D };
static const symbol s_91[] = { 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0xB3, 0xE0, 0xAF, 0x8D };
static const symbol s_92[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_93[] = { 0xE0, 0xAE, 0x95, 0xE0, 0xAE, 0xA3, 0xE0, 0xAF, 0x8D };
static const symbol s_94[] = { 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x8D };
static const symbol s_95[] = { 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x87, 0xE0, 0xAE, 0xB2, 0xE0, 0xAF, 0x8D };
static const symbol s_96[] = { 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x87, 0xE0, 0xAE, 0xB1, 0xE0, 0xAF, 0x8D };
static const symbol s_97[] = { 0xE0, 0xAE, 0x95, 0xE0, 0xAF, 0x80, 0xE0, 0xAE, 0xB4, 0xE0, 0xAF, 0x8D };
static const symbol s_98[] = { 0xE0, 0xAE, 0xAA, 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x8D };
static const symbol s_99[] = { 0xE0, 0xAE, 0xA4, 0xE0, 0xAF, 0x81 };
static const symbol s_100[] = { 0xE0, 0xAF, 0x80 };
static const symbol s_101[] = { 0xE0, 0xAE, 0xBF };
static const symbol s_102[] = { 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x8D };
static const symbol s_103[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_104[] = { 0xE0, 0xAE, 0xAE, 0xE0, 0xAE, 0xBE, 0xE0, 0xAE, 0xB0, 0xE0, 0xAF, 0x8D };
static const symbol s_105[] = { 0xE0, 0xAE, 0xAE, 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x8D };
static const symbol s_106[] = { 0xE0, 0xAE, 0xA9, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x8D };
static const symbol s_107[] = { 0xE0, 0xAE, 0xA9, 0xE0, 0xAE, 0xBE, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x8D };
static const symbol s_108[] = { 0xE0, 0xAE, 0xA9, 0xE0, 0xAE, 0xBE, 0xE0, 0xAE, 0xB3, 0xE0, 0xAF, 0x8D };
static const symbol s_109[] = { 0xE0, 0xAE, 0xA9, 0xE0, 0xAE, 0xBE, 0xE0, 0xAE, 0xB0, 0xE0, 0xAF, 0x8D };
static const symbol s_110[] = { 0xE0, 0xAE, 0xB5, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x8D };
static const symbol s_111[] = { 0xE0, 0xAE, 0xA9, 0xE0, 0xAE, 0xB3, 0xE0, 0xAF, 0x8D };
static const symbol s_112[] = { 0xE0, 0xAE, 0xB5, 0xE0, 0xAE, 0xB3, 0xE0, 0xAF, 0x8D };
static const symbol s_113[] = { 0xE0, 0xAE, 0xA9, 0xE0, 0xAE, 0xB0, 0xE0, 0xAF, 0x8D };
static const symbol s_114[] = { 0xE0, 0xAE, 0xB5, 0xE0, 0xAE, 0xB0, 0xE0, 0xAF, 0x8D };
static const symbol s_115[] = { 0xE0, 0xAE, 0xA9 };
static const symbol s_116[] = { 0xE0, 0xAE, 0xAA };
static const symbol s_117[] = { 0xE0, 0xAE, 0x95 };
static const symbol s_118[] = { 0xE0, 0xAE, 0xA4 };
static const symbol s_119[] = { 0xE0, 0xAE, 0xAF };
static const symbol s_120[] = { 0xE0, 0xAE, 0xAA, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x8D };
static const symbol s_121[] = { 0xE0, 0xAE, 0xAA, 0xE0, 0xAE, 0xB3, 0xE0, 0xAF, 0x8D };
static const symbol s_122[] = { 0xE0, 0xAE, 0xAA, 0xE0, 0xAE, 0xB0, 0xE0, 0xAF, 0x8D };
static const symbol s_123[] = { 0xE0, 0xAE, 0xA4, 0xE0, 0xAF, 0x81 };
static const symbol s_124[] = { 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0xB1, 0xE0, 0xAF, 0x8D, 0xE0, 0xAE, 0xB1, 0xE0, 0xAF, 0x81 };
static const symbol s_125[] = { 0xE0, 0xAE, 0xAA, 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x8D };
static const symbol s_126[] = { 0xE0, 0xAE, 0xA9, 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x8D };
static const symbol s_127[] = { 0xE0, 0xAE, 0xA4, 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x8D };
static const symbol s_128[] = { 0xE0, 0xAE, 0xB1, 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x8D };
static const symbol s_129[] = { 0xE0, 0xAE, 0x95, 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x8D };
static const symbol s_130[] = { 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x86, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x8D };
static const symbol s_131[] = { 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x88 };
static const symbol s_132[] = { 0xE0, 0xAE, 0xB5, 0xE0, 0xAF, 0x88 };
static const symbol s_133[] = { 0xE0, 0xAE, 0xBE, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x8D };
static const symbol s_134[] = { 0xE0, 0xAE, 0x9A };
static const symbol s_135[] = { 0xE0, 0xAE, 0xBE, 0xE0, 0xAE, 0xB3, 0xE0, 0xAF, 0x8D };
static const symbol s_136[] = { 0xE0, 0xAE, 0xBE, 0xE0, 0xAE, 0xB0, 0xE0, 0xAF, 0x8D };
static const symbol s_137[] = { 0xE0, 0xAF, 0x87, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x8D };
static const symbol s_138[] = { 0xE0, 0xAE, 0xBE };
static const symbol s_139[] = { 0xE0, 0xAE, 0xBE, 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x8D };
static const symbol s_140[] = { 0xE0, 0xAF, 0x86, 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x8D };
static const symbol s_141[] = { 0xE0, 0xAF, 0x87, 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x8D };
static const symbol s_142[] = { 0xE0, 0xAF, 0x8B, 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x8D };
static const symbol s_143[] = { 0xE0, 0xAE, 0x95, 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x8D };
static const symbol s_144[] = { 0xE0, 0xAE, 0xA4, 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x8D };
static const symbol s_145[] = { 0xE0, 0xAE, 0x9F, 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x8D };
static const symbol s_146[] = { 0xE0, 0xAE, 0xB1, 0xE0, 0xAF, 0x81, 0xE0, 0xAE, 0xAE, 0xE0, 0xAF, 0x8D };
static const symbol s_147[] = { 0xE0, 0xAE, 0xBE, 0xE0, 0xAE, 0xAF, 0xE0, 0xAF, 0x8D };
static const symbol s_148[] = { 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x86, 0xE0, 0xAE, 0xA9, 0xE0, 0xAF, 0x8D };
static const symbol s_149[] = { 0xE0, 0xAE, 0xA9, 0xE0, 0xAE, 0xBF, 0xE0, 0xAE, 0xB0, 0xE0, 0xAF, 0x8D };
static const symbol s_150[] = { 0xE0, 0xAF, 0x80, 0xE0, 0xAE, 0xB0, 0xE0, 0xAF, 0x8D };
static const symbol s_151[] = { 0xE0, 0xAF, 0x80, 0xE0, 0xAE, 0xAF, 0xE0, 0xAE, 0xB0, 0xE0, 0xAF, 0x8D };
static const symbol s_152[] = { 0xE0, 0xAF, 0x8D };
static const symbol s_153[] = { 0xE0, 0xAE, 0x95, 0xE0, 0xAF, 0x81 };
static const symbol s_154[] = { 0xE0, 0xAE, 0xA4, 0xE0, 0xAF, 0x81 };
static const symbol s_155[] = { 0xE0, 0xAF, 0x8D };

int Xapian::InternalStemTamil::r_has_min_length() { /* forwardmode */
    if (!(len_utf8(p) > 4)) return 0; /* $(<integer expression> > <integer expression>), line 102 */
    return 1;
}

int Xapian::InternalStemTamil::r_fix_va_start() { /* forwardmode */
    {   int c1 = c; /* or, line 106 */
        {   int c2 = c; /* and, line 106 */
            {   int c3 = c; /* try, line 106 */
                if (!(eq_s(6, s_0))) { c = c3; goto lab2; } /* literal, line 106 */
            lab2:
                ;
            }
            c = c2;
            bra = c; /* [, line 106 */
        }
        if (!(eq_s(6, s_1))) goto lab1; /* literal, line 106 */
        ket = c; /* ], line 106 */
        {   int ret = slice_from_s(3, s_2); /* <-, line 106 */
            if (ret < 0) return ret;
        }
        goto lab0;
    lab1:
        c = c1;
        {   int c4 = c; /* and, line 107 */
            {   int c5 = c; /* try, line 107 */
                if (!(eq_s(6, s_3))) { c = c5; goto lab4; } /* literal, line 107 */
            lab4:
                ;
            }
            c = c4;
            bra = c; /* [, line 107 */
        }
        if (!(eq_s(6, s_4))) goto lab3; /* literal, line 107 */
        ket = c; /* ], line 107 */
        {   int ret = slice_from_s(3, s_5); /* <-, line 107 */
            if (ret < 0) return ret;
        }
        goto lab0;
    lab3:
        c = c1;
        {   int c6 = c; /* and, line 108 */
            {   int c7 = c; /* try, line 108 */
                if (!(eq_s(6, s_6))) { c = c7; goto lab6; } /* literal, line 108 */
            lab6:
                ;
            }
            c = c6;
            bra = c; /* [, line 108 */
        }
        if (!(eq_s(6, s_7))) goto lab5; /* literal, line 108 */
        ket = c; /* ], line 108 */
        {   int ret = slice_from_s(3, s_8); /* <-, line 108 */
            if (ret < 0) return ret;
        }
        goto lab0;
    lab5:
        c = c1;
        {   int c8 = c; /* and, line 109 */
            {   int c9 = c; /* try, line 109 */
                if (!(eq_s(6, s_9))) { c = c9; goto lab7; } /* literal, line 109 */
            lab7:
                ;
            }
            c = c8;
            bra = c; /* [, line 109 */
        }
        if (!(eq_s(6, s_10))) return 0; /* literal, line 109 */
        ket = c; /* ], line 109 */
        {   int ret = slice_from_s(3, s_11); /* <-, line 109 */
            if (ret < 0) return ret;
        }
    }
lab0:
    return 1;
}

int Xapian::InternalStemTamil::r_fix_endings() { /* forwardmode */
    {   int c1 = c; /* do, line 113 */
        while(1) { /* repeat, line 113 */
            int c2 = c;
            {   int ret = r_fix_ending(); /* call fix_ending, line 113 */
                if (ret == 0) goto lab1;
                if (ret < 0) return ret;
            }
            continue;
        lab1:
            c = c2;
            break;
        }
        c = c1;
    }
    return 1;
}

int Xapian::InternalStemTamil::r_remove_question_prefixes() { /* forwardmode */
    bra = c; /* [, line 117 */
    if (!(eq_s(3, s_12))) return 0; /* literal, line 117 */
    if (!(find_among(s_pool, a_0, 10, 0, 0))) return 0; /* among, line 117 */
    if (!(eq_s(3, s_13))) return 0; /* literal, line 117 */
    ket = c; /* ], line 117 */
    if (slice_del() == -1) return -1; /* delete, line 117 */
    {   int c1 = c; /* do, line 118 */
        {   int ret = r_fix_va_start(); /* call fix_va_start, line 118 */
            if (ret == 0) goto lab0;
            if (ret < 0) return ret;
        }
    lab0:
        c = c1;
    }
    return 1;
}

int Xapian::InternalStemTamil::r_fix_ending() { /* forwardmode */
    if (!(len_utf8(p) > 3)) return 0; /* $(<integer expression> > <integer expression>), line 123 */
    lb = c; c = l; /* backwards, line 124 */

    {   int m1 = l - c; (void)m1; /* or, line 126 */
        ket = c; /* [, line 125 */
        if (c - 5 <= lb || (p[c - 1] != 141 && p[c - 1] != 164)) goto lab1; /* among, line 125 */
        if (!(find_among_b(s_pool, a_1, 3, 0, 0))) goto lab1;
        bra = c; /* ], line 125 */
        if (slice_del() == -1) return -1; /* delete, line 125 */
        goto lab0;
    lab1:
        c = l - m1;
        ket = c; /* [, line 127 */
        if (!(eq_s_b(6, s_14))) goto lab2; /* literal, line 127 */
        {   int m_test2 = l - c; /* test, line 127 */
            if (!(find_among_b(s_pool, a_2, 3, 0, 0))) goto lab2; /* among, line 127 */
            c = l - m_test2;
        }
        bra = c; /* ], line 127 */
        if (slice_del() == -1) return -1; /* delete, line 127 */
        goto lab0;
    lab2:
        c = l - m1;
        ket = c; /* [, line 129 */
        {   int m3 = l - c; (void)m3; /* or, line 129 */
            if (!(eq_s_b(12, s_15))) goto lab5; /* literal, line 129 */
            goto lab4;
        lab5:
            c = l - m3;
            if (!(eq_s_b(12, s_16))) goto lab3; /* literal, line 129 */
        }
    lab4:
        bra = c; /* ], line 129 */
        {   int ret = slice_from_s(6, s_17); /* <-, line 129 */
            if (ret < 0) return ret;
        }
        goto lab0;
    lab3:
        c = l - m1;
        ket = c; /* [, line 131 */
        if (!(eq_s_b(12, s_18))) goto lab6; /* literal, line 131 */
        bra = c; /* ], line 131 */
        {   int ret = slice_from_s(6, s_19); /* <-, line 131 */
            if (ret < 0) return ret;
        }
        goto lab0;
    lab6:
        c = l - m1;
        ket = c; /* [, line 134 */
        if (!(eq_s_b(12, s_20))) goto lab7; /* literal, line 134 */
        bra = c; /* ], line 134 */
        {   int ret = slice_from_s(6, s_21); /* <-, line 134 */
            if (ret < 0) return ret;
        }
        goto lab0;
    lab7:
        c = l - m1;
        ket = c; /* [, line 136 */
        if (!(eq_s_b(12, s_22))) goto lab8; /* literal, line 136 */
        bra = c; /* ], line 136 */
        {   int ret = slice_from_s(6, s_23); /* <-, line 136 */
            if (ret < 0) return ret;
        }
        goto lab0;
    lab8:
        c = l - m1;
        if (!(B_found_vetrumai_urupu)) goto lab9; /* Boolean test found_vetrumai_urupu, line 138 */
        ket = c; /* [, line 138 */
        if (!(eq_s_b(12, s_24))) goto lab9; /* literal, line 138 */
        {   int m_test4 = l - c; /* test, line 138 */
            {   int m5 = l - c; (void)m5; /* not, line 138 */
                if (!(eq_s_b(3, s_25))) goto lab10; /* literal, line 138 */
                goto lab9;
            lab10:
                c = l - m5;
            }
            c = l - m_test4;
        }
        bra = c; /* ], line 138 */
        {   int ret = slice_from_s(6, s_26); /* <-, line 138 */
            if (ret < 0) return ret;
        }
        bra = c; /* ], line 138 */
        goto lab0;
    lab9:
        c = l - m1;
        ket = c; /* [, line 140 */
        {   int m6 = l - c; (void)m6; /* or, line 140 */
            if (!(eq_s_b(9, s_27))) goto lab13; /* literal, line 140 */
            goto lab12;
        lab13:
            c = l - m6;
            if (!(eq_s_b(15, s_28))) goto lab11; /* literal, line 140 */
        }
    lab12:
        bra = c; /* ], line 140 */
        {   int ret = slice_from_s(3, s_29); /* <-, line 140 */
            if (ret < 0) return ret;
        }
        goto lab0;
    lab11:
        c = l - m1;
        ket = c; /* [, line 142 */
        if (!(eq_s_b(3, s_30))) goto lab14; /* literal, line 142 */
        if (!(find_among_b(s_pool, a_3, 6, 0, 0))) goto lab14; /* among, line 142 */
        if (!(eq_s_b(3, s_31))) goto lab14; /* literal, line 142 */
        if (!(find_among_b(s_pool, a_4, 6, 0, 0))) goto lab14; /* among, line 142 */
        bra = c; /* ], line 142 */
        if (slice_del() == -1) return -1; /* delete, line 142 */
        goto lab0;
    lab14:
        c = l - m1;
        ket = c; /* [, line 144 */
        if (!(eq_s_b(9, s_32))) goto lab15; /* literal, line 144 */
        bra = c; /* ], line 144 */
        {   int ret = slice_from_s(3, s_33); /* <-, line 144 */
            if (ret < 0) return ret;
        }
        goto lab0;
    lab15:
        c = l - m1;
        ket = c; /* [, line 146 */
        if (!(eq_s_b(3, s_34))) goto lab16; /* literal, line 146 */
        if (!(find_among_b(s_pool, a_5, 6, 0, 0))) goto lab16; /* among, line 146 */
        bra = c; /* ], line 146 */
        if (slice_del() == -1) return -1; /* delete, line 146 */
        goto lab0;
    lab16:
        c = l - m1;
        ket = c; /* [, line 148 */
        if (!(eq_s_b(3, s_35))) goto lab17; /* literal, line 148 */
        {   int m7 = l - c; (void)m7; /* or, line 148 */
            if (c - 2 <= lb || p[c - 1] >> 5 != 5 || !((4030464 >> (p[c - 1] & 0x1f)) & 1)) goto lab19; /* among, line 148 */
            if (!(find_among_b(s_pool, a_6, 6, 0, 0))) goto lab19;
            goto lab18;
        lab19:
            c = l - m7;
            if (!(find_among_b(s_pool, a_7, 6, 0, 0))) goto lab17; /* among, line 148 */
        }
    lab18:
        if (!(eq_s_b(3, s_36))) goto lab17; /* literal, line 148 */
        bra = c; /* ], line 148 */
        {   int ret = slice_from_s(3, s_37); /* <-, line 148 */
            if (ret < 0) return ret;
        }
        goto lab0;
    lab17:
        c = l - m1;
        ket = c; /* [, line 150 */
        if (!(find_among_b(s_pool, a_8, 3, 0, 0))) goto lab20; /* among, line 150 */
        bra = c; /* ], line 150 */
        if (slice_del() == -1) return -1; /* delete, line 150 */
        goto lab0;
    lab20:
        c = l - m1;
        ket = c; /* [, line 152 */
        if (!(eq_s_b(6, s_38))) goto lab21; /* literal, line 152 */
        {   int m_test8 = l - c; /* test, line 152 */
            {   int m9 = l - c; (void)m9; /* not, line 152 */
                if (!(find_among_b(s_pool, a_9, 8, 0, 0))) goto lab22; /* among, line 152 */
                goto lab21;
            lab22:
                c = l - m9;
            }
            c = l - m_test8;
        }
        bra = c; /* ], line 152 */
        if (slice_del() == -1) return -1; /* delete, line 152 */
        goto lab0;
    lab21:
        c = l - m1;
        ket = c; /* [, line 154 */
        if (!(eq_s_b(6, s_39))) goto lab23; /* literal, line 154 */
        {   int m_test10 = l - c; /* test, line 154 */
            {   int m11 = l - c; (void)m11; /* not, line 154 */
                if (!(eq_s_b(3, s_40))) goto lab24; /* literal, line 154 */
                goto lab23;
            lab24:
                c = l - m11;
            }
            c = l - m_test10;
        }
        bra = c; /* ], line 154 */
        {   int ret = slice_from_s(6, s_41); /* <-, line 154 */
            if (ret < 0) return ret;
        }
        goto lab0;
    lab23:
        c = l - m1;
        ket = c; /* [, line 156 */
        if (!(eq_s_b(6, s_42))) goto lab25; /* literal, line 156 */
        bra = c; /* ], line 156 */
        if (slice_del() == -1) return -1; /* delete, line 156 */
        goto lab0;
    lab25:
        c = l - m1;
        ket = c; /* [, line 158 */
        if (!(eq_s_b(3, s_43))) return 0; /* literal, line 158 */
        {   int m_test12 = l - c; /* test, line 158 */
            {   int m13 = l - c; (void)m13; /* or, line 158 */
                if (!(find_among_b(s_pool, a_10, 8, 0, 0))) goto lab27; /* among, line 158 */
                goto lab26;
            lab27:
                c = l - m13;
                if (!(eq_s_b(3, s_44))) return 0; /* literal, line 158 */
            }
        lab26:
            c = l - m_test12;
        }
        bra = c; /* ], line 158 */
        if (slice_del() == -1) return -1; /* delete, line 158 */
    }
lab0:
    c = lb;
    return 1;
}

int Xapian::InternalStemTamil::r_remove_pronoun_prefixes() { /* forwardmode */
    B_found_a_match = 0; /* unset found_a_match, line 163 */
    bra = c; /* [, line 164 */
    if (c + 2 >= l || p[c + 2] >> 5 != 4 || !((672 >> (p[c + 2] & 0x1f)) & 1)) return 0; /* among, line 164 */
    if (!(find_among(s_pool, a_11, 3, 0, 0))) return 0;
    if (!(find_among(s_pool, a_12, 10, 0, 0))) return 0; /* among, line 164 */
    if (!(eq_s(3, s_45))) return 0; /* literal, line 164 */
    ket = c; /* ], line 164 */
    if (slice_del() == -1) return -1; /* delete, line 164 */
    B_found_a_match = 1; /* set found_a_match, line 165 */
    {   int c1 = c; /* do, line 166 */
        {   int ret = r_fix_va_start(); /* call fix_va_start, line 166 */
            if (ret == 0) goto lab0;
            if (ret < 0) return ret;
        }
    lab0:
        c = c1;
    }
    return 1;
}

int Xapian::InternalStemTamil::r_remove_plural_suffix() { /* forwardmode */
    B_found_a_match = 0; /* unset found_a_match, line 170 */
    lb = c; c = l; /* backwards, line 171 */

    {   int m1 = l - c; (void)m1; /* or, line 172 */
        ket = c; /* [, line 172 */
        if (!(eq_s_b(18, s_46))) goto lab1; /* literal, line 172 */
        {   int m_test2 = l - c; /* test, line 172 */
            {   int m3 = l - c; (void)m3; /* not, line 172 */
                if (!(find_among_b(s_pool, a_13, 6, 0, 0))) goto lab2; /* among, line 172 */
                goto lab1;
            lab2:
                c = l - m3;
            }
            c = l - m_test2;
        }
        bra = c; /* ], line 172 */
        {   int ret = slice_from_s(3, s_47); /* <-, line 172 */
            if (ret < 0) return ret;
        }
        goto lab0;
    lab1:
        c = l - m1;
        ket = c; /* [, line 173 */
        if (!(eq_s_b(15, s_48))) goto lab3; /* literal, line 173 */
        bra = c; /* ], line 173 */
        {   int ret = slice_from_s(6, s_49); /* <-, line 173 */
            if (ret < 0) return ret;
        }
        goto lab0;
    lab3:
        c = l - m1;
        ket = c; /* [, line 174 */
        if (!(eq_s_b(15, s_50))) goto lab4; /* literal, line 174 */
        bra = c; /* ], line 174 */
        {   int ret = slice_from_s(6, s_51); /* <-, line 174 */
            if (ret < 0) return ret;
        }
        goto lab0;
    lab4:
        c = l - m1;
        ket = c; /* [, line 175 */
        if (!(eq_s_b(9, s_52))) return 0; /* literal, line 175 */
        bra = c; /* ], line 175 */
        if (slice_del() == -1) return -1; /* delete, line 175 */
    }
lab0:
    B_found_a_match = 1; /* set found_a_match, line 176 */
    c = lb;
    return 1;
}

int Xapian::InternalStemTamil::r_remove_question_suffixes() { /* forwardmode */
    {   int ret = r_has_min_length(); /* call has_min_length, line 181 */
        if (ret <= 0) return ret;
    }
    B_found_a_match = 0; /* unset found_a_match, line 182 */
    lb = c; c = l; /* backwards, line 183 */

    {   int m1 = l - c; (void)m1; /* do, line 184 */
        ket = c; /* [, line 185 */
        if (!(find_among_b(s_pool, a_14, 3, 0, 0))) goto lab0; /* among, line 185 */
        bra = c; /* ], line 185 */
        {   int ret = slice_from_s(3, s_53); /* <-, line 185 */
            if (ret < 0) return ret;
        }
        B_found_a_match = 1; /* set found_a_match, line 186 */
    lab0:
        c = l - m1;
    }
    c = lb;
    /* do, line 189 */
    {   int ret = r_fix_endings(); /* call fix_endings, line 189 */
        if (ret == 0) goto lab1;
        if (ret < 0) return ret;
    }
lab1:
    return 1;
}

int Xapian::InternalStemTamil::r_remove_command_suffixes() { /* forwardmode */
    {   int ret = r_has_min_length(); /* call has_min_length, line 193 */
        if (ret <= 0) return ret;
    }
    B_found_a_match = 0; /* unset found_a_match, line 194 */
    lb = c; c = l; /* backwards, line 195 */

    ket = c; /* [, line 196 */
    if (c - 5 <= lb || p[c - 1] != 191) return 0; /* among, line 196 */
    if (!(find_among_b(s_pool, a_15, 2, 0, 0))) return 0;
    bra = c; /* ], line 196 */
    if (slice_del() == -1) return -1; /* delete, line 196 */
    B_found_a_match = 1; /* set found_a_match, line 197 */
    c = lb;
    return 1;
}

int Xapian::InternalStemTamil::r_remove_um() { /* forwardmode */
    B_found_a_match = 0; /* unset found_a_match, line 202 */
    {   int ret = r_has_min_length(); /* call has_min_length, line 203 */
        if (ret <= 0) return ret;
    }
    lb = c; c = l; /* backwards, line 204 */

    ket = c; /* [, line 204 */
    if (!(eq_s_b(9, s_54))) return 0; /* literal, line 204 */
    bra = c; /* ], line 204 */
    {   int ret = slice_from_s(3, s_55); /* <-, line 204 */
        if (ret < 0) return ret;
    }
    B_found_a_match = 1; /* set found_a_match, line 205 */
    c = lb;
    {   int c1 = c; /* do, line 207 */
        {   int ret = r_fix_ending(); /* call fix_ending, line 207 */
            if (ret == 0) goto lab0;
            if (ret < 0) return ret;
        }
    lab0:
        c = c1;
    }
    return 1;
}

int Xapian::InternalStemTamil::r_remove_common_word_endings() { /* forwardmode */
    B_found_a_match = 0; /* unset found_a_match, line 214 */
    {   int ret = r_has_min_length(); /* call has_min_length, line 215 */
        if (ret <= 0) return ret;
    }
    lb = c; c = l; /* backwards, line 216 */

    {   int m1 = l - c; (void)m1; /* or, line 233 */
        {   int m_test2 = l - c; /* test, line 217 */
            ket = c; /* [, line 217 */
            {   int m3 = l - c; (void)m3; /* or, line 217 */
                if (!(eq_s_b(12, s_56))) goto lab3; /* literal, line 217 */
                goto lab2;
            lab3:
                c = l - m3;
                if (!(eq_s_b(15, s_57))) goto lab4; /* literal, line 218 */
                goto lab2;
            lab4:
                c = l - m3;
                if (!(eq_s_b(12, s_58))) goto lab5; /* literal, line 219 */
                goto lab2;
            lab5:
                c = l - m3;
                if (!(eq_s_b(15, s_59))) goto lab6; /* literal, line 220 */
                goto lab2;
            lab6:
                c = l - m3;
                if (!(eq_s_b(9, s_60))) goto lab7; /* literal, line 221 */
                goto lab2;
            lab7:
                c = l - m3;
                if (!(eq_s_b(12, s_61))) goto lab8; /* literal, line 222 */
                goto lab2;
            lab8:
                c = l - m3;
                if (!(eq_s_b(15, s_62))) goto lab9; /* literal, line 223 */
                goto lab2;
            lab9:
                c = l - m3;
                if (!(eq_s_b(12, s_63))) goto lab10; /* literal, line 224 */
                goto lab2;
            lab10:
                c = l - m3;
                if (!(eq_s_b(12, s_64))) goto lab11; /* literal, line 225 */
                goto lab2;
            lab11:
                c = l - m3;
                if (!(eq_s_b(9, s_65))) goto lab12; /* literal, line 226 */
                goto lab2;
            lab12:
                c = l - m3;
                if (!(eq_s_b(15, s_66))) goto lab13; /* literal, line 227 */
                goto lab2;
            lab13:
                c = l - m3;
                if (!(eq_s_b(9, s_67))) goto lab14; /* literal, line 228 */
                {   int m_test4 = l - c; /* test, line 228 */
                    {   int m5 = l - c; (void)m5; /* not, line 228 */
                        if (!(find_among_b(s_pool, a_16, 8, 0, 0))) goto lab15; /* among, line 228 */
                        goto lab14;
                    lab15:
                        c = l - m5;
                    }
                    c = l - m_test4;
                }
                goto lab2;
            lab14:
                c = l - m3;
                if (!(eq_s_b(6, s_68))) goto lab16; /* literal, line 229 */
                goto lab2;
            lab16:
                c = l - m3;
                if (!(eq_s_b(9, s_69))) goto lab1; /* literal, line 230 */
            }
        lab2:
            bra = c; /* ], line 230 */
            {   int ret = slice_from_s(3, s_70); /* <-, line 230 */
                if (ret < 0) return ret;
            }
            B_found_a_match = 1; /* set found_a_match, line 231 */
            c = l - m_test2;
        }
        goto lab0;
    lab1:
        c = l - m1;
        {   int m_test6 = l - c; /* test, line 234 */
            ket = c; /* [, line 234 */
            if (!(find_among_b(s_pool, a_17, 13, 0, 0))) return 0; /* among, line 234 */
            bra = c; /* ], line 247 */
            if (slice_del() == -1) return -1; /* delete, line 247 */
            B_found_a_match = 1; /* set found_a_match, line 248 */
            c = l - m_test6;
        }
    }
lab0:
    c = lb;
    /* do, line 251 */
    {   int ret = r_fix_endings(); /* call fix_endings, line 251 */
        if (ret == 0) goto lab17;
        if (ret < 0) return ret;
    }
lab17:
    return 1;
}

int Xapian::InternalStemTamil::r_remove_vetrumai_urupukal() { /* forwardmode */
    B_found_a_match = 0; /* unset found_a_match, line 255 */
    B_found_vetrumai_urupu = 0; /* unset found_vetrumai_urupu, line 256 */
    {   int ret = r_has_min_length(); /* call has_min_length, line 257 */
        if (ret <= 0) return ret;
    }
    lb = c; c = l; /* backwards, line 258 */

    {   int m1 = l - c; (void)m1; /* or, line 261 */
        {   int m_test2 = l - c; /* test, line 260 */
            ket = c; /* [, line 260 */
            if (!(eq_s_b(6, s_71))) goto lab1; /* literal, line 260 */
            bra = c; /* ], line 260 */
            if (slice_del() == -1) return -1; /* delete, line 260 */
            c = l - m_test2;
        }
        goto lab0;
    lab1:
        c = l - m1;
        {   int m_test3 = l - c; /* test, line 262 */
            ket = c; /* [, line 262 */
            {   int m4 = l - c; (void)m4; /* or, line 263 */
                {   int m5 = l - c; (void)m5; /* or, line 262 */
                    if (!(eq_s_b(9, s_72))) goto lab6; /* literal, line 262 */
                    goto lab5;
                lab6:
                    c = l - m5;
                    if (!(eq_s_b(3, s_73))) goto lab4; /* literal, line 263 */
                }
            lab5:
                {   int m_test6 = l - c; /* test, line 263 */
                    {   int m7 = l - c; (void)m7; /* not, line 263 */
                        if (!(find_among_b(s_pool, a_18, 6, 0, 0))) goto lab7; /* among, line 263 */
                        goto lab4;
                    lab7:
                        c = l - m7;
                    }
                    c = l - m_test6;
                }
                goto lab3;
            lab4:
                c = l - m4;
                if (!(eq_s_b(3, s_74))) goto lab2; /* literal, line 264 */
                {   int m_test8 = l - c; /* test, line 264 */
                    if (!(find_among_b(s_pool, a_19, 6, 0, 0))) goto lab2; /* among, line 264 */
                    if (!(eq_s_b(3, s_75))) goto lab2; /* literal, line 264 */
                    c = l - m_test8;
                }
            }
        lab3:
            bra = c; /* ], line 265 */
            {   int ret = slice_from_s(3, s_76); /* <-, line 265 */
                if (ret < 0) return ret;
            }
            c = l - m_test3;
        }
        goto lab0;
    lab2:
        c = l - m1;
        {   int m_test9 = l - c; /* test, line 268 */
            ket = c; /* [, line 268 */
            {   int m10 = l - c; (void)m10; /* or, line 269 */
                if (!(eq_s_b(9, s_77))) goto lab10; /* literal, line 269 */
                goto lab9;
            lab10:
                c = l - m10;
                if (!(eq_s_b(9, s_78))) goto lab11; /* literal, line 270 */
                goto lab9;
            lab11:
                c = l - m10;
                if (!(eq_s_b(9, s_79))) goto lab12; /* literal, line 271 */
                goto lab9;
            lab12:
                c = l - m10;
                if (!(eq_s_b(9, s_80))) goto lab13; /* literal, line 272 */
                goto lab9;
            lab13:
                c = l - m10;
                if (!(eq_s_b(9, s_81))) goto lab14; /* literal, line 273 */
                {   int m_test11 = l - c; /* test, line 273 */
                    {   int m12 = l - c; (void)m12; /* not, line 273 */
                        if (!(eq_s_b(3, s_82))) goto lab15; /* literal, line 273 */
                        goto lab14;
                    lab15:
                        c = l - m12;
                    }
                    c = l - m_test11;
                }
                goto lab9;
            lab14:
                c = l - m10;
                if (!(eq_s_b(15, s_83))) goto lab16; /* literal, line 274 */
                goto lab9;
            lab16:
                c = l - m10;
                if (!(eq_s_b(21, s_84))) goto lab17; /* literal, line 275 */
                goto lab9;
            lab17:
                c = l - m10;
                if (!(eq_s_b(9, s_85))) goto lab18; /* literal, line 276 */
                goto lab9;
            lab18:
                c = l - m10;
                if (!(len_utf8(p) >= 7)) goto lab19; /* $(<integer expression> >= <integer expression>), line 277 */
                if (!(eq_s_b(12, s_86))) goto lab19; /* literal, line 277 */
                goto lab9;
            lab19:
                c = l - m10;
                if (!(eq_s_b(9, s_87))) goto lab20; /* literal, line 278 */
                goto lab9;
            lab20:
                c = l - m10;
                if (!(eq_s_b(9, s_88))) goto lab21; /* literal, line 279 */
                goto lab9;
            lab21:
                c = l - m10;
                if (!(eq_s_b(12, s_89))) goto lab22; /* literal, line 280 */
                goto lab9;
            lab22:
                c = l - m10;
                if (!(eq_s_b(6, s_90))) goto lab23; /* literal, line 281 */
                {   int m_test13 = l - c; /* test, line 281 */
                    {   int m14 = l - c; (void)m14; /* not, line 281 */
                        if (!(find_among_b(s_pool, a_20, 8, 0, 0))) goto lab24; /* among, line 281 */
                        goto lab23;
                    lab24:
                        c = l - m14;
                    }
                    c = l - m_test13;
                }
                goto lab9;
            lab23:
                c = l - m10;
                if (!(eq_s_b(9, s_91))) goto lab8; /* literal, line 282 */
            }
        lab9:
            bra = c; /* ], line 283 */
            {   int ret = slice_from_s(3, s_92); /* <-, line 283 */
                if (ret < 0) return ret;
            }
            c = l - m_test9;
        }
        goto lab0;
    lab8:
        c = l - m1;
        {   int m_test15 = l - c; /* test, line 286 */
            ket = c; /* [, line 286 */
            {   int m16 = l - c; (void)m16; /* or, line 287 */
                if (!(eq_s_b(9, s_93))) goto lab27; /* literal, line 287 */
                goto lab26;
            lab27:
                c = l - m16;
                if (!(eq_s_b(12, s_94))) goto lab28; /* literal, line 288 */
                goto lab26;
            lab28:
                c = l - m16;
                if (!(eq_s_b(12, s_95))) goto lab29; /* literal, line 289 */
                goto lab26;
            lab29:
                c = l - m16;
                if (!(eq_s_b(12, s_96))) goto lab30; /* literal, line 290 */
                goto lab26;
            lab30:
                c = l - m16;
                if (!(eq_s_b(12, s_97))) goto lab31; /* literal, line 291 */
                goto lab26;
            lab31:
                c = l - m16;
                if (!(eq_s_b(12, s_98))) goto lab32; /* literal, line 292 */
                goto lab26;
            lab32:
                c = l - m16;
                if (!(eq_s_b(6, s_99))) goto lab25; /* literal, line 293 */
                {   int m_test17 = l - c; /* test, line 293 */
                    {   int m18 = l - c; (void)m18; /* not, line 293 */
                        if (!(find_among_b(s_pool, a_21, 8, 0, 0))) goto lab33; /* among, line 293 */
                        goto lab25;
                    lab33:
                        c = l - m18;
                    }
                    c = l - m_test17;
                }
            }
        lab26:
            bra = c; /* ], line 294 */
            if (slice_del() == -1) return -1; /* delete, line 294 */
            c = l - m_test15;
        }
        goto lab0;
    lab25:
        c = l - m1;
        {   int m_test19 = l - c; /* test, line 297 */
            ket = c; /* [, line 297 */
            if (!(eq_s_b(3, s_100))) return 0; /* literal, line 297 */
            bra = c; /* ], line 297 */
            {   int ret = slice_from_s(3, s_101); /* <-, line 297 */
                if (ret < 0) return ret;
            }
            c = l - m_test19;
        }
    }
lab0:
    B_found_a_match = 1; /* set found_a_match, line 299 */
    B_found_vetrumai_urupu = 1; /* set found_vetrumai_urupu, line 300 */
    {   int m20 = l - c; (void)m20; /* do, line 301 */
        ket = c; /* [, line 301 */
        if (!(eq_s_b(9, s_102))) goto lab34; /* literal, line 301 */
        bra = c; /* ], line 301 */
        {   int ret = slice_from_s(3, s_103); /* <-, line 301 */
            if (ret < 0) return ret;
        }
    lab34:
        c = l - m20;
    }
    c = lb;
    /* do, line 303 */
    {   int ret = r_fix_endings(); /* call fix_endings, line 303 */
        if (ret == 0) goto lab35;
        if (ret < 0) return ret;
    }
lab35:
    return 1;
}

int Xapian::InternalStemTamil::r_remove_tense_suffixes() { /* forwardmode */
    B_found_a_match = 1; /* set found_a_match, line 307 */
    while(1) { /* repeat, line 308 */
        int c1 = c;
        if (!(B_found_a_match)) goto lab0; /* Boolean test found_a_match, line 308 */
        {   int c2 = c; /* do, line 308 */
            {   int ret = r_remove_tense_suffix(); /* call remove_tense_suffix, line 308 */
                if (ret == 0) goto lab1;
                if (ret < 0) return ret;
            }
        lab1:
            c = c2;
        }
        continue;
    lab0:
        c = c1;
        break;
    }
    return 1;
}

int Xapian::InternalStemTamil::r_remove_tense_suffix() { /* forwardmode */
    B_found_a_match = 0; /* unset found_a_match, line 312 */
    {   int ret = r_has_min_length(); /* call has_min_length, line 313 */
        if (ret <= 0) return ret;
    }
    lb = c; c = l; /* backwards, line 314 */

    {   int m1 = l - c; (void)m1; /* do, line 315 */
        {   int m2 = l - c; (void)m2; /* or, line 322 */
            {   int m_test3 = l - c; /* test, line 316 */
                ket = c; /* [, line 316 */
                if (c - 8 <= lb || (p[c - 1] != 129 && p[c - 1] != 141)) goto lab2; /* among, line 316 */
                if (!(find_among_b(s_pool, a_22, 2, 0, 0))) goto lab2;
                bra = c; /* ], line 319 */
                if (slice_del() == -1) return -1; /* delete, line 319 */
                B_found_a_match = 1; /* set found_a_match, line 320 */
                c = l - m_test3;
            }
            goto lab1;
        lab2:
            c = l - m2;
            {   int m_test4 = l - c; /* test, line 323 */
                ket = c; /* [, line 323 */
                {   int m5 = l - c; (void)m5; /* or, line 324 */
                    if (!(eq_s_b(12, s_104))) goto lab5; /* literal, line 324 */
                    goto lab4;
                lab5:
                    c = l - m5;
                    if (!(eq_s_b(12, s_105))) goto lab6; /* literal, line 325 */
                    goto lab4;
                lab6:
                    c = l - m5;
                    if (!(eq_s_b(9, s_106))) goto lab7; /* literal, line 326 */
                    goto lab4;
                lab7:
                    c = l - m5;
                    if (!(eq_s_b(12, s_107))) goto lab8; /* literal, line 327 */
                    goto lab4;
                lab8:
                    c = l - m5;
                    if (!(eq_s_b(12, s_108))) goto lab9; /* literal, line 328 */
                    goto lab4;
                lab9:
                    c = l - m5;
                    if (!(eq_s_b(12, s_109))) goto lab10; /* literal, line 329 */
                    goto lab4;
                lab10:
                    c = l - m5;
                    if (!(eq_s_b(9, s_110))) goto lab11; /* literal, line 330 */
                    {   int m_test6 = l - c; /* test, line 330 */
                        {   int m7 = l - c; (void)m7; /* not, line 330 */
                            if (c - 2 <= lb || p[c - 1] >> 5 != 4 || !((1951712 >> (p[c - 1] & 0x1f)) & 1)) goto lab12; /* among, line 330 */
                            if (!(find_among_b(s_pool, a_23, 12, 0, 0))) goto lab12;
                            goto lab11;
                        lab12:
                            c = l - m7;
                        }
                        c = l - m_test6;
                    }
                    goto lab4;
                lab11:
                    c = l - m5;
                    if (!(eq_s_b(9, s_111))) goto lab13; /* literal, line 331 */
                    goto lab4;
                lab13:
                    c = l - m5;
                    if (!(eq_s_b(9, s_112))) goto lab14; /* literal, line 332 */
                    goto lab4;
                lab14:
                    c = l - m5;
                    if (!(eq_s_b(9, s_113))) goto lab15; /* literal, line 333 */
                    goto lab4;
                lab15:
                    c = l - m5;
                    if (!(eq_s_b(9, s_114))) goto lab16; /* literal, line 334 */
                    goto lab4;
                lab16:
                    c = l - m5;
                    if (!(eq_s_b(3, s_115))) goto lab17; /* literal, line 335 */
                    goto lab4;
                lab17:
                    c = l - m5;
                    if (!(eq_s_b(3, s_116))) goto lab18; /* literal, line 335 */
                    goto lab4;
                lab18:
                    c = l - m5;
                    if (!(eq_s_b(3, s_117))) goto lab19; /* literal, line 335 */
                    goto lab4;
                lab19:
                    c = l - m5;
                    if (!(eq_s_b(3, s_118))) goto lab20; /* literal, line 335 */
                    goto lab4;
                lab20:
                    c = l - m5;
                    if (!(eq_s_b(3, s_119))) goto lab21; /* literal, line 335 */
                    goto lab4;
                lab21:
                    c = l - m5;
                    if (!(eq_s_b(9, s_120))) goto lab22; /* literal, line 336 */
                    goto lab4;
                lab22:
                    c = l - m5;
                    if (!(eq_s_b(9, s_121))) goto lab23; /* literal, line 337 */
                    goto lab4;
                lab23:
                    c = l - m5;
                    if (!(eq_s_b(9, s_122))) goto lab24; /* literal, line 338 */
                    goto lab4;
                lab24:
                    c = l - m5;
                    if (!(eq_s_b(6, s_123))) goto lab25; /* literal, line 339 */
                    {   int m_test8 = l - c; /* test, line 339 */
                        {   int m9 = l - c; (void)m9; /* not, line 339 */
                            if (!(find_among_b(s_pool, a_24, 8, 0, 0))) goto lab26; /* among, line 339 */
                            goto lab25;
                        lab26:
                            c = l - m9;
                        }
                        c = l - m_test8;
                    }
                    goto lab4;
                lab25:
                    c = l - m5;
                    if (!(eq_s_b(15, s_124))) goto lab27; /* literal, line 340 */
                    goto lab4;
                lab27:
                    c = l - m5;
                    if (!(eq_s_b(9, s_125))) goto lab28; /* literal, line 341 */
                    goto lab4;
                lab28:
                    c = l - m5;
                    if (!(eq_s_b(9, s_126))) goto lab29; /* literal, line 342 */
                    goto lab4;
                lab29:
                    c = l - m5;
                    if (!(eq_s_b(12, s_127))) goto lab30; /* literal, line 343 */
                    goto lab4;
                lab30:
                    c = l - m5;
                    if (!(eq_s_b(12, s_128))) goto lab31; /* literal, line 344 */
                    goto lab4;
                lab31:
                    c = l - m5;
                    if (!(eq_s_b(12, s_129))) goto lab32; /* literal, line 345 */
                    goto lab4;
                lab32:
                    c = l - m5;
                    if (!(eq_s_b(12, s_130))) goto lab33; /* literal, line 346 */
                    goto lab4;
                lab33:
                    c = l - m5;
                    if (!(eq_s_b(6, s_131))) goto lab34; /* literal, line 347 */
                    goto lab4;
                lab34:
                    c = l - m5;
                    if (!(eq_s_b(6, s_132))) goto lab3; /* literal, line 348 */
                }
            lab4:
                bra = c; /* ], line 349 */
                if (slice_del() == -1) return -1; /* delete, line 349 */
                B_found_a_match = 1; /* set found_a_match, line 350 */
                c = l - m_test4;
            }
            goto lab1;
        lab3:
            c = l - m2;
            {   int m_test10 = l - c; /* test, line 353 */
                ket = c; /* [, line 353 */
                {   int m11 = l - c; (void)m11; /* or, line 354 */
                    if (!(eq_s_b(9, s_133))) goto lab37; /* literal, line 354 */
                    {   int m_test12 = l - c; /* test, line 354 */
                        {   int m13 = l - c; (void)m13; /* not, line 354 */
                            if (!(eq_s_b(3, s_134))) goto lab38; /* literal, line 354 */
                            goto lab37;
                        lab38:
                            c = l - m13;
                        }
                        c = l - m_test12;
                    }
                    goto lab36;
                lab37:
                    c = l - m11;
                    if (!(eq_s_b(9, s_135))) goto lab39; /* literal, line 355 */
                    goto lab36;
                lab39:
                    c = l - m11;
                    if (!(eq_s_b(9, s_136))) goto lab40; /* literal, line 356 */
                    goto lab36;
                lab40:
                    c = l - m11;
                    if (!(eq_s_b(9, s_137))) goto lab41; /* literal, line 357 */
                    goto lab36;
                lab41:
                    c = l - m11;
                    if (!(eq_s_b(3, s_138))) goto lab42; /* literal, line 358 */
                    goto lab36;
                lab42:
                    c = l - m11;
                    if (!(eq_s_b(9, s_139))) goto lab43; /* literal, line 359 */
                    goto lab36;
                lab43:
                    c = l - m11;
                    if (!(eq_s_b(9, s_140))) goto lab44; /* literal, line 360 */
                    goto lab36;
                lab44:
                    c = l - m11;
                    if (!(eq_s_b(9, s_141))) goto lab45; /* literal, line 361 */
                    goto lab36;
                lab45:
                    c = l - m11;
                    if (!(eq_s_b(9, s_142))) goto lab46; /* literal, line 362 */
                    goto lab36;
                lab46:
                    c = l - m11;
                    if (!(eq_s_b(12, s_143))) goto lab47; /* literal, line 363 */
                    goto lab36;
                lab47:
                    c = l - m11;
                    if (!(eq_s_b(12, s_144))) goto lab48; /* literal, line 364 */
                    goto lab36;
                lab48:
                    c = l - m11;
                    if (!(eq_s_b(12, s_145))) goto lab49; /* literal, line 365 */
                    goto lab36;
                lab49:
                    c = l - m11;
                    if (!(eq_s_b(12, s_146))) goto lab50; /* literal, line 366 */
                    goto lab36;
                lab50:
                    c = l - m11;
                    if (!(eq_s_b(9, s_147))) goto lab51; /* literal, line 367 */
                    goto lab36;
                lab51:
                    c = l - m11;
                    if (!(eq_s_b(12, s_148))) goto lab52; /* literal, line 368 */
                    goto lab36;
                lab52:
                    c = l - m11;
                    if (!(eq_s_b(12, s_149))) goto lab53; /* literal, line 369 */
                    goto lab36;
                lab53:
                    c = l - m11;
                    if (!(eq_s_b(9, s_150))) goto lab54; /* literal, line 370 */
                    goto lab36;
                lab54:
                    c = l - m11;
                    if (!(eq_s_b(12, s_151))) goto lab35; /* literal, line 371 */
                }
            lab36:
                bra = c; /* ], line 372 */
                {   int ret = slice_from_s(3, s_152); /* <-, line 372 */
                    if (ret < 0) return ret;
                }
                B_found_a_match = 1; /* set found_a_match, line 373 */
                c = l - m_test10;
            }
            goto lab1;
        lab35:
            c = l - m2;
            {   int m_test14 = l - c; /* test, line 376 */
                ket = c; /* [, line 376 */
                {   int m15 = l - c; (void)m15; /* or, line 376 */
                    if (!(eq_s_b(6, s_153))) goto lab56; /* literal, line 376 */
                    goto lab55;
                lab56:
                    c = l - m15;
                    if (!(eq_s_b(6, s_154))) goto lab0; /* literal, line 376 */
                }
            lab55:
                {   int m_test16 = l - c; /* test, line 376 */
                    if (!(eq_s_b(3, s_155))) goto lab0; /* literal, line 376 */
                    c = l - m_test16;
                }
                bra = c; /* ], line 376 */
                if (slice_del() == -1) return -1; /* delete, line 376 */
                B_found_a_match = 1; /* set found_a_match, line 377 */
                c = l - m_test14;
            }
        }
    lab1:
    lab0:
        c = l - m1;
    }
    {   int m17 = l - c; (void)m17; /* do, line 380 */
        ket = c; /* [, line 380 */
        if (c - 8 <= lb || (p[c - 1] != 141 && p[c - 1] != 177)) goto lab57; /* among, line 380 */
        if (!(find_among_b(s_pool, a_25, 6, 0, 0))) goto lab57;
        bra = c; /* ], line 387 */
        if (slice_del() == -1) return -1; /* delete, line 387 */
        B_found_a_match = 1; /* set found_a_match, line 388 */
    lab57:
        c = l - m17;
    }
    c = lb;
    /* do, line 391 */
    {   int ret = r_fix_endings(); /* call fix_endings, line 391 */
        if (ret == 0) goto lab58;
        if (ret < 0) return ret;
    }
lab58:
    return 1;
}

int Xapian::InternalStemTamil::stem() { /* forwardmode */
    B_found_vetrumai_urupu = 0; /* unset found_vetrumai_urupu, line 395 */
    {   int c1 = c; /* do, line 396 */
        {   int ret = r_fix_ending(); /* call fix_ending, line 396 */
            if (ret == 0) goto lab0;
            if (ret < 0) return ret;
        }
    lab0:
        c = c1;
    }
    {   int ret = r_has_min_length(); /* call has_min_length, line 397 */
        if (ret <= 0) return ret;
    }
    {   int c2 = c; /* do, line 398 */
        {   int ret = r_remove_question_prefixes(); /* call remove_question_prefixes, line 398 */
            if (ret == 0) goto lab1;
            if (ret < 0) return ret;
        }
    lab1:
        c = c2;
    }
    {   int c3 = c; /* do, line 399 */
        {   int ret = r_remove_pronoun_prefixes(); /* call remove_pronoun_prefixes, line 399 */
            if (ret == 0) goto lab2;
            if (ret < 0) return ret;
        }
    lab2:
        c = c3;
    }
    {   int c4 = c; /* do, line 400 */
        {   int ret = r_remove_question_suffixes(); /* call remove_question_suffixes, line 400 */
            if (ret == 0) goto lab3;
            if (ret < 0) return ret;
        }
    lab3:
        c = c4;
    }
    {   int c5 = c; /* do, line 401 */
        {   int ret = r_remove_um(); /* call remove_um, line 401 */
            if (ret == 0) goto lab4;
            if (ret < 0) return ret;
        }
    lab4:
        c = c5;
    }
    {   int c6 = c; /* do, line 402 */
        {   int ret = r_remove_common_word_endings(); /* call remove_common_word_endings, line 402 */
            if (ret == 0) goto lab5;
            if (ret < 0) return ret;
        }
    lab5:
        c = c6;
    }
    {   int c7 = c; /* do, line 403 */
        {   int ret = r_remove_vetrumai_urupukal(); /* call remove_vetrumai_urupukal, line 403 */
            if (ret == 0) goto lab6;
            if (ret < 0) return ret;
        }
    lab6:
        c = c7;
    }
    {   int c8 = c; /* do, line 404 */
        {   int ret = r_remove_plural_suffix(); /* call remove_plural_suffix, line 404 */
            if (ret == 0) goto lab7;
            if (ret < 0) return ret;
        }
    lab7:
        c = c8;
    }
    {   int c9 = c; /* do, line 405 */
        {   int ret = r_remove_command_suffixes(); /* call remove_command_suffixes, line 405 */
            if (ret == 0) goto lab8;
            if (ret < 0) return ret;
        }
    lab8:
        c = c9;
    }
    {   int c10 = c; /* do, line 406 */
        {   int ret = r_remove_tense_suffixes(); /* call remove_tense_suffixes, line 406 */
            if (ret == 0) goto lab9;
            if (ret < 0) return ret;
        }
    lab9:
        c = c10;
    }
    return 1;
}

Xapian::InternalStemTamil::InternalStemTamil()
    : B_found_vetrumai_urupu(0), B_found_a_match(0)
{
}

Xapian::InternalStemTamil::~InternalStemTamil()
{
}

std::string
Xapian::InternalStemTamil::get_description() const
{
    return "tamil";
}
