static int r_fix_ending()

in src/backend/snowball/libstemmer/stem_UTF_8_tamil.c [770:1002]


static int r_fix_ending(struct SN_env * z) {
    if (!(len_utf8(z->p) > 3)) return 0;
    z->lb = z->c; z->c = z->l;

    {   int m1 = z->l - z->c; (void)m1;
        z->ket = z->c;
        if (z->c - 5 <= z->lb || (z->p[z->c - 1] != 141 && z->p[z->c - 1] != 164)) goto lab1;
        if (!(find_among_b(z, a_1, 3))) goto lab1;
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
        goto lab0;
    lab1:
        z->c = z->l - m1;
        z->ket = z->c;
        if (!(eq_s_b(z, 6, s_14))) goto lab2;
        {   int m_test2 = z->l - z->c;
            if (!(find_among_b(z, a_2, 3))) goto lab2;
            z->c = z->l - m_test2;
        }
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
        goto lab0;
    lab2:
        z->c = z->l - m1;
        z->ket = z->c;
        {   int m3 = z->l - z->c; (void)m3;
            if (!(eq_s_b(z, 12, s_15))) goto lab5;
            goto lab4;
        lab5:
            z->c = z->l - m3;
            if (!(eq_s_b(z, 12, s_16))) goto lab3;
        }
    lab4:
        z->bra = z->c;
        {   int ret = slice_from_s(z, 6, s_17);
            if (ret < 0) return ret;
        }
        goto lab0;
    lab3:
        z->c = z->l - m1;
        z->ket = z->c;
        if (!(eq_s_b(z, 12, s_18))) goto lab6;
        z->bra = z->c;
        {   int ret = slice_from_s(z, 6, s_19);
            if (ret < 0) return ret;
        }
        goto lab0;
    lab6:
        z->c = z->l - m1;
        z->ket = z->c;
        if (!(eq_s_b(z, 12, s_20))) goto lab7;
        z->bra = z->c;
        {   int ret = slice_from_s(z, 6, s_21);
            if (ret < 0) return ret;
        }
        goto lab0;
    lab7:
        z->c = z->l - m1;
        z->ket = z->c;
        if (!(eq_s_b(z, 12, s_22))) goto lab8;
        z->bra = z->c;
        {   int ret = slice_from_s(z, 6, s_23);
            if (ret < 0) return ret;
        }
        goto lab0;
    lab8:
        z->c = z->l - m1;
        if (!(z->I[0])) goto lab9;
        z->ket = z->c;
        if (!(eq_s_b(z, 12, s_24))) goto lab9;
        {   int m_test4 = z->l - z->c;
            {   int m5 = z->l - z->c; (void)m5;
                if (!(eq_s_b(z, 3, s_25))) goto lab10;
                goto lab9;
            lab10:
                z->c = z->l - m5;
            }
            z->c = z->l - m_test4;
        }
        z->bra = z->c;
        {   int ret = slice_from_s(z, 6, s_26);
            if (ret < 0) return ret;
        }
        z->bra = z->c;
        goto lab0;
    lab9:
        z->c = z->l - m1;
        z->ket = z->c;
        {   int m6 = z->l - z->c; (void)m6;
            if (!(eq_s_b(z, 9, s_27))) goto lab13;
            goto lab12;
        lab13:
            z->c = z->l - m6;
            if (!(eq_s_b(z, 15, s_28))) goto lab11;
        }
    lab12:
        z->bra = z->c;
        {   int ret = slice_from_s(z, 3, s_29);
            if (ret < 0) return ret;
        }
        goto lab0;
    lab11:
        z->c = z->l - m1;
        z->ket = z->c;
        if (!(eq_s_b(z, 3, s_30))) goto lab14;
        if (!(find_among_b(z, a_3, 6))) goto lab14;
        if (!(eq_s_b(z, 3, s_31))) goto lab14;
        if (!(find_among_b(z, a_4, 6))) goto lab14;
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
        goto lab0;
    lab14:
        z->c = z->l - m1;
        z->ket = z->c;
        if (!(eq_s_b(z, 9, s_32))) goto lab15;
        z->bra = z->c;
        {   int ret = slice_from_s(z, 3, s_33);
            if (ret < 0) return ret;
        }
        goto lab0;
    lab15:
        z->c = z->l - m1;
        z->ket = z->c;
        if (!(eq_s_b(z, 3, s_34))) goto lab16;
        if (!(find_among_b(z, a_5, 6))) goto lab16;
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
        goto lab0;
    lab16:
        z->c = z->l - m1;
        z->ket = z->c;
        if (!(eq_s_b(z, 3, s_35))) goto lab17;
        {   int m7 = z->l - z->c; (void)m7;
            if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 5 || !((4030464 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab19;
            if (!(find_among_b(z, a_6, 6))) goto lab19;
            goto lab18;
        lab19:
            z->c = z->l - m7;
            if (!(find_among_b(z, a_7, 6))) goto lab17;
        }
    lab18:
        if (!(eq_s_b(z, 3, s_36))) goto lab17;
        z->bra = z->c;
        {   int ret = slice_from_s(z, 3, s_37);
            if (ret < 0) return ret;
        }
        goto lab0;
    lab17:
        z->c = z->l - m1;
        z->ket = z->c;
        if (!(find_among_b(z, a_8, 3))) goto lab20;
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
        goto lab0;
    lab20:
        z->c = z->l - m1;
        z->ket = z->c;
        if (!(eq_s_b(z, 6, s_38))) goto lab21;
        {   int m_test8 = z->l - z->c;
            {   int m9 = z->l - z->c; (void)m9;
                if (!(find_among_b(z, a_9, 8))) goto lab22;
                goto lab21;
            lab22:
                z->c = z->l - m9;
            }
            z->c = z->l - m_test8;
        }
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
        goto lab0;
    lab21:
        z->c = z->l - m1;
        z->ket = z->c;
        if (!(eq_s_b(z, 6, s_39))) goto lab23;
        {   int m_test10 = z->l - z->c;
            {   int m11 = z->l - z->c; (void)m11;
                if (!(eq_s_b(z, 3, s_40))) goto lab24;
                goto lab23;
            lab24:
                z->c = z->l - m11;
            }
            z->c = z->l - m_test10;
        }
        z->bra = z->c;
        {   int ret = slice_from_s(z, 6, s_41);
            if (ret < 0) return ret;
        }
        goto lab0;
    lab23:
        z->c = z->l - m1;
        z->ket = z->c;
        if (!(eq_s_b(z, 6, s_42))) goto lab25;
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
        goto lab0;
    lab25:
        z->c = z->l - m1;
        z->ket = z->c;
        if (!(eq_s_b(z, 3, s_43))) return 0;
        {   int m_test12 = z->l - z->c;
            {   int m13 = z->l - z->c; (void)m13;
                if (!(find_among_b(z, a_10, 8))) goto lab27;
                goto lab26;
            lab27:
                z->c = z->l - m13;
                if (!(eq_s_b(z, 3, s_44))) return 0;
            }
        lab26:
            z->c = z->l - m_test12;
        }
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
    }
lab0:
    z->c = z->lb;
    return 1;
}