got the lexer compression done correctly

master
Allen Webster 2017-04-18 10:39:24 -04:00
parent ab0f7f3028
commit a5936fa734
4 changed files with 483 additions and 500 deletions

View File

@ -867,18 +867,6 @@ cpp_lex_nonalloc_null_end_no_limit(Cpp_Lex_Data *S_ptr, char *chunk, i32_4tech s
} }
}break; }break;
case LS_less_less:
{
S.token.flags = CPP_TFLAG_IS_OPERATOR;
switch (c){
case '=': S.token.type = CPP_TOKEN_LSHIFTEQ; break;
default:
S.token.type = CPP_TOKEN_LSHIFT;
--S.pos;
break;
}
}break;
case LS_more: case LS_more:
{ {
S.token.flags = CPP_TFLAG_IS_OPERATOR; S.token.flags = CPP_TFLAG_IS_OPERATOR;
@ -891,18 +879,6 @@ cpp_lex_nonalloc_null_end_no_limit(Cpp_Lex_Data *S_ptr, char *chunk, i32_4tech s
} }
}break; }break;
case LS_more_more:
{
S.token.flags = CPP_TFLAG_IS_OPERATOR;
switch (c){
case '=': S.token.type = CPP_TOKEN_RSHIFTEQ; break;
default:
S.token.type = CPP_TOKEN_RSHIFT;
--S.pos;
break;
}
}break;
case LS_minus: case LS_minus:
{ {
S.token.flags = CPP_TFLAG_IS_OPERATOR; S.token.flags = CPP_TFLAG_IS_OPERATOR;
@ -985,11 +961,13 @@ cpp_lex_nonalloc_null_end_no_limit(Cpp_Lex_Data *S_ptr, char *chunk, i32_4tech s
u32_4tech eq_version = 0; u32_4tech eq_version = 0;
S.token.flags = CPP_TFLAG_IS_OPERATOR; S.token.flags = CPP_TFLAG_IS_OPERATOR;
switch (S.tb[0]){ switch (S.tb[0]){
case '*': plain_version = CPP_TOKEN_STAR; eq_version = CPP_TOKEN_MULEQ; break; case '*': plain_version = CPP_TOKEN_STAR; eq_version = CPP_TOKEN_MULEQ; break;
case '%': plain_version = CPP_TOKEN_MOD; eq_version = CPP_TOKEN_MODEQ; break; case '%': plain_version = CPP_TOKEN_MOD; eq_version = CPP_TOKEN_MODEQ; break;
case '^': plain_version = CPP_TOKEN_BIT_XOR; eq_version = CPP_TOKEN_XOREQ; break; case '^': plain_version = CPP_TOKEN_BIT_XOR; eq_version = CPP_TOKEN_XOREQ; break;
case '=': plain_version = CPP_TOKEN_EQ; eq_version = CPP_TOKEN_EQEQ; break; case '=': plain_version = CPP_TOKEN_EQ; eq_version = CPP_TOKEN_EQEQ; break;
case '!': plain_version = CPP_TOKEN_NOT; eq_version = CPP_TOKEN_NOTEQ; break; case '!': plain_version = CPP_TOKEN_NOT; eq_version = CPP_TOKEN_NOTEQ; break;
case '<': plain_version = CPP_TOKEN_LSHIFT; eq_version = CPP_TOKEN_LSHIFTEQ; break;
case '>': plain_version = CPP_TOKEN_RSHIFT; eq_version = CPP_TOKEN_RSHIFTEQ; break;
} }
S.token.type = eq_version; S.token.type = eq_version;

View File

@ -180,531 +180,531 @@ u8_4tech normal_char_flags[] = {
}; };
u16_4tech main_fsm_eq_classes[] = { u16_4tech main_fsm_eq_classes[] = {
0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 66, 99, 99, 99, 33, 33, 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 93, 93, 93, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
132,165,198,231,264,165,297,330,363,363,396,429,363,462,495,528, 124,155,186,217,248,155,279,310,341,341,372,403,341,434,465,496,
561,594,594,594,594,594,594,594,627,594,660,363,693,165,726,363, 527,558,558,558,558,558,558,558,589,558,620,341,651,155,682,341,
363,759,759,759,759,759,759,792,792,792,792,792,825,792,792,792, 341,713,713,713,713,713,713,744,744,744,744,744,775,744,744,744,
792,792,858,792,792,825,792,792,792,792,792,363,891,363,165,264, 744,744,806,744,744,775,744,744,744,744,744,341,837,341,155,248,
33,759,759,759,759,924,759,792,792,792,792,792,792,792,792,792, 31,713,713,713,713,868,713,744,744,744,744,744,744,744,744,744,
792,792,792,792,792,957,792,792,990,792,792,363,1023,363,363, 33, 744,744,744,744,744,899,744,744,930,744,744,341,961,341,341, 31,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
}; };
const i32_4tech num_main_fsm_eq_classes = 32; const i32_4tech num_main_fsm_eq_classes = 32;
u8_4tech main_fsm_table[] = { u8_4tech main_fsm_table[] = {
33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
0, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 48, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 46, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 3, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 16, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 3, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 16, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 3, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 3, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
31, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 29, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
39, 34, 35, 36, 37, 38, 39, 39, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 37, 32, 33, 34, 35, 36, 37, 37, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
3, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 3, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 36, 37, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 34, 35, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
27, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 25, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
67, 34, 35, 36, 37, 34, 67, 67, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 63, 32, 33, 34, 35, 32, 63, 63, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
33, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 31, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
31, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 17, 15, 15, 18, 18, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 29, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 17, 15, 15, 18, 18, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
29, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 27, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
25, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 12, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 23, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 12, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
19, 34, 35, 36, 37, 34, 34, 34, 10, 10, 43, 44, 45, 46, 47, 15, 15, 17, 17, 20, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 19, 32, 33, 34, 35, 32, 32, 32, 10, 10, 41, 42, 43, 44, 45, 15, 15, 17, 17, 20, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
14, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 15, 15, 15, 17, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 14, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 15, 15, 15, 17, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
9, 1, 35, 36, 37, 1, 1, 1, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 9, 1, 33, 34, 35, 1, 1, 1, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
8, 1, 35, 36, 37, 1, 1, 1, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 8, 1, 33, 34, 35, 1, 1, 1, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
8, 1, 35, 36, 37, 1, 1, 6, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 8, 1, 33, 34, 35, 1, 1, 6, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
30, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 28, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
21, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 22, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 21, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 29, 53, 54, 55, 56, 57, 58, 59, 60, 30,
23, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 24, 57, 26, 59, 60, 61, 62, 63, 64, 32, 22, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 29, 24, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 13, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 13, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
6, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 6, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
5, 1, 35, 4, 4, 1, 5, 5, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 5, 1, 33, 4, 4, 1, 5, 5, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
33, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 16, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 31, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 16, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 11, 44, 45, 13, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 11, 42, 43, 13, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
7, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 7, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 13, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 13, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
28, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 26, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
}; };
u16_4tech pp_include_fsm_eq_classes[] = { u16_4tech pp_include_fsm_eq_classes[] = {
0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 66, 99, 99, 99, 33, 33, 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 93, 93, 93, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
132,165,198,231,264,165,297,330,363,363,396,429,363,462,495,528, 124,155,186,217,248,155,279,310,341,341,372,403,341,434,465,496,
561,594,594,594,594,594,594,594,627,594,660,363,693,165,726,363, 527,558,558,558,558,558,558,558,589,558,620,341,651,155,682,341,
363,759,759,759,759,759,759,792,792,792,792,792,825,792,792,792, 341,713,713,713,713,713,713,744,744,744,744,744,775,744,744,744,
792,792,858,792,792,825,792,792,792,792,792,363,891,363,165,264, 744,744,806,744,744,775,744,744,744,744,744,341,837,341,155,248,
33,759,759,759,759,924,759,792,792,792,792,792,792,792,792,792, 31,713,713,713,713,868,713,744,744,744,744,744,744,744,744,744,
792,792,792,792,792,957,792,792,990,792,792,363,1023,363,363, 33, 744,744,744,744,744,899,744,744,930,744,744,341,961,341,341, 31,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
}; };
const i32_4tech num_pp_include_fsm_eq_classes = 32; const i32_4tech num_pp_include_fsm_eq_classes = 32;
u8_4tech pp_include_fsm_table[] = { u8_4tech pp_include_fsm_table[] = {
33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
0, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 48, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 46, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 3, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 16, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 3, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 16, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 3, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 3, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
31, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 29, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
39, 34, 35, 36, 37, 38, 39, 39, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 37, 32, 33, 34, 35, 36, 37, 37, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
2, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 2, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 36, 37, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 34, 35, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
27, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 25, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
67, 34, 35, 36, 37, 34, 67, 67, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 63, 32, 33, 34, 35, 32, 63, 63, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
33, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 31, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
31, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 17, 15, 15, 18, 18, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 29, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 17, 15, 15, 18, 18, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
29, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 27, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
25, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 12, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 23, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 12, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
19, 34, 35, 36, 37, 34, 34, 34, 10, 10, 43, 44, 45, 46, 47, 15, 15, 17, 17, 20, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 19, 32, 33, 34, 35, 32, 32, 32, 10, 10, 41, 42, 43, 44, 45, 15, 15, 17, 17, 20, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
14, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 15, 15, 15, 17, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 14, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 15, 15, 15, 17, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
9, 1, 35, 36, 37, 1, 1, 1, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 9, 1, 33, 34, 35, 1, 1, 1, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
8, 1, 35, 36, 37, 1, 1, 1, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 8, 1, 33, 34, 35, 1, 1, 1, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
8, 1, 35, 36, 37, 1, 1, 6, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 8, 1, 33, 34, 35, 1, 1, 6, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
30, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 28, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
40, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 22, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 38, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 29, 53, 54, 55, 56, 57, 58, 59, 60, 30,
23, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 24, 57, 26, 59, 60, 61, 62, 63, 64, 32, 22, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 29, 24, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 13, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 13, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
6, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 6, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
5, 1, 35, 4, 4, 1, 5, 5, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 5, 1, 33, 4, 4, 1, 5, 5, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
33, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 16, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 31, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 16, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 11, 44, 45, 13, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 11, 42, 43, 13, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
7, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 7, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 13, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 13, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
28, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 26, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
}; };
u16_4tech pp_macro_fsm_eq_classes[] = { u16_4tech pp_macro_fsm_eq_classes[] = {
0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 66, 99, 99, 99, 33, 33, 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 93, 93, 93, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
132,165,198,231,264,165,297,330,363,363,396,429,363,462,495,528, 124,155,186,217,248,155,279,310,341,341,372,403,341,434,465,496,
561,594,594,594,594,594,594,594,627,594,660,363,693,165,726,363, 527,558,558,558,558,558,558,558,589,558,620,341,651,155,682,341,
363,759,759,759,759,759,759,792,792,792,792,792,825,792,792,792, 341,713,713,713,713,713,713,744,744,744,744,744,775,744,744,744,
792,792,858,792,792,825,792,792,792,792,792,363,891,363,165,264, 744,744,806,744,744,775,744,744,744,744,744,341,837,341,155,248,
33,759,759,759,759,924,759,792,792,792,792,792,792,792,792,792, 31,713,713,713,713,868,713,744,744,744,744,744,744,744,744,744,
792,792,792,792,792,957,792,792,990,792,792,363,1023,363,363, 33, 744,744,744,744,744,899,744,744,930,744,744,341,961,341,341, 31,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
}; };
const i32_4tech num_pp_macro_fsm_eq_classes = 32; const i32_4tech num_pp_macro_fsm_eq_classes = 32;
u8_4tech pp_macro_fsm_table[] = { u8_4tech pp_macro_fsm_table[] = {
33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
0, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 48, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 46, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 3, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 16, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 3, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 16, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 3, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 3, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
31, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 29, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
39, 34, 35, 36, 37, 38, 39, 39, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 37, 32, 33, 34, 35, 36, 37, 37, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
2, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 2, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 36, 37, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 34, 35, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
27, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 25, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
67, 34, 35, 36, 37, 34, 67, 67, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 63, 32, 33, 34, 35, 32, 63, 63, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
33, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 31, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
31, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 17, 15, 15, 18, 18, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 29, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 17, 15, 15, 18, 18, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
29, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 27, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
25, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 12, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 23, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 12, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
19, 34, 35, 36, 37, 34, 34, 34, 10, 10, 43, 44, 45, 46, 47, 15, 15, 17, 17, 20, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 19, 32, 33, 34, 35, 32, 32, 32, 10, 10, 41, 42, 43, 44, 45, 15, 15, 17, 17, 20, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
14, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 15, 15, 15, 17, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 14, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 15, 15, 15, 17, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
9, 1, 35, 36, 37, 1, 1, 1, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 9, 1, 33, 34, 35, 1, 1, 1, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
8, 1, 35, 36, 37, 1, 1, 1, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 8, 1, 33, 34, 35, 1, 1, 1, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
8, 1, 35, 36, 37, 1, 1, 6, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 8, 1, 33, 34, 35, 1, 1, 6, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
30, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 28, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
21, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 22, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 21, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 29, 53, 54, 55, 56, 57, 58, 59, 60, 30,
23, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 24, 57, 26, 59, 60, 61, 62, 63, 64, 32, 22, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 29, 24, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 13, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 13, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
6, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 6, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
5, 1, 35, 4, 4, 1, 5, 5, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 5, 1, 33, 4, 4, 1, 5, 5, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
33, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 16, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 31, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 16, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 11, 44, 45, 13, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 11, 42, 43, 13, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
7, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 7, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 13, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 13, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
28, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 26, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
}; };
u16_4tech pp_identifier_fsm_eq_classes[] = { u16_4tech pp_identifier_fsm_eq_classes[] = {
0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 66, 99, 99, 99, 33, 33, 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 93, 93, 93, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
132,165,198,231,264,165,297,330,363,363,396,429,363,462,495,528, 124,155,186,217,248,155,279,310,341,341,372,403,341,434,465,496,
561,594,594,594,594,594,594,594,627,594,660,363,693,165,726,363, 527,558,558,558,558,558,558,558,589,558,620,341,651,155,682,341,
363,759,759,759,759,759,759,792,792,792,792,792,825,792,792,792, 341,713,713,713,713,713,713,744,744,744,744,744,775,744,744,744,
792,792,858,792,792,825,792,792,792,792,792,363,891,363,165,264, 744,744,806,744,744,775,744,744,744,744,744,341,837,341,155,248,
33,759,759,759,759,924,759,792,792,792,792,792,792,792,792,792, 31,713,713,713,713,868,713,744,744,744,744,744,744,744,744,744,
792,792,792,792,792,957,792,792,990,792,792,363,1023,363,363, 33, 744,744,744,744,744,899,744,744,930,744,744,341,961,341,341, 31,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
}; };
const i32_4tech num_pp_identifier_fsm_eq_classes = 32; const i32_4tech num_pp_identifier_fsm_eq_classes = 32;
u8_4tech pp_identifier_fsm_table[] = { u8_4tech pp_identifier_fsm_table[] = {
33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
0, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 48, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 46, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 3, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 16, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 3, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 16, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 3, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 3, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
31, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 29, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
39, 34, 35, 36, 37, 38, 39, 39, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 37, 32, 33, 34, 35, 36, 37, 37, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
2, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 2, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 36, 37, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 34, 35, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
27, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 25, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
67, 34, 35, 36, 37, 34, 67, 67, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 63, 32, 33, 34, 35, 32, 63, 63, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
33, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 31, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
31, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 17, 15, 15, 18, 18, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 29, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 17, 15, 15, 18, 18, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
29, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 27, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
25, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 12, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 23, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 12, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
19, 34, 35, 36, 37, 34, 34, 34, 10, 10, 43, 44, 45, 46, 47, 15, 15, 17, 17, 20, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 19, 32, 33, 34, 35, 32, 32, 32, 10, 10, 41, 42, 43, 44, 45, 15, 15, 17, 17, 20, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
14, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 15, 15, 15, 17, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 14, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 15, 15, 15, 17, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
9, 1, 35, 36, 37, 1, 1, 1, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 9, 1, 33, 34, 35, 1, 1, 1, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
8, 1, 35, 36, 37, 1, 1, 1, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 8, 1, 33, 34, 35, 1, 1, 1, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
8, 1, 35, 36, 37, 1, 1, 6, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 8, 1, 33, 34, 35, 1, 1, 6, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
30, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 28, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
21, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 22, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 21, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 29, 53, 54, 55, 56, 57, 58, 59, 60, 30,
23, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 24, 57, 26, 59, 60, 61, 62, 63, 64, 32, 22, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 29, 24, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 13, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 13, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
6, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 6, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
5, 1, 35, 4, 4, 1, 5, 5, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 5, 1, 33, 4, 4, 1, 5, 5, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
33, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 16, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 31, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 16, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 11, 44, 45, 13, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 11, 42, 43, 13, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
7, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 7, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 13, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 13, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
28, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 26, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
}; };
u16_4tech pp_body_if_fsm_eq_classes[] = { u16_4tech pp_body_if_fsm_eq_classes[] = {
0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 66, 99, 99, 99, 33, 33, 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 93, 93, 93, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
132,165,198,231,264,165,297,330,363,363,396,429,363,462,495,528, 124,155,186,217,248,155,279,310,341,341,372,403,341,434,465,496,
561,594,594,594,594,594,594,594,627,594,660,363,693,165,726,363, 527,558,558,558,558,558,558,558,589,558,620,341,651,155,682,341,
363,759,759,759,759,759,759,792,792,792,792,792,825,792,792,792, 341,713,713,713,713,713,713,744,744,744,744,744,775,744,744,744,
792,792,858,792,792,825,792,792,792,792,792,363,891,363,165,264, 744,744,806,744,744,775,744,744,744,744,744,341,837,341,155,248,
33,759,759,759,759,924,759,792,792,792,792,792,792,792,792,792, 31,713,713,713,713,868,713,744,744,744,744,744,744,744,744,744,
792,792,792,792,792,957,792,792,990,792,792,363,1023,363,363, 33, 744,744,744,744,744,899,744,744,930,744,744,341,961,341,341, 31,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
}; };
const i32_4tech num_pp_body_if_fsm_eq_classes = 32; const i32_4tech num_pp_body_if_fsm_eq_classes = 32;
u8_4tech pp_body_if_fsm_table[] = { u8_4tech pp_body_if_fsm_table[] = {
33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
0, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 48, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 46, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 3, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 16, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 3, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 16, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 3, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 3, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
31, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 29, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
39, 34, 35, 36, 37, 38, 39, 39, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 37, 32, 33, 34, 35, 36, 37, 37, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
2, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 2, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 36, 37, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 34, 35, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
27, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 25, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
67, 34, 35, 36, 37, 34, 67, 67, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 63, 32, 33, 34, 35, 32, 63, 63, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
33, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 31, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
31, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 17, 15, 15, 18, 18, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 29, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 17, 15, 15, 18, 18, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
29, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 27, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
25, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 12, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 23, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 12, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
19, 34, 35, 36, 37, 34, 34, 34, 10, 10, 43, 44, 45, 46, 47, 15, 15, 17, 17, 20, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 19, 32, 33, 34, 35, 32, 32, 32, 10, 10, 41, 42, 43, 44, 45, 15, 15, 17, 17, 20, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
14, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 15, 15, 15, 17, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 14, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 15, 15, 15, 17, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
9, 1, 35, 36, 37, 1, 1, 1, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 9, 1, 33, 34, 35, 1, 1, 1, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
8, 1, 35, 36, 37, 1, 1, 1, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 8, 1, 33, 34, 35, 1, 1, 1, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
8, 1, 35, 36, 37, 1, 1, 6, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 8, 1, 33, 34, 35, 1, 1, 6, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
30, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 28, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
21, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 22, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 21, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 29, 53, 54, 55, 56, 57, 58, 59, 60, 30,
23, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 24, 57, 26, 59, 60, 61, 62, 63, 64, 32, 22, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 29, 24, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 13, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 13, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
6, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 6, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
5, 1, 35, 4, 4, 1, 5, 5, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 5, 1, 33, 4, 4, 1, 5, 5, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
33, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 16, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 31, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 16, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 11, 44, 45, 13, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 11, 42, 43, 13, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
7, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 7, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 13, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 13, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
28, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 26, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
}; };
u16_4tech pp_body_fsm_eq_classes[] = { u16_4tech pp_body_fsm_eq_classes[] = {
0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 66, 99, 99, 99, 33, 33, 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 93, 93, 93, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
132,165,198,231,264,165,297,330,363,363,396,429,363,462,495,528, 124,155,186,217,248,155,279,310,341,341,372,403,341,434,465,496,
561,594,594,594,594,594,594,594,627,594,660,363,693,165,726,363, 527,558,558,558,558,558,558,558,589,558,620,341,651,155,682,341,
363,759,759,759,759,759,759,792,792,792,792,792,825,792,792,792, 341,713,713,713,713,713,713,744,744,744,744,744,775,744,744,744,
792,792,858,792,792,825,792,792,792,792,792,363,891,363,165,264, 744,744,806,744,744,775,744,744,744,744,744,341,837,341,155,248,
33,759,759,759,759,924,759,792,792,792,792,792,792,792,792,792, 31,713,713,713,713,868,713,744,744,744,744,744,744,744,744,744,
792,792,792,792,792,957,792,792,990,792,792,363,1023,363,363, 33, 744,744,744,744,744,899,744,744,930,744,744,341,961,341,341, 31,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
}; };
const i32_4tech num_pp_body_fsm_eq_classes = 32; const i32_4tech num_pp_body_fsm_eq_classes = 32;
u8_4tech pp_body_fsm_table[] = { u8_4tech pp_body_fsm_table[] = {
33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
0, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 48, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 46, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 3, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 16, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 3, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 16, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 3, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 3, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
31, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 29, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
39, 34, 35, 36, 37, 38, 39, 39, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 37, 32, 33, 34, 35, 36, 37, 37, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
2, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 2, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 36, 37, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 34, 35, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
27, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 25, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
67, 34, 35, 36, 37, 34, 67, 67, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 63, 32, 33, 34, 35, 32, 63, 63, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
33, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 31, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
31, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 17, 15, 15, 18, 18, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 29, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 17, 15, 15, 18, 18, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
29, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 27, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
25, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 12, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 23, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 12, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
19, 34, 35, 36, 37, 34, 34, 34, 10, 10, 43, 44, 45, 46, 47, 15, 15, 17, 17, 20, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 19, 32, 33, 34, 35, 32, 32, 32, 10, 10, 41, 42, 43, 44, 45, 15, 15, 17, 17, 20, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
14, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 15, 15, 15, 17, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 14, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 15, 15, 15, 17, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
9, 1, 35, 36, 37, 1, 1, 1, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 9, 1, 33, 34, 35, 1, 1, 1, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
8, 1, 35, 36, 37, 1, 1, 1, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 8, 1, 33, 34, 35, 1, 1, 1, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
8, 1, 35, 36, 37, 1, 1, 6, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 8, 1, 33, 34, 35, 1, 1, 6, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
30, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 28, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
21, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 22, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 21, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 29, 53, 54, 55, 56, 57, 58, 59, 60, 30,
23, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 24, 57, 26, 59, 60, 61, 62, 63, 64, 32, 22, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 29, 24, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 13, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 13, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
6, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 6, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
5, 1, 35, 4, 4, 1, 5, 5, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 5, 1, 33, 4, 4, 1, 5, 5, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
33, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 16, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 31, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 16, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 11, 44, 45, 13, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 11, 42, 43, 13, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
7, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 7, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 13, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 13, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
28, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 26, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
}; };
u16_4tech pp_number_fsm_eq_classes[] = { u16_4tech pp_number_fsm_eq_classes[] = {
0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 66, 99, 99, 99, 33, 33, 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 93, 93, 93, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
132,165,198,231,264,165,297,330,363,363,396,429,363,462,495,528, 124,155,186,217,248,155,279,310,341,341,372,403,341,434,465,496,
561,594,594,594,594,594,594,594,627,594,660,363,693,165,726,363, 527,558,558,558,558,558,558,558,589,558,620,341,651,155,682,341,
363,759,759,759,759,759,759,792,792,792,792,792,825,792,792,792, 341,713,713,713,713,713,713,744,744,744,744,744,775,744,744,744,
792,792,858,792,792,825,792,792,792,792,792,363,891,363,165,264, 744,744,806,744,744,775,744,744,744,744,744,341,837,341,155,248,
33,759,759,759,759,924,759,792,792,792,792,792,792,792,792,792, 31,713,713,713,713,868,713,744,744,744,744,744,744,744,744,744,
792,792,792,792,792,957,792,792,990,792,792,363,1023,363,363, 33, 744,744,744,744,744,899,744,744,930,744,744,341,961,341,341, 31,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
}; };
const i32_4tech num_pp_number_fsm_eq_classes = 32; const i32_4tech num_pp_number_fsm_eq_classes = 32;
u8_4tech pp_number_fsm_table[] = { u8_4tech pp_number_fsm_table[] = {
33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
0, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 48, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 46, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 3, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 16, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 3, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 16, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 3, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 3, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
31, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 29, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
39, 34, 35, 36, 37, 38, 39, 39, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 37, 32, 33, 34, 35, 36, 37, 37, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
2, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 2, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 36, 37, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 34, 35, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
27, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 25, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
67, 34, 35, 36, 37, 34, 67, 67, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 63, 32, 33, 34, 35, 32, 63, 63, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
33, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 31, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
31, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 17, 15, 15, 18, 18, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 29, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 17, 15, 15, 18, 18, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
29, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 27, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
25, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 12, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 23, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 12, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
19, 34, 35, 36, 37, 34, 34, 34, 10, 10, 43, 44, 45, 46, 47, 15, 15, 17, 17, 20, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 19, 32, 33, 34, 35, 32, 32, 32, 10, 10, 41, 42, 43, 44, 45, 15, 15, 17, 17, 20, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
14, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 15, 15, 15, 17, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 14, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 15, 15, 15, 17, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
9, 1, 35, 36, 37, 1, 1, 1, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 9, 1, 33, 34, 35, 1, 1, 1, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
8, 1, 35, 36, 37, 1, 1, 1, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 8, 1, 33, 34, 35, 1, 1, 1, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
8, 1, 35, 36, 37, 1, 1, 6, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 8, 1, 33, 34, 35, 1, 1, 6, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
30, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 28, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
21, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 22, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 21, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 29, 53, 54, 55, 56, 57, 58, 59, 60, 30,
23, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 24, 57, 26, 59, 60, 61, 62, 63, 64, 32, 22, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 29, 24, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 13, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 13, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
6, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 6, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
5, 1, 35, 4, 4, 1, 5, 5, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 5, 1, 33, 4, 4, 1, 5, 5, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
33, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 16, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 31, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 16, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 11, 44, 45, 13, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 11, 42, 43, 13, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
7, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 7, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 13, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 13, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
28, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 26, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
}; };
u16_4tech pp_error_fsm_eq_classes[] = { u16_4tech pp_error_fsm_eq_classes[] = {
0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 66, 33, 33, 33, 33, 33, 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 31, 31, 31, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
}; };
const i32_4tech num_pp_error_fsm_eq_classes = 3; const i32_4tech num_pp_error_fsm_eq_classes = 3;
u8_4tech pp_error_fsm_table[] = { u8_4tech pp_error_fsm_table[] = {
33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
}; };
u16_4tech pp_junk_fsm_eq_classes[] = { u16_4tech pp_junk_fsm_eq_classes[] = {
0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 66, 99, 99, 99, 33, 33, 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 93, 93, 93, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
132,165,198,231,264,165,297,330,363,363,396,429,363,462,495,528, 124,155,186,217,248,155,279,310,341,341,372,403,341,434,465,496,
561,594,594,594,594,594,594,594,627,594,660,363,693,165,726,363, 527,558,558,558,558,558,558,558,589,558,620,341,651,155,682,341,
363,759,759,759,759,759,759,792,792,792,792,792,825,792,792,792, 341,713,713,713,713,713,713,744,744,744,744,744,775,744,744,744,
792,792,858,792,792,825,792,792,792,792,792,363,891,363,165,264, 744,744,806,744,744,775,744,744,744,744,744,341,837,341,155,248,
33,759,759,759,759,924,759,792,792,792,792,792,792,792,792,792, 31,713,713,713,713,868,713,744,744,744,744,744,744,744,744,744,
792,792,792,792,792,957,792,792,990,792,792,363,1023,363,363, 33, 744,744,744,744,744,899,744,744,930,744,744,341,961,341,341, 31,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,
}; };
const i32_4tech num_pp_junk_fsm_eq_classes = 32; const i32_4tech num_pp_junk_fsm_eq_classes = 32;
u8_4tech pp_junk_fsm_table[] = { u8_4tech pp_junk_fsm_table[] = {
33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
0, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 48, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 46, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 3, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 16, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 3, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 16, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 3, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 3, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
31, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 29, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
39, 34, 35, 36, 37, 38, 39, 39, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 37, 32, 33, 34, 35, 36, 37, 37, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
2, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 2, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 36, 37, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 34, 35, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
27, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 25, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
67, 34, 35, 36, 37, 34, 67, 67, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 63, 32, 33, 34, 35, 32, 63, 63, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
33, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 31, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
31, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 17, 15, 15, 18, 18, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 29, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 17, 15, 15, 18, 18, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
29, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 27, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
25, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 12, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 23, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 12, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
19, 34, 35, 36, 37, 34, 34, 34, 10, 10, 43, 44, 45, 46, 47, 15, 15, 17, 17, 20, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 19, 32, 33, 34, 35, 32, 32, 32, 10, 10, 41, 42, 43, 44, 45, 15, 15, 17, 17, 20, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
14, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 15, 15, 15, 17, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 14, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 15, 15, 15, 17, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
9, 1, 35, 36, 37, 1, 1, 1, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 9, 1, 33, 34, 35, 1, 1, 1, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
8, 1, 35, 36, 37, 1, 1, 1, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 8, 1, 33, 34, 35, 1, 1, 1, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
8, 1, 35, 36, 37, 1, 1, 6, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 8, 1, 33, 34, 35, 1, 1, 6, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
30, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 28, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
21, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 22, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 21, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 29, 53, 54, 55, 56, 57, 58, 59, 60, 30,
23, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 24, 57, 26, 59, 60, 61, 62, 63, 64, 32, 22, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 29, 24, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 13, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 13, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
6, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 6, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
5, 1, 35, 4, 4, 1, 5, 5, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 5, 1, 33, 4, 4, 1, 5, 5, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
33, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 16, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 31, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 16, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 42, 11, 44, 45, 13, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 40, 11, 42, 43, 13, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
7, 1, 35, 4, 4, 1, 1, 1, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 7, 1, 33, 4, 4, 1, 1, 1, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 1, 1, 1, 41, 13, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 1, 1, 1, 39, 13, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
28, 34, 35, 36, 37, 34, 34, 34, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 26, 32, 33, 34, 35, 32, 32, 32, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
}; };
u16_4tech no_string_fsm_eq_classes[] = { u16_4tech no_string_fsm_eq_classes[] = {
0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 66, 99, 99, 99, 33, 33, 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 93, 93, 93, 31, 31,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
132,165,198,231,264,165,297,198,330,330,363,396,330,429,462,495, 124,155,186,217,248,155,279,186,310,310,341,372,310,403,434,465,
528,561,561,561,561,561,561,561,561,561,594,330,627,165,660,330, 496,527,527,527,527,527,527,527,527,527,558,310,589,155,620,310,
330,693,693,693,693,693,693,198,198,198,198,198,726,198,198,198, 310,651,651,651,651,651,651,186,186,186,186,186,682,186,186,186,
198,198,759,198,198,726,198,198,198,198,198,330,792,330,165,264, 186,186,713,186,186,682,186,186,186,186,186,310,744,310,155,248,
33,693,693,693,693,825,693,198,198,198,198,198,198,198,198,198, 31,651,651,651,651,775,651,186,186,186,186,186,186,186,186,186,
198,198,198,198,198,858,198,198,891,198,198,330,924,330,330, 33, 186,186,186,186,186,806,186,186,837,186,186,310,868,310,310, 31,
693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693, 651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,
693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693, 651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,
693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693, 651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,
693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693, 651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,
693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693, 651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,
693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693, 651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,
693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693, 651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,
693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693, 651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,
}; };
const i32_4tech num_no_string_fsm_eq_classes = 29; const i32_4tech num_no_string_fsm_eq_classes = 29;
u8_4tech no_string_fsm_table[] = { u8_4tech no_string_fsm_table[] = {
33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
0, 34, 35, 36, 37, 66, 66, 66, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 34, 35, 62, 62, 62, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 36, 37, 66, 66, 66, 41, 42, 43, 44, 45, 46, 47, 48, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 34, 35, 62, 62, 62, 39, 40, 41, 42, 43, 44, 45, 46, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 3, 37, 66, 66, 66, 41, 42, 43, 44, 45, 46, 47, 15, 16, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 3, 35, 62, 62, 62, 39, 40, 41, 42, 43, 44, 45, 15, 16, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
0, 34, 35, 3, 37, 66, 66, 66, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 0, 32, 33, 3, 35, 62, 62, 62, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
31, 34, 35, 36, 37, 66, 66, 66, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 29, 32, 33, 34, 35, 62, 62, 62, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 66, 66, 66, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 62, 62, 62, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
3, 34, 35, 36, 37, 66, 66, 66, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 3, 32, 33, 34, 35, 62, 62, 62, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 36, 37, 66, 66, 66, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 34, 35, 62, 62, 62, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
27, 34, 35, 36, 37, 66, 66, 66, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 25, 32, 33, 34, 35, 62, 62, 62, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
33, 34, 35, 36, 37, 66, 66, 66, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 31, 32, 33, 34, 35, 62, 62, 62, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
31, 34, 35, 36, 37, 66, 66, 66, 41, 42, 43, 44, 45, 46, 17, 15, 15, 18, 18, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 29, 32, 33, 34, 35, 62, 62, 62, 39, 40, 41, 42, 43, 44, 17, 15, 15, 18, 18, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
29, 34, 35, 36, 37, 66, 66, 66, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 27, 32, 33, 34, 35, 62, 62, 62, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
25, 34, 35, 36, 37, 66, 66, 66, 41, 42, 43, 12, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 23, 32, 33, 34, 35, 62, 62, 62, 39, 40, 41, 12, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
19, 34, 35, 36, 37, 66, 66, 66, 10, 10, 43, 44, 45, 46, 47, 15, 15, 17, 17, 20, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 19, 32, 33, 34, 35, 62, 62, 62, 10, 10, 41, 42, 43, 44, 45, 15, 15, 17, 17, 20, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
14, 34, 35, 36, 37, 66, 66, 66, 41, 42, 43, 44, 45, 46, 15, 15, 15, 17, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 14, 32, 33, 34, 35, 62, 62, 62, 39, 40, 41, 42, 43, 44, 15, 15, 15, 17, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
9, 1, 35, 36, 37, 66, 66, 66, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 9, 1, 33, 34, 35, 62, 62, 62, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
8, 1, 35, 36, 37, 66, 66, 66, 8, 8, 10, 12, 12, 13, 47, 15, 15, 17, 17, 10, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 8, 1, 33, 34, 35, 62, 62, 62, 8, 8, 10, 12, 12, 13, 45, 15, 15, 17, 17, 10, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
30, 34, 35, 36, 37, 66, 66, 66, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 28, 32, 33, 34, 35, 62, 62, 62, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
21, 34, 35, 36, 37, 66, 66, 66, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 22, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 21, 32, 33, 34, 35, 62, 62, 62, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 29, 53, 54, 55, 56, 57, 58, 59, 60, 30,
23, 34, 35, 36, 37, 66, 66, 66, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 24, 57, 26, 59, 60, 61, 62, 63, 64, 32, 22, 32, 33, 34, 35, 62, 62, 62, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 29, 24, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 66, 66, 66, 41, 42, 43, 44, 45, 13, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 62, 62, 62, 39, 40, 41, 42, 43, 13, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
6, 1, 35, 4, 4, 66, 66, 66, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 6, 1, 33, 4, 4, 62, 62, 62, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
5, 1, 35, 4, 4, 66, 66, 66, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 5, 1, 33, 4, 4, 62, 62, 62, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
33, 34, 35, 36, 37, 66, 66, 66, 41, 42, 43, 44, 45, 46, 47, 16, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 31, 32, 33, 34, 35, 62, 62, 62, 39, 40, 41, 42, 43, 44, 45, 16, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 66, 66, 66, 41, 42, 11, 44, 45, 13, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 62, 62, 62, 39, 40, 11, 42, 43, 13, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
7, 1, 35, 4, 4, 66, 66, 66, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 7, 1, 33, 4, 4, 62, 62, 62, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
1, 1, 35, 4, 4, 66, 66, 66, 41, 13, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 1, 1, 33, 4, 4, 62, 62, 62, 39, 13, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
28, 34, 35, 36, 37, 66, 66, 66, 41, 42, 43, 44, 45, 46, 47, 15, 15, 17, 17, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 32, 26, 32, 33, 34, 35, 62, 62, 62, 39, 40, 41, 42, 43, 44, 45, 15, 15, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 30,
}; };
uint16_t * get_eq_classes[] = { uint16_t * get_eq_classes[] = {

View File

@ -410,22 +410,25 @@ ENUM_INTERNAL(uint8_t, Cpp_Lex_State){
LS_dot = 19, LS_dot = 19,
LS_ellipsis = 20, LS_ellipsis = 20,
LS_less = 21, LS_less = 21,
LS_less_less = 22, LS_more = 22,
LS_more = 23, LS_minus = 23,
LS_more_more = 24, LS_arrow = 24,
LS_minus = 25, LS_and = 25,
LS_arrow = 26, LS_or = 26,
LS_and = 27, LS_plus = 27,
LS_or = 28, LS_colon = 28,
LS_plus = 29, LS_single_op = 29,
LS_colon = 30, LS_error_message = 30,
LS_single_op = 31,
LS_error_message = 32,
// //
LS_count = 33, LS_count = 31,
LS_char = 34, LS_char = 32,
}; };
#if 0
LS_less_less = 23,
LS_more_more = 24,
#endif
// NOTE(allen): These provide names that match the overloaded meanings of string states. // NOTE(allen): These provide names that match the overloaded meanings of string states.
#define LS_string_raw LS_string_R #define LS_string_raw LS_string_R
#define LS_string_normal LS_string_LUu8 #define LS_string_normal LS_string_LUu8

View File

@ -583,15 +583,7 @@ main_fsm(Cpp_Lex_FSM fsm, uint8_t pp_state, uint8_t c, bool32 ignore_string_deli
case LS_less: case LS_less:
{ {
switch (c){ switch (c){
case '<': fsm.state = LS_less_less; break; case '<': fsm.state = LS_single_op; break;
case '=': fsm.emit_token = true; break;
default: fsm.emit_token = true; break;
}
}break;
case LS_less_less:
{
switch (c){
case '=': fsm.emit_token = true; break; case '=': fsm.emit_token = true; break;
default: fsm.emit_token = true; break; default: fsm.emit_token = true; break;
} }
@ -600,7 +592,16 @@ main_fsm(Cpp_Lex_FSM fsm, uint8_t pp_state, uint8_t c, bool32 ignore_string_deli
case LS_more: case LS_more:
{ {
switch (c){ switch (c){
case '>': fsm.state = LS_more_more; break; case '>': fsm.state = LS_single_op; break;
case '=': fsm.emit_token = true; break;
default: fsm.emit_token = true; break;
}
}break;
#if 0
case LS_less_less:
{
switch (c){
case '=': fsm.emit_token = true; break; case '=': fsm.emit_token = true; break;
default: fsm.emit_token = true; break; default: fsm.emit_token = true; break;
} }
@ -613,6 +614,7 @@ main_fsm(Cpp_Lex_FSM fsm, uint8_t pp_state, uint8_t c, bool32 ignore_string_deli
default: fsm.emit_token = true; break; default: fsm.emit_token = true; break;
} }
}break; }break;
#endif
case LS_comment_pre: case LS_comment_pre:
{ {