SF.Snowball.Ext.GermanStemmer.r_standard_suffix C# (CSharp) Method

r_standard_suffix() private method

private r_standard_suffix ( ) : bool
return bool
		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 71
			// do, line 72
			v_1 = limit - cursor;
			do 
			{
				// (, line 72
				// [, line 73
				ket = cursor;
				// substring, line 73
				among_var = find_among_b(a_1, 7);
				if (among_var == 0)
				{
					goto lab0_brk;
				}
				// ], line 73
				bra = cursor;
				// call R1, line 73
				if (!r_R1())
				{
					goto lab0_brk;
				}
				switch (among_var)
				{
					
					case 0: 
						goto lab0_brk;
					
					case 1: 
						// (, line 75
						// delete, line 75
						slice_del();
						break;
					
					case 2: 
						// (, line 78
						if (!(in_grouping_b(g_s_ending, 98, 116)))
						{
							goto lab0_brk;
						}
						// delete, line 78
						slice_del();
						break;
					}
			}
			while (false);

lab0_brk: ;
			
			cursor = limit - v_1;
			// do, line 82
			v_2 = limit - cursor;
			do 
			{
				// (, line 82
				// [, line 83
				ket = cursor;
				// substring, line 83
				among_var = find_among_b(a_2, 4);
				if (among_var == 0)
				{
					goto lab1_brk;
				}
				// ], line 83
				bra = cursor;
				// call R1, line 83
				if (!r_R1())
				{
					goto lab1_brk;
				}
				switch (among_var)
				{
					
					case 0: 
						goto lab1_brk;
					
					case 1: 
						// (, line 85
						// delete, line 85
						slice_del();
						break;
					
					case 2: 
						// (, line 88
						if (!(in_grouping_b(g_st_ending, 98, 116)))
						{
							goto lab1_brk;
						}
						// hop, line 88
						{
							int c = cursor - 3;
							if (limit_backward > c || c > limit)
							{
								goto lab1_brk;
							}
							cursor = c;
						}
						// delete, line 88
						slice_del();
						break;
					}
			}
			while (false);

lab1_brk: ;
			
			cursor = limit - v_2;
			// do, line 92
			v_3 = limit - cursor;
			do 
			{
				// (, line 92
				// [, line 93
				ket = cursor;
				// substring, line 93
				among_var = find_among_b(a_4, 8);
				if (among_var == 0)
				{
					goto lab2_brk;
				}
				// ], line 93
				bra = cursor;
				// call R2, line 93
				if (!r_R2())
				{
					goto lab2_brk;
				}
				switch (among_var)
				{
					
					case 0: 

                        goto lab2_brk;
					
					case 1: 
						// (, line 95
						// delete, line 95
						slice_del();
						// try, line 96
						v_4 = limit - cursor;
						do 
						{
							// (, line 96
							// [, line 96
							ket = cursor;
							// literal, line 96
							if (!(eq_s_b(2, "ig")))
							{
								cursor = limit - v_4;
								goto lab3_brk;
							}
							// ], line 96
							bra = cursor;
							// not, line 96
							{
								v_5 = limit - cursor;
								do 
								{
									// literal, line 96
									if (!(eq_s_b(1, "e")))
									{
										goto lab4_brk;
									}
									cursor = limit - v_4;
									goto lab3_brk;
								}
								while (false);

lab4_brk: ;
								
								cursor = limit - v_5;
							}
							// call R2, line 96
							if (!r_R2())
							{
								cursor = limit - v_4;
								goto lab3_brk;
							}
							// delete, line 96
							slice_del();
						}
						while (false);

lab3_brk: ;
						
						break;
					
					case 2: 
						// (, line 99
						// not, line 99
						{
							v_6 = limit - cursor;
							do 
							{
								// literal, line 99
								if (!(eq_s_b(1, "e")))
								{
									goto lab5_brk;
								}
								goto lab2_brk;
							}
							while (false);

lab5_brk: ;
							
							cursor = limit - v_6;
						}
						// delete, line 99
						slice_del();
						break;
					
					case 3: 
						// (, line 102
						// delete, line 102
						slice_del();
						// try, line 103
						v_7 = limit - cursor;
						do 
						{
							// (, line 103
							// [, line 104
							ket = cursor;
							// or, line 104
							do 
							{
								v_8 = limit - cursor;
								do 
								{
									// literal, line 104
									if (!(eq_s_b(2, "er")))
									{
										goto lab8_brk;
									}
									goto lab7_brk;
								}
								while (false);

lab8_brk: ;
								
								cursor = limit - v_8;
								// literal, line 104
								if (!(eq_s_b(2, "en")))
								{
									cursor = limit - v_7;
									goto lab6_brk;
								}
							}
							while (false);

lab7_brk: ;
							
							// ], line 104
							bra = cursor;
							// call R1, line 104
							if (!r_R1())
							{
								cursor = limit - v_7;
								goto lab6_brk;
							}
							// delete, line 104
							slice_del();
						}
						while (false);

lab6_brk: ;
						
						break;
					
					case 4: 
						// (, line 108
						// delete, line 108
						slice_del();
						// try, line 109
						v_9 = limit - cursor;
						do 
						{
							// (, line 109
							// [, line 110
							ket = cursor;
							// substring, line 110
							among_var = find_among_b(a_3, 2);
							if (among_var == 0)
							{
								cursor = limit - v_9;
								goto lab9_brk;
							}
							// ], line 110
							bra = cursor;
							// call R2, line 110
							if (!r_R2())
							{
								cursor = limit - v_9;
								goto lab9_brk;
							}
							switch (among_var)
							{
								
								case 0: 
									cursor = limit - v_9;
									goto lab9_brk;
								
								case 1: 
									// (, line 112
									// delete, line 112
									slice_del();
									break;
								}
						}
						while (false);

lab9_brk: ;
						
						break;
					}
			}
			while (false);

lab2_brk: ;
			
			cursor = limit - v_3;
			return true;
		}