in src/Lucene.Net.Analysis.Common/Tartarus/Snowball/Ext/German2Stemmer.cs [525:823]
private bool r_standard_suffix()
{
int among_var;
int v_1;
int v_2;
int v_3;
int v_4;
int v_5;
int v_6;
int v_7;
int v_8;
int v_9;
// (, line 79
// do, line 80
v_1 = m_limit - m_cursor;
do
{
// (, line 80
// [, line 81
m_ket = m_cursor;
// substring, line 81
among_var = FindAmongB(a_2, 7);
if (among_var == 0)
{
goto lab0;
}
// ], line 81
m_bra = m_cursor;
// call R1, line 81
if (!r_R1())
{
goto lab0;
}
switch (among_var)
{
case 0:
goto lab0;
case 1:
// (, line 83
// delete, line 83
SliceDel();
break;
case 2:
// (, line 86
if (!(InGroupingB(g_s_ending, 98, 116)))
{
goto lab0;
}
// delete, line 86
SliceDel();
break;
}
} while (false);
lab0:
m_cursor = m_limit - v_1;
// do, line 90
v_2 = m_limit - m_cursor;
do
{
// (, line 90
// [, line 91
m_ket = m_cursor;
// substring, line 91
among_var = FindAmongB(a_3, 4);
if (among_var == 0)
{
goto lab1;
}
// ], line 91
m_bra = m_cursor;
// call R1, line 91
if (!r_R1())
{
goto lab1;
}
switch (among_var)
{
case 0:
goto lab1;
case 1:
// (, line 93
// delete, line 93
SliceDel();
break;
case 2:
// (, line 96
if (!(InGroupingB(g_st_ending, 98, 116)))
{
goto lab1;
}
// hop, line 96
{
int c = m_cursor - 3;
if (m_limit_backward > c || c > m_limit)
{
goto lab1;
}
m_cursor = c;
}
// delete, line 96
SliceDel();
break;
}
} while (false);
lab1:
m_cursor = m_limit - v_2;
// do, line 100
v_3 = m_limit - m_cursor;
do
{
// (, line 100
// [, line 101
m_ket = m_cursor;
// substring, line 101
among_var = FindAmongB(a_5, 8);
if (among_var == 0)
{
goto lab2;
}
// ], line 101
m_bra = m_cursor;
// call R2, line 101
if (!r_R2())
{
goto lab2;
}
switch (among_var)
{
case 0:
goto lab2;
case 1:
// (, line 103
// delete, line 103
SliceDel();
// try, line 104
v_4 = m_limit - m_cursor;
do
{
// (, line 104
// [, line 104
m_ket = m_cursor;
// literal, line 104
if (!(Eq_S_B(2, "ig")))
{
m_cursor = m_limit - v_4;
goto lab3;
}
// ], line 104
m_bra = m_cursor;
// not, line 104
{
v_5 = m_limit - m_cursor;
do
{
// literal, line 104
if (!(Eq_S_B(1, "e")))
{
goto lab4;
}
m_cursor = m_limit - v_4;
goto lab3;
} while (false);
lab4:
m_cursor = m_limit - v_5;
}
// call R2, line 104
if (!r_R2())
{
m_cursor = m_limit - v_4;
goto lab3;
}
// delete, line 104
SliceDel();
} while (false);
lab3:
break;
case 2:
// (, line 107
// not, line 107
{
v_6 = m_limit - m_cursor;
do
{
// literal, line 107
if (!(Eq_S_B(1, "e")))
{
goto lab5;
}
goto lab2;
} while (false);
lab5:
m_cursor = m_limit - v_6;
}
// delete, line 107
SliceDel();
break;
case 3:
// (, line 110
// delete, line 110
SliceDel();
// try, line 111
v_7 = m_limit - m_cursor;
do
{
// (, line 111
// [, line 112
m_ket = m_cursor;
// or, line 112
do
{
v_8 = m_limit - m_cursor;
do
{
// literal, line 112
if (!(Eq_S_B(2, "er")))
{
goto lab8;
}
goto lab7;
} while (false);
lab8:
m_cursor = m_limit - v_8;
// literal, line 112
if (!(Eq_S_B(2, "en")))
{
m_cursor = m_limit - v_7;
goto lab6;
}
} while (false);
lab7:
// ], line 112
m_bra = m_cursor;
// call R1, line 112
if (!r_R1())
{
m_cursor = m_limit - v_7;
goto lab6;
}
// delete, line 112
SliceDel();
} while (false);
lab6:
break;
case 4:
// (, line 116
// delete, line 116
SliceDel();
// try, line 117
v_9 = m_limit - m_cursor;
do
{
// (, line 117
// [, line 118
m_ket = m_cursor;
// substring, line 118
among_var = FindAmongB(a_4, 2);
if (among_var == 0)
{
m_cursor = m_limit - v_9;
goto lab9;
}
// ], line 118
m_bra = m_cursor;
// call R2, line 118
if (!r_R2())
{
m_cursor = m_limit - v_9;
goto lab9;
}
switch (among_var)
{
case 0:
m_cursor = m_limit - v_9;
goto lab9;
case 1:
// (, line 120
// delete, line 120
SliceDel();
break;
}
} while (false);
lab9:
break;
}
} while (false);
lab2:
m_cursor = m_limit - v_3;
return true;
}