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

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

static const symbol s_pool[] = {
#define s_0_0 0
'!',
#define s_0_1 1
'"',
#define s_0_2 2
'%',
#define s_0_3 3
'*',
#define s_0_4 4
',',
#define s_0_5 5
'.',
#define s_0_6 6
'/',
#define s_0_7 7
':',
#define s_0_8 8
';',
#define s_0_9 9
'?',
#define s_0_10 10
'\\',
#define s_0_11 11
0xD8, 0x8C,
#define s_0_12 13
0xD8, 0x9B,
#define s_0_13 15
0xD8, 0x9F,
#define s_0_14 17
0xD9, 0x80,
#define s_0_15 19
0xD9, 0x8B,
#define s_0_16 21
0xD9, 0x8C,
#define s_0_17 23
0xD9, 0x8D,
#define s_0_18 25
0xD9, 0x8E,
#define s_0_19 27
0xD9, 0x8F,
#define s_0_20 29
0xD9, 0x90,
#define s_0_21 31
0xD9, 0x91,
#define s_0_22 33
0xD9, 0x92,
#define s_0_23 35
0xD9, 0xA0,
#define s_0_24 37
0xD9, 0xA1,
#define s_0_25 39
0xD9, 0xA2,
#define s_0_26 41
0xD9, 0xA3,
#define s_0_27 43
0xD9, 0xA4,
#define s_0_28 45
0xD9, 0xA5,
#define s_0_29 47
0xD9, 0xA6,
#define s_0_30 49
0xD9, 0xA7,
#define s_0_31 51
0xD9, 0xA8,
#define s_0_32 53
0xD9, 0xA9,
#define s_0_33 55
0xD9, 0xAA,
#define s_0_34 57
0xD9, 0xAB,
#define s_0_35 59
0xD9, 0xAC,
#define s_0_36 61
0xEF, 0xBA, 0x80,
#define s_0_37 64
0xEF, 0xBA, 0x81,
#define s_0_38 67
0xEF, 0xBA, 0x82,
#define s_0_39 70
0xEF, 0xBA, 0x83,
#define s_0_40 73
0xEF, 0xBA, 0x84,
#define s_0_41 76
0xEF, 0xBA, 0x85,
#define s_0_42 79
0xEF, 0xBA, 0x86,
#define s_0_43 82
0xEF, 0xBA, 0x87,
#define s_0_44 85
0xEF, 0xBA, 0x88,
#define s_0_45 88
0xEF, 0xBA, 0x89,
#define s_0_46 91
0xEF, 0xBA, 0x8A,
#define s_0_47 94
0xEF, 0xBA, 0x8B,
#define s_0_48 97
0xEF, 0xBA, 0x8C,
#define s_0_49 100
0xEF, 0xBA, 0x8D,
#define s_0_50 103
0xEF, 0xBA, 0x8E,
#define s_0_51 106
0xEF, 0xBA, 0x8F,
#define s_0_52 109
0xEF, 0xBA, 0x90,
#define s_0_53 112
0xEF, 0xBA, 0x91,
#define s_0_54 115
0xEF, 0xBA, 0x92,
#define s_0_55 118
0xEF, 0xBA, 0x93,
#define s_0_56 121
0xEF, 0xBA, 0x94,
#define s_0_57 124
0xEF, 0xBA, 0x95,
#define s_0_58 127
0xEF, 0xBA, 0x96,
#define s_0_59 130
0xEF, 0xBA, 0x97,
#define s_0_60 133
0xEF, 0xBA, 0x98,
#define s_0_61 136
0xEF, 0xBA, 0x99,
#define s_0_62 139
0xEF, 0xBA, 0x9A,
#define s_0_63 142
0xEF, 0xBA, 0x9B,
#define s_0_64 145
0xEF, 0xBA, 0x9C,
#define s_0_65 148
0xEF, 0xBA, 0x9D,
#define s_0_66 151
0xEF, 0xBA, 0x9E,
#define s_0_67 154
0xEF, 0xBA, 0x9F,
#define s_0_68 157
0xEF, 0xBA, 0xA0,
#define s_0_69 160
0xEF, 0xBA, 0xA1,
#define s_0_70 163
0xEF, 0xBA, 0xA2,
#define s_0_71 166
0xEF, 0xBA, 0xA3,
#define s_0_72 169
0xEF, 0xBA, 0xA4,
#define s_0_73 172
0xEF, 0xBA, 0xA5,
#define s_0_74 175
0xEF, 0xBA, 0xA6,
#define s_0_75 178
0xEF, 0xBA, 0xA7,
#define s_0_76 181
0xEF, 0xBA, 0xA8,
#define s_0_77 184
0xEF, 0xBA, 0xA9,
#define s_0_78 187
0xEF, 0xBA, 0xAA,
#define s_0_79 190
0xEF, 0xBA, 0xAB,
#define s_0_80 193
0xEF, 0xBA, 0xAC,
#define s_0_81 196
0xEF, 0xBA, 0xAD,
#define s_0_82 199
0xEF, 0xBA, 0xAE,
#define s_0_83 202
0xEF, 0xBA, 0xAF,
#define s_0_84 205
0xEF, 0xBA, 0xB0,
#define s_0_85 208
0xEF, 0xBA, 0xB1,
#define s_0_86 211
0xEF, 0xBA, 0xB2,
#define s_0_87 214
0xEF, 0xBA, 0xB3,
#define s_0_88 217
0xEF, 0xBA, 0xB4,
#define s_0_89 220
0xEF, 0xBA, 0xB5,
#define s_0_90 223
0xEF, 0xBA, 0xB6,
#define s_0_91 226
0xEF, 0xBA, 0xB7,
#define s_0_92 229
0xEF, 0xBA, 0xB8,
#define s_0_93 232
0xEF, 0xBA, 0xB9,
#define s_0_94 235
0xEF, 0xBA, 0xBA,
#define s_0_95 238
0xEF, 0xBA, 0xBB,
#define s_0_96 241
0xEF, 0xBA, 0xBC,
#define s_0_97 244
0xEF, 0xBA, 0xBD,
#define s_0_98 247
0xEF, 0xBA, 0xBE,
#define s_0_99 250
0xEF, 0xBA, 0xBF,
#define s_0_100 253
0xEF, 0xBB, 0x80,
#define s_0_101 256
0xEF, 0xBB, 0x81,
#define s_0_102 259
0xEF, 0xBB, 0x82,
#define s_0_103 262
0xEF, 0xBB, 0x83,
#define s_0_104 265
0xEF, 0xBB, 0x84,
#define s_0_105 268
0xEF, 0xBB, 0x85,
#define s_0_106 271
0xEF, 0xBB, 0x86,
#define s_0_107 274
0xEF, 0xBB, 0x87,
#define s_0_108 277
0xEF, 0xBB, 0x88,
#define s_0_109 280
0xEF, 0xBB, 0x89,
#define s_0_110 283
0xEF, 0xBB, 0x8A,
#define s_0_111 286
0xEF, 0xBB, 0x8B,
#define s_0_112 289
0xEF, 0xBB, 0x8C,
#define s_0_113 292
0xEF, 0xBB, 0x8D,
#define s_0_114 295
0xEF, 0xBB, 0x8E,
#define s_0_115 298
0xEF, 0xBB, 0x8F,
#define s_0_116 301
0xEF, 0xBB, 0x90,
#define s_0_117 304
0xEF, 0xBB, 0x91,
#define s_0_118 307
0xEF, 0xBB, 0x92,
#define s_0_119 310
0xEF, 0xBB, 0x93,
#define s_0_120 313
0xEF, 0xBB, 0x94,
#define s_0_121 316
0xEF, 0xBB, 0x95,
#define s_0_122 319
0xEF, 0xBB, 0x96,
#define s_0_123 322
0xEF, 0xBB, 0x97,
#define s_0_124 325
0xEF, 0xBB, 0x98,
#define s_0_125 328
0xEF, 0xBB, 0x99,
#define s_0_126 331
0xEF, 0xBB, 0x9A,
#define s_0_127 334
0xEF, 0xBB, 0x9B,
#define s_0_128 337
0xEF, 0xBB, 0x9C,
#define s_0_129 340
0xEF, 0xBB, 0x9D,
#define s_0_130 343
0xEF, 0xBB, 0x9E,
#define s_0_131 346
0xEF, 0xBB, 0x9F,
#define s_0_132 349
0xEF, 0xBB, 0xA0,
#define s_0_133 352
0xEF, 0xBB, 0xA1,
#define s_0_134 355
0xEF, 0xBB, 0xA2,
#define s_0_135 358
0xEF, 0xBB, 0xA3,
#define s_0_136 361
0xEF, 0xBB, 0xA4,
#define s_0_137 364
0xEF, 0xBB, 0xA5,
#define s_0_138 367
0xEF, 0xBB, 0xA6,
#define s_0_139 370
0xEF, 0xBB, 0xA7,
#define s_0_140 373
0xEF, 0xBB, 0xA8,
#define s_0_141 376
0xEF, 0xBB, 0xA9,
#define s_0_142 379
0xEF, 0xBB, 0xAA,
#define s_0_143 382
0xEF, 0xBB, 0xAB,
#define s_0_144 385
0xEF, 0xBB, 0xAC,
#define s_0_145 388
0xEF, 0xBB, 0xAD,
#define s_0_146 391
0xEF, 0xBB, 0xAE,
#define s_0_147 394
0xEF, 0xBB, 0xAF,
#define s_0_148 397
0xEF, 0xBB, 0xB0,
#define s_0_149 400
0xEF, 0xBB, 0xB1,
#define s_0_150 403
0xEF, 0xBB, 0xB2,
#define s_0_151 406
0xEF, 0xBB, 0xB3,
#define s_0_152 409
0xEF, 0xBB, 0xB4,
#define s_0_153 412
0xEF, 0xBB, 0xB5,
#define s_0_154 415
0xEF, 0xBB, 0xB6,
#define s_0_155 418
0xEF, 0xBB, 0xB7,
#define s_0_156 421
0xEF, 0xBB, 0xB8,
#define s_0_157 424
0xEF, 0xBB, 0xB9,
#define s_0_158 427
0xEF, 0xBB, 0xBA,
#define s_0_159 430
0xEF, 0xBB, 0xBB,
#define s_0_160 433
0xEF, 0xBB, 0xBC,
#define s_1_0 436
0xD8, 0xA2,
#define s_1_1 438
0xD8, 0xA3,
#define s_1_2 440
0xD8, 0xA4,
#define s_1_3 442
0xD8, 0xA5,
#define s_1_4 444
0xD8, 0xA6,
#define s_2_0 446
0xD8, 0xA2,
#define s_2_1 448
0xD8, 0xA3,
#define s_2_2 450
0xD8, 0xA4,
#define s_2_3 452
0xD8, 0xA5,
#define s_2_4 454
0xD8, 0xA6,
#define s_3_0 (s_3_1 + 2)
#define s_3_1 456
0xD8, 0xA8, 0xD8, 0xA7, 0xD9, 0x84,
#define s_3_2 462
0xD9, 0x83, 0xD8, 0xA7, 0xD9, 0x84,
#define s_3_3 468
0xD9, 0x84, 0xD9, 0x84,
#define s_4_0 472
0xD8, 0xA3, 0xD8, 0xA2,
#define s_4_1 476
0xD8, 0xA3, 0xD8, 0xA3,
#define s_4_2 480
0xD8, 0xA3, 0xD8, 0xA4,
#define s_4_3 484
0xD8, 0xA3, 0xD8, 0xA5,
#define s_4_4 488
0xD8, 0xA3, 0xD8, 0xA7,
#define s_5_0 492
0xD9, 0x81,
#define s_5_1 494
0xD9, 0x88,
#define s_6_0 (s_6_1 + 2)
#define s_6_1 496
0xD8, 0xA8, 0xD8, 0xA7, 0xD9, 0x84,
#define s_6_2 502
0xD9, 0x83, 0xD8, 0xA7, 0xD9, 0x84,
#define s_6_3 508
0xD9, 0x84, 0xD9, 0x84,
#define s_7_0 (s_7_1 + 2)
#define s_7_1 512
0xD8, 0xA8, 0xD8, 0xA8,
#define s_7_2 516
0xD9, 0x83, 0xD9, 0x83,
#define s_8_0 520
0xD8, 0xB3, 0xD8, 0xA3,
#define s_8_1 524
0xD8, 0xB3, 0xD8, 0xAA,
#define s_8_2 528
0xD8, 0xB3, 0xD9, 0x86,
#define s_8_3 532
0xD8, 0xB3, 0xD9, 0x8A,
#define s_9_0 536
0xD8, 0xAA, 0xD8, 0xB3, 0xD8, 0xAA,
#define s_9_1 542
0xD9, 0x86, 0xD8, 0xB3, 0xD8, 0xAA,
#define s_9_2 548
0xD9, 0x8A, 0xD8, 0xB3, 0xD8, 0xAA,
#define s_10_0 s_10_1
#define s_10_1 s_10_6
#define s_10_2 s_10_7
#define s_10_3 554
0xD9, 0x87, 0xD9, 0x86,
#define s_10_4 s_10_2
#define s_10_5 558
0xD9, 0x8A,
#define s_10_6 560
0xD9, 0x83, 0xD9, 0x85, 0xD8, 0xA7,
#define s_10_7 566
0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xA7,
#define s_10_8 572
0xD9, 0x86, 0xD8, 0xA7,
#define s_10_9 576
0xD9, 0x87, 0xD8, 0xA7,
#define s_11_0 580
0xD9, 0x86,
#define s_12_0 582
0xD9, 0x88,
#define s_12_1 584
0xD9, 0x8A,
#define s_12_2 586
0xD8, 0xA7,
#define s_13_0 588
0xD8, 0xA7, 0xD8, 0xAA,
#define s_14_0 592
0xD8, 0xAA,
#define s_15_0 594
0xD8, 0xA9,
#define s_16_0 596
0xD9, 0x8A,
#define s_17_0 s_17_1
#define s_17_1 s_17_6
#define s_17_2 s_17_9
#define s_17_3 598
0xD9, 0x83, 0xD9, 0x86,
#define s_17_4 602
0xD9, 0x87, 0xD9, 0x86,
#define s_17_5 s_17_2
#define s_17_6 606
0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x88,
#define s_17_7 612
0xD9, 0x86, 0xD9, 0x8A,
#define s_17_8 616
0xD9, 0x83, 0xD9, 0x85, 0xD8, 0xA7,
#define s_17_9 622
0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xA7,
#define s_17_10 628
0xD9, 0x86, 0xD8, 0xA7,
#define s_17_11 632
0xD9, 0x87, 0xD8, 0xA7,
#define s_18_0 (s_18_1 + 2)
#define s_18_1 636
0xD9, 0x88, 0xD9, 0x86,
#define s_18_2 640
0xD9, 0x8A, 0xD9, 0x86,
#define s_18_3 644
0xD8, 0xA7, 0xD9, 0x86,
#define s_18_4 648
0xD8, 0xAA, 0xD9, 0x86,
#define s_18_5 s_18_2
#define s_18_6 s_18_3
#define s_18_7 652
0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xA7,
#define s_18_8 658
0xD9, 0x86, 0xD8, 0xA7,
#define s_18_9 662
0xD8, 0xAA, 0xD8, 0xA7,
#define s_18_10 s_18_4
#define s_19_0 666
0xD8, 0xAA, 0xD9, 0x85,
#define s_19_1 670
0xD9, 0x88, 0xD8, 0xA7,
#define s_20_0 (s_20_1 + 4)
#define s_20_1 674
0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x88,
#define s_21_0 680
0xD9, 0x89,
};


static const struct among a_0[161] =
{
/*  0 */ { 1, s_0_0, -1, 3},
/*  1 */ { 1, s_0_1, -1, 3},
/*  2 */ { 1, s_0_2, -1, 3},
/*  3 */ { 1, s_0_3, -1, 3},
/*  4 */ { 1, s_0_4, -1, 3},
/*  5 */ { 1, s_0_5, -1, 3},
/*  6 */ { 1, s_0_6, -1, 3},
/*  7 */ { 1, s_0_7, -1, 3},
/*  8 */ { 1, s_0_8, -1, 3},
/*  9 */ { 1, s_0_9, -1, 3},
/* 10 */ { 1, s_0_10, -1, 3},
/* 11 */ { 2, s_0_11, -1, 4},
/* 12 */ { 2, s_0_12, -1, 4},
/* 13 */ { 2, s_0_13, -1, 4},
/* 14 */ { 2, s_0_14, -1, 2},
/* 15 */ { 2, s_0_15, -1, 1},
/* 16 */ { 2, s_0_16, -1, 1},
/* 17 */ { 2, s_0_17, -1, 1},
/* 18 */ { 2, s_0_18, -1, 1},
/* 19 */ { 2, s_0_19, -1, 1},
/* 20 */ { 2, s_0_20, -1, 1},
/* 21 */ { 2, s_0_21, -1, 1},
/* 22 */ { 2, s_0_22, -1, 1},
/* 23 */ { 2, s_0_23, -1, 5},
/* 24 */ { 2, s_0_24, -1, 6},
/* 25 */ { 2, s_0_25, -1, 7},
/* 26 */ { 2, s_0_26, -1, 8},
/* 27 */ { 2, s_0_27, -1, 9},
/* 28 */ { 2, s_0_28, -1, 10},
/* 29 */ { 2, s_0_29, -1, 11},
/* 30 */ { 2, s_0_30, -1, 12},
/* 31 */ { 2, s_0_31, -1, 13},
/* 32 */ { 2, s_0_32, -1, 14},
/* 33 */ { 2, s_0_33, -1, 15},
/* 34 */ { 2, s_0_34, -1, 15},
/* 35 */ { 2, s_0_35, -1, 15},
/* 36 */ { 3, s_0_36, -1, 16},
/* 37 */ { 3, s_0_37, -1, 20},
/* 38 */ { 3, s_0_38, -1, 20},
/* 39 */ { 3, s_0_39, -1, 17},
/* 40 */ { 3, s_0_40, -1, 17},
/* 41 */ { 3, s_0_41, -1, 21},
/* 42 */ { 3, s_0_42, -1, 21},
/* 43 */ { 3, s_0_43, -1, 18},
/* 44 */ { 3, s_0_44, -1, 18},
/* 45 */ { 3, s_0_45, -1, 19},
/* 46 */ { 3, s_0_46, -1, 19},
/* 47 */ { 3, s_0_47, -1, 19},
/* 48 */ { 3, s_0_48, -1, 19},
/* 49 */ { 3, s_0_49, -1, 22},
/* 50 */ { 3, s_0_50, -1, 22},
/* 51 */ { 3, s_0_51, -1, 23},
/* 52 */ { 3, s_0_52, -1, 23},
/* 53 */ { 3, s_0_53, -1, 23},
/* 54 */ { 3, s_0_54, -1, 23},
/* 55 */ { 3, s_0_55, -1, 24},
/* 56 */ { 3, s_0_56, -1, 24},
/* 57 */ { 3, s_0_57, -1, 25},
/* 58 */ { 3, s_0_58, -1, 25},
/* 59 */ { 3, s_0_59, -1, 25},
/* 60 */ { 3, s_0_60, -1, 25},
/* 61 */ { 3, s_0_61, -1, 26},
/* 62 */ { 3, s_0_62, -1, 26},
/* 63 */ { 3, s_0_63, -1, 26},
/* 64 */ { 3, s_0_64, -1, 26},
/* 65 */ { 3, s_0_65, -1, 27},
/* 66 */ { 3, s_0_66, -1, 27},
/* 67 */ { 3, s_0_67, -1, 27},
/* 68 */ { 3, s_0_68, -1, 27},
/* 69 */ { 3, s_0_69, -1, 28},
/* 70 */ { 3, s_0_70, -1, 28},
/* 71 */ { 3, s_0_71, -1, 28},
/* 72 */ { 3, s_0_72, -1, 28},
/* 73 */ { 3, s_0_73, -1, 29},
/* 74 */ { 3, s_0_74, -1, 29},
/* 75 */ { 3, s_0_75, -1, 29},
/* 76 */ { 3, s_0_76, -1, 29},
/* 77 */ { 3, s_0_77, -1, 30},
/* 78 */ { 3, s_0_78, -1, 30},
/* 79 */ { 3, s_0_79, -1, 31},
/* 80 */ { 3, s_0_80, -1, 31},
/* 81 */ { 3, s_0_81, -1, 32},
/* 82 */ { 3, s_0_82, -1, 32},
/* 83 */ { 3, s_0_83, -1, 33},
/* 84 */ { 3, s_0_84, -1, 33},
/* 85 */ { 3, s_0_85, -1, 34},
/* 86 */ { 3, s_0_86, -1, 34},
/* 87 */ { 3, s_0_87, -1, 34},
/* 88 */ { 3, s_0_88, -1, 34},
/* 89 */ { 3, s_0_89, -1, 35},
/* 90 */ { 3, s_0_90, -1, 35},
/* 91 */ { 3, s_0_91, -1, 35},
/* 92 */ { 3, s_0_92, -1, 35},
/* 93 */ { 3, s_0_93, -1, 36},
/* 94 */ { 3, s_0_94, -1, 36},
/* 95 */ { 3, s_0_95, -1, 36},
/* 96 */ { 3, s_0_96, -1, 36},
/* 97 */ { 3, s_0_97, -1, 37},
/* 98 */ { 3, s_0_98, -1, 37},
/* 99 */ { 3, s_0_99, -1, 37},
/*100 */ { 3, s_0_100, -1, 37},
/*101 */ { 3, s_0_101, -1, 38},
/*102 */ { 3, s_0_102, -1, 38},
/*103 */ { 3, s_0_103, -1, 38},
/*104 */ { 3, s_0_104, -1, 38},
/*105 */ { 3, s_0_105, -1, 39},
/*106 */ { 3, s_0_106, -1, 39},
/*107 */ { 3, s_0_107, -1, 39},
/*108 */ { 3, s_0_108, -1, 39},
/*109 */ { 3, s_0_109, -1, 40},
/*110 */ { 3, s_0_110, -1, 40},
/*111 */ { 3, s_0_111, -1, 40},
/*112 */ { 3, s_0_112, -1, 40},
/*113 */ { 3, s_0_113, -1, 41},
/*114 */ { 3, s_0_114, -1, 41},
/*115 */ { 3, s_0_115, -1, 41},
/*116 */ { 3, s_0_116, -1, 41},
/*117 */ { 3, s_0_117, -1, 42},
/*118 */ { 3, s_0_118, -1, 42},
/*119 */ { 3, s_0_119, -1, 42},
/*120 */ { 3, s_0_120, -1, 42},
/*121 */ { 3, s_0_121, -1, 43},
/*122 */ { 3, s_0_122, -1, 43},
/*123 */ { 3, s_0_123, -1, 43},
/*124 */ { 3, s_0_124, -1, 43},
/*125 */ { 3, s_0_125, -1, 44},
/*126 */ { 3, s_0_126, -1, 44},
/*127 */ { 3, s_0_127, -1, 44},
/*128 */ { 3, s_0_128, -1, 44},
/*129 */ { 3, s_0_129, -1, 45},
/*130 */ { 3, s_0_130, -1, 45},
/*131 */ { 3, s_0_131, -1, 45},
/*132 */ { 3, s_0_132, -1, 45},
/*133 */ { 3, s_0_133, -1, 46},
/*134 */ { 3, s_0_134, -1, 46},
/*135 */ { 3, s_0_135, -1, 46},
/*136 */ { 3, s_0_136, -1, 46},
/*137 */ { 3, s_0_137, -1, 47},
/*138 */ { 3, s_0_138, -1, 47},
/*139 */ { 3, s_0_139, -1, 47},
/*140 */ { 3, s_0_140, -1, 47},
/*141 */ { 3, s_0_141, -1, 48},
/*142 */ { 3, s_0_142, -1, 48},
/*143 */ { 3, s_0_143, -1, 48},
/*144 */ { 3, s_0_144, -1, 48},
/*145 */ { 3, s_0_145, -1, 49},
/*146 */ { 3, s_0_146, -1, 49},
/*147 */ { 3, s_0_147, -1, 50},
/*148 */ { 3, s_0_148, -1, 50},
/*149 */ { 3, s_0_149, -1, 51},
/*150 */ { 3, s_0_150, -1, 51},
/*151 */ { 3, s_0_151, -1, 51},
/*152 */ { 3, s_0_152, -1, 51},
/*153 */ { 3, s_0_153, -1, 55},
/*154 */ { 3, s_0_154, -1, 55},
/*155 */ { 3, s_0_155, -1, 53},
/*156 */ { 3, s_0_156, -1, 53},
/*157 */ { 3, s_0_157, -1, 54},
/*158 */ { 3, s_0_158, -1, 54},
/*159 */ { 3, s_0_159, -1, 52},
/*160 */ { 3, s_0_160, -1, 52}
};


static const struct among a_1[5] =
{
/*  0 */ { 2, s_1_0, -1, 1},
/*  1 */ { 2, s_1_1, -1, 1},
/*  2 */ { 2, s_1_2, -1, 2},
/*  3 */ { 2, s_1_3, -1, 1},
/*  4 */ { 2, s_1_4, -1, 3}
};


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


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


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


static const struct among a_5[2] =
{
/*  0 */ { 2, s_5_0, -1, 1},
/*  1 */ { 2, s_5_1, -1, 2}
};


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


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


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


static const struct among a_9[3] =
{
/*  0 */ { 6, s_9_0, -1, 1},
/*  1 */ { 6, s_9_1, -1, 1},
/*  2 */ { 6, s_9_2, -1, 1}
};


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


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


static const struct among a_12[3] =
{
/*  0 */ { 2, s_12_0, -1, 1},
/*  1 */ { 2, s_12_1, -1, 1},
/*  2 */ { 2, s_12_2, -1, 1}
};


static const struct among a_13[1] =
{
/*  0 */ { 4, s_13_0, -1, 1}
};


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


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


static const struct among a_16[1] =
{
/*  0 */ { 2, s_16_0, -1, 1}
};


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


static const struct among a_18[11] =
{
/*  0 */ { 2, s_18_0, -1, 2},
/*  1 */ { 4, s_18_1, 0, 4},
/*  2 */ { 4, s_18_2, 0, 4},
/*  3 */ { 4, s_18_3, 0, 4},
/*  4 */ { 4, s_18_4, 0, 3},
/*  5 */ { 2, s_18_5, -1, 2},
/*  6 */ { 2, s_18_6, -1, 2},
/*  7 */ { 6, s_18_7, 6, 5},
/*  8 */ { 4, s_18_8, 6, 3},
/*  9 */ { 4, s_18_9, 6, 3},
/* 10 */ { 2, s_18_10, -1, 1}
};


static const struct among a_19[2] =
{
/*  0 */ { 4, s_19_0, -1, 1},
/*  1 */ { 4, s_19_1, -1, 1}
};


static const struct among a_20[2] =
{
/*  0 */ { 2, s_20_0, -1, 1},
/*  1 */ { 6, s_20_1, 0, 2}
};


static const struct among a_21[1] =
{
/*  0 */ { 2, s_21_0, -1, 1}
};

static const symbol s_0[] = { '0' };
static const symbol s_1[] = { '1' };
static const symbol s_2[] = { '2' };
static const symbol s_3[] = { '3' };
static const symbol s_4[] = { '4' };
static const symbol s_5[] = { '5' };
static const symbol s_6[] = { '6' };
static const symbol s_7[] = { '7' };
static const symbol s_8[] = { '8' };
static const symbol s_9[] = { '9' };
static const symbol s_10[] = { 0xD8, 0xA1 };
static const symbol s_11[] = { 0xD8, 0xA3 };
static const symbol s_12[] = { 0xD8, 0xA5 };
static const symbol s_13[] = { 0xD8, 0xA6 };
static const symbol s_14[] = { 0xD8, 0xA2 };
static const symbol s_15[] = { 0xD8, 0xA4 };
static const symbol s_16[] = { 0xD8, 0xA7 };
static const symbol s_17[] = { 0xD8, 0xA8 };
static const symbol s_18[] = { 0xD8, 0xA9 };
static const symbol s_19[] = { 0xD8, 0xAA };
static const symbol s_20[] = { 0xD8, 0xAB };
static const symbol s_21[] = { 0xD8, 0xAC };
static const symbol s_22[] = { 0xD8, 0xAD };
static const symbol s_23[] = { 0xD8, 0xAE };
static const symbol s_24[] = { 0xD8, 0xAF };
static const symbol s_25[] = { 0xD8, 0xB0 };
static const symbol s_26[] = { 0xD8, 0xB1 };
static const symbol s_27[] = { 0xD8, 0xB2 };
static const symbol s_28[] = { 0xD8, 0xB3 };
static const symbol s_29[] = { 0xD8, 0xB4 };
static const symbol s_30[] = { 0xD8, 0xB5 };
static const symbol s_31[] = { 0xD8, 0xB6 };
static const symbol s_32[] = { 0xD8, 0xB7 };
static const symbol s_33[] = { 0xD8, 0xB8 };
static const symbol s_34[] = { 0xD8, 0xB9 };
static const symbol s_35[] = { 0xD8, 0xBA };
static const symbol s_36[] = { 0xD9, 0x81 };
static const symbol s_37[] = { 0xD9, 0x82 };
static const symbol s_38[] = { 0xD9, 0x83 };
static const symbol s_39[] = { 0xD9, 0x84 };
static const symbol s_40[] = { 0xD9, 0x85 };
static const symbol s_41[] = { 0xD9, 0x86 };
static const symbol s_42[] = { 0xD9, 0x87 };
static const symbol s_43[] = { 0xD9, 0x88 };
static const symbol s_44[] = { 0xD9, 0x89 };
static const symbol s_45[] = { 0xD9, 0x8A };
static const symbol s_46[] = { 0xD9, 0x84, 0xD8, 0xA7 };
static const symbol s_47[] = { 0xD9, 0x84, 0xD8, 0xA3 };
static const symbol s_48[] = { 0xD9, 0x84, 0xD8, 0xA5 };
static const symbol s_49[] = { 0xD9, 0x84, 0xD8, 0xA2 };
static const symbol s_50[] = { 0xD8, 0xA1 };
static const symbol s_51[] = { 0xD8, 0xA1 };
static const symbol s_52[] = { 0xD8, 0xA1 };
static const symbol s_53[] = { 0xD8, 0xA7 };
static const symbol s_54[] = { 0xD9, 0x88 };
static const symbol s_55[] = { 0xD9, 0x8A };
static const symbol s_56[] = { 0xD8, 0xA3 };
static const symbol s_57[] = { 0xD8, 0xA2 };
static const symbol s_58[] = { 0xD8, 0xA3 };
static const symbol s_59[] = { 0xD8, 0xA7 };
static const symbol s_60[] = { 0xD8, 0xA5 };
static const symbol s_61[] = { 0xD9, 0x81, 0xD8, 0xA7 };
static const symbol s_62[] = { 0xD9, 0x88, 0xD8, 0xA7 };
static const symbol s_63[] = { 0xD8, 0xA8, 0xD8, 0xA7 };
static const symbol s_64[] = { 0xD8, 0xA8 };
static const symbol s_65[] = { 0xD9, 0x83 };
static const symbol s_66[] = { 0xD9, 0x8A };
static const symbol s_67[] = { 0xD8, 0xAA };
static const symbol s_68[] = { 0xD9, 0x86 };
static const symbol s_69[] = { 0xD8, 0xA3 };
static const symbol s_70[] = { 0xD8, 0xA7, 0xD8, 0xB3, 0xD8, 0xAA };
static const symbol s_71[] = { 0xD9, 0x8A };

int Xapian::InternalStemArabic::r_Normalize_pre() { /* forwardmode */
    int among_var;
    {   int i; for (i = len_utf8(p); i > 0; i--) /* loop, line 260 */
        {               {   int c1 = c; /* or, line 329 */
                bra = c; /* [, line 262 */
                among_var = find_among(s_pool, a_0, 161, 0, 0); /* substring, line 262 */
                if (!(among_var)) goto lab1;
                ket = c; /* ], line 262 */
                switch (among_var) { /* among, line 262 */
                    case 0: goto lab1;
                    case 1:
                        if (slice_del() == -1) return -1; /* delete, line 263 */
                        break;
                    case 2:
                        if (slice_del() == -1) return -1; /* delete, line 264 */
                        break;
                    case 3:
                        if (slice_del() == -1) return -1; /* delete, line 267 */
                        break;
                    case 4:
                        if (slice_del() == -1) return -1; /* delete, line 268 */
                        break;
                    case 5:
                        {   int ret = slice_from_s(1, s_0); /* <-, line 271 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 6:
                        {   int ret = slice_from_s(1, s_1); /* <-, line 272 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 7:
                        {   int ret = slice_from_s(1, s_2); /* <-, line 273 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 8:
                        {   int ret = slice_from_s(1, s_3); /* <-, line 274 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 9:
                        {   int ret = slice_from_s(1, s_4); /* <-, line 275 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 10:
                        {   int ret = slice_from_s(1, s_5); /* <-, line 276 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 11:
                        {   int ret = slice_from_s(1, s_6); /* <-, line 277 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 12:
                        {   int ret = slice_from_s(1, s_7); /* <-, line 278 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 13:
                        {   int ret = slice_from_s(1, s_8); /* <-, line 279 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 14:
                        {   int ret = slice_from_s(1, s_9); /* <-, line 280 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 15:
                        if (slice_del() == -1) return -1; /* delete, line 281 */
                        break;
                    case 16:
                        {   int ret = slice_from_s(2, s_10); /* <-, line 284 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 17:
                        {   int ret = slice_from_s(2, s_11); /* <-, line 285 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 18:
                        {   int ret = slice_from_s(2, s_12); /* <-, line 286 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 19:
                        {   int ret = slice_from_s(2, s_13); /* <-, line 287 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 20:
                        {   int ret = slice_from_s(2, s_14); /* <-, line 288 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 21:
                        {   int ret = slice_from_s(2, s_15); /* <-, line 289 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 22:
                        {   int ret = slice_from_s(2, s_16); /* <-, line 290 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 23:
                        {   int ret = slice_from_s(2, s_17); /* <-, line 291 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 24:
                        {   int ret = slice_from_s(2, s_18); /* <-, line 292 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 25:
                        {   int ret = slice_from_s(2, s_19); /* <-, line 293 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 26:
                        {   int ret = slice_from_s(2, s_20); /* <-, line 294 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 27:
                        {   int ret = slice_from_s(2, s_21); /* <-, line 295 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 28:
                        {   int ret = slice_from_s(2, s_22); /* <-, line 296 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 29:
                        {   int ret = slice_from_s(2, s_23); /* <-, line 297 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 30:
                        {   int ret = slice_from_s(2, s_24); /* <-, line 298 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 31:
                        {   int ret = slice_from_s(2, s_25); /* <-, line 299 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 32:
                        {   int ret = slice_from_s(2, s_26); /* <-, line 300 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 33:
                        {   int ret = slice_from_s(2, s_27); /* <-, line 301 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 34:
                        {   int ret = slice_from_s(2, s_28); /* <-, line 302 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 35:
                        {   int ret = slice_from_s(2, s_29); /* <-, line 303 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 36:
                        {   int ret = slice_from_s(2, s_30); /* <-, line 304 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 37:
                        {   int ret = slice_from_s(2, s_31); /* <-, line 305 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 38:
                        {   int ret = slice_from_s(2, s_32); /* <-, line 306 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 39:
                        {   int ret = slice_from_s(2, s_33); /* <-, line 307 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 40:
                        {   int ret = slice_from_s(2, s_34); /* <-, line 308 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 41:
                        {   int ret = slice_from_s(2, s_35); /* <-, line 309 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 42:
                        {   int ret = slice_from_s(2, s_36); /* <-, line 310 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 43:
                        {   int ret = slice_from_s(2, s_37); /* <-, line 311 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 44:
                        {   int ret = slice_from_s(2, s_38); /* <-, line 312 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 45:
                        {   int ret = slice_from_s(2, s_39); /* <-, line 313 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 46:
                        {   int ret = slice_from_s(2, s_40); /* <-, line 314 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 47:
                        {   int ret = slice_from_s(2, s_41); /* <-, line 315 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 48:
                        {   int ret = slice_from_s(2, s_42); /* <-, line 316 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 49:
                        {   int ret = slice_from_s(2, s_43); /* <-, line 317 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 50:
                        {   int ret = slice_from_s(2, s_44); /* <-, line 318 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 51:
                        {   int ret = slice_from_s(2, s_45); /* <-, line 319 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 52:
                        {   int ret = slice_from_s(4, s_46); /* <-, line 322 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 53:
                        {   int ret = slice_from_s(4, s_47); /* <-, line 323 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 54:
                        {   int ret = slice_from_s(4, s_48); /* <-, line 324 */
                            if (ret < 0) return ret;
                        }
                        break;
                    case 55:
                        {   int ret = slice_from_s(4, s_49); /* <-, line 325 */
                            if (ret < 0) return ret;
                        }
                        break;
                }
                goto lab0;
            lab1:
                c = c1;
                {   int ret = skip_utf8(p, c, 0, l, 1);
                    if (ret < 0) return 0;
                    c = ret; /* next, line 330 */
                }
            }
        lab0:
            ;
        }
    }
    return 1;
}

int Xapian::InternalStemArabic::r_Normalize_post() { /* forwardmode */
    int among_var;
    {   int c1 = c; /* do, line 336 */
        lb = c; c = l; /* backwards, line 338 */

        ket = c; /* [, line 339 */
        if (c - 1 <= lb || p[c - 1] >> 5 != 5 || !((124 >> (p[c - 1] & 0x1f)) & 1)) goto lab0; /* substring, line 339 */
        among_var = find_among_b(s_pool, a_1, 5, 0, 0);
        if (!(among_var)) goto lab0;
        bra = c; /* ], line 339 */
        switch (among_var) { /* among, line 339 */
            case 0: goto lab0;
            case 1:
                {   int ret = slice_from_s(2, s_50); /* <-, line 340 */
                    if (ret < 0) return ret;
                }
                break;
            case 2:
                {   int ret = slice_from_s(2, s_51); /* <-, line 341 */
                    if (ret < 0) return ret;
                }
                break;
            case 3:
                {   int ret = slice_from_s(2, s_52); /* <-, line 342 */
                    if (ret < 0) return ret;
                }
                break;
        }
        c = lb;
    lab0:
        c = c1;
    }
    {   int c2 = c; /* do, line 347 */
        {   int i; for (i = I_word_len; i > 0; i--) /* loop, line 347 */
            {                   {   int c3 = c; /* or, line 356 */
                    bra = c; /* [, line 350 */
                    if (c + 1 >= l || p[c + 1] >> 5 != 5 || !((124 >> (p[c + 1] & 0x1f)) & 1)) goto lab3; /* substring, line 350 */
                    among_var = find_among(s_pool, a_2, 5, 0, 0);
                    if (!(among_var)) goto lab3;
                    ket = c; /* ], line 350 */
                    switch (among_var) { /* among, line 350 */
                        case 0: goto lab3;
                        case 1:
                            {   int ret = slice_from_s(2, s_53); /* <-, line 351 */
                                if (ret < 0) return ret;
                            }
                            break;
                        case 2:
                            {   int ret = slice_from_s(2, s_54); /* <-, line 352 */
                                if (ret < 0) return ret;
                            }
                            break;
                        case 3:
                            {   int ret = slice_from_s(2, s_55); /* <-, line 353 */
                                if (ret < 0) return ret;
                            }
                            break;
                    }
                    goto lab2;
                lab3:
                    c = c3;
                    {   int ret = skip_utf8(p, c, 0, l, 1);
                        if (ret < 0) goto lab1;
                        c = ret; /* next, line 357 */
                    }
                }
            lab2:
                ;
            }
        }
    lab1:
        c = c2;
    }
    return 1;
}

int Xapian::InternalStemArabic::r_Checks1() { /* forwardmode */
    int among_var;
    I_word_len = len_utf8(p); /* $word_len = <integer expression>, line 363 */
    bra = c; /* [, line 364 */
    if (c + 3 >= l || (p[c + 3] != 132 && p[c + 3] != 167)) return 0; /* substring, line 364 */
    among_var = find_among(s_pool, a_3, 4, 0, 0);
    if (!(among_var)) return 0;
    ket = c; /* ], line 364 */
    switch (among_var) { /* among, line 364 */
        case 0: return 0;
        case 1:
            if (!(I_word_len > 4)) return 0; /* $word_len > <integer expression>, line 365 */
            B_is_noun = 1; /* set is_noun, line 365 */
            B_is_verb = 0; /* unset is_verb, line 365 */
            B_is_defined = 1; /* set is_defined, line 365 */
            break;
        case 2:
            if (!(I_word_len > 3)) return 0; /* $word_len > <integer expression>, line 366 */
            B_is_noun = 1; /* set is_noun, line 366 */
            B_is_verb = 0; /* unset is_verb, line 366 */
            B_is_defined = 1; /* set is_defined, line 366 */
            break;
    }
    return 1;
}

int Xapian::InternalStemArabic::r_Prefix_Step1() { /* forwardmode */
    int among_var;
    I_word_len = len_utf8(p); /* $word_len = <integer expression>, line 373 */
    bra = c; /* [, line 374 */
    if (c + 3 >= l || p[c + 3] >> 5 != 5 || !((188 >> (p[c + 3] & 0x1f)) & 1)) return 0; /* substring, line 374 */
    among_var = find_among(s_pool, a_4, 5, 0, 0);
    if (!(among_var)) return 0;
    ket = c; /* ], line 374 */
    switch (among_var) { /* among, line 374 */
        case 0: return 0;
        case 1:
            if (!(I_word_len > 3)) return 0; /* $word_len > <integer expression>, line 375 */
            {   int ret = slice_from_s(2, s_56); /* <-, line 375 */
                if (ret < 0) return ret;
            }
            break;
        case 2:
            if (!(I_word_len > 3)) return 0; /* $word_len > <integer expression>, line 376 */
            {   int ret = slice_from_s(2, s_57); /* <-, line 376 */
                if (ret < 0) return ret;
            }
            break;
        case 3:
            if (!(I_word_len > 3)) return 0; /* $word_len > <integer expression>, line 377 */
            {   int ret = slice_from_s(2, s_58); /* <-, line 377 */
                if (ret < 0) return ret;
            }
            break;
        case 4:
            if (!(I_word_len > 3)) return 0; /* $word_len > <integer expression>, line 378 */
            {   int ret = slice_from_s(2, s_59); /* <-, line 378 */
                if (ret < 0) return ret;
            }
            break;
        case 5:
            if (!(I_word_len > 3)) return 0; /* $word_len > <integer expression>, line 379 */
            {   int ret = slice_from_s(2, s_60); /* <-, line 379 */
                if (ret < 0) return ret;
            }
            break;
    }
    return 1;
}

int Xapian::InternalStemArabic::r_Prefix_Step2() { /* forwardmode */
    int among_var;
    I_word_len = len_utf8(p); /* $word_len = <integer expression>, line 385 */
    {   int c1 = c; /* not, line 386 */
        if (!(eq_s(4, s_61))) goto lab0; /* literal, line 386 */
        return 0;
    lab0:
        c = c1;
    }
    {   int c2 = c; /* not, line 387 */
        if (!(eq_s(4, s_62))) goto lab1; /* literal, line 387 */
        return 0;
    lab1:
        c = c2;
    }
    bra = c; /* [, line 388 */
    if (c + 1 >= l || (p[c + 1] != 129 && p[c + 1] != 136)) return 0; /* substring, line 388 */
    among_var = find_among(s_pool, a_5, 2, 0, 0);
    if (!(among_var)) return 0;
    ket = c; /* ], line 388 */
    switch (among_var) { /* among, line 388 */
        case 0: return 0;
        case 1:
            if (!(I_word_len > 3)) return 0; /* $word_len > <integer expression>, line 389 */
            if (slice_del() == -1) return -1; /* delete, line 389 */
            break;
        case 2:
            if (!(I_word_len > 3)) return 0; /* $word_len > <integer expression>, line 390 */
            if (slice_del() == -1) return -1; /* delete, line 390 */
            break;
    }
    return 1;
}

int Xapian::InternalStemArabic::r_Prefix_Step3a_Noun() { /* forwardmode */
    int among_var;
    I_word_len = len_utf8(p); /* $word_len = <integer expression>, line 395 */
    bra = c; /* [, line 396 */
    if (c + 3 >= l || (p[c + 3] != 132 && p[c + 3] != 167)) return 0; /* substring, line 396 */
    among_var = find_among(s_pool, a_6, 4, 0, 0);
    if (!(among_var)) return 0;
    ket = c; /* ], line 396 */
    switch (among_var) { /* among, line 396 */
        case 0: return 0;
        case 1:
            if (!(I_word_len > 5)) return 0; /* $word_len > <integer expression>, line 397 */
            if (slice_del() == -1) return -1; /* delete, line 397 */
            break;
        case 2:
            if (!(I_word_len > 4)) return 0; /* $word_len > <integer expression>, line 398 */
            if (slice_del() == -1) return -1; /* delete, line 398 */
            break;
    }
    return 1;
}

int Xapian::InternalStemArabic::r_Prefix_Step3b_Noun() { /* forwardmode */
    int among_var;
    I_word_len = len_utf8(p); /* $word_len = <integer expression>, line 403 */
    {   int c1 = c; /* not, line 404 */
        if (!(eq_s(4, s_63))) goto lab0; /* literal, line 404 */
        return 0;
    lab0:
        c = c1;
    }
    bra = c; /* [, line 405 */
    if (c + 1 >= l || (p[c + 1] != 168 && p[c + 1] != 131)) return 0; /* substring, line 405 */
    among_var = find_among(s_pool, a_7, 3, 0, 0);
    if (!(among_var)) return 0;
    ket = c; /* ], line 405 */
    switch (among_var) { /* among, line 405 */
        case 0: return 0;
        case 1:
            if (!(I_word_len > 3)) return 0; /* $word_len > <integer expression>, line 406 */
            if (slice_del() == -1) return -1; /* delete, line 406 */
            break;
        case 2:
            if (!(I_word_len > 3)) return 0; /* $word_len > <integer expression>, line 408 */
            {   int ret = slice_from_s(2, s_64); /* <-, line 408 */
                if (ret < 0) return ret;
            }
            break;
        case 3:
            if (!(I_word_len > 3)) return 0; /* $word_len > <integer expression>, line 409 */
            {   int ret = slice_from_s(2, s_65); /* <-, line 409 */
                if (ret < 0) return ret;
            }
            break;
    }
    return 1;
}

int Xapian::InternalStemArabic::r_Prefix_Step3_Verb() { /* forwardmode */
    int among_var;
    I_word_len = len_utf8(p); /* $word_len = <integer expression>, line 415 */
    bra = c; /* [, line 416 */
    among_var = find_among(s_pool, a_8, 4, 0, 0); /* substring, line 416 */
    if (!(among_var)) return 0;
    ket = c; /* ], line 416 */
    switch (among_var) { /* among, line 416 */
        case 0: return 0;
        case 1:
            if (!(I_word_len > 4)) return 0; /* $word_len > <integer expression>, line 418 */
            {   int ret = slice_from_s(2, s_66); /* <-, line 418 */
                if (ret < 0) return ret;
            }
            break;
        case 2:
            if (!(I_word_len > 4)) return 0; /* $word_len > <integer expression>, line 419 */
            {   int ret = slice_from_s(2, s_67); /* <-, line 419 */
                if (ret < 0) return ret;
            }
            break;
        case 3:
            if (!(I_word_len > 4)) return 0; /* $word_len > <integer expression>, line 420 */
            {   int ret = slice_from_s(2, s_68); /* <-, line 420 */
                if (ret < 0) return ret;
            }
            break;
        case 4:
            if (!(I_word_len > 4)) return 0; /* $word_len > <integer expression>, line 421 */
            {   int ret = slice_from_s(2, s_69); /* <-, line 421 */
                if (ret < 0) return ret;
            }
            break;
    }
    return 1;
}

int Xapian::InternalStemArabic::r_Prefix_Step4_Verb() { /* forwardmode */
    int among_var;
    I_word_len = len_utf8(p); /* $word_len = <integer expression>, line 426 */
    bra = c; /* [, line 427 */
    if (c + 5 >= l || p[c + 5] != 170) return 0; /* substring, line 427 */
    among_var = find_among(s_pool, a_9, 3, 0, 0);
    if (!(among_var)) return 0;
    ket = c; /* ], line 427 */
    switch (among_var) { /* among, line 427 */
        case 0: return 0;
        case 1:
            if (!(I_word_len > 4)) return 0; /* $word_len > <integer expression>, line 428 */
            B_is_verb = 1; /* set is_verb, line 428 */
            B_is_noun = 0; /* unset is_noun, line 428 */
            {   int ret = slice_from_s(6, s_70); /* <-, line 428 */
                if (ret < 0) return ret;
            }
            break;
    }
    return 1;
}

int Xapian::InternalStemArabic::r_Suffix_Noun_Step1a() { /* backwardmode */
    int among_var;
    I_word_len = len_utf8(p); /* $word_len = <integer expression>, line 436 */
    ket = c; /* [, line 437 */
    among_var = find_among_b(s_pool, a_10, 10, 0, 0); /* substring, line 437 */
    if (!(among_var)) return 0;
    bra = c; /* ], line 437 */
    switch (among_var) { /* among, line 437 */
        case 0: return 0;
        case 1:
            if (!(I_word_len >= 4)) return 0; /* $word_len >= <integer expression>, line 438 */
            if (slice_del() == -1) return -1; /* delete, line 438 */
            break;
        case 2:
            if (!(I_word_len >= 5)) return 0; /* $word_len >= <integer expression>, line 439 */
            if (slice_del() == -1) return -1; /* delete, line 439 */
            break;
        case 3:
            if (!(I_word_len >= 6)) return 0; /* $word_len >= <integer expression>, line 440 */
            if (slice_del() == -1) return -1; /* delete, line 440 */
            break;
    }
    return 1;
}

int Xapian::InternalStemArabic::r_Suffix_Noun_Step1b() { /* backwardmode */
    int among_var;
    I_word_len = len_utf8(p); /* $word_len = <integer expression>, line 444 */
    ket = c; /* [, line 445 */
    if (c - 1 <= lb || p[c - 1] != 134) return 0; /* substring, line 445 */
    among_var = find_among_b(s_pool, a_11, 1, 0, 0);
    if (!(among_var)) return 0;
    bra = c; /* ], line 445 */
    switch (among_var) { /* among, line 445 */
        case 0: return 0;
        case 1:
            if (!(I_word_len > 5)) return 0; /* $word_len > <integer expression>, line 446 */
            if (slice_del() == -1) return -1; /* delete, line 446 */
            break;
    }
    return 1;
}

int Xapian::InternalStemArabic::r_Suffix_Noun_Step2a() { /* backwardmode */
    int among_var;
    I_word_len = len_utf8(p); /* $word_len = <integer expression>, line 451 */
    ket = c; /* [, line 452 */
    among_var = find_among_b(s_pool, a_12, 3, 0, 0); /* substring, line 452 */
    if (!(among_var)) return 0;
    bra = c; /* ], line 452 */
    switch (among_var) { /* among, line 452 */
        case 0: return 0;
        case 1:
            if (!(I_word_len > 4)) return 0; /* $word_len > <integer expression>, line 453 */
            if (slice_del() == -1) return -1; /* delete, line 453 */
            break;
    }
    return 1;
}

int Xapian::InternalStemArabic::r_Suffix_Noun_Step2b() { /* backwardmode */
    int among_var;
    I_word_len = len_utf8(p); /* $word_len = <integer expression>, line 458 */
    ket = c; /* [, line 459 */
    if (c - 3 <= lb || p[c - 1] != 170) return 0; /* substring, line 459 */
    among_var = find_among_b(s_pool, a_13, 1, 0, 0);
    if (!(among_var)) return 0;
    bra = c; /* ], line 459 */
    switch (among_var) { /* among, line 459 */
        case 0: return 0;
        case 1:
            if (!(I_word_len >= 5)) return 0; /* $word_len >= <integer expression>, line 460 */
            if (slice_del() == -1) return -1; /* delete, line 460 */
            break;
    }
    return 1;
}

int Xapian::InternalStemArabic::r_Suffix_Noun_Step2c1() { /* backwardmode */
    int among_var;
    I_word_len = len_utf8(p); /* $word_len = <integer expression>, line 465 */
    ket = c; /* [, line 466 */
    if (c - 1 <= lb || p[c - 1] != 170) return 0; /* substring, line 466 */
    among_var = find_among_b(s_pool, a_14, 1, 0, 0);
    if (!(among_var)) return 0;
    bra = c; /* ], line 466 */
    switch (among_var) { /* among, line 466 */
        case 0: return 0;
        case 1:
            if (!(I_word_len >= 4)) return 0; /* $word_len >= <integer expression>, line 467 */
            if (slice_del() == -1) return -1; /* delete, line 467 */
            break;
    }
    return 1;
}

int Xapian::InternalStemArabic::r_Suffix_Noun_Step2c2() { /* backwardmode */
    int among_var;
    I_word_len = len_utf8(p); /* $word_len = <integer expression>, line 471 */
    ket = c; /* [, line 472 */
    if (c - 1 <= lb || p[c - 1] != 169) return 0; /* substring, line 472 */
    among_var = find_among_b(s_pool, a_15, 1, 0, 0);
    if (!(among_var)) return 0;
    bra = c; /* ], line 472 */
    switch (among_var) { /* among, line 472 */
        case 0: return 0;
        case 1:
            if (!(I_word_len >= 4)) return 0; /* $word_len >= <integer expression>, line 473 */
            if (slice_del() == -1) return -1; /* delete, line 473 */
            break;
    }
    return 1;
}

int Xapian::InternalStemArabic::r_Suffix_Noun_Step3() { /* backwardmode */
    int among_var;
    I_word_len = len_utf8(p); /* $word_len = <integer expression>, line 477 */
    ket = c; /* [, line 478 */
    if (c - 1 <= lb || p[c - 1] != 138) return 0; /* substring, line 478 */
    among_var = find_among_b(s_pool, a_16, 1, 0, 0);
    if (!(among_var)) return 0;
    bra = c; /* ], line 478 */
    switch (among_var) { /* among, line 478 */
        case 0: return 0;
        case 1:
            if (!(I_word_len >= 3)) return 0; /* $word_len >= <integer expression>, line 479 */
            if (slice_del() == -1) return -1; /* delete, line 479 */
            break;
    }
    return 1;
}

int Xapian::InternalStemArabic::r_Suffix_Verb_Step1() { /* backwardmode */
    int among_var;
    I_word_len = len_utf8(p); /* $word_len = <integer expression>, line 484 */
    ket = c; /* [, line 485 */
    among_var = find_among_b(s_pool, a_17, 12, 0, 0); /* substring, line 485 */
    if (!(among_var)) return 0;
    bra = c; /* ], line 485 */
    switch (among_var) { /* among, line 485 */
        case 0: return 0;
        case 1:
            if (!(I_word_len >= 4)) return 0; /* $word_len >= <integer expression>, line 486 */
            if (slice_del() == -1) return -1; /* delete, line 486 */
            break;
        case 2:
            if (!(I_word_len >= 5)) return 0; /* $word_len >= <integer expression>, line 487 */
            if (slice_del() == -1) return -1; /* delete, line 487 */
            break;
        case 3:
            if (!(I_word_len >= 6)) return 0; /* $word_len >= <integer expression>, line 488 */
            if (slice_del() == -1) return -1; /* delete, line 488 */
            break;
    }
    return 1;
}

int Xapian::InternalStemArabic::r_Suffix_Verb_Step2a() { /* backwardmode */
    int among_var;
    I_word_len = len_utf8(p); /* $word_len = <integer expression>, line 492 */
    ket = c; /* [, line 493 */
    among_var = find_among_b(s_pool, a_18, 11, 0, 0); /* substring, line 493 */
    if (!(among_var)) return 0;
    bra = c; /* ], line 493 */
    switch (among_var) { /* among, line 493 */
        case 0: return 0;
        case 1:
            if (!(I_word_len >= 4)) return 0; /* $word_len >= <integer expression>, line 494 */
            if (slice_del() == -1) return -1; /* delete, line 494 */
            break;
        case 2:
            if (!(I_word_len >= 4)) return 0; /* $word_len >= <integer expression>, line 495 */
            if (slice_del() == -1) return -1; /* delete, line 495 */
            break;
        case 3:
            if (!(I_word_len >= 5)) return 0; /* $word_len >= <integer expression>, line 496 */
            if (slice_del() == -1) return -1; /* delete, line 496 */
            break;
        case 4:
            if (!(I_word_len > 5)) return 0; /* $word_len > <integer expression>, line 497 */
            if (slice_del() == -1) return -1; /* delete, line 497 */
            break;
        case 5:
            if (!(I_word_len >= 6)) return 0; /* $word_len >= <integer expression>, line 498 */
            if (slice_del() == -1) return -1; /* delete, line 498 */
            break;
    }
    return 1;
}

int Xapian::InternalStemArabic::r_Suffix_Verb_Step2b() { /* backwardmode */
    int among_var;
    I_word_len = len_utf8(p); /* $word_len = <integer expression>, line 503 */
    ket = c; /* [, line 504 */
    if (c - 3 <= lb || (p[c - 1] != 133 && p[c - 1] != 167)) return 0; /* substring, line 504 */
    among_var = find_among_b(s_pool, a_19, 2, 0, 0);
    if (!(among_var)) return 0;
    bra = c; /* ], line 504 */
    switch (among_var) { /* among, line 504 */
        case 0: return 0;
        case 1:
            if (!(I_word_len >= 5)) return 0; /* $word_len >= <integer expression>, line 505 */
            if (slice_del() == -1) return -1; /* delete, line 505 */
            break;
    }
    return 1;
}

int Xapian::InternalStemArabic::r_Suffix_Verb_Step2c() { /* backwardmode */
    int among_var;
    I_word_len = len_utf8(p); /* $word_len = <integer expression>, line 511 */
    ket = c; /* [, line 512 */
    if (c - 1 <= lb || p[c - 1] != 136) return 0; /* substring, line 512 */
    among_var = find_among_b(s_pool, a_20, 2, 0, 0);
    if (!(among_var)) return 0;
    bra = c; /* ], line 512 */
    switch (among_var) { /* among, line 512 */
        case 0: return 0;
        case 1:
            if (!(I_word_len >= 4)) return 0; /* $word_len >= <integer expression>, line 513 */
            if (slice_del() == -1) return -1; /* delete, line 513 */
            break;
        case 2:
            if (!(I_word_len >= 6)) return 0; /* $word_len >= <integer expression>, line 514 */
            if (slice_del() == -1) return -1; /* delete, line 514 */
            break;
    }
    return 1;
}

int Xapian::InternalStemArabic::r_Suffix_All_alef_maqsura() { /* backwardmode */
    int among_var;
    I_word_len = len_utf8(p); /* $word_len = <integer expression>, line 519 */
    ket = c; /* [, line 520 */
    if (c - 1 <= lb || p[c - 1] != 137) return 0; /* substring, line 520 */
    among_var = find_among_b(s_pool, a_21, 1, 0, 0);
    if (!(among_var)) return 0;
    bra = c; /* ], line 520 */
    switch (among_var) { /* among, line 520 */
        case 0: return 0;
        case 1:
            {   int ret = slice_from_s(2, s_71); /* <-, line 521 */
                if (ret < 0) return ret;
            }
            break;
    }
    return 1;
}

int Xapian::InternalStemArabic::stem() { /* forwardmode */
    B_is_noun = 1; /* set is_noun, line 530 */
    B_is_verb = 1; /* set is_verb, line 531 */
    B_is_defined = 0; /* unset is_defined, line 532 */
    {   int c1 = c; /* do, line 535 */
        {   int ret = r_Checks1(); /* call Checks1, line 535 */
            if (ret == 0) goto lab0;
            if (ret < 0) return ret;
        }
    lab0:
        c = c1;
    }
    {   int c2 = c; /* do, line 538 */
        {   int ret = r_Normalize_pre(); /* call Normalize_pre, line 538 */
            if (ret == 0) goto lab1;
            if (ret < 0) return ret;
        }
    lab1:
        c = c2;
    }
    lb = c; c = l; /* backwards, line 541 */

    {   int m3 = l - c; /*(void)m3*/; /* do, line 543 */
        {   int m4 = l - c; /*(void)m4*/; /* or, line 557 */
            if (!(B_is_verb)) goto lab4; /* Boolean test is_verb, line 546 */
            {   int m5 = l - c; /*(void)m5*/; /* or, line 552 */
                {   int i = 1;
                    while(1) { /* atleast, line 549 */
                        int m6 = l - c; /*(void)m6*/;
                        {   int ret = r_Suffix_Verb_Step1(); /* call Suffix_Verb_Step1, line 549 */
                            if (ret == 0) goto lab7;
                            if (ret < 0) return ret;
                        }
                        i--;
                        continue;
                    lab7:
                        c = l - m6;
                        break;
                    }
                    if (i > 0) goto lab6;
                }
                {   int m7 = l - c; /*(void)m7*/; /* or, line 550 */
                    {   int ret = r_Suffix_Verb_Step2a(); /* call Suffix_Verb_Step2a, line 550 */
                        if (ret == 0) goto lab9;
                        if (ret < 0) return ret;
                    }
                    goto lab8;
                lab9:
                    c = l - m7;
                    {   int ret = r_Suffix_Verb_Step2c(); /* call Suffix_Verb_Step2c, line 550 */
                        if (ret == 0) goto lab10;
                        if (ret < 0) return ret;
                    }
                    goto lab8;
                lab10:
                    c = l - m7;
                    {   int ret = skip_utf8(p, c, lb, 0, -1);
                        if (ret < 0) goto lab6;
                        c = ret; /* next, line 550 */
                    }
                }
            lab8:
                goto lab5;
            lab6:
                c = l - m5;
                {   int ret = r_Suffix_Verb_Step2b(); /* call Suffix_Verb_Step2b, line 552 */
                    if (ret == 0) goto lab11;
                    if (ret < 0) return ret;
                }
                goto lab5;
            lab11:
                c = l - m5;
                {   int ret = r_Suffix_Verb_Step2a(); /* call Suffix_Verb_Step2a, line 553 */
                    if (ret == 0) goto lab4;
                    if (ret < 0) return ret;
                }
            }
        lab5:
            goto lab3;
        lab4:
            c = l - m4;
            if (!(B_is_noun)) goto lab12; /* Boolean test is_noun, line 558 */
            {   int m8 = l - c; /*(void)m8*/; /* try, line 561 */
                {   int m9 = l - c; /*(void)m9*/; /* or, line 563 */
                    {   int ret = r_Suffix_Noun_Step2c2(); /* call Suffix_Noun_Step2c2, line 562 */
                        if (ret == 0) goto lab15;
                        if (ret < 0) return ret;
                    }
                    goto lab14;
                lab15:
                    c = l - m9;
                    /* not, line 563 */
                    if (!(B_is_defined)) goto lab17; /* Boolean test is_defined, line 563 */
                    goto lab16;
                lab17:
                    {   int ret = r_Suffix_Noun_Step1a(); /* call Suffix_Noun_Step1a, line 563 */
                        if (ret == 0) goto lab16;
                        if (ret < 0) return ret;
                    }
                    {   int m10 = l - c; /*(void)m10*/; /* or, line 565 */
                        {   int ret = r_Suffix_Noun_Step2a(); /* call Suffix_Noun_Step2a, line 564 */
                            if (ret == 0) goto lab19;
                            if (ret < 0) return ret;
                        }
                        goto lab18;
                    lab19:
                        c = l - m10;
                        {   int ret = r_Suffix_Noun_Step2b(); /* call Suffix_Noun_Step2b, line 565 */
                            if (ret == 0) goto lab20;
                            if (ret < 0) return ret;
                        }
                        goto lab18;
                    lab20:
                        c = l - m10;
                        {   int ret = r_Suffix_Noun_Step2c1(); /* call Suffix_Noun_Step2c1, line 566 */
                            if (ret == 0) goto lab21;
                            if (ret < 0) return ret;
                        }
                        goto lab18;
                    lab21:
                        c = l - m10;
                        {   int ret = skip_utf8(p, c, lb, 0, -1);
                            if (ret < 0) goto lab16;
                            c = ret; /* next, line 567 */
                        }
                    }
                lab18:
                    goto lab14;
                lab16:
                    c = l - m9;
                    {   int ret = r_Suffix_Noun_Step1b(); /* call Suffix_Noun_Step1b, line 568 */
                        if (ret == 0) goto lab22;
                        if (ret < 0) return ret;
                    }
                    {   int m11 = l - c; /*(void)m11*/; /* or, line 570 */
                        {   int ret = r_Suffix_Noun_Step2a(); /* call Suffix_Noun_Step2a, line 569 */
                            if (ret == 0) goto lab24;
                            if (ret < 0) return ret;
                        }
                        goto lab23;
                    lab24:
                        c = l - m11;
                        {   int ret = r_Suffix_Noun_Step2b(); /* call Suffix_Noun_Step2b, line 570 */
                            if (ret == 0) goto lab25;
                            if (ret < 0) return ret;
                        }
                        goto lab23;
                    lab25:
                        c = l - m11;
                        {   int ret = r_Suffix_Noun_Step2c1(); /* call Suffix_Noun_Step2c1, line 571 */
                            if (ret == 0) goto lab22;
                            if (ret < 0) return ret;
                        }
                    }
                lab23:
                    goto lab14;
                lab22:
                    c = l - m9;
                    /* not, line 572 */
                    if (!(B_is_defined)) goto lab27; /* Boolean test is_defined, line 572 */
                    goto lab26;
                lab27:
                    {   int ret = r_Suffix_Noun_Step2a(); /* call Suffix_Noun_Step2a, line 572 */
                        if (ret == 0) goto lab26;
                        if (ret < 0) return ret;
                    }
                    goto lab14;
                lab26:
                    c = l - m9;
                    {   int ret = r_Suffix_Noun_Step2b(); /* call Suffix_Noun_Step2b, line 573 */
                        if (ret == 0) { c = l - m8; goto lab13; }
                        if (ret < 0) return ret;
                    }
                }
            lab14:
            lab13:
                ;
            }
            {   int ret = r_Suffix_Noun_Step3(); /* call Suffix_Noun_Step3, line 575 */
                if (ret == 0) goto lab12;
                if (ret < 0) return ret;
            }
            goto lab3;
        lab12:
            c = l - m4;
            {   int ret = r_Suffix_All_alef_maqsura(); /* call Suffix_All_alef_maqsura, line 581 */
                if (ret == 0) goto lab2;
                if (ret < 0) return ret;
            }
        }
    lab3:
    lab2:
        c = l - m3;
    }
    c = lb;
    {   int c12 = c; /* do, line 586 */
        {   int c13 = c; /* try, line 587 */
            {   int ret = r_Prefix_Step1(); /* call Prefix_Step1, line 587 */
                if (ret == 0) { c = c13; goto lab29; }
                if (ret < 0) return ret;
            }
        lab29:
            ;
        }
        {   int c14 = c; /* try, line 588 */
            {   int ret = r_Prefix_Step2(); /* call Prefix_Step2, line 588 */
                if (ret == 0) { c = c14; goto lab30; }
                if (ret < 0) return ret;
            }
        lab30:
            ;
        }
        {   int c15 = c; /* or, line 590 */
            {   int ret = r_Prefix_Step3a_Noun(); /* call Prefix_Step3a_Noun, line 589 */
                if (ret == 0) goto lab32;
                if (ret < 0) return ret;
            }
            goto lab31;
        lab32:
            c = c15;
            if (!(B_is_noun)) goto lab33; /* Boolean test is_noun, line 590 */
            {   int ret = r_Prefix_Step3b_Noun(); /* call Prefix_Step3b_Noun, line 590 */
                if (ret == 0) goto lab33;
                if (ret < 0) return ret;
            }
            goto lab31;
        lab33:
            c = c15;
            if (!(B_is_verb)) goto lab28; /* Boolean test is_verb, line 591 */
            {   int c16 = c; /* try, line 591 */
                {   int ret = r_Prefix_Step3_Verb(); /* call Prefix_Step3_Verb, line 591 */
                    if (ret == 0) { c = c16; goto lab34; }
                    if (ret < 0) return ret;
                }
            lab34:
                ;
            }
            {   int ret = r_Prefix_Step4_Verb(); /* call Prefix_Step4_Verb, line 591 */
                if (ret == 0) goto lab28;
                if (ret < 0) return ret;
            }
        }
    lab31:
    lab28:
        c = c12;
    }
    {   int c17 = c; /* do, line 596 */
        {   int ret = r_Normalize_post(); /* call Normalize_post, line 596 */
            if (ret == 0) goto lab35;
            if (ret < 0) return ret;
        }
    lab35:
        c = c17;
    }
    return 1;
}

Xapian::InternalStemArabic::InternalStemArabic()
    : B_is_defined(0), B_is_verb(0), B_is_noun(0), I_word_len(0)
{
}

Xapian::InternalStemArabic::~InternalStemArabic()
{
}

std::string
Xapian::InternalStemArabic::get_description() const
{
    return "arabic";
}
