rem: case 'k': PARSE_COMPACT(HDR_SUPPORTED);     break;
context: char* parse_hname2(char* begin, char* end, struct hdr_field* hdr){	register char* p;	register unsigned int val;	if ((end - begin) < 4) {		hdr->type = HDR_ERROR;		return begin;	}	p = begin;	val = LOWER_DWORD(READ(p));	hdr->name.s = begin;	switch(val) {	FIRST_QUATERNIONS;	default:		switch(LOWER_BYTE(*p)) {		case 't':                           			switch(LOWER_BYTE(*(p + 1))) {          			case 'o':                   			case ' ':                   				hdr->type = HDR_TO; 				p += 2;             				goto dc_end;        							case ':':                   				hdr->type = HDR_TO; 				hdr->name.len = 1;  				return (p + 2);     			}                           			break;		case 'v': PARSE_COMPACT(HDR_VIA);           break;		case 'f': PARSE_COMPACT(HDR_FROM);          break;		case 'i': PARSE_COMPACT(HDR_CALLID);        break;		case 'm': PARSE_COMPACT(HDR_CONTACT);       break;		case 'l': PARSE_COMPACT(HDR_CONTENTLENGTH); break;		case 'c': PARSE_COMPACT(HDR_CONTENTTYPE);   break;		case 'k': PARSE_COMPACT(HDR_SUPPORTED);     break;		case 'o': PARSE_COMPACT(HDR_EVENT);         break;		}		goto other;        }	     /* Double colon hasn't been found yet */ dc_end:       	p = skip_ws(p, end - p);	if (*p != ':') {   	        goto other;	} else {		hdr->name.len = p - hdr->name.s;		return (p + 1);	}	     /* Unknown header type */ other:    	p = q_memchr(p, ':', end - p);	if (!p) {        /* No double colon found, error.. */		hdr->type = HDR_ERROR;		hdr->name.s = 0;		hdr->name.len = 0;		return 0;	} else {		hdr->type = HDR_OTHER;		hdr->name.len = p - hdr->name.s;		return (p + 1);	}}