in src/backend/snowball/libstemmer/stem_UTF_8_arabic.c [1426:1671]
extern int arabic_UTF_8_stem(struct SN_env * z) {
z->I[2] = 1;
z->I[1] = 1;
z->I[0] = 0;
{ int c1 = z->c;
{ int ret = r_Checks1(z);
if (ret < 0) return ret;
}
z->c = c1;
}
{ int ret = r_Normalize_pre(z);
if (ret < 0) return ret;
}
z->lb = z->c; z->c = z->l;
{ int m2 = z->l - z->c; (void)m2;
{ int m3 = z->l - z->c; (void)m3;
if (!(z->I[1])) goto lab2;
{ int m4 = z->l - z->c; (void)m4;
{ int i = 1;
while(1) {
int m5 = z->l - z->c; (void)m5;
{ int ret = r_Suffix_Verb_Step1(z);
if (ret == 0) goto lab5;
if (ret < 0) return ret;
}
i--;
continue;
lab5:
z->c = z->l - m5;
break;
}
if (i > 0) goto lab4;
}
{ int m6 = z->l - z->c; (void)m6;
{ int ret = r_Suffix_Verb_Step2a(z);
if (ret == 0) goto lab7;
if (ret < 0) return ret;
}
goto lab6;
lab7:
z->c = z->l - m6;
{ int ret = r_Suffix_Verb_Step2c(z);
if (ret == 0) goto lab8;
if (ret < 0) return ret;
}
goto lab6;
lab8:
z->c = z->l - m6;
{ int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
if (ret < 0) goto lab4;
z->c = ret;
}
}
lab6:
goto lab3;
lab4:
z->c = z->l - m4;
{ int ret = r_Suffix_Verb_Step2b(z);
if (ret == 0) goto lab9;
if (ret < 0) return ret;
}
goto lab3;
lab9:
z->c = z->l - m4;
{ int ret = r_Suffix_Verb_Step2a(z);
if (ret == 0) goto lab2;
if (ret < 0) return ret;
}
}
lab3:
goto lab1;
lab2:
z->c = z->l - m3;
if (!(z->I[2])) goto lab10;
{ int m7 = z->l - z->c; (void)m7;
{ int m8 = z->l - z->c; (void)m8;
{ int ret = r_Suffix_Noun_Step2c2(z);
if (ret == 0) goto lab13;
if (ret < 0) return ret;
}
goto lab12;
lab13:
z->c = z->l - m8;
if (!(z->I[0])) goto lab15;
goto lab14;
lab15:
{ int ret = r_Suffix_Noun_Step1a(z);
if (ret == 0) goto lab14;
if (ret < 0) return ret;
}
{ int m9 = z->l - z->c; (void)m9;
{ int ret = r_Suffix_Noun_Step2a(z);
if (ret == 0) goto lab17;
if (ret < 0) return ret;
}
goto lab16;
lab17:
z->c = z->l - m9;
{ int ret = r_Suffix_Noun_Step2b(z);
if (ret == 0) goto lab18;
if (ret < 0) return ret;
}
goto lab16;
lab18:
z->c = z->l - m9;
{ int ret = r_Suffix_Noun_Step2c1(z);
if (ret == 0) goto lab19;
if (ret < 0) return ret;
}
goto lab16;
lab19:
z->c = z->l - m9;
{ int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
if (ret < 0) goto lab14;
z->c = ret;
}
}
lab16:
goto lab12;
lab14:
z->c = z->l - m8;
{ int ret = r_Suffix_Noun_Step1b(z);
if (ret == 0) goto lab20;
if (ret < 0) return ret;
}
{ int m10 = z->l - z->c; (void)m10;
{ int ret = r_Suffix_Noun_Step2a(z);
if (ret == 0) goto lab22;
if (ret < 0) return ret;
}
goto lab21;
lab22:
z->c = z->l - m10;
{ int ret = r_Suffix_Noun_Step2b(z);
if (ret == 0) goto lab23;
if (ret < 0) return ret;
}
goto lab21;
lab23:
z->c = z->l - m10;
{ int ret = r_Suffix_Noun_Step2c1(z);
if (ret == 0) goto lab20;
if (ret < 0) return ret;
}
}
lab21:
goto lab12;
lab20:
z->c = z->l - m8;
if (!(z->I[0])) goto lab25;
goto lab24;
lab25:
{ int ret = r_Suffix_Noun_Step2a(z);
if (ret == 0) goto lab24;
if (ret < 0) return ret;
}
goto lab12;
lab24:
z->c = z->l - m8;
{ int ret = r_Suffix_Noun_Step2b(z);
if (ret == 0) { z->c = z->l - m7; goto lab11; }
if (ret < 0) return ret;
}
}
lab12:
lab11:
;
}
{ int ret = r_Suffix_Noun_Step3(z);
if (ret == 0) goto lab10;
if (ret < 0) return ret;
}
goto lab1;
lab10:
z->c = z->l - m3;
{ int ret = r_Suffix_All_alef_maqsura(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
}
lab1:
lab0:
z->c = z->l - m2;
}
z->c = z->lb;
{ int c11 = z->c;
{ int c12 = z->c;
{ int ret = r_Prefix_Step1(z);
if (ret == 0) { z->c = c12; goto lab27; }
if (ret < 0) return ret;
}
lab27:
;
}
{ int c13 = z->c;
{ int ret = r_Prefix_Step2(z);
if (ret == 0) { z->c = c13; goto lab28; }
if (ret < 0) return ret;
}
lab28:
;
}
{ int c14 = z->c;
{ int ret = r_Prefix_Step3a_Noun(z);
if (ret == 0) goto lab30;
if (ret < 0) return ret;
}
goto lab29;
lab30:
z->c = c14;
if (!(z->I[2])) goto lab31;
{ int ret = r_Prefix_Step3b_Noun(z);
if (ret == 0) goto lab31;
if (ret < 0) return ret;
}
goto lab29;
lab31:
z->c = c14;
if (!(z->I[1])) goto lab26;
{ int c15 = z->c;
{ int ret = r_Prefix_Step3_Verb(z);
if (ret == 0) { z->c = c15; goto lab32; }
if (ret < 0) return ret;
}
lab32:
;
}
{ int ret = r_Prefix_Step4_Verb(z);
if (ret == 0) goto lab26;
if (ret < 0) return ret;
}
}
lab29:
lab26:
z->c = c11;
}
{ int ret = r_Normalize_post(z);
if (ret < 0) return ret;
}
return 1;
}