From a5936fa73451fd9da867a05dff9a8fe176ea5b92 Mon Sep 17 00:00:00 2001 From: Allen Webster Date: Tue, 18 Apr 2017 10:39:24 -0400 Subject: [PATCH] got the lexer compression done correctly --- 4cpp/4cpp_lexer.h | 36 +- 4cpp/4cpp_lexer_tables.c | 896 +++++++++++++++++------------------ 4cpp/4cpp_lexer_types.h | 29 +- meta/fsm_table_generator.cpp | 22 +- 4 files changed, 483 insertions(+), 500 deletions(-) diff --git a/4cpp/4cpp_lexer.h b/4cpp/4cpp_lexer.h index ba202d46..02592fe9 100644 --- a/4cpp/4cpp_lexer.h +++ b/4cpp/4cpp_lexer.h @@ -867,18 +867,6 @@ cpp_lex_nonalloc_null_end_no_limit(Cpp_Lex_Data *S_ptr, char *chunk, i32_4tech s } }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: { 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; - 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: { 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; S.token.flags = CPP_TFLAG_IS_OPERATOR; switch (S.tb[0]){ - 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_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_NOT; eq_version = CPP_TOKEN_NOTEQ; 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_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_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; diff --git a/4cpp/4cpp_lexer_tables.c b/4cpp/4cpp_lexer_tables.c index 0622154b..e77ca43a 100644 --- a/4cpp/4cpp_lexer_tables.c +++ b/4cpp/4cpp_lexer_tables.c @@ -180,531 +180,531 @@ u8_4tech normal_char_flags[] = { }; u16_4tech main_fsm_eq_classes[] = { - 0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 66, 99, 99, 99, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, -132,165,198,231,264,165,297,330,363,363,396,429,363,462,495,528, -561,594,594,594,594,594,594,594,627,594,660,363,693,165,726,363, -363,759,759,759,759,759,759,792,792,792,792,792,825,792,792,792, -792,792,858,792,792,825,792,792,792,792,792,363,891,363,165,264, - 33,759,759,759,759,924,759,792,792,792,792,792,792,792,792,792, -792,792,792,792,792,957,792,792,990,792,792,363,1023,363,363, 33, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, + 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 93, 93, 93, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, +124,155,186,217,248,155,279,310,341,341,372,403,341,434,465,496, +527,558,558,558,558,558,558,558,589,558,620,341,651,155,682,341, +341,713,713,713,713,713,713,744,744,744,744,744,775,744,744,744, +744,744,806,744,744,775,744,744,744,744,744,341,837,341,155,248, + 31,713,713,713,713,868,713,744,744,744,744,744,744,744,744,744, +744,744,744,744,744,899,744,744,930,744,744,341,961,341,341, 31, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +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; 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, - 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, 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, 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, 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, - 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, - 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, - 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, - 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, - 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, - 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, - 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, 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, 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, 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, - 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, - 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, - 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, - 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, 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, - 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, - 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, - 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, - 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, 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, 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, - 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, - 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, - 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, - 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, - 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, - 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, + 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, 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, 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, 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, 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, + 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, + 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, 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, 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, + 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, + 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, + 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, + 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, + 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, + 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, 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, 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, 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, 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, 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, + 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, 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, + 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, 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, 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, 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, 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, + 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, 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, 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, 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, + 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[] = { - 0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 66, 99, 99, 99, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, -132,165,198,231,264,165,297,330,363,363,396,429,363,462,495,528, -561,594,594,594,594,594,594,594,627,594,660,363,693,165,726,363, -363,759,759,759,759,759,759,792,792,792,792,792,825,792,792,792, -792,792,858,792,792,825,792,792,792,792,792,363,891,363,165,264, - 33,759,759,759,759,924,759,792,792,792,792,792,792,792,792,792, -792,792,792,792,792,957,792,792,990,792,792,363,1023,363,363, 33, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, + 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 93, 93, 93, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, +124,155,186,217,248,155,279,310,341,341,372,403,341,434,465,496, +527,558,558,558,558,558,558,558,589,558,620,341,651,155,682,341, +341,713,713,713,713,713,713,744,744,744,744,744,775,744,744,744, +744,744,806,744,744,775,744,744,744,744,744,341,837,341,155,248, + 31,713,713,713,713,868,713,744,744,744,744,744,744,744,744,744, +744,744,744,744,744,899,744,744,930,744,744,341,961,341,341, 31, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +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; 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, - 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, 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, 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, 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, - 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, - 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, - 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, - 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, - 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, - 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, - 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, 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, 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, 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, - 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, - 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, - 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, - 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, 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, - 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, - 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, - 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, - 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, 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, 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, - 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, - 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, - 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, - 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, - 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, - 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, + 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, 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, 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, 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, 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, + 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, + 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, 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, 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, + 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, + 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, + 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, + 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, + 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, + 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, 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, 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, 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, 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, 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, + 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, + 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, + 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, 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, 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, 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, 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, + 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, 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, 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, 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, + 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[] = { - 0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 66, 99, 99, 99, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, -132,165,198,231,264,165,297,330,363,363,396,429,363,462,495,528, -561,594,594,594,594,594,594,594,627,594,660,363,693,165,726,363, -363,759,759,759,759,759,759,792,792,792,792,792,825,792,792,792, -792,792,858,792,792,825,792,792,792,792,792,363,891,363,165,264, - 33,759,759,759,759,924,759,792,792,792,792,792,792,792,792,792, -792,792,792,792,792,957,792,792,990,792,792,363,1023,363,363, 33, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, + 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 93, 93, 93, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, +124,155,186,217,248,155,279,310,341,341,372,403,341,434,465,496, +527,558,558,558,558,558,558,558,589,558,620,341,651,155,682,341, +341,713,713,713,713,713,713,744,744,744,744,744,775,744,744,744, +744,744,806,744,744,775,744,744,744,744,744,341,837,341,155,248, + 31,713,713,713,713,868,713,744,744,744,744,744,744,744,744,744, +744,744,744,744,744,899,744,744,930,744,744,341,961,341,341, 31, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +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; 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, - 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, 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, 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, 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, - 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, - 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, - 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, - 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, - 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, - 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, - 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, 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, 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, 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, - 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, - 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, - 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, - 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, 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, - 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, - 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, - 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, - 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, 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, 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, - 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, - 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, - 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, - 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, - 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, - 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, + 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, 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, 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, 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, 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, + 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, + 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, 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, 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, + 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, + 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, + 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, + 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, + 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, + 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, 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, 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, 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, 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, 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, + 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, 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, + 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, 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, 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, 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, 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, + 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, 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, 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, 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, + 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[] = { - 0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 66, 99, 99, 99, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, -132,165,198,231,264,165,297,330,363,363,396,429,363,462,495,528, -561,594,594,594,594,594,594,594,627,594,660,363,693,165,726,363, -363,759,759,759,759,759,759,792,792,792,792,792,825,792,792,792, -792,792,858,792,792,825,792,792,792,792,792,363,891,363,165,264, - 33,759,759,759,759,924,759,792,792,792,792,792,792,792,792,792, -792,792,792,792,792,957,792,792,990,792,792,363,1023,363,363, 33, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, + 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 93, 93, 93, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, +124,155,186,217,248,155,279,310,341,341,372,403,341,434,465,496, +527,558,558,558,558,558,558,558,589,558,620,341,651,155,682,341, +341,713,713,713,713,713,713,744,744,744,744,744,775,744,744,744, +744,744,806,744,744,775,744,744,744,744,744,341,837,341,155,248, + 31,713,713,713,713,868,713,744,744,744,744,744,744,744,744,744, +744,744,744,744,744,899,744,744,930,744,744,341,961,341,341, 31, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +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; 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, - 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, 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, 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, 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, - 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, - 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, - 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, - 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, - 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, - 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, - 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, 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, 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, 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, - 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, - 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, - 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, - 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, 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, - 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, - 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, - 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, - 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, 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, 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, - 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, - 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, - 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, - 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, - 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, - 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, + 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, 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, 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, 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, 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, + 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, + 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, 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, 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, + 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, + 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, + 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, + 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, + 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, + 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, 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, 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, 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, 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, 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, + 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, 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, + 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, 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, 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, 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, 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, + 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, 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, 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, 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, + 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[] = { - 0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 66, 99, 99, 99, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, -132,165,198,231,264,165,297,330,363,363,396,429,363,462,495,528, -561,594,594,594,594,594,594,594,627,594,660,363,693,165,726,363, -363,759,759,759,759,759,759,792,792,792,792,792,825,792,792,792, -792,792,858,792,792,825,792,792,792,792,792,363,891,363,165,264, - 33,759,759,759,759,924,759,792,792,792,792,792,792,792,792,792, -792,792,792,792,792,957,792,792,990,792,792,363,1023,363,363, 33, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, + 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 93, 93, 93, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, +124,155,186,217,248,155,279,310,341,341,372,403,341,434,465,496, +527,558,558,558,558,558,558,558,589,558,620,341,651,155,682,341, +341,713,713,713,713,713,713,744,744,744,744,744,775,744,744,744, +744,744,806,744,744,775,744,744,744,744,744,341,837,341,155,248, + 31,713,713,713,713,868,713,744,744,744,744,744,744,744,744,744, +744,744,744,744,744,899,744,744,930,744,744,341,961,341,341, 31, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +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; 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, - 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, 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, 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, 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, - 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, - 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, - 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, - 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, - 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, - 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, - 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, 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, 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, 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, - 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, - 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, - 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, - 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, 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, - 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, - 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, - 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, - 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, 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, 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, - 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, - 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, - 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, - 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, - 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, - 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, + 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, 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, 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, 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, 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, + 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, + 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, 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, 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, + 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, + 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, + 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, + 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, + 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, + 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, 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, 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, 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, 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, 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, + 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, 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, + 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, 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, 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, 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, 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, + 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, 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, 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, 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, + 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[] = { - 0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 66, 99, 99, 99, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, -132,165,198,231,264,165,297,330,363,363,396,429,363,462,495,528, -561,594,594,594,594,594,594,594,627,594,660,363,693,165,726,363, -363,759,759,759,759,759,759,792,792,792,792,792,825,792,792,792, -792,792,858,792,792,825,792,792,792,792,792,363,891,363,165,264, - 33,759,759,759,759,924,759,792,792,792,792,792,792,792,792,792, -792,792,792,792,792,957,792,792,990,792,792,363,1023,363,363, 33, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, + 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 93, 93, 93, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, +124,155,186,217,248,155,279,310,341,341,372,403,341,434,465,496, +527,558,558,558,558,558,558,558,589,558,620,341,651,155,682,341, +341,713,713,713,713,713,713,744,744,744,744,744,775,744,744,744, +744,744,806,744,744,775,744,744,744,744,744,341,837,341,155,248, + 31,713,713,713,713,868,713,744,744,744,744,744,744,744,744,744, +744,744,744,744,744,899,744,744,930,744,744,341,961,341,341, 31, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +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; 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, - 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, 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, 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, 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, - 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, - 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, - 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, - 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, - 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, - 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, - 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, 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, 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, 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, - 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, - 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, - 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, - 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, 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, - 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, - 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, - 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, - 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, 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, 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, - 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, - 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, - 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, - 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, - 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, - 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, + 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, 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, 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, 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, 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, + 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, + 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, 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, 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, + 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, + 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, + 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, + 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, + 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, + 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, 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, 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, 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, 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, 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, + 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, 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, + 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, 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, 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, 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, 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, + 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, 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, 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, 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, + 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[] = { - 0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 66, 99, 99, 99, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, -132,165,198,231,264,165,297,330,363,363,396,429,363,462,495,528, -561,594,594,594,594,594,594,594,627,594,660,363,693,165,726,363, -363,759,759,759,759,759,759,792,792,792,792,792,825,792,792,792, -792,792,858,792,792,825,792,792,792,792,792,363,891,363,165,264, - 33,759,759,759,759,924,759,792,792,792,792,792,792,792,792,792, -792,792,792,792,792,957,792,792,990,792,792,363,1023,363,363, 33, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, + 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 93, 93, 93, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, +124,155,186,217,248,155,279,310,341,341,372,403,341,434,465,496, +527,558,558,558,558,558,558,558,589,558,620,341,651,155,682,341, +341,713,713,713,713,713,713,744,744,744,744,744,775,744,744,744, +744,744,806,744,744,775,744,744,744,744,744,341,837,341,155,248, + 31,713,713,713,713,868,713,744,744,744,744,744,744,744,744,744, +744,744,744,744,744,899,744,744,930,744,744,341,961,341,341, 31, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +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; 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, - 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, 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, 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, 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, - 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, - 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, - 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, - 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, - 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, - 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, - 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, 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, 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, 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, - 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, - 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, - 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, - 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, 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, - 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, - 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, - 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, - 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, 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, 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, - 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, - 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, - 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, - 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, - 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, - 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, + 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, 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, 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, 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, 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, + 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, + 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, 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, 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, + 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, + 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, + 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, + 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, + 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, + 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, 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, 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, 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, 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, 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, + 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, 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, + 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, 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, 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, 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, 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, + 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, 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, 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, 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, + 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[] = { - 0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 66, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 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; 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, - 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, - 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, + 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, + 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, + 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[] = { - 0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 66, 99, 99, 99, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, -132,165,198,231,264,165,297,330,363,363,396,429,363,462,495,528, -561,594,594,594,594,594,594,594,627,594,660,363,693,165,726,363, -363,759,759,759,759,759,759,792,792,792,792,792,825,792,792,792, -792,792,858,792,792,825,792,792,792,792,792,363,891,363,165,264, - 33,759,759,759,759,924,759,792,792,792,792,792,792,792,792,792, -792,792,792,792,792,957,792,792,990,792,792,363,1023,363,363, 33, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, -759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, + 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 93, 93, 93, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, +124,155,186,217,248,155,279,310,341,341,372,403,341,434,465,496, +527,558,558,558,558,558,558,558,589,558,620,341,651,155,682,341, +341,713,713,713,713,713,713,744,744,744,744,744,775,744,744,744, +744,744,806,744,744,775,744,744,744,744,744,341,837,341,155,248, + 31,713,713,713,713,868,713,744,744,744,744,744,744,744,744,744, +744,744,744,744,744,899,744,744,930,744,744,341,961,341,341, 31, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +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; 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, - 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, 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, 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, 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, - 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, - 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, - 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, - 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, - 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, - 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, - 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, 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, 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, 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, - 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, - 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, - 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, - 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, 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, - 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, - 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, - 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, - 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, 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, 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, - 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, - 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, - 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, - 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, - 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, - 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, + 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, 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, 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, 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, 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, + 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, + 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, 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, 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, + 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, + 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, + 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, + 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, + 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, + 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, 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, 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, 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, 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, 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, + 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, 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, + 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, 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, 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, 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, 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, + 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, 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, 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, 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, + 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[] = { - 0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 66, 99, 99, 99, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, -132,165,198,231,264,165,297,198,330,330,363,396,330,429,462,495, -528,561,561,561,561,561,561,561,561,561,594,330,627,165,660,330, -330,693,693,693,693,693,693,198,198,198,198,198,726,198,198,198, -198,198,759,198,198,726,198,198,198,198,198,330,792,330,165,264, - 33,693,693,693,693,825,693,198,198,198,198,198,198,198,198,198, -198,198,198,198,198,858,198,198,891,198,198,330,924,330,330, 33, -693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693, -693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693, -693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693, -693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693, -693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693, -693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693, -693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693, -693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693, + 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 93, 93, 93, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, +124,155,186,217,248,155,279,186,310,310,341,372,310,403,434,465, +496,527,527,527,527,527,527,527,527,527,558,310,589,155,620,310, +310,651,651,651,651,651,651,186,186,186,186,186,682,186,186,186, +186,186,713,186,186,682,186,186,186,186,186,310,744,310,155,248, + 31,651,651,651,651,775,651,186,186,186,186,186,186,186,186,186, +186,186,186,186,186,806,186,186,837,186,186,310,868,310,310, 31, +651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651, +651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651, +651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651, +651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651, +651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651, +651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651, +651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651, +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; 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, - 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, 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, 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, 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, - 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, - 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, - 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, - 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, - 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, - 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, 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, 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, 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, - 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, - 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, - 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, - 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, - 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, - 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, - 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, - 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, - 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, - 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, - 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, - 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, - 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, - 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, - 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, + 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, 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, 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, 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, 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, + 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, 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, 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, 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, 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, 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, + 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, + 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, + 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, 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, 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, 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, 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, + 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, 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, + 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, 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, 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, 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, + 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, 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, 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, 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, + 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[] = { diff --git a/4cpp/4cpp_lexer_types.h b/4cpp/4cpp_lexer_types.h index 2c47557f..952e2be0 100644 --- a/4cpp/4cpp_lexer_types.h +++ b/4cpp/4cpp_lexer_types.h @@ -410,22 +410,25 @@ ENUM_INTERNAL(uint8_t, Cpp_Lex_State){ LS_dot = 19, LS_ellipsis = 20, LS_less = 21, - LS_less_less = 22, - LS_more = 23, - LS_more_more = 24, - LS_minus = 25, - LS_arrow = 26, - LS_and = 27, - LS_or = 28, - LS_plus = 29, - LS_colon = 30, - LS_single_op = 31, - LS_error_message = 32, + LS_more = 22, + LS_minus = 23, + LS_arrow = 24, + LS_and = 25, + LS_or = 26, + LS_plus = 27, + LS_colon = 28, + LS_single_op = 29, + LS_error_message = 30, // - LS_count = 33, - LS_char = 34, + LS_count = 31, + 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. #define LS_string_raw LS_string_R #define LS_string_normal LS_string_LUu8 diff --git a/meta/fsm_table_generator.cpp b/meta/fsm_table_generator.cpp index 528b8114..4acbd26b 100644 --- a/meta/fsm_table_generator.cpp +++ b/meta/fsm_table_generator.cpp @@ -583,15 +583,7 @@ main_fsm(Cpp_Lex_FSM fsm, uint8_t pp_state, uint8_t c, bool32 ignore_string_deli case LS_less: { switch (c){ - case '<': fsm.state = LS_less_less; break; - case '=': fsm.emit_token = true; break; - default: fsm.emit_token = true; break; - } - }break; - - case LS_less_less: - { - switch (c){ + case '<': fsm.state = LS_single_op; break; case '=': 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: { 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; 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; } }break; +#endif case LS_comment_pre: {