#line 1 "/build/rspamd/src/rspamd/src/ragel/smtp_date_parser.rl"

#line 9 "/build/rspamd/src/rspamd/src/ragel/smtp_date_parser.rl"


#include "smtp_parsers.h"
#include "util.h"


#line 8 "/build/rspamd/src/build/src/date_parser.rl.c"
static const int smtp_date_parser_start = 1;
static const int smtp_date_parser_first_final = 84;
static const int smtp_date_parser_error = 0;

static const int smtp_date_parser_en_balanced_ccontent = 80;
static const int smtp_date_parser_en_main = 1;


#line 14 "/build/rspamd/src/rspamd/src/ragel/smtp_date_parser.rl"


uint64_t
rspamd_parse_smtp_date (const unsigned char *data, size_t len, GError **err)
{
	const unsigned char *p = data, *pe = data + len, *eof = data + len, *tmp = data;
	struct tm tm;
	glong tz = 0;
	int cs = 0, *stack = NULL;;
	gsize top = 0;
	
	memset (&tm, 0, sizeof (tm));
	
	struct _ragel_st_storage {
		int *data;
		gsize size;
	} st_storage;
	memset (&st_storage, 0, sizeof (st_storage));
	

#line 35 "/build/rspamd/src/build/src/date_parser.rl.c"
	{
		cs = (int)smtp_date_parser_start;
		top = 0;
	}
	
#line 33 "/build/rspamd/src/rspamd/src/ragel/smtp_date_parser.rl"


#line 41 "/build/rspamd/src/build/src/date_parser.rl.c"
{
		goto _resume;
		
		_again: {}
		switch ( cs ) {
			case 1: goto _st1;
			case 0: goto _st0;
			case 2: goto _st2;
			case 3: goto _st3;
			case 4: goto _st4;
			case 5: goto _st5;
			case 6: goto _st6;
			case 7: goto _st7;
			case 8: goto _st8;
			case 9: goto _st9;
			case 10: goto _st10;
			case 11: goto _st11;
			case 12: goto _st12;
			case 13: goto _st13;
			case 14: goto _st14;
			case 15: goto _st15;
			case 16: goto _st16;
			case 17: goto _st17;
			case 18: goto _st18;
			case 19: goto _st19;
			case 20: goto _st20;
			case 84: goto _st84;
			case 85: goto _st85;
			case 21: goto _st21;
			case 22: goto _st22;
			case 23: goto _st23;
			case 24: goto _st24;
			case 86: goto _st86;
			case 87: goto _st87;
			case 25: goto _st25;
			case 88: goto _st88;
			case 26: goto _st26;
			case 89: goto _st89;
			case 90: goto _st90;
			case 27: goto _st27;
			case 91: goto _st91;
			case 28: goto _st28;
			case 92: goto _st92;
			case 93: goto _st93;
			case 29: goto _st29;
			case 94: goto _st94;
			case 95: goto _st95;
			case 30: goto _st30;
			case 96: goto _st96;
			case 31: goto _st31;
			case 97: goto _st97;
			case 98: goto _st98;
			case 32: goto _st32;
			case 99: goto _st99;
			case 33: goto _st33;
			case 100: goto _st100;
			case 101: goto _st101;
			case 102: goto _st102;
			case 34: goto _st34;
			case 35: goto _st35;
			case 36: goto _st36;
			case 37: goto _st37;
			case 38: goto _st38;
			case 39: goto _st39;
			case 40: goto _st40;
			case 41: goto _st41;
			case 42: goto _st42;
			case 43: goto _st43;
			case 44: goto _st44;
			case 45: goto _st45;
			case 46: goto _st46;
			case 47: goto _st47;
			case 48: goto _st48;
			case 49: goto _st49;
			case 50: goto _st50;
			case 51: goto _st51;
			case 52: goto _st52;
			case 53: goto _st53;
			case 54: goto _st54;
			case 55: goto _st55;
			case 56: goto _st56;
			case 57: goto _st57;
			case 58: goto _st58;
			case 59: goto _st59;
			case 60: goto _st60;
			case 61: goto _st61;
			case 62: goto _st62;
			case 63: goto _st63;
			case 64: goto _st64;
			case 65: goto _st65;
			case 66: goto _st66;
			case 67: goto _st67;
			case 68: goto _st68;
			case 69: goto _st69;
			case 70: goto _st70;
			case 71: goto _st71;
			case 72: goto _st72;
			case 73: goto _st73;
			case 74: goto _st74;
			case 75: goto _st75;
			case 76: goto _st76;
			case 77: goto _st77;
			case 78: goto _st78;
			case 79: goto _st79;
			case 80: goto _st80;
			case 103: goto _st103;
			case 81: goto _st81;
			case 82: goto _st82;
			case 83: goto _st83;
		}
		
		_resume: {}
		switch ( cs ) {
			case 1:
			goto st_case_1;
			case 0:
			goto st_case_0;
			case 2:
			goto st_case_2;
			case 3:
			goto st_case_3;
			case 4:
			goto st_case_4;
			case 5:
			goto st_case_5;
			case 6:
			goto st_case_6;
			case 7:
			goto st_case_7;
			case 8:
			goto st_case_8;
			case 9:
			goto st_case_9;
			case 10:
			goto st_case_10;
			case 11:
			goto st_case_11;
			case 12:
			goto st_case_12;
			case 13:
			goto st_case_13;
			case 14:
			goto st_case_14;
			case 15:
			goto st_case_15;
			case 16:
			goto st_case_16;
			case 17:
			goto st_case_17;
			case 18:
			goto st_case_18;
			case 19:
			goto st_case_19;
			case 20:
			goto st_case_20;
			case 84:
			goto st_case_84;
			case 85:
			goto st_case_85;
			case 21:
			goto st_case_21;
			case 22:
			goto st_case_22;
			case 23:
			goto st_case_23;
			case 24:
			goto st_case_24;
			case 86:
			goto st_case_86;
			case 87:
			goto st_case_87;
			case 25:
			goto st_case_25;
			case 88:
			goto st_case_88;
			case 26:
			goto st_case_26;
			case 89:
			goto st_case_89;
			case 90:
			goto st_case_90;
			case 27:
			goto st_case_27;
			case 91:
			goto st_case_91;
			case 28:
			goto st_case_28;
			case 92:
			goto st_case_92;
			case 93:
			goto st_case_93;
			case 29:
			goto st_case_29;
			case 94:
			goto st_case_94;
			case 95:
			goto st_case_95;
			case 30:
			goto st_case_30;
			case 96:
			goto st_case_96;
			case 31:
			goto st_case_31;
			case 97:
			goto st_case_97;
			case 98:
			goto st_case_98;
			case 32:
			goto st_case_32;
			case 99:
			goto st_case_99;
			case 33:
			goto st_case_33;
			case 100:
			goto st_case_100;
			case 101:
			goto st_case_101;
			case 102:
			goto st_case_102;
			case 34:
			goto st_case_34;
			case 35:
			goto st_case_35;
			case 36:
			goto st_case_36;
			case 37:
			goto st_case_37;
			case 38:
			goto st_case_38;
			case 39:
			goto st_case_39;
			case 40:
			goto st_case_40;
			case 41:
			goto st_case_41;
			case 42:
			goto st_case_42;
			case 43:
			goto st_case_43;
			case 44:
			goto st_case_44;
			case 45:
			goto st_case_45;
			case 46:
			goto st_case_46;
			case 47:
			goto st_case_47;
			case 48:
			goto st_case_48;
			case 49:
			goto st_case_49;
			case 50:
			goto st_case_50;
			case 51:
			goto st_case_51;
			case 52:
			goto st_case_52;
			case 53:
			goto st_case_53;
			case 54:
			goto st_case_54;
			case 55:
			goto st_case_55;
			case 56:
			goto st_case_56;
			case 57:
			goto st_case_57;
			case 58:
			goto st_case_58;
			case 59:
			goto st_case_59;
			case 60:
			goto st_case_60;
			case 61:
			goto st_case_61;
			case 62:
			goto st_case_62;
			case 63:
			goto st_case_63;
			case 64:
			goto st_case_64;
			case 65:
			goto st_case_65;
			case 66:
			goto st_case_66;
			case 67:
			goto st_case_67;
			case 68:
			goto st_case_68;
			case 69:
			goto st_case_69;
			case 70:
			goto st_case_70;
			case 71:
			goto st_case_71;
			case 72:
			goto st_case_72;
			case 73:
			goto st_case_73;
			case 74:
			goto st_case_74;
			case 75:
			goto st_case_75;
			case 76:
			goto st_case_76;
			case 77:
			goto st_case_77;
			case 78:
			goto st_case_78;
			case 79:
			goto st_case_79;
			case 80:
			goto st_case_80;
			case 103:
			goto st_case_103;
			case 81:
			goto st_case_81;
			case 82:
			goto st_case_82;
			case 83:
			goto st_case_83;
		}
		_st1:
		if ( p == eof )
			goto _out1;
		p+= 1;
		st_case_1:
		if ( p == pe && p != eof )
			goto _out1;
		if ( p == eof ) {
			goto _st1;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _st1;
				}
				case 70u: {
					goto _st67;
				}
				case 77u: {
					goto _st71;
				}
				case 83u: {
					goto _st73;
				}
				case 84u: {
					goto _st75;
				}
				case 87u: {
					goto _st78;
				}
			}
			if ( 48u <= ( (*( p))) && ( (*( p))) <= 57u ) {
				goto _ctr2;
			}
			goto _st0;
		}
		_st0:
		if ( p == eof )
			goto _out0;
		st_case_0:
		goto _out0;
		_ctr2:
			{
#line 8 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tmp = p;
		}
		
#line 410 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st2;
		_st2:
		if ( p == eof )
			goto _out2;
		p+= 1;
		st_case_2:
		if ( p == pe && p != eof )
			goto _out2;
		if ( p == eof ) {
			goto _st2;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _ctr9;
			}
			if ( 48u <= ( (*( p))) && ( (*( p))) <= 57u ) {
				goto _st66;
			}
			goto _st0;
		}
		_ctr9:
			{
#line 11 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			if (p > tmp) {
				gulong n;
				if (rspamd_strtoul (tmp, p - tmp, &n)) {
					if (n > 0 && n <= 31) {
						tm.tm_mday = n;
					}
					else {
						{p+= 1; cs = 3; goto _out;}
					}
				}
			}
		}
		
#line 447 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st3;
		_st3:
		if ( p == eof )
			goto _out3;
		p+= 1;
		st_case_3:
		if ( p == pe && p != eof )
			goto _out3;
		if ( p == eof ) {
			goto _st3;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _st3;
				}
				case 65u: {
					goto _st4;
				}
				case 68u: {
					goto _st41;
				}
				case 70u: {
					goto _st44;
				}
				case 74u: {
					goto _st47;
				}
				case 77u: {
					goto _st53;
				}
				case 78u: {
					goto _st57;
				}
				case 79u: {
					goto _st60;
				}
				case 83u: {
					goto _st63;
				}
			}
			goto _st0;
		}
		_st4:
		if ( p == eof )
			goto _out4;
		p+= 1;
		st_case_4:
		if ( p == pe && p != eof )
			goto _out4;
		if ( p == eof ) {
			goto _st4;}
		else {
			switch( ( (*( p))) ) {
				case 112u: {
					goto _st5;
				}
				case 117u: {
					goto _st39;
				}
			}
			goto _st0;
		}
		_st5:
		if ( p == eof )
			goto _out5;
		p+= 1;
		st_case_5:
		if ( p == pe && p != eof )
			goto _out5;
		if ( p == eof ) {
			goto _st5;}
		else {
			if ( ( (*( p))) == 114u ) {
				goto _st6;
			}
			goto _st0;
		}
		_st6:
		if ( p == eof )
			goto _out6;
		p+= 1;
		st_case_6:
		if ( p == pe && p != eof )
			goto _out6;
		if ( p == eof ) {
			goto _st6;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _ctr23;
			}
			goto _st0;
		}
		_ctr23:
			{
#line 136 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tm.tm_mon = 3;
		}
		
#line 547 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 24 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			
		}
		
#line 554 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st7;
		_ctr86:
			{
#line 148 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tm.tm_mon = 7;
		}
		
#line 563 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 24 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			
		}
		
#line 570 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st7;
		_ctr89:
			{
#line 160 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tm.tm_mon = 11;
		}
		
#line 579 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 24 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			
		}
		
#line 586 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st7;
		_ctr92:
			{
#line 130 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tm.tm_mon = 1;
		}
		
#line 595 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 24 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			
		}
		
#line 602 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st7;
		_ctr96:
			{
#line 127 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tm.tm_mon = 0;
		}
		
#line 611 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 24 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			
		}
		
#line 618 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st7;
		_ctr99:
			{
#line 145 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tm.tm_mon = 6;
		}
		
#line 627 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 24 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			
		}
		
#line 634 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st7;
		_ctr100:
			{
#line 142 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tm.tm_mon = 5;
		}
		
#line 643 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 24 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			
		}
		
#line 650 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st7;
		_ctr104:
			{
#line 133 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tm.tm_mon = 2;
		}
		
#line 659 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 24 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			
		}
		
#line 666 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st7;
		_ctr105:
			{
#line 139 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tm.tm_mon = 4;
		}
		
#line 675 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 24 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			
		}
		
#line 682 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st7;
		_ctr108:
			{
#line 157 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tm.tm_mon = 10;
		}
		
#line 691 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 24 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			
		}
		
#line 698 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st7;
		_ctr111:
			{
#line 154 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tm.tm_mon = 9;
		}
		
#line 707 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 24 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			
		}
		
#line 714 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st7;
		_ctr114:
			{
#line 151 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tm.tm_mon = 8;
		}
		
#line 723 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 24 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			
		}
		
#line 730 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st7;
		_st7:
		if ( p == eof )
			goto _out7;
		p+= 1;
		st_case_7:
		if ( p == pe && p != eof )
			goto _out7;
		if ( p == eof ) {
			goto _st7;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _st7;
			}
			if ( 48u <= ( (*( p))) && ( (*( p))) <= 57u ) {
				goto _ctr25;
			}
			goto _st0;
		}
		_ctr25:
			{
#line 27 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tmp = p;
		}
		
#line 757 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st8;
		_st8:
		if ( p == eof )
			goto _out8;
		p+= 1;
		st_case_8:
		if ( p == pe && p != eof )
			goto _out8;
		if ( p == eof ) {
			goto _st8;}
		else {
			if ( 48u <= ( (*( p))) && ( (*( p))) <= 57u ) {
				goto _st9;
			}
			goto _st0;
		}
		_st9:
		if ( p == eof )
			goto _out9;
		p+= 1;
		st_case_9:
		if ( p == pe && p != eof )
			goto _out9;
		if ( p == eof ) {
			goto _st9;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _ctr28;
			}
			if ( 48u <= ( (*( p))) && ( (*( p))) <= 57u ) {
				goto _st37;
			}
			goto _st0;
		}
		_ctr28:
			{
#line 30 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			if (p > tmp) {
				gulong n;
				if (rspamd_strtoul (tmp, p - tmp, &n)) {
					if (n < 1000) {
						if (n < 50) {
							tm.tm_year = n - 1900 + 2000;
						}
						else {
							tm.tm_year = n;
						}
					}
					else {
						tm.tm_year = n - 1900;
					}
				}
			}
		}
		
#line 814 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st10;
		_st10:
		if ( p == eof )
			goto _out10;
		p+= 1;
		st_case_10:
		if ( p == pe && p != eof )
			goto _out10;
		if ( p == eof ) {
			goto _st10;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _st10;
			}
			if ( 48u <= ( (*( p))) && ( (*( p))) <= 57u ) {
				goto _ctr31;
			}
			goto _st0;
		}
		_ctr31:
			{
#line 48 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tmp = p;
		}
		
#line 841 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st11;
		_st11:
		if ( p == eof )
			goto _out11;
		p+= 1;
		st_case_11:
		if ( p == pe && p != eof )
			goto _out11;
		if ( p == eof ) {
			goto _st11;}
		else {
			if ( 48u <= ( (*( p))) && ( (*( p))) <= 57u ) {
				goto _st12;
			}
			goto _st0;
		}
		_st12:
		if ( p == eof )
			goto _out12;
		p+= 1;
		st_case_12:
		if ( p == pe && p != eof )
			goto _out12;
		if ( p == eof ) {
			goto _st12;}
		else {
			if ( ( (*( p))) == 58u ) {
				goto _ctr34;
			}
			goto _st0;
		}
		_ctr34:
			{
#line 51 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			if (p > tmp) {
				gulong n;
				if (rspamd_strtoul (tmp, p - tmp, &n)) {
					if (n < 24) {
						tm.tm_hour = n;
					}
					else {
						{p+= 1; cs = 13; goto _out;}
					}
				}
			}
			else {
				{p+= 1; cs = 13; goto _out;}
			}
		}
		
#line 893 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st13;
		_st13:
		if ( p == eof )
			goto _out13;
		p+= 1;
		st_case_13:
		if ( p == pe && p != eof )
			goto _out13;
		if ( p == eof ) {
			goto _st13;}
		else {
			if ( 48u <= ( (*( p))) && ( (*( p))) <= 57u ) {
				goto _ctr36;
			}
			goto _st0;
		}
		_ctr36:
			{
#line 67 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tmp = p;
		}
		
#line 917 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st14;
		_st14:
		if ( p == eof )
			goto _out14;
		p+= 1;
		st_case_14:
		if ( p == pe && p != eof )
			goto _out14;
		if ( p == eof ) {
			goto _st14;}
		else {
			if ( 48u <= ( (*( p))) && ( (*( p))) <= 57u ) {
				goto _st15;
			}
			goto _st0;
		}
		_st15:
		if ( p == eof )
			goto _out15;
		p+= 1;
		st_case_15:
		if ( p == pe && p != eof )
			goto _out15;
		if ( p == eof ) {
			goto _st15;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _ctr39;
				}
				case 58u: {
					goto _ctr40;
				}
			}
			goto _st0;
		}
		_ctr39:
			{
#line 70 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			if (p > tmp) {
				gulong n;
				if (rspamd_strtoul (tmp, p - tmp, &n)) {
					if (n < 60) {
						tm.tm_min = n;
					}
					else {
						{p+= 1; cs = 16; goto _out;}
					}
				}
			}
			else {
				{p+= 1; cs = 16; goto _out;}
			}
		}
		
#line 974 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 122 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 980 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st16;
		_ctr83:
			{
#line 89 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			if (p > tmp) {
				gulong n;
				if (rspamd_strtoul (tmp, p - tmp, &n)) {
					if (n <= 60) { /* Leap second */
						tm.tm_sec = n;
					}
					else {
						{p+= 1; cs = 16; goto _out;}
					}
				}
			}
			else {
				{p+= 1; cs = 16; goto _out;}
			}
		}
		
#line 1002 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 122 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1008 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st16;
		_st16:
		if ( p == eof )
			goto _out16;
		p+= 1;
		st_case_16:
		if ( p == pe && p != eof )
			goto _out16;
		if ( p == eof ) {
			goto _st16;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _st16;
				}
				case 43u: {
					goto _st17;
				}
				case 45u: {
					goto _st17;
				}
				case 67u: {
					goto _st87;
				}
				case 69u: {
					goto _st90;
				}
				case 71u: {
					goto _st93;
				}
				case 77u: {
					goto _st95;
				}
				case 80u: {
					goto _st98;
				}
				case 85u: {
					goto _st101;
				}
			}
			if ( ( (*( p))) < 75u ) {
				if ( 65u <= ( (*( p))) && ( (*( p))) <= 73u ) {
					goto _st86;
				}
			} else if ( ( (*( p))) > 90u ) {
				if ( ( (*( p))) > 105u ) {
					if ( 107u <= ( (*( p))) && ( (*( p))) <= 122u ) {
						goto _st86;
					}
				} else if ( ( (*( p))) >= 97u ) {
					goto _st86;
				}
			} else {
				goto _st86;
			}
			goto _st0;
		}
		_st17:
		if ( p == eof )
			goto _out17;
		p+= 1;
		st_case_17:
		if ( p == pe && p != eof )
			goto _out17;
		if ( p == eof ) {
			goto _st17;}
		else {
			if ( 48u <= ( (*( p))) && ( (*( p))) <= 57u ) {
				goto _ctr50;
			}
			goto _st0;
		}
		_ctr50:
			{
#line 105 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tmp = p;
		}
		
#line 1088 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 108 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			
		}
		
#line 1095 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st18;
		_st18:
		if ( p == eof )
			goto _out18;
		p+= 1;
		st_case_18:
		if ( p == pe && p != eof )
			goto _out18;
		if ( p == eof ) {
			goto _st18;}
		else {
			if ( 48u <= ( (*( p))) && ( (*( p))) <= 57u ) {
				goto _st19;
			}
			goto _st0;
		}
		_st19:
		if ( p == eof )
			goto _out19;
		p+= 1;
		st_case_19:
		if ( p == pe && p != eof )
			goto _out19;
		if ( p == eof ) {
			goto _st19;}
		else {
			if ( 48u <= ( (*( p))) && ( (*( p))) <= 57u ) {
				goto _st20;
			}
			goto _st0;
		}
		_st20:
		if ( p == eof )
			goto _out20;
		p+= 1;
		st_case_20:
		if ( p == pe && p != eof )
			goto _out20;
		if ( p == eof ) {
			goto _st20;}
		else {
			if ( 48u <= ( (*( p))) && ( (*( p))) <= 57u ) {
				goto _st84;
			}
			goto _st0;
		}
		_ctr129:
			{
#line 111 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			if (p > tmp) {
				rspamd_strtoul (tmp, p - tmp, (gulong *)&tz);
				
				if (*(tmp - 1) == '-') {
					tz = -(tz);
				}
			}
		}
		
#line 1155 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st84;
		_st84:
		if ( p == eof )
			goto _out84;
		p+= 1;
		st_case_84:
		if ( p == pe && p != eof )
			goto _out84;
		if ( p == eof ) {
			goto _ctr129;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _ctr130;
				}
				case 40u: {
					goto _ctr131;
				}
			}
			goto _st0;
		}
		_ctr130:
			{
#line 111 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			if (p > tmp) {
				rspamd_strtoul (tmp, p - tmp, (gulong *)&tz);
				
				if (*(tmp - 1) == '-') {
					tz = -(tz);
				}
			}
		}
		
#line 1190 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st85;
		_ctr133:
			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1198 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st85;
		_ctr137:
			{
#line 179 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -500;
		}
		
#line 1207 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1213 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st85;
		_ctr140:
			{
#line 176 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -600;
		}
		
#line 1222 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1228 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st85;
		_ctr144:
			{
#line 173 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -400;
		}
		
#line 1237 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1243 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st85;
		_ctr147:
			{
#line 170 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -500;
		}
		
#line 1252 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1258 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st85;
		_ctr151:
			{
#line 167 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = 0;
		}
		
#line 1267 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1273 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st85;
		_ctr155:
			{
#line 185 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -600;
		}
		
#line 1282 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1288 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st85;
		_ctr158:
			{
#line 182 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -700;
		}
		
#line 1297 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1303 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st85;
		_ctr162:
			{
#line 191 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -700;
		}
		
#line 1312 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1318 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st85;
		_ctr165:
			{
#line 188 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -800;
		}
		
#line 1327 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1333 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st85;
		_ctr170:
			{
#line 164 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = 0;
		}
		
#line 1342 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1348 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st85;
		_st85:
		if ( p == eof )
			goto _out85;
		p+= 1;
		st_case_85:
		if ( p == pe && p != eof )
			goto _out85;
		if ( p == eof ) {
			goto _st85;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _st85;
				}
				case 40u: {
					goto _st21;
				}
			}
			goto _st0;
		}
		_ctr56:
			{
#line 202 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			{{
#line 194 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
					
					if (top >= st_storage.size) {
						st_storage.size = (top + 1) * 2;
						st_storage.data = realloc (st_storage.data, st_storage.size * sizeof (int));
						g_assert (st_storage.data != NULL);
						stack = st_storage.data;
					}
				}
				stack[top] = 21; top+= 1; goto _st80;}}
		
#line 1385 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st21;
		_ctr131:
			{
#line 111 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			if (p > tmp) {
				rspamd_strtoul (tmp, p - tmp, (gulong *)&tz);
				
				if (*(tmp - 1) == '-') {
					tz = -(tz);
				}
			}
		}
		
#line 1400 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st21;
		_ctr134:
			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1408 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st21;
		_ctr138:
			{
#line 179 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -500;
		}
		
#line 1417 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1423 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st21;
		_ctr141:
			{
#line 176 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -600;
		}
		
#line 1432 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1438 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st21;
		_ctr145:
			{
#line 173 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -400;
		}
		
#line 1447 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1453 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st21;
		_ctr148:
			{
#line 170 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -500;
		}
		
#line 1462 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1468 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st21;
		_ctr152:
			{
#line 167 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = 0;
		}
		
#line 1477 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1483 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st21;
		_ctr156:
			{
#line 185 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -600;
		}
		
#line 1492 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1498 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st21;
		_ctr159:
			{
#line 182 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -700;
		}
		
#line 1507 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1513 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st21;
		_ctr163:
			{
#line 191 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -700;
		}
		
#line 1522 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1528 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st21;
		_ctr166:
			{
#line 188 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -800;
		}
		
#line 1537 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1543 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st21;
		_ctr171:
			{
#line 164 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = 0;
		}
		
#line 1552 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1558 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st21;
		_st21:
		if ( p == eof )
			goto _out21;
		p+= 1;
		st_case_21:
		if ( p == pe && p != eof )
			goto _out21;
		if ( p == eof ) {
			goto _st21;}
		else {
			switch( ( (*( p))) ) {
				case 40u: {
					goto _ctr56;
				}
				case 41u: {
					goto _st85;
				}
			}
			if ( ( (*( p))) < 192u ) {
				if ( ( (*( p))) > 91u ) {
					if ( 93u <= ( (*( p))) && ( (*( p))) <= 126u ) {
						goto _st21;
					}
				} else if ( ( (*( p))) >= 32u ) {
					goto _st21;
				}
			} else if ( ( (*( p))) > 223u ) {
				if ( ( (*( p))) > 239u ) {
					if ( ( (*( p))) <= 247u ) {
						goto _st24;
					}
				} else {
					goto _st23;
				}
			} else {
				goto _st22;
			}
			goto _st0;
		}
		_st22:
		if ( p == eof )
			goto _out22;
		p+= 1;
		st_case_22:
		if ( p == pe && p != eof )
			goto _out22;
		if ( p == eof ) {
			goto _st22;}
		else {
			if ( 128u <= ( (*( p))) && ( (*( p))) <= 191u ) {
				goto _st21;
			}
			goto _st0;
		}
		_st23:
		if ( p == eof )
			goto _out23;
		p+= 1;
		st_case_23:
		if ( p == pe && p != eof )
			goto _out23;
		if ( p == eof ) {
			goto _st23;}
		else {
			if ( 128u <= ( (*( p))) && ( (*( p))) <= 191u ) {
				goto _st22;
			}
			goto _st0;
		}
		_st24:
		if ( p == eof )
			goto _out24;
		p+= 1;
		st_case_24:
		if ( p == pe && p != eof )
			goto _out24;
		if ( p == eof ) {
			goto _st24;}
		else {
			if ( 128u <= ( (*( p))) && ( (*( p))) <= 191u ) {
				goto _st23;
			}
			goto _st0;
		}
		_ctr132:
			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1650 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st86;
		_st86:
		if ( p == eof )
			goto _out86;
		p+= 1;
		st_case_86:
		if ( p == pe && p != eof )
			goto _out86;
		if ( p == eof ) {
			goto _ctr132;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _ctr133;
				}
				case 40u: {
					goto _ctr134;
				}
			}
			goto _st0;
		}
		_ctr135:
			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1678 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st87;
		_st87:
		if ( p == eof )
			goto _out87;
		p+= 1;
		st_case_87:
		if ( p == pe && p != eof )
			goto _out87;
		if ( p == eof ) {
			goto _ctr135;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _ctr133;
				}
				case 40u: {
					goto _ctr134;
				}
				case 68u: {
					goto _st25;
				}
				case 83u: {
					goto _st26;
				}
			}
			goto _st0;
		}
		_st25:
		if ( p == eof )
			goto _out25;
		p+= 1;
		st_case_25:
		if ( p == pe && p != eof )
			goto _out25;
		if ( p == eof ) {
			goto _st25;}
		else {
			if ( ( (*( p))) == 84u ) {
				goto _st88;
			}
			goto _st0;
		}
		_ctr136:
			{
#line 179 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -500;
		}
		
#line 1728 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1734 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st88;
		_st88:
		if ( p == eof )
			goto _out88;
		p+= 1;
		st_case_88:
		if ( p == pe && p != eof )
			goto _out88;
		if ( p == eof ) {
			goto _ctr136;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _ctr137;
				}
				case 40u: {
					goto _ctr138;
				}
			}
			goto _st0;
		}
		_st26:
		if ( p == eof )
			goto _out26;
		p+= 1;
		st_case_26:
		if ( p == pe && p != eof )
			goto _out26;
		if ( p == eof ) {
			goto _st26;}
		else {
			if ( ( (*( p))) == 84u ) {
				goto _st89;
			}
			goto _st0;
		}
		_ctr139:
			{
#line 176 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -600;
		}
		
#line 1778 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1784 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st89;
		_st89:
		if ( p == eof )
			goto _out89;
		p+= 1;
		st_case_89:
		if ( p == pe && p != eof )
			goto _out89;
		if ( p == eof ) {
			goto _ctr139;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _ctr140;
				}
				case 40u: {
					goto _ctr141;
				}
			}
			goto _st0;
		}
		_ctr142:
			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1812 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st90;
		_st90:
		if ( p == eof )
			goto _out90;
		p+= 1;
		st_case_90:
		if ( p == pe && p != eof )
			goto _out90;
		if ( p == eof ) {
			goto _ctr142;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _ctr133;
				}
				case 40u: {
					goto _ctr134;
				}
				case 68u: {
					goto _st27;
				}
				case 83u: {
					goto _st28;
				}
			}
			goto _st0;
		}
		_st27:
		if ( p == eof )
			goto _out27;
		p+= 1;
		st_case_27:
		if ( p == pe && p != eof )
			goto _out27;
		if ( p == eof ) {
			goto _st27;}
		else {
			if ( ( (*( p))) == 84u ) {
				goto _st91;
			}
			goto _st0;
		}
		_ctr143:
			{
#line 173 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -400;
		}
		
#line 1862 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1868 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st91;
		_st91:
		if ( p == eof )
			goto _out91;
		p+= 1;
		st_case_91:
		if ( p == pe && p != eof )
			goto _out91;
		if ( p == eof ) {
			goto _ctr143;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _ctr144;
				}
				case 40u: {
					goto _ctr145;
				}
			}
			goto _st0;
		}
		_st28:
		if ( p == eof )
			goto _out28;
		p+= 1;
		st_case_28:
		if ( p == pe && p != eof )
			goto _out28;
		if ( p == eof ) {
			goto _st28;}
		else {
			if ( ( (*( p))) == 84u ) {
				goto _st92;
			}
			goto _st0;
		}
		_ctr146:
			{
#line 170 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -500;
		}
		
#line 1912 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1918 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st92;
		_st92:
		if ( p == eof )
			goto _out92;
		p+= 1;
		st_case_92:
		if ( p == pe && p != eof )
			goto _out92;
		if ( p == eof ) {
			goto _ctr146;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _ctr147;
				}
				case 40u: {
					goto _ctr148;
				}
			}
			goto _st0;
		}
		_ctr149:
			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1946 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st93;
		_st93:
		if ( p == eof )
			goto _out93;
		p+= 1;
		st_case_93:
		if ( p == pe && p != eof )
			goto _out93;
		if ( p == eof ) {
			goto _ctr149;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _ctr133;
				}
				case 40u: {
					goto _ctr134;
				}
				case 77u: {
					goto _st29;
				}
			}
			goto _st0;
		}
		_st29:
		if ( p == eof )
			goto _out29;
		p+= 1;
		st_case_29:
		if ( p == pe && p != eof )
			goto _out29;
		if ( p == eof ) {
			goto _st29;}
		else {
			if ( ( (*( p))) == 84u ) {
				goto _st94;
			}
			goto _st0;
		}
		_ctr150:
			{
#line 167 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = 0;
		}
		
#line 1993 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 1999 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st94;
		_st94:
		if ( p == eof )
			goto _out94;
		p+= 1;
		st_case_94:
		if ( p == pe && p != eof )
			goto _out94;
		if ( p == eof ) {
			goto _ctr150;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _ctr151;
				}
				case 40u: {
					goto _ctr152;
				}
			}
			goto _st0;
		}
		_ctr153:
			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 2027 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st95;
		_st95:
		if ( p == eof )
			goto _out95;
		p+= 1;
		st_case_95:
		if ( p == pe && p != eof )
			goto _out95;
		if ( p == eof ) {
			goto _ctr153;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _ctr133;
				}
				case 40u: {
					goto _ctr134;
				}
				case 68u: {
					goto _st30;
				}
				case 83u: {
					goto _st31;
				}
			}
			goto _st0;
		}
		_st30:
		if ( p == eof )
			goto _out30;
		p+= 1;
		st_case_30:
		if ( p == pe && p != eof )
			goto _out30;
		if ( p == eof ) {
			goto _st30;}
		else {
			if ( ( (*( p))) == 84u ) {
				goto _st96;
			}
			goto _st0;
		}
		_ctr154:
			{
#line 185 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -600;
		}
		
#line 2077 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 2083 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st96;
		_st96:
		if ( p == eof )
			goto _out96;
		p+= 1;
		st_case_96:
		if ( p == pe && p != eof )
			goto _out96;
		if ( p == eof ) {
			goto _ctr154;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _ctr155;
				}
				case 40u: {
					goto _ctr156;
				}
			}
			goto _st0;
		}
		_st31:
		if ( p == eof )
			goto _out31;
		p+= 1;
		st_case_31:
		if ( p == pe && p != eof )
			goto _out31;
		if ( p == eof ) {
			goto _st31;}
		else {
			if ( ( (*( p))) == 84u ) {
				goto _st97;
			}
			goto _st0;
		}
		_ctr157:
			{
#line 182 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -700;
		}
		
#line 2127 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 2133 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st97;
		_st97:
		if ( p == eof )
			goto _out97;
		p+= 1;
		st_case_97:
		if ( p == pe && p != eof )
			goto _out97;
		if ( p == eof ) {
			goto _ctr157;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _ctr158;
				}
				case 40u: {
					goto _ctr159;
				}
			}
			goto _st0;
		}
		_ctr160:
			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 2161 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st98;
		_st98:
		if ( p == eof )
			goto _out98;
		p+= 1;
		st_case_98:
		if ( p == pe && p != eof )
			goto _out98;
		if ( p == eof ) {
			goto _ctr160;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _ctr133;
				}
				case 40u: {
					goto _ctr134;
				}
				case 68u: {
					goto _st32;
				}
				case 83u: {
					goto _st33;
				}
			}
			goto _st0;
		}
		_st32:
		if ( p == eof )
			goto _out32;
		p+= 1;
		st_case_32:
		if ( p == pe && p != eof )
			goto _out32;
		if ( p == eof ) {
			goto _st32;}
		else {
			if ( ( (*( p))) == 84u ) {
				goto _st99;
			}
			goto _st0;
		}
		_ctr161:
			{
#line 191 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -700;
		}
		
#line 2211 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 2217 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st99;
		_st99:
		if ( p == eof )
			goto _out99;
		p+= 1;
		st_case_99:
		if ( p == pe && p != eof )
			goto _out99;
		if ( p == eof ) {
			goto _ctr161;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _ctr162;
				}
				case 40u: {
					goto _ctr163;
				}
			}
			goto _st0;
		}
		_st33:
		if ( p == eof )
			goto _out33;
		p+= 1;
		st_case_33:
		if ( p == pe && p != eof )
			goto _out33;
		if ( p == eof ) {
			goto _st33;}
		else {
			if ( ( (*( p))) == 84u ) {
				goto _st100;
			}
			goto _st0;
		}
		_ctr164:
			{
#line 188 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = -800;
		}
		
#line 2261 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 2267 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st100;
		_st100:
		if ( p == eof )
			goto _out100;
		p+= 1;
		st_case_100:
		if ( p == pe && p != eof )
			goto _out100;
		if ( p == eof ) {
			goto _ctr164;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _ctr165;
				}
				case 40u: {
					goto _ctr166;
				}
			}
			goto _st0;
		}
		_ctr167:
			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 2295 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st101;
		_st101:
		if ( p == eof )
			goto _out101;
		p+= 1;
		st_case_101:
		if ( p == pe && p != eof )
			goto _out101;
		if ( p == eof ) {
			goto _ctr167;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _ctr133;
				}
				case 40u: {
					goto _ctr134;
				}
				case 84u: {
					goto _st102;
				}
			}
			goto _st0;
		}
		_ctr169:
			{
#line 164 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tz = 0;
		}
		
#line 2327 "/build/rspamd/src/build/src/date_parser.rl.c"

			{
#line 120 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
		}
		
#line 2333 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st102;
		_st102:
		if ( p == eof )
			goto _out102;
		p+= 1;
		st_case_102:
		if ( p == pe && p != eof )
			goto _out102;
		if ( p == eof ) {
			goto _ctr169;}
		else {
			switch( ( (*( p))) ) {
				case 32u: {
					goto _ctr170;
				}
				case 40u: {
					goto _ctr171;
				}
			}
			goto _st0;
		}
		_ctr40:
			{
#line 70 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			if (p > tmp) {
				gulong n;
				if (rspamd_strtoul (tmp, p - tmp, &n)) {
					if (n < 60) {
						tm.tm_min = n;
					}
					else {
						{p+= 1; cs = 34; goto _out;}
					}
				}
			}
			else {
				{p+= 1; cs = 34; goto _out;}
			}
		}
		
#line 2375 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st34;
		_st34:
		if ( p == eof )
			goto _out34;
		p+= 1;
		st_case_34:
		if ( p == pe && p != eof )
			goto _out34;
		if ( p == eof ) {
			goto _st34;}
		else {
			if ( 48u <= ( (*( p))) && ( (*( p))) <= 57u ) {
				goto _ctr80;
			}
			goto _st0;
		}
		_ctr80:
			{
#line 86 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			
			tmp = p;
		}
		
#line 2399 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st35;
		_st35:
		if ( p == eof )
			goto _out35;
		p+= 1;
		st_case_35:
		if ( p == pe && p != eof )
			goto _out35;
		if ( p == eof ) {
			goto _st35;}
		else {
			if ( 48u <= ( (*( p))) && ( (*( p))) <= 57u ) {
				goto _st36;
			}
			goto _st0;
		}
		_st36:
		if ( p == eof )
			goto _out36;
		p+= 1;
		st_case_36:
		if ( p == pe && p != eof )
			goto _out36;
		if ( p == eof ) {
			goto _st36;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _ctr83;
			}
			goto _st0;
		}
		_st37:
		if ( p == eof )
			goto _out37;
		p+= 1;
		st_case_37:
		if ( p == pe && p != eof )
			goto _out37;
		if ( p == eof ) {
			goto _st37;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _ctr28;
			}
			if ( 48u <= ( (*( p))) && ( (*( p))) <= 57u ) {
				goto _st38;
			}
			goto _st0;
		}
		_st38:
		if ( p == eof )
			goto _out38;
		p+= 1;
		st_case_38:
		if ( p == pe && p != eof )
			goto _out38;
		if ( p == eof ) {
			goto _st38;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _ctr28;
			}
			goto _st0;
		}
		_st39:
		if ( p == eof )
			goto _out39;
		p+= 1;
		st_case_39:
		if ( p == pe && p != eof )
			goto _out39;
		if ( p == eof ) {
			goto _st39;}
		else {
			if ( ( (*( p))) == 103u ) {
				goto _st40;
			}
			goto _st0;
		}
		_st40:
		if ( p == eof )
			goto _out40;
		p+= 1;
		st_case_40:
		if ( p == pe && p != eof )
			goto _out40;
		if ( p == eof ) {
			goto _st40;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _ctr86;
			}
			goto _st0;
		}
		_st41:
		if ( p == eof )
			goto _out41;
		p+= 1;
		st_case_41:
		if ( p == pe && p != eof )
			goto _out41;
		if ( p == eof ) {
			goto _st41;}
		else {
			if ( ( (*( p))) == 101u ) {
				goto _st42;
			}
			goto _st0;
		}
		_st42:
		if ( p == eof )
			goto _out42;
		p+= 1;
		st_case_42:
		if ( p == pe && p != eof )
			goto _out42;
		if ( p == eof ) {
			goto _st42;}
		else {
			if ( ( (*( p))) == 99u ) {
				goto _st43;
			}
			goto _st0;
		}
		_st43:
		if ( p == eof )
			goto _out43;
		p+= 1;
		st_case_43:
		if ( p == pe && p != eof )
			goto _out43;
		if ( p == eof ) {
			goto _st43;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _ctr89;
			}
			goto _st0;
		}
		_st44:
		if ( p == eof )
			goto _out44;
		p+= 1;
		st_case_44:
		if ( p == pe && p != eof )
			goto _out44;
		if ( p == eof ) {
			goto _st44;}
		else {
			if ( ( (*( p))) == 101u ) {
				goto _st45;
			}
			goto _st0;
		}
		_st45:
		if ( p == eof )
			goto _out45;
		p+= 1;
		st_case_45:
		if ( p == pe && p != eof )
			goto _out45;
		if ( p == eof ) {
			goto _st45;}
		else {
			if ( ( (*( p))) == 98u ) {
				goto _st46;
			}
			goto _st0;
		}
		_st46:
		if ( p == eof )
			goto _out46;
		p+= 1;
		st_case_46:
		if ( p == pe && p != eof )
			goto _out46;
		if ( p == eof ) {
			goto _st46;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _ctr92;
			}
			goto _st0;
		}
		_st47:
		if ( p == eof )
			goto _out47;
		p+= 1;
		st_case_47:
		if ( p == pe && p != eof )
			goto _out47;
		if ( p == eof ) {
			goto _st47;}
		else {
			switch( ( (*( p))) ) {
				case 97u: {
					goto _st48;
				}
				case 117u: {
					goto _st50;
				}
			}
			goto _st0;
		}
		_st48:
		if ( p == eof )
			goto _out48;
		p+= 1;
		st_case_48:
		if ( p == pe && p != eof )
			goto _out48;
		if ( p == eof ) {
			goto _st48;}
		else {
			if ( ( (*( p))) == 110u ) {
				goto _st49;
			}
			goto _st0;
		}
		_st49:
		if ( p == eof )
			goto _out49;
		p+= 1;
		st_case_49:
		if ( p == pe && p != eof )
			goto _out49;
		if ( p == eof ) {
			goto _st49;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _ctr96;
			}
			goto _st0;
		}
		_st50:
		if ( p == eof )
			goto _out50;
		p+= 1;
		st_case_50:
		if ( p == pe && p != eof )
			goto _out50;
		if ( p == eof ) {
			goto _st50;}
		else {
			switch( ( (*( p))) ) {
				case 108u: {
					goto _st51;
				}
				case 110u: {
					goto _st52;
				}
			}
			goto _st0;
		}
		_st51:
		if ( p == eof )
			goto _out51;
		p+= 1;
		st_case_51:
		if ( p == pe && p != eof )
			goto _out51;
		if ( p == eof ) {
			goto _st51;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _ctr99;
			}
			goto _st0;
		}
		_st52:
		if ( p == eof )
			goto _out52;
		p+= 1;
		st_case_52:
		if ( p == pe && p != eof )
			goto _out52;
		if ( p == eof ) {
			goto _st52;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _ctr100;
			}
			goto _st0;
		}
		_st53:
		if ( p == eof )
			goto _out53;
		p+= 1;
		st_case_53:
		if ( p == pe && p != eof )
			goto _out53;
		if ( p == eof ) {
			goto _st53;}
		else {
			if ( ( (*( p))) == 97u ) {
				goto _st54;
			}
			goto _st0;
		}
		_st54:
		if ( p == eof )
			goto _out54;
		p+= 1;
		st_case_54:
		if ( p == pe && p != eof )
			goto _out54;
		if ( p == eof ) {
			goto _st54;}
		else {
			switch( ( (*( p))) ) {
				case 114u: {
					goto _st55;
				}
				case 121u: {
					goto _st56;
				}
			}
			goto _st0;
		}
		_st55:
		if ( p == eof )
			goto _out55;
		p+= 1;
		st_case_55:
		if ( p == pe && p != eof )
			goto _out55;
		if ( p == eof ) {
			goto _st55;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _ctr104;
			}
			goto _st0;
		}
		_st56:
		if ( p == eof )
			goto _out56;
		p+= 1;
		st_case_56:
		if ( p == pe && p != eof )
			goto _out56;
		if ( p == eof ) {
			goto _st56;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _ctr105;
			}
			goto _st0;
		}
		_st57:
		if ( p == eof )
			goto _out57;
		p+= 1;
		st_case_57:
		if ( p == pe && p != eof )
			goto _out57;
		if ( p == eof ) {
			goto _st57;}
		else {
			if ( ( (*( p))) == 111u ) {
				goto _st58;
			}
			goto _st0;
		}
		_st58:
		if ( p == eof )
			goto _out58;
		p+= 1;
		st_case_58:
		if ( p == pe && p != eof )
			goto _out58;
		if ( p == eof ) {
			goto _st58;}
		else {
			if ( ( (*( p))) == 118u ) {
				goto _st59;
			}
			goto _st0;
		}
		_st59:
		if ( p == eof )
			goto _out59;
		p+= 1;
		st_case_59:
		if ( p == pe && p != eof )
			goto _out59;
		if ( p == eof ) {
			goto _st59;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _ctr108;
			}
			goto _st0;
		}
		_st60:
		if ( p == eof )
			goto _out60;
		p+= 1;
		st_case_60:
		if ( p == pe && p != eof )
			goto _out60;
		if ( p == eof ) {
			goto _st60;}
		else {
			if ( ( (*( p))) == 99u ) {
				goto _st61;
			}
			goto _st0;
		}
		_st61:
		if ( p == eof )
			goto _out61;
		p+= 1;
		st_case_61:
		if ( p == pe && p != eof )
			goto _out61;
		if ( p == eof ) {
			goto _st61;}
		else {
			if ( ( (*( p))) == 116u ) {
				goto _st62;
			}
			goto _st0;
		}
		_st62:
		if ( p == eof )
			goto _out62;
		p+= 1;
		st_case_62:
		if ( p == pe && p != eof )
			goto _out62;
		if ( p == eof ) {
			goto _st62;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _ctr111;
			}
			goto _st0;
		}
		_st63:
		if ( p == eof )
			goto _out63;
		p+= 1;
		st_case_63:
		if ( p == pe && p != eof )
			goto _out63;
		if ( p == eof ) {
			goto _st63;}
		else {
			if ( ( (*( p))) == 101u ) {
				goto _st64;
			}
			goto _st0;
		}
		_st64:
		if ( p == eof )
			goto _out64;
		p+= 1;
		st_case_64:
		if ( p == pe && p != eof )
			goto _out64;
		if ( p == eof ) {
			goto _st64;}
		else {
			if ( ( (*( p))) == 112u ) {
				goto _st65;
			}
			goto _st0;
		}
		_st65:
		if ( p == eof )
			goto _out65;
		p+= 1;
		st_case_65:
		if ( p == pe && p != eof )
			goto _out65;
		if ( p == eof ) {
			goto _st65;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _ctr114;
			}
			goto _st0;
		}
		_st66:
		if ( p == eof )
			goto _out66;
		p+= 1;
		st_case_66:
		if ( p == pe && p != eof )
			goto _out66;
		if ( p == eof ) {
			goto _st66;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _ctr9;
			}
			goto _st0;
		}
		_st67:
		if ( p == eof )
			goto _out67;
		p+= 1;
		st_case_67:
		if ( p == pe && p != eof )
			goto _out67;
		if ( p == eof ) {
			goto _st67;}
		else {
			if ( ( (*( p))) == 114u ) {
				goto _st68;
			}
			goto _st0;
		}
		_st68:
		if ( p == eof )
			goto _out68;
		p+= 1;
		st_case_68:
		if ( p == pe && p != eof )
			goto _out68;
		if ( p == eof ) {
			goto _st68;}
		else {
			if ( ( (*( p))) == 105u ) {
				goto _st69;
			}
			goto _st0;
		}
		_st69:
		if ( p == eof )
			goto _out69;
		p+= 1;
		st_case_69:
		if ( p == pe && p != eof )
			goto _out69;
		if ( p == eof ) {
			goto _st69;}
		else {
			if ( ( (*( p))) == 44u ) {
				goto _st70;
			}
			goto _st0;
		}
		_st70:
		if ( p == eof )
			goto _out70;
		p+= 1;
		st_case_70:
		if ( p == pe && p != eof )
			goto _out70;
		if ( p == eof ) {
			goto _st70;}
		else {
			if ( ( (*( p))) == 32u ) {
				goto _st70;
			}
			if ( 48u <= ( (*( p))) && ( (*( p))) <= 57u ) {
				goto _ctr2;
			}
			goto _st0;
		}
		_st71:
		if ( p == eof )
			goto _out71;
		p+= 1;
		st_case_71:
		if ( p == pe && p != eof )
			goto _out71;
		if ( p == eof ) {
			goto _st71;}
		else {
			if ( ( (*( p))) == 111u ) {
				goto _st72;
			}
			goto _st0;
		}
		_st72:
		if ( p == eof )
			goto _out72;
		p+= 1;
		st_case_72:
		if ( p == pe && p != eof )
			goto _out72;
		if ( p == eof ) {
			goto _st72;}
		else {
			if ( ( (*( p))) == 110u ) {
				goto _st69;
			}
			goto _st0;
		}
		_st73:
		if ( p == eof )
			goto _out73;
		p+= 1;
		st_case_73:
		if ( p == pe && p != eof )
			goto _out73;
		if ( p == eof ) {
			goto _st73;}
		else {
			switch( ( (*( p))) ) {
				case 97u: {
					goto _st74;
				}
				case 117u: {
					goto _st72;
				}
			}
			goto _st0;
		}
		_st74:
		if ( p == eof )
			goto _out74;
		p+= 1;
		st_case_74:
		if ( p == pe && p != eof )
			goto _out74;
		if ( p == eof ) {
			goto _st74;}
		else {
			if ( ( (*( p))) == 116u ) {
				goto _st69;
			}
			goto _st0;
		}
		_st75:
		if ( p == eof )
			goto _out75;
		p+= 1;
		st_case_75:
		if ( p == pe && p != eof )
			goto _out75;
		if ( p == eof ) {
			goto _st75;}
		else {
			switch( ( (*( p))) ) {
				case 104u: {
					goto _st76;
				}
				case 117u: {
					goto _st77;
				}
			}
			goto _st0;
		}
		_st76:
		if ( p == eof )
			goto _out76;
		p+= 1;
		st_case_76:
		if ( p == pe && p != eof )
			goto _out76;
		if ( p == eof ) {
			goto _st76;}
		else {
			if ( ( (*( p))) == 117u ) {
				goto _st69;
			}
			goto _st0;
		}
		_st77:
		if ( p == eof )
			goto _out77;
		p+= 1;
		st_case_77:
		if ( p == pe && p != eof )
			goto _out77;
		if ( p == eof ) {
			goto _st77;}
		else {
			if ( ( (*( p))) == 101u ) {
				goto _st69;
			}
			goto _st0;
		}
		_st78:
		if ( p == eof )
			goto _out78;
		p+= 1;
		st_case_78:
		if ( p == pe && p != eof )
			goto _out78;
		if ( p == eof ) {
			goto _st78;}
		else {
			if ( ( (*( p))) == 101u ) {
				goto _st79;
			}
			goto _st0;
		}
		_st79:
		if ( p == eof )
			goto _out79;
		p+= 1;
		st_case_79:
		if ( p == pe && p != eof )
			goto _out79;
		if ( p == eof ) {
			goto _st79;}
		else {
			if ( ( (*( p))) == 100u ) {
				goto _st69;
			}
			goto _st0;
		}
		_ctr124:
			{
#line 202 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			{{
#line 194 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
					
					if (top >= st_storage.size) {
						st_storage.size = (top + 1) * 2;
						st_storage.data = realloc (st_storage.data, st_storage.size * sizeof (int));
						g_assert (st_storage.data != NULL);
						stack = st_storage.data;
					}
				}
				stack[top] = 80; top+= 1; goto _st80;}}
		
#line 3122 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st80;
		_st80:
		if ( p == eof )
			goto _out80;
		p+= 1;
		st_case_80:
		if ( p == pe && p != eof )
			goto _out80;
		if ( p == eof ) {
			goto _st80;}
		else {
			switch( ( (*( p))) ) {
				case 40u: {
					goto _ctr124;
				}
				case 41u: {
					goto _ctr125;
				}
			}
			if ( ( (*( p))) < 192u ) {
				if ( ( (*( p))) > 91u ) {
					if ( 93u <= ( (*( p))) && ( (*( p))) <= 126u ) {
						goto _st80;
					}
				} else if ( ( (*( p))) >= 32u ) {
					goto _st80;
				}
			} else if ( ( (*( p))) > 223u ) {
				if ( ( (*( p))) > 239u ) {
					if ( ( (*( p))) <= 247u ) {
						goto _st83;
					}
				} else {
					goto _st82;
				}
			} else {
				goto _st81;
			}
			goto _st0;
		}
		_ctr125:
			{
#line 203 "/build/rspamd/src/rspamd/src/ragel/smtp_date.rl"
			{top -= 1;cs = stack[top];goto _again;} }
		
#line 3168 "/build/rspamd/src/build/src/date_parser.rl.c"

		goto _st103;
		_st103:
		if ( p == eof )
			goto _out103;
		p+= 1;
		st_case_103:
		if ( p == pe && p != eof )
			goto _out103;
		if ( p == eof ) {
			goto _st103;}
		else {
			goto _st0;
		}
		_st81:
		if ( p == eof )
			goto _out81;
		p+= 1;
		st_case_81:
		if ( p == pe && p != eof )
			goto _out81;
		if ( p == eof ) {
			goto _st81;}
		else {
			if ( 128u <= ( (*( p))) && ( (*( p))) <= 191u ) {
				goto _st80;
			}
			goto _st0;
		}
		_st82:
		if ( p == eof )
			goto _out82;
		p+= 1;
		st_case_82:
		if ( p == pe && p != eof )
			goto _out82;
		if ( p == eof ) {
			goto _st82;}
		else {
			if ( 128u <= ( (*( p))) && ( (*( p))) <= 191u ) {
				goto _st81;
			}
			goto _st0;
		}
		_st83:
		if ( p == eof )
			goto _out83;
		p+= 1;
		st_case_83:
		if ( p == pe && p != eof )
			goto _out83;
		if ( p == eof ) {
			goto _st83;}
		else {
			if ( 128u <= ( (*( p))) && ( (*( p))) <= 191u ) {
				goto _st82;
			}
			goto _st0;
		}
		_out1: cs = 1; goto _out; 
		_out0: cs = 0; goto _out; 
		_out2: cs = 2; goto _out; 
		_out3: cs = 3; goto _out; 
		_out4: cs = 4; goto _out; 
		_out5: cs = 5; goto _out; 
		_out6: cs = 6; goto _out; 
		_out7: cs = 7; goto _out; 
		_out8: cs = 8; goto _out; 
		_out9: cs = 9; goto _out; 
		_out10: cs = 10; goto _out; 
		_out11: cs = 11; goto _out; 
		_out12: cs = 12; goto _out; 
		_out13: cs = 13; goto _out; 
		_out14: cs = 14; goto _out; 
		_out15: cs = 15; goto _out; 
		_out16: cs = 16; goto _out; 
		_out17: cs = 17; goto _out; 
		_out18: cs = 18; goto _out; 
		_out19: cs = 19; goto _out; 
		_out20: cs = 20; goto _out; 
		_out84: cs = 84; goto _out; 
		_out85: cs = 85; goto _out; 
		_out21: cs = 21; goto _out; 
		_out22: cs = 22; goto _out; 
		_out23: cs = 23; goto _out; 
		_out24: cs = 24; goto _out; 
		_out86: cs = 86; goto _out; 
		_out87: cs = 87; goto _out; 
		_out25: cs = 25; goto _out; 
		_out88: cs = 88; goto _out; 
		_out26: cs = 26; goto _out; 
		_out89: cs = 89; goto _out; 
		_out90: cs = 90; goto _out; 
		_out27: cs = 27; goto _out; 
		_out91: cs = 91; goto _out; 
		_out28: cs = 28; goto _out; 
		_out92: cs = 92; goto _out; 
		_out93: cs = 93; goto _out; 
		_out29: cs = 29; goto _out; 
		_out94: cs = 94; goto _out; 
		_out95: cs = 95; goto _out; 
		_out30: cs = 30; goto _out; 
		_out96: cs = 96; goto _out; 
		_out31: cs = 31; goto _out; 
		_out97: cs = 97; goto _out; 
		_out98: cs = 98; goto _out; 
		_out32: cs = 32; goto _out; 
		_out99: cs = 99; goto _out; 
		_out33: cs = 33; goto _out; 
		_out100: cs = 100; goto _out; 
		_out101: cs = 101; goto _out; 
		_out102: cs = 102; goto _out; 
		_out34: cs = 34; goto _out; 
		_out35: cs = 35; goto _out; 
		_out36: cs = 36; goto _out; 
		_out37: cs = 37; goto _out; 
		_out38: cs = 38; goto _out; 
		_out39: cs = 39; goto _out; 
		_out40: cs = 40; goto _out; 
		_out41: cs = 41; goto _out; 
		_out42: cs = 42; goto _out; 
		_out43: cs = 43; goto _out; 
		_out44: cs = 44; goto _out; 
		_out45: cs = 45; goto _out; 
		_out46: cs = 46; goto _out; 
		_out47: cs = 47; goto _out; 
		_out48: cs = 48; goto _out; 
		_out49: cs = 49; goto _out; 
		_out50: cs = 50; goto _out; 
		_out51: cs = 51; goto _out; 
		_out52: cs = 52; goto _out; 
		_out53: cs = 53; goto _out; 
		_out54: cs = 54; goto _out; 
		_out55: cs = 55; goto _out; 
		_out56: cs = 56; goto _out; 
		_out57: cs = 57; goto _out; 
		_out58: cs = 58; goto _out; 
		_out59: cs = 59; goto _out; 
		_out60: cs = 60; goto _out; 
		_out61: cs = 61; goto _out; 
		_out62: cs = 62; goto _out; 
		_out63: cs = 63; goto _out; 
		_out64: cs = 64; goto _out; 
		_out65: cs = 65; goto _out; 
		_out66: cs = 66; goto _out; 
		_out67: cs = 67; goto _out; 
		_out68: cs = 68; goto _out; 
		_out69: cs = 69; goto _out; 
		_out70: cs = 70; goto _out; 
		_out71: cs = 71; goto _out; 
		_out72: cs = 72; goto _out; 
		_out73: cs = 73; goto _out; 
		_out74: cs = 74; goto _out; 
		_out75: cs = 75; goto _out; 
		_out76: cs = 76; goto _out; 
		_out77: cs = 77; goto _out; 
		_out78: cs = 78; goto _out; 
		_out79: cs = 79; goto _out; 
		_out80: cs = 80; goto _out; 
		_out103: cs = 103; goto _out; 
		_out81: cs = 81; goto _out; 
		_out82: cs = 82; goto _out; 
		_out83: cs = 83; goto _out; 
		_out: {}
	}
	
#line 34 "/build/rspamd/src/rspamd/src/ragel/smtp_date_parser.rl"

	
	if (st_storage.data) {
		free (st_storage.data);
	}
	
	if ( cs < 
#line 3340 "/build/rspamd/src/build/src/date_parser.rl.c"
84
#line 40 "/build/rspamd/src/rspamd/src/ragel/smtp_date_parser.rl"
 ) {
		g_set_error (err, g_quark_from_static_string ("smtp_date"), cs, "invalid date at offset %d (%c), state %d",
		(int)(p - data), (*p > 0 && *p < 128) ? *p : '?', cs);
		return (uint64_t)(-1);
	}
	
	return rspamd_tm_to_time (&tm, tz);
}