+lab25:
+ if (cur_input.loc_field <= cur_input.limit_field)
+ {
+ cur_chr = buffer[cur_input.loc_field];
+ incr(cur_input.loc_field);
+lab21:
+ cur_cmd = cat_code(cur_chr);
+
+ switch (cur_input.state_field + cur_cmd)
+ {
+ case any_state_plus(ignore):
+ case skip_blanks + spacer:
+ case new_line + spacer:
+ goto lab25;
+ break;
+
+ case any_state_plus(escape):
+ {
+ if (cur_input.loc_field > cur_input.limit_field)
+ cur_cs = null_cs;
+ else
+ {
+lab26:
+ k = cur_input.loc_field;
+ cur_chr = buffer[k];
+ cat = cat_code(cur_chr);
+ incr(k);
+
+ if (cat == letter)
+ cur_input.state_field = skip_blanks;
+ else if (cat == spacer)
+ cur_input.state_field = skip_blanks;
+ else
+ cur_input.state_field = mid_line;
+
+ if ((cat == letter) && (k <= cur_input.limit_field))
+ {
+ do
+ {
+ cur_chr = buffer[k];
+ cat = cat_code(cur_chr);
+ incr(k);
+ }
+ while(!((cat != letter) || (k > cur_input.limit_field)));
+
+ {
+ if (buffer[k]== cur_chr)
+ if (cat == sup_mark)
+ if (k < cur_input.limit_field)
+ {
+ c = buffer[k + 1];
+
+ if (c < 128)
+ {
+ d = 2;
+ if ((((c >= 48) && (c <= 57)) || ((c >= 97) && (c <= 102))))
+ if (k + 2 <= cur_input.limit_field)
+ {
+ cc = buffer[k + 2];
+
+ if ((((cc >= 48) && (cc <= 57)) || ((cc >= 97) && (cc <= 102))))
+ incr(d);
+ }
+
+ if (d > 2)
+ {
+ if (c <= 57)
+ cur_chr = c - 48;
+ else
+ cur_chr = c - 87;
+
+ if (cc <= 57)
+ cur_chr = 16 * cur_chr + cc - 48;
+ else
+ cur_chr = 16 * cur_chr + cc - 87;
+
+ buffer[k - 1] = cur_chr;
+ }
+ else if (c < 64)
+ buffer[k - 1] = c + 64;
+ else
+ buffer[k - 1] = c - 64;
+
+ cur_input.limit_field = cur_input.limit_field - d;
+ first = first - d;
+
+ while (k <= cur_input.limit_field)
+ {
+ buffer[k] = buffer[k + d];
+ incr(k);
+ }
+
+ goto lab26;
+ }
+ }
+ }
+
+ if (cat != letter)
+ decr(k);
+
+ if (k > cur_input.loc_field + 1)
+ {
+ cur_cs = id_lookup(cur_input.loc_field, k - cur_input.loc_field);
+ cur_input.loc_field = k;
+ goto lab40;
+ }
+ }
+ else
+ {
+ if (buffer[k] == cur_chr)
+ if (cat == sup_mark)
+ if (k < cur_input.limit_field)
+ {
+ c = buffer[k + 1];
+
+ if (c < 128) /* ? */
+ {
+ d = 2;
+ if ((((c >= 48) && (c <= 57)) || ((c >= 97) && (c <= 102))))
+ if (k + 2 <= cur_input.limit_field)
+ {
+ cc = buffer[k + 2];
+
+ if ((((cc >= 48) && (cc <= 57)) || ((cc >= 97) && (cc <= 102))))
+ incr(d);
+ }
+
+ if (d > 2)
+ {
+ if (c <= 57)
+ cur_chr = c - 48;
+ else
+ cur_chr = c - 87;
+
+ if (cc <= 57) /* cc may be used without ... */
+ cur_chr = 16 * cur_chr + cc - 48;
+ else
+ cur_chr = 16 * cur_chr + cc - 87;
+
+ buffer[k - 1] = cur_chr;
+ }
+ else if (c < 64)
+ buffer[k - 1] = c + 64;
+ else
+ buffer[k - 1] = c - 64;
+
+ cur_input.limit_field = cur_input.limit_field - d;
+ first = first - d;
+
+ while (k <= cur_input.limit_field)
+ {
+ buffer[k] = buffer[k + d];
+ incr(k);
+ }
+ goto lab26;
+ }
+ }
+ }
+ cur_cs = single_base + buffer[cur_input.loc_field];
+ incr(cur_input.loc_field);
+ }
+lab40:
+ cur_cmd = eq_type(cur_cs);
+ cur_chr = equiv(cur_cs);
+
+ if (cur_cmd >= outer_call)
+ check_outer_validity();
+ }
+ break;
+
+ case any_state_plus(active_char):
+ {
+ cur_cs = cur_chr + active_base;
+ cur_cmd = eq_type(cur_cs);
+ cur_chr = equiv(cur_cs);
+ cur_input.state_field = mid_line;
+
+ if (cur_cmd >= outer_call)
+ check_outer_validity();
+ }
+ break;
+
+ case any_state_plus(sup_mark):
+ {
+ if (cur_chr == buffer[cur_input.loc_field])
+ if (cur_input.loc_field < cur_input.limit_field)
+ {
+ c = buffer[cur_input.loc_field + 1];
+
+ if (c < 128)
+ {
+ cur_input.loc_field = cur_input.loc_field + 2;
+
+ if ((((c >= 48) && (c <= 57)) || ((c >= 97) && (c <= 102))))
+ if (cur_input.loc_field <= cur_input.limit_field)
+ {
+ cc = buffer[cur_input.loc_field];
+
+ if ((((cc >= 48) && (cc <= 57)) || ((cc >= 97) && (cc <= 102))))
+ {
+ incr(cur_input.loc_field);
+
+ if (c <= 57)
+ cur_chr = c - 48;
+ else
+ cur_chr = c - 87;
+
+ if (cc <= 57)
+ cur_chr = 16 * cur_chr + cc - 48;
+ else
+ cur_chr = 16 * cur_chr + cc - 87;
+
+ goto lab21;
+ }
+ }
+
+ if (c < 64)
+ cur_chr = c + 64;
+ else
+ cur_chr = c - 64;
+
+ goto lab21;
+ }
+ }
+
+ cur_input.state_field = mid_line;
+ }
+ break;
+
+ case any_state_plus(invalid_char):
+ {
+ print_err("Text line contains an invalid character");
+ help2("A funny symbol that I can't read has just been input.",
+ "Continue, and I'll forget that it ever happened.");
+ deletions_allowed = false;
+ error();
+ deletions_allowed = true;
+ goto lab20;
+ }
+ break;
+
+ case mid_line + spacer:
+ {
+ cur_input.state_field = skip_blanks;
+ cur_chr = ' ';
+ }
+ break;
+
+ case mid_line + car_ret:
+ {
+ cur_input.loc_field = cur_input.limit_field + 1;
+ cur_cmd = spacer;
+ cur_chr = ' ';
+ }
+ break;
+
+ case skip_blanks + car_ret:
+ case any_state_plus(comment):
+ {
+ cur_input.loc_field = cur_input.limit_field + 1;
+ goto lab25;
+ }
+ break;
+
+ case new_line + car_ret:
+ {
+ cur_input.loc_field = cur_input.limit_field + 1;
+ cur_cs = par_loc;
+ cur_cmd = eq_type(cur_cs);
+ cur_chr = equiv(cur_cs);
+
+ if (cur_cmd >= outer_call)
+ check_outer_validity();
+ }
+ break;
+
+ case mid_line + left_brace:
+ incr(align_state);
+ break;
+
+ case skip_blanks + left_brace:
+ case new_line + left_brace:
+ {
+ cur_input.state_field = mid_line;
+ incr(align_state);
+ }
+ break;
+
+ case mid_line + right_brace:
+ decr(align_state);
+ break;
+
+ case skip_blanks + right_brace:
+ case new_line + right_brace:
+ {
+ cur_input.state_field = 1;
+ decr(align_state);
+ }
+ break;
+
+ case add_delims_to(skip_blanks):
+ case add_delims_to(new_line):
+ cur_input.state_field = 1;
+ break;
+
+ default:
+ break;
+ }