diff options
author | Joshua Bakita <bakitajoshua@gmail.com> | 2019-10-07 19:13:39 -0400 |
---|---|---|
committer | Joshua Bakita <bakitajoshua@gmail.com> | 2019-10-07 19:13:39 -0400 |
commit | 386b7d3366f1359a265da207a9cafa3edf553b64 (patch) | |
tree | c76120c2c138faed822e4ae386be6ef22a738a78 /baseline/source/gsm_dec | |
parent | 54a3f7091a2146b29c73a6fdc4b62a5c4ad7a3d8 (diff) |
Reorganize and commit all the modified TACLeBench code and run scripts
Diffstat (limited to 'baseline/source/gsm_dec')
-rw-r--r-- | baseline/source/gsm_dec/COPYRIGHT | 16 | ||||
-rw-r--r-- | baseline/source/gsm_dec/ChangeLog.txt | 87 | ||||
-rw-r--r-- | baseline/source/gsm_dec/add.h | 55 | ||||
-rw-r--r-- | baseline/source/gsm_dec/data.h | 865 | ||||
-rw-r--r-- | baseline/source/gsm_dec/gsm.h | 14 | ||||
-rw-r--r-- | baseline/source/gsm_dec/gsm_dec.c | 764 | ||||
-rw-r--r-- | baseline/source/gsm_dec/private.h | 44 |
7 files changed, 1845 insertions, 0 deletions
diff --git a/baseline/source/gsm_dec/COPYRIGHT b/baseline/source/gsm_dec/COPYRIGHT new file mode 100644 index 0000000..eba0e52 --- /dev/null +++ b/baseline/source/gsm_dec/COPYRIGHT | |||
@@ -0,0 +1,16 @@ | |||
1 | Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann, | ||
2 | Technische Universitaet Berlin | ||
3 | |||
4 | Any use of this software is permitted provided that this notice is not | ||
5 | removed and that neither the authors nor the Technische Universitaet Berlin | ||
6 | are deemed to have made any representations as to the suitability of this | ||
7 | software for any purpose nor are held responsible for any defects of | ||
8 | this software. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. | ||
9 | |||
10 | As a matter of courtesy, the authors request to be informed about uses | ||
11 | this software has found, about bugs in this software, and about any | ||
12 | improvements that may be of general interest. | ||
13 | |||
14 | Berlin, 28.11.1994 | ||
15 | Jutta Degener | ||
16 | Carsten Bormann | ||
diff --git a/baseline/source/gsm_dec/ChangeLog.txt b/baseline/source/gsm_dec/ChangeLog.txt new file mode 100644 index 0000000..3d03d86 --- /dev/null +++ b/baseline/source/gsm_dec/ChangeLog.txt | |||
@@ -0,0 +1,87 @@ | |||
1 | File: gsm_dec.c | ||
2 | Original provenience: Jutta Degener and Carsten Bormann, | ||
3 | Technische Universitaet Berlin | ||
4 | |||
5 | 2017-04-18: | ||
6 | - Annotated gsm_dec_main as entry-point for timing analysis | ||
7 | |||
8 | 2016-03-07: | ||
9 | - Add generic TACLeBench header | ||
10 | - Split code into gsm.h, data.h, config.h, private.h, proto.h | ||
11 | - Remove code undefined through macros and unnecessay include guards | ||
12 | - Rename function 'decode' to 'gsm_decode_main' | ||
13 | - Add functions 'gsm_decode_init', 'gsm_decode_return' | ||
14 | - Remove line: /* lpc.c */ | ||
15 | - Remove line: #undef P | ||
16 | 2016-04-27: | ||
17 | - Rename benchmark to from 'gsm_decode' to 'gsm_dec' | ||
18 | - Remove unused content of proto.h and config.h | ||
19 | - Remove usages of prototype macros 'P' and 'GSM_P' and checks if standard | ||
20 | prototypes are availables: use standard prototypes | ||
21 | - Remove functions only defined for debugging purpose | ||
22 | - Remove block around "#ifndef GSM_TABLE_C", since 'GSM_TABLE_C' is defined, | ||
23 | remove define of 'GSM_TABLE_C' | ||
24 | - Define 'SASR' macro once, remove blocks if 'SASR' is not defined | ||
25 | - Remove variables 'f_fast' and 'f_verbose' (both set to 0). Consequently, | ||
26 | remove unused 'function gsm_option' and the defines 'GSM_OPT_VERBOSE' and | ||
27 | 'GSM_OPT_FAST' only used inside 'gsm_option' | ||
28 | - Remove unused variables 'verbose' and 'fast' from 'struct gsm_state' | ||
29 | - Remove unused function declarations 'gsm_explode' and 'gsm_implode' | ||
30 | - Remove unused defines 'GSM_PATCHLEVEL', 'GSM_MINOR', and 'GSM_MAJOR' | ||
31 | - Remove irrelevant comment "// OK" in line calling function 'create' | ||
32 | - Remove unused variable 'd' of type 'word*' from 'gsm_dec_main' | ||
33 | - Remove unused parameter 'struct gsm_state * S' of function 'Gsm_RPE_Decoding' | ||
34 | - Remove block in function 'Gsm_Short_Term_Synthesis_Filter' that is compiled | ||
35 | when 'FAST' macro is defined (per default not activated) | ||
36 | - Replace macro 'FILTER' by its expanded value 'Short_term_synthesis_filtering' | ||
37 | in function 'Gsm_Short_Term_Synthesis_Filter' | ||
38 | - Remove unused 'int j' in function 'Short_term_synthesis_filtering' | ||
39 | - Make iteration variable 'i' in function 'create' type 'unsigned int' to avoid | ||
40 | compiler warnings | ||
41 | - Use rewritten Duff's device for WCET analysis, remove commented original | ||
42 | varinat, keep comment in code marking this change | ||
43 | - Remove unused variable 'temp_sat' of type 'longword' in function | ||
44 | 'APCM_inverse_quantization' | ||
45 | - Remove unused parameter 'S' of type 'struct gsm_state*' in function | ||
46 | 'Gsm_RPE_Decoding' and the respective calls of this function | ||
47 | - Remove unused function | ||
48 | 'Gsm_Update_of_reconstructed_short_time_residual_signal' | ||
49 | - Remove code block activatable by defining 'USE_TABLE_MUL', since macro never | ||
50 | defined | ||
51 | - Rename global variable 'gsmstate' to 'gsm_dec_state' | ||
52 | - Remove lines with #undef GSM_P | ||
53 | - Update function 'create': add void parameter to defintion | ||
54 | - Introduce 'gsm_dec_state_ptr' that points to 'gsm_dec_state', which is | ||
55 | initialized in function 'create'. This is required to maintain the void-void | ||
56 | signature for 'gsm_dec_init' and 'gsm_dec_main'. | ||
57 | - Remove unused commented version of 'GSM_MULT_R' | ||
58 | - Move macros 'GSM_MULT|ADD|SUB' into separate header | ||
59 | - Give include guards unique names: prefix with 'GSM_DEC_' | ||
60 | - Remove unused functions 'gsm_div', 'gsm_add', 'gsm_mult', 'gsm_mult_r', | ||
61 | 'gsm_abs', 'gsm_L_mult', 'gsm_L_add', 'gsm_L_sub', 'gsm_norm' (and array | ||
62 | 'bitoff' used in this function), 'gsm_L_asl', 'gsm_L_asr' | ||
63 | - Rename 'Gsm_Short_Term_Synthesis_Filter' to | ||
64 | 'gsm_dec_Short_Term_Synthesis_Filter' | ||
65 | - Rename 'Gsm_RPE_Decoding' to 'gsm_dec_RPE_Decoding' | ||
66 | - Rename 'Gsm_Long_Term_Synthesis_Filtering' to | ||
67 | 'gsm_dec_Long_Term_Synthesis_Filtering' | ||
68 | - Rename 'Gsm_Decoder' to 'gsm_dec_Decoder' | ||
69 | - Remove unused function declaration of 'decode' | ||
70 | - Prefix all global symbols with benchmark name | ||
71 | - Store return value of in introduced variable 'gsm_dec_result', which is | ||
72 | volatile to avoid optimizations on this variable | ||
73 | - Avoid constant propagation through addition with volatile variable on each | ||
74 | element of the 'gsm_dec_state' structure | ||
75 | 2016-05-10: | ||
76 | - Change coefficients for variable 'B' of 'STEP' macro in function | ||
77 | 'gsm_dec_Decoding_of_the_coded_Log_Area_Ratios' from negative to positive, | ||
78 | since bit shifts of signed values are undefined | ||
79 | - Fix comment why variable 'long ltmp' ist required in function | ||
80 | 'gsm_dec_Decoding_of_the_coded_Log_Area_Ratios' | ||
81 | - Apply code formatting with with astyle | ||
82 | - Manual text formattings: removal of empty lines in function prototypes, | ||
83 | - Indent all multi-line block comments by two spaces | ||
84 | 2016-05-10: | ||
85 | - Remove 'static' declaration of global variables and functions | ||
86 | - Remove unused global variables 'gsm_DLB', 'gsm_INVA', 'gsm_MAC', 'gsm_MIC', | ||
87 | 'gsm_A', 'gsm_B', 'gsm_H' | ||
diff --git a/baseline/source/gsm_dec/add.h b/baseline/source/gsm_dec/add.h new file mode 100644 index 0000000..ffe79b7 --- /dev/null +++ b/baseline/source/gsm_dec/add.h | |||
@@ -0,0 +1,55 @@ | |||
1 | #ifndef GSM_DEC_ADD_H | ||
2 | #define GSM_DEC_ADD_H | ||
3 | |||
4 | #define GSM_MULT_R(a, b) /* word a, word b, !(a == b == MIN_WORD) */ \ | ||
5 | (SASR( ((longword)(a) * (longword)(b) + 16384), 15 )) | ||
6 | |||
7 | # define GSM_MULT(a,b) /* word a, word b, !(a == b == MIN_WORD) */ \ | ||
8 | (SASR( ((longword)(a) * (longword)(b)), 15 )) | ||
9 | |||
10 | # define GSM_L_MULT(a, b) /* word a, word b */ \ | ||
11 | (((longword)(a) * (longword)(b)) << 1) | ||
12 | |||
13 | # define GSM_L_ADD(a, b) \ | ||
14 | ( (a) < 0 ? ( (b) >= 0 ? (a) + (b) \ | ||
15 | : (utmp = (ulongword)-((a) + 1) + (ulongword)-((b) + 1)) \ | ||
16 | >= MAX_LONGWORD ? MIN_LONGWORD : -(longword)utmp-2 ) \ | ||
17 | : ((b) <= 0 ? (a) + (b) \ | ||
18 | : (utmp = (ulongword)(a) + (ulongword)(b)) >= MAX_LONGWORD \ | ||
19 | ? MAX_LONGWORD : utmp)) | ||
20 | |||
21 | /* | ||
22 | # define GSM_ADD(a, b) \ | ||
23 | ((ltmp = (longword)(a) + (longword)(b)) >= MAX_WORD \ | ||
24 | ? MAX_WORD : ltmp <= MIN_WORD ? MIN_WORD : ltmp) | ||
25 | */ | ||
26 | /* Nonportable, but faster: */ | ||
27 | |||
28 | #define GSM_ADD(a, b) \ | ||
29 | ((ulongword)((ltmp = (longword)(a) + (longword)(b)) - MIN_WORD) > \ | ||
30 | MAX_WORD - MIN_WORD ? (ltmp > 0 ? MAX_WORD : MIN_WORD) : ltmp) | ||
31 | |||
32 | # define GSM_SUB(a, b) \ | ||
33 | ((ltmp = (longword)(a) - (longword)(b)) >= MAX_WORD \ | ||
34 | ? MAX_WORD : ltmp <= MIN_WORD ? MIN_WORD : ltmp) | ||
35 | |||
36 | # define GSM_ABS(a) ((a) < 0 ? ((a) == MIN_WORD ? MAX_WORD : -(a)) : (a)) | ||
37 | |||
38 | #define saturate(x) \ | ||
39 | ((x) < MIN_WORD ? MIN_WORD : (x) > MAX_WORD ? MAX_WORD: (x)) | ||
40 | |||
41 | /* Use these if necessary: | ||
42 | |||
43 | # define GSM_MULT_R(a, b) gsm_mult_r(a, b) | ||
44 | # define GSM_MULT(a, b) gsm_mult(a, b) | ||
45 | # define GSM_L_MULT(a, b) gsm_L_mult(a, b) | ||
46 | |||
47 | # define GSM_L_ADD(a, b) gsm_L_add(a, b) | ||
48 | # define GSM_ADD(a, b) gsm_add(a, b) | ||
49 | # define GSM_SUB(a, b) gsm_sub(a, b) | ||
50 | |||
51 | # define GSM_ABS(a) gsm_abs(a) | ||
52 | |||
53 | */ | ||
54 | |||
55 | #endif /* GSM_DEC_ADD_H */ | ||
diff --git a/baseline/source/gsm_dec/data.h b/baseline/source/gsm_dec/data.h new file mode 100644 index 0000000..81bf20d --- /dev/null +++ b/baseline/source/gsm_dec/data.h | |||
@@ -0,0 +1,865 @@ | |||
1 | #ifndef GSM_DEC_DATA_H | ||
2 | #define GSM_DEC_DATA_H | ||
3 | |||
4 | gsm_signal gsm_dec_pcmdata[] = { | ||
5 | ( short )0x0000, ( short )0x0000, ( short )0x0010, ( short )0x0010, | ||
6 | ( short )0x0010, ( short )0x0020, ( short )0x0020, ( short )0x0018, | ||
7 | ( short )0x0028, ( short )0x0020, ( short )0x0020, ( short )0x0028, | ||
8 | ( short )0x0028, ( short )0x0020, ( short )0x0030, ( short )0x0030, | ||
9 | ( short )0x0028, ( short )0x0010, ( short )0x0008, ( short )0x0000, | ||
10 | ( short )0x0050, ( short )0x0060, ( short )0x0058, ( short )0x00D0, | ||
11 | ( short )0x00E0, ( short )0x00D0, ( short )0x0118, ( short )0x0128, | ||
12 | ( short )0x0118, ( short )0x0128, ( short )0x0110, ( short )0x0100, | ||
13 | ( short )0x00A0, ( short )0x0058, ( short )0x0048, ( short )0x0058, | ||
14 | ( short )0x0060, ( short )0x0058, ( short )0x0050, ( short )0x0048, | ||
15 | ( short )0x0040, ( short )0x0030, ( short )0x0020, ( short )0x0010, | ||
16 | ( short )0x0008, ( short )0xFFF8, ( short )0xFFE8, ( short )0xFFE0, | ||
17 | ( short )0xFFD8, ( short )0xFFC8, ( short )0xFFC0, ( short )0xFFC0, | ||
18 | ( short )0xFF98, ( short )0xFF78, ( short )0xFF78, ( short )0xFFC8, | ||
19 | ( short )0x0000, ( short )0x0010, ( short )0x0040, ( short )0x0060, | ||
20 | ( short )0x0068, ( short )0x0078, ( short )0x0078, ( short )0x0070, | ||
21 | ( short )0x00A8, ( short )0x00C8, ( short )0x00C8, ( short )0x00E0, | ||
22 | ( short )0x00F0, ( short )0x00E8, ( short )0x00F8, ( short )0x00F8, | ||
23 | ( short )0x00F0, ( short )0x00E0, ( short )0x00C8, ( short )0x00B8, | ||
24 | ( short )0x00E8, ( short )0x0100, ( short )0x00F8, ( short )0x00E8, | ||
25 | ( short )0x00D8, ( short )0x00C0, ( short )0x00A8, ( short )0x0020, | ||
26 | ( short )0xFFC0, ( short )0xFFA0, ( short )0xFFA0, ( short )0xFFA8, | ||
27 | ( short )0xFFB0, ( short )0xFFD0, ( short )0xFFF8, ( short )0x0000, | ||
28 | ( short )0x0020, ( short )0x0030, ( short )0x0030, ( short )0x0030, | ||
29 | ( short )0x0028, ( short )0x0020, ( short )0xFFF0, ( short )0xFFD0, | ||
30 | ( short )0xFFC8, ( short )0xFFC8, ( short )0xFFD0, ( short )0xFFD8, | ||
31 | ( short )0xFFE8, ( short )0xFFF8, ( short )0xFFF8, ( short )0x0008, | ||
32 | ( short )0x0018, ( short )0x0018, ( short )0x0078, ( short )0x00B8, | ||
33 | ( short )0x00C0, ( short )0x0100, ( short )0x0130, ( short )0x0128, | ||
34 | ( short )0x0108, ( short )0x00D8, ( short )0x00C0, ( short )0x0078, | ||
35 | ( short )0x0038, ( short )0x0020, ( short )0x0020, ( short )0x0000, | ||
36 | ( short )0xFFE0, ( short )0xFFE0, ( short )0xFFD8, ( short )0xFFC8, | ||
37 | ( short )0xFFC8, ( short )0xFFA0, ( short )0xFF88, ( short )0xFF98, | ||
38 | ( short )0xFF80, ( short )0xFF70, ( short )0xFF80, ( short )0xFF78, | ||
39 | ( short )0xFF78, ( short )0xFF90, ( short )0xFF80, ( short )0xFF78, | ||
40 | ( short )0xFF78, ( short )0xFF50, ( short )0xFF30, ( short )0xFF50, | ||
41 | ( short )0xFF38, ( short )0xFF30, ( short )0xFF40, ( short )0xFF58, | ||
42 | ( short )0xFF70, ( short )0xFF80, ( short )0xFF50, ( short )0xFF38, | ||
43 | ( short )0xFF40, ( short )0xFF18, ( short )0xFF00, ( short )0xFF08, | ||
44 | ( short )0xFF40, ( short )0xFF68, ( short )0xFF80, ( short )0xFF88, | ||
45 | ( short )0xFF88, ( short )0xFF88, ( short )0xFF88, ( short )0xFFB8, | ||
46 | ( short )0xFFE0, ( short )0xFFF0, ( short )0xFFD0, ( short )0xFFB8, | ||
47 | ( short )0xFFB8, ( short )0xFF90, ( short )0xFF70, ( short )0xFF70, | ||
48 | ( short )0xFF50, ( short )0xFF40, ( short )0xFF40, ( short )0xFF58, | ||
49 | ( short )0xFF70, ( short )0xFF80, ( short )0xFFC8, ( short )0x0000, | ||
50 | ( short )0x0018, ( short )0x0030, ( short )0x0048, ( short )0x0048, | ||
51 | ( short )0x0028, ( short )0x0008, ( short )0xFFF8, ( short )0xFFD8, | ||
52 | ( short )0xFFC8, ( short )0xFFB8, ( short )0xFF98, ( short )0xFF78, | ||
53 | ( short )0xFF70, ( short )0xFFF0, ( short )0x0058, ( short )0x0088, | ||
54 | ( short )0x00B8, ( short )0x00D0, ( short )0x00D8, ( short )0x00E8, | ||
55 | ( short )0x0138, ( short )0x0160, ( short )0x0158, ( short )0x0170, | ||
56 | ( short )0x0178, ( short )0x0160, ( short )0x0168, ( short )0x0160, | ||
57 | ( short )0x0140, ( short )0x0118, ( short )0x00F0, ( short )0x00C8, | ||
58 | ( short )0x0098, ( short )0x0078, ( short )0x0060, ( short )0x0018, | ||
59 | ( short )0xFFC0, ( short )0xFF90, ( short )0xFF48, ( short )0xFF00, | ||
60 | ( short )0xFEE8, ( short )0xFEC8, ( short )0xFEB8, ( short )0xFEB8, | ||
61 | ( short )0xFEA0, ( short )0xFE88, ( short )0xFE80, ( short )0xFEB8, | ||
62 | ( short )0xFEF8, ( short )0xFF38, ( short )0xFFA0, ( short )0xFFE8, | ||
63 | ( short )0x0008, ( short )0x0030, ( short )0x0058, ( short )0x0068, | ||
64 | ( short )0x0068, ( short )0x0070, ( short )0x0068, ( short )0x0050, | ||
65 | ( short )0x0040, ( short )0x0040, ( short )0x0020, ( short )0x0000, | ||
66 | ( short )0xFFE8, ( short )0xFFF0, ( short )0xFFF8, ( short )0xFFF8, | ||
67 | ( short )0x0038, ( short )0x0068, ( short )0x0078, ( short )0x0038, | ||
68 | ( short )0x0008, ( short )0xFFF0, ( short )0xFFE0, ( short )0xFFD8, | ||
69 | ( short )0xFFD8, ( short )0xFFE0, ( short )0xFFD0, ( short )0xFFC8, | ||
70 | ( short )0x0000, ( short )0x0030, ( short )0x0048, ( short )0x0068, | ||
71 | ( short )0x0080, ( short )0x0088, ( short )0x0088, ( short )0x0088, | ||
72 | ( short )0x0088, ( short )0x0088, ( short )0x0088, ( short )0x0078, | ||
73 | ( short )0x0098, ( short )0x00B0, ( short )0x00B8, ( short )0x0098, | ||
74 | ( short )0x0070, ( short )0x0058, ( short )0x0060, ( short )0x0078, | ||
75 | ( short )0x00A8, ( short )0x00B8, ( short )0x00A8, ( short )0x00A0, | ||
76 | ( short )0x0080, ( short )0x0068, ( short )0x0060, ( short )0x0058, | ||
77 | ( short )0x0048, ( short )0x0030, ( short )0x0038, ( short )0x0038, | ||
78 | ( short )0x0030, ( short )0x0050, ( short )0x0058, ( short )0x0060, | ||
79 | ( short )0x0030, ( short )0x0008, ( short )0xFFF8, ( short )0xFF90, | ||
80 | ( short )0xFF48, ( short )0xFF28, ( short )0xFF10, ( short )0xFEF8, | ||
81 | ( short )0xFEF0, ( short )0xFED8, ( short )0xFEB0, ( short )0xFEB0, | ||
82 | ( short )0xFEA8, ( short )0xFEB8, ( short )0xFED8, ( short )0xFEF8, | ||
83 | ( short )0xFF10, ( short )0xFF20, ( short )0xFF40, ( short )0xFF58, | ||
84 | ( short )0xFF80, ( short )0xFFA0, ( short )0xFFB8, ( short )0xFFC8, | ||
85 | ( short )0xFFD8, ( short )0xFFE0, ( short )0xFFF0, ( short )0x0048, | ||
86 | ( short )0x0098, ( short )0x00B0, ( short )0x0068, ( short )0x0018, | ||
87 | ( short )0xFFF8, ( short )0xFFE8, ( short )0xFFF0, ( short )0xFFF8, | ||
88 | ( short )0x0020, ( short )0x0038, ( short )0x0038, ( short )0x0050, | ||
89 | ( short )0x0068, ( short )0x0070, ( short )0x0068, ( short )0x0060, | ||
90 | ( short )0x0060, ( short )0x0038, ( short )0x0020, ( short )0x0018, | ||
91 | ( short )0x0040, ( short )0x0060, ( short )0x0068, ( short )0x0040, | ||
92 | ( short )0x0010, ( short )0x0000, ( short )0xFFB0, ( short )0xFF78, | ||
93 | ( short )0xFF70, ( short )0xFF90, ( short )0xFFA8, ( short )0xFFC8, | ||
94 | ( short )0xFF98, ( short )0xFF50, ( short )0xFF50, ( short )0xFF50, | ||
95 | ( short )0xFF58, ( short )0xFF68, ( short )0xFF48, ( short )0xFF20, | ||
96 | ( short )0xFF18, ( short )0xFF38, ( short )0xFF60, ( short )0xFF70, | ||
97 | ( short )0xFF80, ( short )0xFF98, ( short )0xFFA0, ( short )0xFFB8, | ||
98 | ( short )0xFFD0, ( short )0xFFE0, ( short )0x0018, ( short )0x0048, | ||
99 | ( short )0x0058, ( short )0x00B0, ( short )0x00F8, ( short )0x0108, | ||
100 | ( short )0x0118, ( short )0x0120, ( short )0x0118, ( short )0x0130, | ||
101 | ( short )0x0148, ( short )0x0140, ( short )0x0130, ( short )0x0120, | ||
102 | ( short )0x0108, ( short )0x0098, ( short )0x0038, ( short )0x0018, | ||
103 | ( short )0xFFD0, ( short )0xFF90, ( short )0xFF80, ( short )0xFF58, | ||
104 | ( short )0xFF38, ( short )0xFF30, ( short )0xFF48, ( short )0xFF68, | ||
105 | ( short )0xFF78, ( short )0xFF88, ( short )0xFFB8, ( short )0xFFD8, | ||
106 | ( short )0xFFE8, ( short )0xFFD8, ( short )0xFFF0, ( short )0x0010, | ||
107 | ( short )0x0020, ( short )0x0020, ( short )0x0018, ( short )0x0028, | ||
108 | ( short )0x0030, ( short )0x0030, ( short )0x0038, ( short )0x0060, | ||
109 | ( short )0x0080, ( short )0x0080, ( short )0x00B0, ( short )0x00D8, | ||
110 | ( short )0x00D0, ( short )0x00B8, ( short )0x00A8, ( short )0x00A8, | ||
111 | ( short )0x00A0, ( short )0x0090, ( short )0x0078, ( short )0x0070, | ||
112 | ( short )0x0068, ( short )0x0048, ( short )0x0018, ( short )0x0008, | ||
113 | ( short )0x0008, ( short )0x0000, ( short )0x0000, ( short )0xFFE8, | ||
114 | ( short )0xFFB0, ( short )0xFF90, ( short )0xFF88, ( short )0xFF70, | ||
115 | ( short )0xFF60, ( short )0xFF60, ( short )0xFF90, ( short )0xFFC0, | ||
116 | ( short )0xFFD0, ( short )0xFFD8, ( short )0xFFE0, ( short )0xFFE8, | ||
117 | ( short )0x0018, ( short )0x0050, ( short )0x0058, ( short )0x0030, | ||
118 | ( short )0x0008, ( short )0x0000, ( short )0x0018, ( short )0x0038, | ||
119 | ( short )0x0038, ( short )0x0048, ( short )0x0050, ( short )0x0050, | ||
120 | ( short )0x0020, ( short )0x0000, ( short )0xFFF8, ( short )0xFFB0, | ||
121 | ( short )0xFF70, ( short )0xFF68, ( short )0xFFB0, ( short )0xFFE8, | ||
122 | ( short )0xFFF8, ( short )0xFFF8, ( short )0xFFF8, ( short )0xFFF0, | ||
123 | ( short )0x0030, ( short )0x0070, ( short )0x0090, ( short )0x0098, | ||
124 | ( short )0x0098, ( short )0x0090, ( short )0x00A0, ( short )0x00B0, | ||
125 | ( short )0x00B8, ( short )0x00C0, ( short )0x00C0, ( short )0x00A8, | ||
126 | ( short )0x0098, ( short )0x0088, ( short )0x0078, ( short )0x0050, | ||
127 | ( short )0x0030, ( short )0x0020, ( short )0xFFD8, ( short )0xFF98, | ||
128 | ( short )0xFF88, ( short )0xFF50, ( short )0xFF20, ( short )0xFF18, | ||
129 | ( short )0xFEF8, ( short )0xFEE0, ( short )0xFEE8, ( short )0xFE70, | ||
130 | ( short )0xFE08, ( short )0xFE00, ( short )0xFE48, ( short )0xFE98, | ||
131 | ( short )0xFEB8, ( short )0xFEE8, ( short )0xFF10, ( short )0xFF28, | ||
132 | ( short )0xFF18, ( short )0xFF10, ( short )0xFF18, ( short )0xFF48, | ||
133 | ( short )0xFF70, ( short )0xFF88, ( short )0xFFE0, ( short )0x0028, | ||
134 | ( short )0x0040, ( short )0x0058, ( short )0x0068, ( short )0x0070, | ||
135 | ( short )0x0078, ( short )0x0070, ( short )0x0068, ( short )0x0068, | ||
136 | ( short )0x0078, ( short )0x0080, ( short )0x0080, ( short )0x0088, | ||
137 | ( short )0x0088, ( short )0x0080, ( short )0x0058, ( short )0x0030, | ||
138 | ( short )0x0020, ( short )0x0018, ( short )0x0018, ( short )0x0018, | ||
139 | ( short )0x0050, ( short )0x0090, ( short )0x00A0, ( short )0x0080, | ||
140 | ( short )0x0060, ( short )0x0050, ( short )0x0030, ( short )0x0018, | ||
141 | ( short )0x0010, ( short )0x0028, ( short )0x0038, ( short )0x0038, | ||
142 | ( short )0x0018, ( short )0xFFF8, ( short )0xFFF0, ( short )0x0000, | ||
143 | ( short )0x0020, ( short )0x0020, ( short )0x0030, ( short )0x0030, | ||
144 | ( short )0x0030, ( short )0x0040, ( short )0x0050, ( short )0x0050, | ||
145 | ( short )0x0050, ( short )0x0048, ( short )0x0048, ( short )0x0048, | ||
146 | ( short )0x0048, ( short )0x0048, ( short )0x0078, ( short )0x00A0, | ||
147 | ( short )0x00A8, ( short )0x00C0, ( short )0x00C8, ( short )0x00C0, | ||
148 | ( short )0x00D0, ( short )0x00E0, ( short )0x00D8, ( short )0x00E8, | ||
149 | ( short )0x00F0, ( short )0x00E0, ( short )0x0100, ( short )0x0118, | ||
150 | ( short )0x0110, ( short )0x0100, ( short )0x00F0, ( short )0x00D8, | ||
151 | ( short )0x0090, ( short )0x0048, ( short )0x0028, ( short )0x0020, | ||
152 | ( short )0x0020, ( short )0x0020, ( short )0x0038, ( short )0x0050, | ||
153 | ( short )0x0050, ( short )0x0050, ( short )0x0048, ( short )0x0040, | ||
154 | ( short )0x0050, ( short )0x0060, ( short )0x0060, ( short )0x0040, | ||
155 | ( short )0xFFC0, ( short )0xFF58, ( short )0xFF40, ( short )0xFF90, | ||
156 | ( short )0xFFE8, ( short )0x0000, ( short )0x0020, ( short )0x0030, | ||
157 | ( short )0x0030, ( short )0x0068, ( short )0x0098, ( short )0x00A8, | ||
158 | ( short )0x0110, ( short )0x0168, ( short )0x0170, ( short )0x0148, | ||
159 | ( short )0x0118, ( short )0x00F0, ( short )0x00E8, ( short )0x00E0, | ||
160 | ( short )0x00D0, ( short )0x0098, ( short )0x0060, ( short )0x0040, | ||
161 | ( short )0x0000, ( short )0xFFD8, ( short )0xFFD8, ( short )0xFFC0, | ||
162 | ( short )0xFFB0, ( short )0xFFB0, ( short )0xFF78, ( short )0xFF30, | ||
163 | ( short )0xFF10, ( short )0xFEF0, ( short )0xFEE8, ( short )0xFEF0, | ||
164 | ( short )0xFEC8, ( short )0xFED0, ( short )0xFEF8, ( short )0xFF00, | ||
165 | ( short )0xFF10, ( short )0xFF20, ( short )0xFF50, ( short )0xFF78, | ||
166 | ( short )0xFF90, ( short )0xFF80, ( short )0xFF70, ( short )0xFF70, | ||
167 | ( short )0xFF80, ( short )0xFF98, ( short )0xFFA0, ( short )0xFFB8, | ||
168 | ( short )0xFFD0, ( short )0xFFD8, ( short )0xFFF0, ( short )0x0000, | ||
169 | ( short )0x0008, ( short )0x0028, ( short )0x0048, ( short )0x0058, | ||
170 | ( short )0x0078, ( short )0x0070, ( short )0x0058, ( short )0x0068, | ||
171 | ( short )0x0098, ( short )0x00B8, ( short )0x00D8, ( short )0x00F0, | ||
172 | ( short )0x00F0, ( short )0x00E8, ( short )0x00F8, ( short )0x0100, | ||
173 | ( short )0x00D8, ( short )0x00D0, ( short )0x00C8, ( short )0x00E8, | ||
174 | ( short )0x0100, ( short )0x00F0, ( short )0x00E0, ( short )0x00C8, | ||
175 | ( short )0x00B8, ( short )0x00A0, ( short )0x0078, ( short )0x0058, | ||
176 | ( short )0x0038, ( short )0x0020, ( short )0x0010, ( short )0x0010, | ||
177 | ( short )0x0018, ( short )0x0010, ( short )0x0010, ( short )0x0010, | ||
178 | ( short )0x0018, ( short )0x0028, ( short )0x0008, ( short )0xFFE0, | ||
179 | ( short )0xFFC8, ( short )0xFF80, ( short )0xFF48, ( short )0xFF38, | ||
180 | ( short )0xFF40, ( short )0xFF48, ( short )0xFF48, ( short )0xFF70, | ||
181 | ( short )0xFF90, ( short )0xFFA8, ( short )0xFFB8, ( short )0xFFC0, | ||
182 | ( short )0xFFC8, ( short )0xFFC0, ( short )0xFFC0, ( short )0xFFC0, | ||
183 | ( short )0xFFB0, ( short )0xFFA0, ( short )0xFFA0, ( short )0xFFA0, | ||
184 | ( short )0xFFA8, ( short )0xFFB0, ( short )0xFF68, ( short )0xFF28, | ||
185 | ( short )0xFF08, ( short )0xFEF8, ( short )0xFEF8, ( short )0xFEE8, | ||
186 | ( short )0xFEE0, ( short )0xFED8, ( short )0xFEA8, ( short )0xFE98, | ||
187 | ( short )0xFEA8, ( short )0xFEA8, ( short )0xFEA0, ( short )0xFEA0, | ||
188 | ( short )0xFED0, ( short )0xFF00, ( short )0xFF30, ( short )0xFF28, | ||
189 | ( short )0xFF38, ( short )0xFF58, ( short )0xFF48, ( short )0xFF40, | ||
190 | ( short )0xFF48, ( short )0xFFB0, ( short )0x0010, ( short )0x0038, | ||
191 | ( short )0x0028, ( short )0x0010, ( short )0x0008, ( short )0x0050, | ||
192 | ( short )0x00A0, ( short )0x00B8, ( short )0x00A0, ( short )0x0080, | ||
193 | ( short )0x0070, ( short )0x0090, ( short )0x00B0, ( short )0x00B0, | ||
194 | ( short )0x00B8, ( short )0x00B8, ( short )0x00B0, ( short )0x00C0, | ||
195 | ( short )0x00D0, ( short )0x00C8, ( short )0x00A0, ( short )0x0068, | ||
196 | ( short )0x0038, ( short )0xFFF0, ( short )0xFFB0, ( short )0xFF88, | ||
197 | ( short )0xFF78, ( short )0xFF68, ( short )0xFF60, ( short )0xFF90, | ||
198 | ( short )0xFFC0, ( short )0xFFE0, ( short )0x0000, ( short )0x0020, | ||
199 | ( short )0x0030, ( short )0x00A0, ( short )0x0110, ( short )0x0138, | ||
200 | ( short )0x0140, ( short )0x0148, ( short )0x0148, ( short )0x0110, | ||
201 | ( short )0x00E8, ( short )0x00C0, ( short )0x00A0, ( short )0x0088, | ||
202 | ( short )0x0068, ( short )0x0008, ( short )0xFFB0, ( short )0xFF88, | ||
203 | ( short )0xFF58, ( short )0xFF30, ( short )0xFF20, ( short )0xFEF8, | ||
204 | ( short )0xFED8, ( short )0xFED8, ( short )0xFF00, ( short )0xFF20, | ||
205 | ( short )0xFF38, ( short )0xFF50, ( short )0xFF68, ( short )0xFF88, | ||
206 | ( short )0xFFA0, ( short )0xFFB8, ( short )0x0020, ( short )0x0080, | ||
207 | ( short )0x00A0, ( short )0x00D8, ( short )0x0100, ( short )0x0100, | ||
208 | ( short )0x0138, ( short )0x0168, ( short )0x0148, ( short )0x0128, | ||
209 | ( short )0x0120, ( short )0x00F8, ( short )0x00E8, ( short )0x00E0, | ||
210 | ( short )0x00C0, ( short )0x00A8, ( short )0x00B0, ( short )0x0098, | ||
211 | ( short )0x0070, ( short )0x0048, ( short )0x0030, ( short )0xFFD0, | ||
212 | ( short )0xFF60, ( short )0xFF48, ( short )0xFF10, ( short )0xFEA8, | ||
213 | ( short )0xFEA8, ( short )0xFEC0, ( short )0xFEC0, ( short )0xFEE8, | ||
214 | ( short )0xFEB0, ( short )0xFE58, ( short )0xFE88, ( short )0xFED0, | ||
215 | ( short )0xFEB8, ( short )0xFE48, ( short )0xFE58, ( short )0xFEE8, | ||
216 | ( short )0xFF28, ( short )0xFF18, ( short )0xFF60, ( short )0x00A0, | ||
217 | ( short )0x01A0, ( short )0x0188, ( short )0x0178, ( short )0x0208, | ||
218 | ( short )0x0208, ( short )0x0100, ( short )0x0018, ( short )0xFFE0, | ||
219 | ( short )0xFEE0, ( short )0xFD68, ( short )0xFD00, ( short )0xFD60, | ||
220 | ( short )0xFD70, ( short )0xFDA8, ( short )0xFF00, ( short )0x00A0, | ||
221 | ( short )0x0170, ( short )0x0210, ( short )0x02D8, ( short )0x0310, | ||
222 | ( short )0x0218, ( short )0x00A0, ( short )0xFFA0, ( short )0xFDF0, | ||
223 | ( short )0xFBD8, ( short )0xFB08, ( short )0xF9C0, ( short )0xF830, | ||
224 | ( short )0xF8D8, ( short )0xFCC0, ( short )0x0038, ( short )0x01A0, | ||
225 | ( short )0x0380, ( short )0x0A18, ( short )0x0F50, ( short )0x0DB0, | ||
226 | ( short )0x0C30, ( short )0x0E18, ( short )0x0CA8, ( short )0x0570, | ||
227 | ( short )0xFF98, ( short )0xFE38, ( short )0xFBA0, ( short )0xF700, | ||
228 | ( short )0xF5D0, ( short )0xF7C8, ( short )0xF9A8, ( short )0xFB48, | ||
229 | ( short )0xFBB0, ( short )0xFC78, ( short )0xFF00, ( short )0xFE98, | ||
230 | ( short )0xFB20, ( short )0xFA48, ( short )0xFAC0, ( short )0xF8C8, | ||
231 | ( short )0xF6E0, ( short )0xF9C0, ( short )0xFE08, ( short )0xFF80, | ||
232 | ( short )0x0428, ( short )0x0B70, ( short )0x0E18, ( short )0x0D38, | ||
233 | ( short )0x0D38, ( short )0x0C28, ( short )0x01D0, ( short )0xF578, | ||
234 | ( short )0xF108, ( short )0xFB50, ( short )0x0498, ( short )0x0428, | ||
235 | ( short )0x0CE8, ( short )0x2190, ( short )0x29F0, ( short )0x22E0, | ||
236 | ( short )0x1F68, ( short )0x2050, ( short )0x1810, ( short )0x0710, | ||
237 | ( short )0xFA98, ( short )0xF438, ( short )0xEE68, ( short )0xE950, | ||
238 | ( short )0xEBC8, ( short )0xF538, ( short )0xFEB8, ( short )0x0240, | ||
239 | ( short )0x0460, ( short )0x09D0, ( short )0x0978, ( short )0xFFF8, | ||
240 | ( short )0xF810, ( short )0xF190, ( short )0xE8D0, ( short )0xE290, | ||
241 | ( short )0xDF60, ( short )0xDFF0, ( short )0xE668, ( short )0xEC20, | ||
242 | ( short )0xF138, ( short )0xFAC0, ( short )0x04F0, ( short )0x08D0, | ||
243 | ( short )0x08C8, ( short )0x0B18, ( short )0x09F8, ( short )0x0230, | ||
244 | ( short )0xFA38, ( short )0xFA68, ( short )0xFC78, ( short )0xF9B8, | ||
245 | ( short )0xF850, ( short )0xFEA8, ( short )0x05B8, ( short )0x0690, | ||
246 | ( short )0x02E8, ( short )0x0268, ( short )0x0498, ( short )0xFCB0, | ||
247 | ( short )0xF018, ( short )0xEDF8, ( short )0x0090, ( short )0x0F48, | ||
248 | ( short )0x0C70, ( short )0x1278, ( short )0x27B8, ( short )0x2EA0, | ||
249 | ( short )0x21F8, ( short )0x1920, ( short )0x1918, ( short )0x1530, | ||
250 | ( short )0x0638, ( short )0xF858, ( short )0xF720, ( short )0xF9F8, | ||
251 | ( short )0xF600, ( short )0xF850, ( short )0x0590, ( short )0x0EE0, | ||
252 | ( short )0x1000, ( short )0x10D8, ( short )0x1460, ( short )0x10F8, | ||
253 | ( short )0x0500, ( short )0xFBC0, ( short )0xF7A8, ( short )0xF250, | ||
254 | ( short )0xEC00, ( short )0xEB30, ( short )0xF1C8, ( short )0xF920, | ||
255 | ( short )0xFC90, ( short )0x0190, ( short )0x0A60, ( short )0x0E80, | ||
256 | ( short )0x0DB0, ( short )0x0AD8, ( short )0x0690, ( short )0x0168, | ||
257 | ( short )0xFF20, ( short )0xFBD0, ( short )0xF6F8, ( short )0xF660, | ||
258 | ( short )0xF680, ( short )0xF5B0, ( short )0xF7C0, ( short )0xF120, | ||
259 | ( short )0xEA90, ( short )0xF030, ( short )0xEC18, ( short )0xE190, | ||
260 | ( short )0xE558, ( short )0xFF20, ( short )0x1090, ( short )0x0C50, | ||
261 | ( short )0x1248, ( short )0x2788, ( short )0x2AD0, ( short )0x1628, | ||
262 | ( short )0x08F0, ( short )0x0BA8, ( short )0x0538, ( short )0xEF48, | ||
263 | ( short )0xE410, ( short )0xEB10, ( short )0xEF68, ( short )0xEA28, | ||
264 | ( short )0xEC40, ( short )0xFC18, ( short )0x08A8, ( short )0x0818, | ||
265 | ( short )0x0778, ( short )0x0858, ( short )0x02F8, ( short )0xF8E8, | ||
266 | ( short )0xF1F0, ( short )0xEF40, ( short )0xECD0, ( short )0xE958, | ||
267 | ( short )0xEA70, ( short )0xF260, ( short )0xFAF0, ( short )0xFFA0, | ||
268 | ( short )0x04A0, ( short )0x0CF8, ( short )0x10F8, ( short )0x0EA0, | ||
269 | ( short )0x0D48, ( short )0x0BE8, ( short )0x05E0, ( short )0x03B0, | ||
270 | ( short )0x0358, ( short )0xFF18, ( short )0xFB40, ( short )0xF9B0, | ||
271 | ( short )0xF9C0, ( short )0xF7C0, ( short )0xEE90, ( short )0xEAA0, | ||
272 | ( short )0xEE00, ( short )0xE888, ( short )0xE200, ( short )0xEF00, | ||
273 | ( short )0x0948, ( short )0x1400, ( short )0x1270, ( short )0x1D88, | ||
274 | ( short )0x2CD8, ( short )0x2488, ( short )0x0DA8, ( short )0x04B8, | ||
275 | ( short )0x0548, ( short )0xF7B0, ( short )0xE3F0, ( short )0xE268, | ||
276 | ( short )0xEFF8, ( short )0xF5A0, ( short )0xF320, ( short )0xFC68, | ||
277 | ( short )0x0BF0, ( short )0x0FA0, ( short )0x0A50, ( short )0x01F8, | ||
278 | ( short )0xFE60, ( short )0xFC48, ( short )0xF340, ( short )0xEB28, | ||
279 | ( short )0xED58, ( short )0xF3C0, ( short )0xF5B8, ( short )0xF738, | ||
280 | ( short )0x00F8, ( short )0x0C70, ( short )0x0E90, ( short )0x0DE8, | ||
281 | ( short )0x1190, ( short )0x12B0, ( short )0x1058, ( short )0x0B98, | ||
282 | ( short )0x0638, ( short )0x0868, ( short )0x0998, ( short )0x02B0, | ||
283 | ( short )0xFE50, ( short )0x0120, ( short )0x02A0, ( short )0xFC90, | ||
284 | ( short )0xF810, ( short )0xF9D0, ( short )0xF818, ( short )0xF290, | ||
285 | ( short )0xF240, ( short )0xF6D0, ( short )0x0A48, ( short )0x1AD8, | ||
286 | ( short )0x1840, ( short )0x1C18, ( short )0x2B18, ( short )0x29F0, | ||
287 | ( short )0x1608, ( short )0x08B8, ( short )0x0778, ( short )0x0128, | ||
288 | ( short )0xF118, ( short )0xE868, ( short )0xEDA0, ( short )0xF310, | ||
289 | ( short )0xF248, ( short )0xF558, ( short )0x0058, ( short )0x0970, | ||
290 | ( short )0x0688, ( short )0x0108, ( short )0xFD08, ( short )0xF988, | ||
291 | ( short )0xF558, ( short )0xF0A0, ( short )0xF0B0, ( short )0xF540, | ||
292 | ( short )0xF6E8, ( short )0xFCA0, ( short )0x0758, ( short )0x0CD0, | ||
293 | ( short )0x0F60, ( short )0x1338, ( short )0x1458, ( short )0x1278, | ||
294 | ( short )0x0FD0, ( short )0x0CA8, ( short )0x0D50, ( short )0x0D10, | ||
295 | ( short )0x0798, ( short )0x0398, ( short )0x0428, ( short )0x04F0, | ||
296 | ( short )0x0278, ( short )0xFF98, ( short )0x0178, ( short )0x0088, | ||
297 | ( short )0xFB08, ( short )0xF660, ( short )0xF1A8, ( short )0xEF18, | ||
298 | ( short )0xF9E8, ( short )0x0C00, ( short )0x11C8, ( short )0x1260, | ||
299 | ( short )0x1B60, ( short )0x21B0, ( short )0x18E0, ( short )0x0B08, | ||
300 | ( short )0x04C8, ( short )0x0078, ( short )0xF730, ( short )0xEF60, | ||
301 | ( short )0xEB18, ( short )0xEC10, ( short )0xF290, ( short )0xF800, | ||
302 | ( short )0xFB60, ( short )0xFF60, ( short )0x0080, ( short )0xFFA8, | ||
303 | ( short )0xFB08, ( short )0xF1A8, ( short )0xED10, ( short )0xEFF0, | ||
304 | ( short )0xEED0, ( short )0xEB10, ( short )0xEFE8, ( short )0xF8F0, | ||
305 | ( short )0xFDE0, ( short )0x0298, ( short )0x0528, ( short )0x0598, | ||
306 | ( short )0x0928, ( short )0x0A30, ( short )0x0670, ( short )0x08E8, | ||
307 | ( short )0x0BC0, ( short )0x0698, ( short )0x0210, ( short )0x0390, | ||
308 | ( short )0x0560, ( short )0x0288, ( short )0xF910, ( short )0xF468, | ||
309 | ( short )0xF560, ( short )0xF3E0, ( short )0xEE10, ( short )0xE8B0, | ||
310 | ( short )0xE508, ( short )0xEED0, ( short )0x03E0, ( short )0x0638, | ||
311 | ( short )0xFFA8, ( short )0x0BB8, ( short )0x2078, ( short )0x1FA8, | ||
312 | ( short )0x0EF0, ( short )0x0648, ( short )0x05C8, ( short )0xFF18, | ||
313 | ( short )0xF588, ( short )0xEE20, ( short )0xED88, ( short )0xF5A0, | ||
314 | ( short )0xFBA8, ( short )0xFBC0, ( short )0xFA98, ( short )0xFA20, | ||
315 | ( short )0xF7D8, ( short )0xF2D0, ( short )0xEF48, ( short )0xE998, | ||
316 | ( short )0xE378, ( short )0xE530, ( short )0xE868, ( short )0xE890, | ||
317 | ( short )0xEDD0, ( short )0xF798, ( short )0xFBC0, ( short )0xFD20, | ||
318 | ( short )0x0178, ( short )0x0490, ( short )0x04A0, ( short )0x0758, | ||
319 | ( short )0x0858, ( short )0x0490, ( short )0x04F8, ( short )0x0858, | ||
320 | ( short )0x06F0, ( short )0x05F8, ( short )0x0450, ( short )0x0098, | ||
321 | ( short )0xFE60, ( short )0xFDA0, ( short )0xF9E0, ( short )0xF358, | ||
322 | ( short )0xEDC0, ( short )0xF308, ( short )0xFFE0, ( short )0x0018, | ||
323 | ( short )0xFB80, ( short )0x0948, ( short )0x1DB8, ( short )0x1D08, | ||
324 | ( short )0x0F88, ( short )0x0B48, ( short )0x0C50, ( short )0x09C0, | ||
325 | ( short )0xFF78, ( short )0xF1A0, ( short )0xEF28, ( short )0xF6B8, | ||
326 | ( short )0xF9F0, ( short )0xF6F0, ( short )0xF688, ( short )0xF9E0, | ||
327 | ( short )0xF9C0, ( short )0xF4C8, ( short )0xEBD8, ( short )0xE7E8, | ||
328 | ( short )0xEBE0, ( short )0xE8C8, ( short )0xE100, ( short )0xE518, | ||
329 | ( short )0xF0B8, ( short )0xF728, ( short )0xF770, ( short )0xF878, | ||
330 | ( short )0xFF58, ( short )0x06B0, ( short )0x0430, ( short )0x0060, | ||
331 | ( short )0x0390, ( short )0x0A18, ( short )0x0B98, ( short )0x06C8, | ||
332 | ( short )0x0710, ( short )0x0CF0, ( short )0x08D0, ( short )0x01F8, | ||
333 | ( short )0x0280, ( short )0x0238, ( short )0xFD78, ( short )0xF868, | ||
334 | ( short )0xF198, ( short )0xF670, ( short )0x0930, ( short )0x0A78, | ||
335 | ( short )0xFB38, ( short )0x04F0, ( short )0x1EB8, ( short )0x1E98, | ||
336 | ( short )0x0F68, ( short )0x0EC8, ( short )0x1548, ( short )0x1480, | ||
337 | ( short )0x0C60, ( short )0x00B0, ( short )0xFEF8, ( short )0x0830, | ||
338 | ( short )0x0838, ( short )0x0160, ( short )0x0380, ( short )0x07E8, | ||
339 | ( short )0x0270, ( short )0xFBA0, ( short )0xF9C0, ( short )0xF450, | ||
340 | ( short )0xEE08, ( short )0xED08, ( short )0xEE10, ( short )0xEF20, | ||
341 | ( short )0xF1C0, ( short )0xF800, ( short )0xFE70, ( short )0x00B0, | ||
342 | ( short )0x02D8, ( short )0x07C8, ( short )0x09F0, ( short )0x09A8, | ||
343 | ( short )0x0A60, ( short )0x0B28, ( short )0x0C80, ( short )0x0D58, | ||
344 | ( short )0x0BD0, ( short )0x0A48, ( short )0x0900, ( short )0x0768, | ||
345 | ( short )0x03D0, ( short )0x00E0, ( short )0xFFF8, ( short )0xFBD8, | ||
346 | ( short )0xF5E8, ( short )0xFE18, ( short )0x0FE8, ( short )0x1060, | ||
347 | ( short )0x05C8, ( short )0x1078, ( short )0x2638, ( short )0x2580, | ||
348 | ( short )0x1740, ( short )0x14E8, ( short )0x19D0, ( short )0x17D8, | ||
349 | ( short )0x0E10, ( short )0x0270, ( short )0x0120, ( short )0x0900, | ||
350 | ( short )0x0870, ( short )0x0290, ( short )0x03A0, ( short )0x0600, | ||
351 | ( short )0x0100, ( short )0xFE28, ( short )0xFF28, ( short )0xF838, | ||
352 | ( short )0xF0B8, ( short )0xF238, ( short )0xF530, ( short )0xF440, | ||
353 | ( short )0xF440, ( short )0xFA38, ( short )0x0198, ( short )0x03A8, | ||
354 | ( short )0x03D0, ( short )0x0780, ( short )0x0AB8, ( short )0x0B58, | ||
355 | ( short )0x0B10, ( short )0x0AD8, ( short )0x0A08, ( short )0x0878, | ||
356 | ( short )0x07C8, ( short )0x0648, ( short )0x01A0, ( short )0xFF48, | ||
357 | ( short )0xFE58, ( short )0xFA68, ( short )0xF7D0, ( short )0xF758, | ||
358 | ( short )0xF470, ( short )0xF5B0, ( short )0x02A8, ( short )0x0A58, | ||
359 | ( short )0x0448, ( short )0x07C8, ( short )0x1708, ( short )0x1970, | ||
360 | ( short )0x0EC8, ( short )0x0A40, ( short )0x0CD0, ( short )0x0D28, | ||
361 | ( short )0x0838, ( short )0x0010, ( short )0xFAE0, ( short )0xFCB0, | ||
362 | ( short )0xFEB8, ( short )0xFCE8, ( short )0xFBA8, ( short )0xFD10, | ||
363 | ( short )0xFBC8, ( short )0xF910, ( short )0xF960, ( short )0xF830, | ||
364 | ( short )0xF4D8, ( short )0xF500, ( short )0xF860, ( short )0xF9F0, | ||
365 | ( short )0xFB58, ( short )0xFE48, ( short )0x0050, ( short )0x0418, | ||
366 | ( short )0x0910, ( short )0x0940, ( short )0x0830, ( short )0x0AC8, | ||
367 | ( short )0x0C88, ( short )0x0A50, ( short )0x07C0, ( short )0x0700, | ||
368 | ( short )0x0590, ( short )0x0268, ( short )0xFFF0, ( short )0xFBA8, | ||
369 | ( short )0xF720, ( short )0xF698, ( short )0xF2E0, ( short )0xEB68, | ||
370 | ( short )0xEDA0, ( short )0xFC00, ( short )0x0358, ( short )0xFF30, | ||
371 | ( short )0x0398, ( short )0x1220, ( short )0x1860, ( short )0x1368, | ||
372 | ( short )0x10C0, ( short )0x12F0, ( short )0x12A0, ( short )0x0E08, | ||
373 | ( short )0x0780, ( short )0x0010, ( short )0xFAD8, ( short )0xF990, | ||
374 | ( short )0xF7E0, ( short )0xF278, ( short )0xEE10, ( short )0xEB98, | ||
375 | ( short )0xE7A0, ( short )0xE6F8, ( short )0xEA30, ( short )0xE980, | ||
376 | ( short )0xE420, ( short )0xE440, ( short )0xEBA8, ( short )0xEF98, | ||
377 | ( short )0xEF68, ( short )0xF288, ( short )0xF7A8, ( short )0xFC90, | ||
378 | ( short )0x01F8, ( short )0x0528, ( short )0x0630, ( short )0x08E8, | ||
379 | ( short )0x0C98, ( short )0x0D50, ( short )0x0B98, ( short )0x0920, | ||
380 | ( short )0x0678, ( short )0x03F0, ( short )0x0260, ( short )0xFE00, | ||
381 | ( short )0xF810, ( short )0xF4B8, ( short )0xF0C0, ( short )0xEB68, | ||
382 | ( short )0xEF58, ( short )0xFAE8, ( short )0xFDE0, ( short )0xF680, | ||
383 | ( short )0xF910, ( short )0x06E0, ( short )0x0C20, ( short )0x05D8, | ||
384 | ( short )0x0408, ( short )0x05C8, ( short )0x0450, ( short )0x02D0, | ||
385 | ( short )0x0128, ( short )0xFB78, ( short )0xF668, ( short )0xF430, | ||
386 | ( short )0xF150, ( short )0xED90, ( short )0xE870, ( short )0xE448, | ||
387 | ( short )0xE2E0, ( short )0xE048, ( short )0xDDD0, ( short )0xDF08, | ||
388 | ( short )0xE0E0, ( short )0xE098, ( short )0xE258, ( short )0xE520, | ||
389 | ( short )0xE6A8, ( short )0xEA28, ( short )0xEF88, ( short )0xF2A8, | ||
390 | ( short )0xF548, ( short )0xFBA8, ( short )0x01C8, ( short )0x03F8, | ||
391 | ( short )0x0748, ( short )0x0C88, ( short )0x0E98, ( short )0x0DB8, | ||
392 | ( short )0x0D98, ( short )0x0D50, ( short )0x0B68, ( short )0x0970, | ||
393 | ( short )0x06C0, ( short )0x0238, ( short )0xFE18, ( short )0xFB08, | ||
394 | ( short )0xF820, ( short )0xF780, ( short )0xF970, ( short )0xF9B0, | ||
395 | ( short )0xF880, ( short )0xFA28, ( short )0x0028, ( short )0x0698, | ||
396 | ( short )0x0948, ( short )0x08D0, ( short )0x09E0, ( short )0x0DD0, | ||
397 | ( short )0x1010, ( short )0x0D40, ( short )0x0958, ( short )0x0728, | ||
398 | ( short )0x0308, ( short )0xFDA0, ( short )0xF9F8, ( short )0xF418, | ||
399 | ( short )0xEC98, ( short )0xE8B8, ( short )0xE618, ( short )0xE200, | ||
400 | ( short )0xDED0, ( short )0xDF48, ( short )0xE100, ( short )0xE180, | ||
401 | ( short )0xE160, ( short )0xE3C8, ( short )0xE898, ( short )0xEDD8, | ||
402 | ( short )0xF250, ( short )0xF558, ( short )0xFB00, ( short )0x02F8, | ||
403 | ( short )0x07B0, ( short )0x0B80, ( short )0x1108, ( short )0x1518, | ||
404 | ( short )0x1660, ( short )0x1770, ( short )0x1870, ( short )0x16F8, | ||
405 | ( short )0x1300, ( short )0x0F78, ( short )0x0FC0, ( short )0x1070, | ||
406 | ( short )0x0CE8, ( short )0x0AF8, ( short )0x0BD8, ( short )0x0D28, | ||
407 | ( short )0x10A8, ( short )0x1370, ( short )0x10A0, ( short )0x1040, | ||
408 | ( short )0x1518, ( short )0x1740, ( short )0x1550, ( short )0x1398, | ||
409 | ( short )0x10E0, ( short )0x0AC8, ( short )0x0640, ( short )0x0348, | ||
410 | ( short )0xFD18, ( short )0xF658, ( short )0xF1D8, ( short )0xEC20, | ||
411 | ( short )0xE760, ( short )0xE550, ( short )0xE4B8, ( short )0xE418, | ||
412 | ( short )0xE438, ( short )0xE508, ( short )0xE738, ( short )0xEB18, | ||
413 | ( short )0xF0C8, ( short )0xF618, ( short )0xF988, ( short )0xFEC8, | ||
414 | ( short )0x0518, ( short )0x09D8, ( short )0x1118, ( short )0x17F0, | ||
415 | ( short )0x1BB0, ( short )0x1E28, ( short )0x2120, ( short )0x23D8, | ||
416 | ( short )0x2638, ( short )0x2418, ( short )0x2080, ( short )0x1D30, | ||
417 | ( short )0x1CE8, ( short )0x1D98, ( short )0x1CA8, ( short )0x1AD8, | ||
418 | ( short )0x1960, ( short )0x17F8, ( short )0x1A40, ( short )0x1CF8, | ||
419 | ( short )0x1D38, ( short )0x1C30, ( short )0x1A68, ( short )0x1860, | ||
420 | ( short )0x1480, ( short )0x1020, ( short )0x0B68, ( short )0x03E8, | ||
421 | ( short )0xFBA8, ( short )0xF508, ( short )0xEE40, ( short )0xE820, | ||
422 | ( short )0xE338, ( short )0xDE88, ( short )0xDA30, ( short )0xD7D0, | ||
423 | ( short )0xD728, ( short )0xD7D8, ( short )0xD998, ( short )0xDC10, | ||
424 | ( short )0xDFB0, ( short )0xE470, ( short )0xE948, ( short )0xEF98, | ||
425 | ( short )0xF5F0, ( short )0xFC38, ( short )0x0228, ( short )0x0798, | ||
426 | ( short )0x0D98, ( short )0x1320, ( short )0x1760, ( short )0x1A70, | ||
427 | ( short )0x1BE0, ( short )0x1CC0, ( short )0x1D98, ( short )0x1A88, | ||
428 | ( short )0x1658, ( short )0x12A0, ( short )0x1180, ( short )0x10A8, | ||
429 | ( short )0x0ED0, ( short )0x0CC8, ( short )0x0AD8, ( short )0x0920, | ||
430 | ( short )0x0B70, ( short )0x0E30, ( short )0x0EE8, ( short )0x0D80, | ||
431 | ( short )0x0BE0, ( short )0x0AC0, ( short )0x09B8, ( short )0x0890, | ||
432 | ( short )0x0690, ( short )0x01F8, ( short )0xFD30, ( short )0xF9F0, | ||
433 | ( short )0xF5B0, ( short )0xF188, ( short )0xEE38, ( short )0xE9E8, | ||
434 | ( short )0xE5E8, ( short )0xE3E0, ( short )0xE4A0, ( short )0xE608, | ||
435 | ( short )0xE738, ( short )0xE858, ( short )0xE980, ( short )0xEC20, | ||
436 | ( short )0xF030, ( short )0xF450, ( short )0xF878, ( short )0xFC68, | ||
437 | ( short )0xFF68, ( short )0x03C8, ( short )0x08B8, ( short )0x0D00, | ||
438 | ( short )0x1038, ( short )0x12D8, ( short )0x1490, ( short )0x1648, | ||
439 | ( short )0x16B8, ( short )0x1468, ( short )0x1160, ( short )0x0FA8, | ||
440 | ( short )0x1038, ( short )0x1058, ( short )0x0F88, ( short )0x0E50, | ||
441 | ( short )0x0CC8, ( short )0x0CC0, ( short )0x0FC0, ( short )0x1220, | ||
442 | ( short )0x12A0, ( short )0x10F8, ( short )0x0F20, ( short )0x0D28, | ||
443 | ( short )0x0C78, ( short )0x0BB8, ( short )0x08D0, ( short )0x01C8, | ||
444 | ( short )0xFB38, ( short )0xF660, ( short )0xF330, ( short )0xF078, | ||
445 | ( short )0xEC28, ( short )0xE6C8, ( short )0xE2C0, ( short )0xE050, | ||
446 | ( short )0xDFC8, ( short )0xE038, ( short )0xE160, ( short )0xE300, | ||
447 | ( short )0xE568, ( short )0xE6B8, ( short )0xE9A0, ( short )0xED50, | ||
448 | ( short )0xF238, ( short )0xF6D8, ( short )0xFB08, ( short )0xFF10, | ||
449 | ( short )0x02E8, ( short )0x06A0, ( short )0x0AC0, ( short )0x0DC8, | ||
450 | ( short )0x1010, ( short )0x1168, ( short )0x1018, ( short )0x0E90, | ||
451 | ( short )0x0BF8, ( short )0x0B08, ( short )0x0A50, ( short )0x09F0, | ||
452 | ( short )0x0960, ( short )0x0888, ( short )0x0808, ( short )0x09C8, | ||
453 | ( short )0x0BA8, ( short )0x0EE8, ( short )0x1070, ( short )0x10D0, | ||
454 | ( short )0x0F58, ( short )0x0D60, ( short )0x0BA0, ( short )0x0A60, | ||
455 | ( short )0x08F0, ( short )0x0608, ( short )0xFFB0, ( short )0xF938, | ||
456 | ( short )0xF360, ( short )0xF030, ( short )0xEE20, ( short )0xEB70, | ||
457 | ( short )0xE7A8, ( short )0xE410, ( short )0xE140, ( short )0xDFC8, | ||
458 | ( short )0xDFF8, ( short )0xE1F0, ( short )0xE448, ( short )0xE6D0, | ||
459 | ( short )0xE780, ( short )0xE9E8, ( short )0xECF0, ( short )0xF248, | ||
460 | ( short )0xF730, ( short )0xFBC0, ( short )0xFF80, ( short )0x0310, | ||
461 | ( short )0x0670, ( short )0x0A98, ( short )0x0D88, ( short )0x0FD8, | ||
462 | ( short )0x10C0, ( short )0x0EB0, ( short )0x0C48, ( short )0x08B8, | ||
463 | ( short )0x0998, ( short )0x0AC0, ( short )0x0C68, ( short )0x0B78, | ||
464 | ( short )0x09C8, ( short )0x0838, ( short )0x08F8, ( short )0x0A80, | ||
465 | ( short )0x0CA0, ( short )0x0E10, ( short )0x0E48, ( short )0x0D58, | ||
466 | ( short )0x0A28, ( short )0x0750, ( short )0x04F0, ( short )0x0228, | ||
467 | ( short )0xFEE8, ( short )0xFA80, ( short )0xF468, ( short )0xEED0, | ||
468 | ( short )0xEAE0, ( short )0xE8B8, ( short )0xE718, ( short )0xE5B0, | ||
469 | ( short )0xE4A8, ( short )0xE410, ( short )0xE480, ( short )0xE548, | ||
470 | ( short )0xE738, ( short )0xE9B0, ( short )0xED80, ( short )0xF0B8, | ||
471 | ( short )0xF480, ( short )0xF7B0, ( short )0xFB70, ( short )0xFED0, | ||
472 | ( short )0x0328, ( short )0x0720, ( short )0x0A98, ( short )0x0E00, | ||
473 | ( short )0x10F8, ( short )0x12E0, ( short )0x12A8, ( short )0x11B0, | ||
474 | ( short )0x0F58, ( short )0x0F38, ( short )0x0E88, ( short )0x0F08, | ||
475 | ( short )0x0FC0, ( short )0x0FF0, ( short )0x10B8, ( short )0x1138, | ||
476 | ( short )0x1198, ( short )0x13D0, ( short )0x1638, ( short )0x17E8, | ||
477 | ( short )0x1758, ( short )0x1628, ( short )0x1460, ( short )0x10E8, | ||
478 | ( short )0x0CA0, ( short )0x0848, ( short )0x0280, ( short )0xFC90, | ||
479 | ( short )0xF700, ( short )0xF0F8, ( short )0xEB18, ( short )0xE638, | ||
480 | ( short )0xE1B8, ( short )0xDE78, ( short )0xDC58, ( short )0xDBB8, | ||
481 | ( short )0xDC28, ( short )0xDDB0, ( short )0xE030, ( short )0xE330, | ||
482 | ( short )0xE6F0, ( short )0xEC20, ( short )0xF210, ( short )0xF7C0, | ||
483 | ( short )0xFCE0, ( short )0x0150, ( short )0x0570, ( short )0x08F0, | ||
484 | ( short )0x0C70, ( short )0x0F50, ( short )0x12B8, ( short )0x1560, | ||
485 | ( short )0x16E0, ( short )0x1630, ( short )0x14E8, ( short )0x1298, | ||
486 | ( short )0x11B8, ( short )0x1170, ( short )0x11B8, ( short )0x11C0, | ||
487 | ( short )0x0FE8, ( short )0x0E58, ( short )0x0CB8, ( short )0x0C50, | ||
488 | ( short )0x0D68, ( short )0x0E98, ( short )0x0E30, ( short )0x0C28, | ||
489 | ( short )0x0A10, ( short )0x06D8, ( short )0x02E0, ( short )0xFEA0, | ||
490 | ( short )0xFA18, ( short )0xF4E8, ( short )0xF018, ( short )0xEB68, | ||
491 | ( short )0xE6E8, ( short )0xE310, ( short )0xDFC8, ( short )0xDD38, | ||
492 | ( short )0xDBF8, ( short )0xDC38, ( short )0xDDD0, ( short )0xE070, | ||
493 | ( short )0xE390, ( short )0xE760, ( short )0xEB88, ( short )0xEF20, | ||
494 | ( short )0xF378, ( short )0xF830, ( short )0xFCE0, ( short )0x00F8, | ||
495 | ( short )0x0480, ( short )0x0768, ( short )0x0968, ( short )0x0AE0, | ||
496 | ( short )0x0BB8, ( short )0x0C10, ( short )0x0BB0, ( short )0x0A78, | ||
497 | ( short )0x08E0, ( short )0x06E8, ( short )0x0540, ( short )0x0870, | ||
498 | ( short )0x0BE0, ( short )0x0ED0, ( short )0x0E40, ( short )0x0D10, | ||
499 | ( short )0x0CC8, ( short )0x0E28, ( short )0x0FA0, ( short )0x0FB0, | ||
500 | ( short )0x0F18, ( short )0x0DD0, ( short )0x0BC8, ( short )0x08E8, | ||
501 | ( short )0x0628, ( short )0x0300, ( short )0xFF18, ( short )0xFB40, | ||
502 | ( short )0xF780, ( short )0xF388, ( short )0xF028, ( short )0xED80, | ||
503 | ( short )0xEB18, ( short )0xE968, ( short )0xE8C0, ( short )0xE738, | ||
504 | ( short )0xE658, ( short )0xE698, ( short )0xE888, ( short )0xEB38, | ||
505 | ( short )0xEDA0, ( short )0xF178, ( short )0xF5B8, ( short )0xFA28, | ||
506 | ( short )0xFEA8, ( short )0x0300, ( short )0x06C8, ( short )0x0960, | ||
507 | ( short )0x0B70, ( short )0x0CE0, ( short )0x0D70, ( short )0x0D50, | ||
508 | ( short )0x0C60, ( short )0x0890, ( short )0x0418, ( short )0x0028, | ||
509 | ( short )0x01D0, ( short )0x03F8, ( short )0x05A8, ( short )0x0700, | ||
510 | ( short )0x0808, ( short )0x09A0, ( short )0x0B18, ( short )0x0CC8, | ||
511 | ( short )0x0D90, ( short )0x0E68, ( short )0x0EC0, ( short )0x0E30, | ||
512 | ( short )0x0C28, ( short )0x09D8, ( short )0x0730, ( short )0x0308, | ||
513 | ( short )0xFED8, ( short )0xFAC0, ( short )0xF598, ( short )0xF0D8, | ||
514 | ( short )0xECE0, ( short )0xEAA8, ( short )0xE948, ( short )0xE8D0, | ||
515 | ( short )0xE850, ( short )0xE888, ( short )0xE910, ( short )0xEAD0, | ||
516 | ( short )0xED68, ( short )0xF018, ( short )0xF350, ( short )0xF6B8, | ||
517 | ( short )0xFAE0, ( short )0xFF00, ( short )0x02D8, ( short )0x05E8, | ||
518 | ( short )0x0830, ( short )0x09F8, ( short )0x0B08, ( short )0x0B80, | ||
519 | ( short )0x0B60, ( short )0x0988, ( short )0x0648, ( short )0x02D0, | ||
520 | ( short )0x0150, ( short )0x01E8, ( short )0x0270, ( short )0x03E0, | ||
521 | ( short )0x0538, ( short )0x0658, ( short )0x0918, ( short )0x0C00, | ||
522 | ( short )0x0E88, ( short )0x10B8, ( short )0x12A0, ( short )0x13E0, | ||
523 | ( short )0x1488, ( short )0x1448, ( short )0x1368, ( short )0x1120, | ||
524 | ( short )0x0DD0, ( short )0x0A40, ( short )0x0608, ( short )0x0148, | ||
525 | ( short )0xFC80, ( short )0xF860, ( short )0xF4D8, ( short )0xF1C0, | ||
526 | ( short )0xF008, ( short )0xEF38, ( short )0xEE78, ( short )0xEE98, | ||
527 | ( short )0xEF90, ( short )0xF170, ( short )0xF390, ( short )0xF5C0, | ||
528 | ( short )0xF888, ( short )0xFB48, ( short )0xFDF0, ( short )0x0078, | ||
529 | ( short )0x03D0, ( short )0x06C8, ( short )0x08F8, ( short )0x0AA0, | ||
530 | ( short )0x0BC8, ( short )0x0C48, ( short )0x0B30, ( short )0x0978, | ||
531 | ( short )0x06A8, ( short )0x0530, ( short )0x03F0, ( short )0x0438, | ||
532 | ( short )0x03C0, ( short )0x0350, ( short )0x0360, ( short )0x04E8, | ||
533 | ( short )0x0698, ( short )0x07D0, ( short )0x08D0, ( short )0x0998, | ||
534 | ( short )0x0A70, ( short )0x0B48, ( short )0x0B70, ( short )0x0AD0, | ||
535 | ( short )0x09C0, ( short )0x0890, ( short )0x0730, ( short )0x0588, | ||
536 | ( short )0x0358, ( short )0x0140, ( short )0xFF58, ( short )0xFD40, | ||
537 | ( short )0xFB68, ( short )0xF9E8, ( short )0xF828, ( short )0xF6D0, | ||
538 | ( short )0xF608, ( short )0xF5D8, ( short )0xF610, ( short )0xF668, | ||
539 | ( short )0xF778, ( short )0xF8E8, ( short )0xFA48, ( short )0xFCC8, | ||
540 | ( short )0xFF50, ( short )0x01C8, ( short )0x0428, ( short )0x0640, | ||
541 | ( short )0x07D0, ( short )0x09D0, ( short )0x0B40, ( short )0x0BF8, | ||
542 | ( short )0x0C30, ( short )0x0C08, ( short )0x0B08, ( short )0x0988, | ||
543 | ( short )0x07C0, ( short )0x0670, ( short )0x0608, ( short )0x0590, | ||
544 | ( short )0x0588, ( short )0x05B0, ( short )0x05E0, ( short )0x06B8, | ||
545 | ( short )0x0748, ( short )0x0758, ( short )0x0700, ( short )0x06A8, | ||
546 | ( short )0x0620, ( short )0x05D8, ( short )0x0590, ( short )0x0528, | ||
547 | ( short )0x03A8, ( short )0x0240, ( short )0x0108, ( short )0xFF38, | ||
548 | ( short )0xFD50, ( short )0xFBA0, ( short )0xFA38, ( short )0xF920, | ||
549 | ( short )0xF860, ( short )0xF6E8, ( short )0xF640, ( short )0xF628, | ||
550 | ( short )0xF680, ( short )0xF720, ( short )0xF800, ( short )0xF8E0, | ||
551 | ( short )0xF9A0, ( short )0xFA78, ( short )0xFB88, ( short )0xFD20, | ||
552 | ( short )0xFEA0, ( short )0x0008, ( short )0x0110, ( short )0x0200, | ||
553 | ( short )0x0360, ( short )0x04E0, ( short )0x0608, ( short )0x0738, | ||
554 | ( short )0x0838, ( short )0x08D8, ( short )0x0828, ( short )0x0738, | ||
555 | ( short )0x0600, ( short )0x04A8, ( short )0x02E0, ( short )0x0130, | ||
556 | ( short )0xFFA0, ( short )0xFF48, ( short )0xFF10, ( short )0xFEF0, | ||
557 | ( short )0xFF30, ( short )0xFFD0, ( short )0x0090, ( short )0x0090, | ||
558 | ( short )0x0070, ( short )0x0060, ( short )0xFFE8, ( short )0xFF50, | ||
559 | ( short )0xFEB8, ( short )0xFE98, ( short )0xFE88, ( short )0xFE80, | ||
560 | ( short )0xFE58, ( short )0xFE50, ( short )0xFE58, ( short )0xFDB0, | ||
561 | ( short )0xFD08, ( short )0xFC80, ( short )0xFAF8, ( short )0xF988, | ||
562 | ( short )0xF860, ( short )0xF798, ( short )0xF720, ( short )0xF6E8, | ||
563 | ( short )0xF728, ( short )0xF7C0, ( short )0xF8A8, ( short )0xF8F8, | ||
564 | ( short )0xF960, ( short )0xFA18, ( short )0xFAC0, ( short )0xFB58, | ||
565 | ( short )0xFC18, ( short )0xFCE0, ( short )0xFDA0, ( short )0xFE20, | ||
566 | ( short )0xFE88, ( short )0xFEF8, ( short )0xFEF0, ( short )0xFEC8, | ||
567 | ( short )0xFEA8, ( short )0xFDE0, ( short )0xFD10, ( short )0xFC70, | ||
568 | ( short )0xFBA8, ( short )0xFB10, ( short )0xFAB8, ( short )0xFAA0, | ||
569 | ( short )0xFAD0, ( short )0xFB18, ( short )0xFA90, ( short )0xFA18, | ||
570 | ( short )0xFA10, ( short )0xFA80, ( short )0xFB10, ( short )0xFB88, | ||
571 | ( short )0xFC90, ( short )0xFDB8, ( short )0xFEB8, ( short )0xFF80, | ||
572 | ( short )0x0058, ( short )0x0138, ( short )0x0118, ( short )0x00C8, | ||
573 | ( short )0x00C0, ( short )0xFF98, ( short )0xFE30, ( short )0xFD38, | ||
574 | ( short )0xFC68, ( short )0xFB78, ( short )0xFAB8, ( short )0xFAE8, | ||
575 | ( short )0xFB78, ( short )0xFBD0, ( short )0xFBE8, ( short )0xFC18, | ||
576 | ( short )0xFC98, ( short )0xFD28, ( short )0xFD48, ( short )0xFD68, | ||
577 | ( short )0xFD68, ( short )0xFD90, ( short )0xFDB8, ( short )0xFD90, | ||
578 | ( short )0xFD68, ( short )0xFD78, ( short )0xFCA0, ( short )0xFB70, | ||
579 | ( short )0xFAD0, ( short )0xF9F0, ( short )0xF870, ( short )0xF748, | ||
580 | ( short )0xF748, ( short )0xF770, ( short )0xF748, ( short )0xF720, | ||
581 | ( short )0xF7A8, ( short )0xF878, ( short )0xF930, ( short )0xF998, | ||
582 | ( short )0xFA38, ( short )0xFC10, ( short )0xFDA0, ( short )0xFE70, | ||
583 | ( short )0x0030, ( short )0x0248, ( short )0x03A0, ( short )0x0568, | ||
584 | ( short )0x0738, ( short )0x0870, ( short )0x0960, ( short )0x0A10, | ||
585 | ( short )0x0A40, ( short )0x0A28, ( short )0x09B8, ( short )0x08E8, | ||
586 | ( short )0x07E8, ( short )0x06E0, ( short )0x0588, ( short )0x0430, | ||
587 | ( short )0x0300, ( short )0x0260, ( short )0x01D0, ( short )0x0118, | ||
588 | ( short )0xFFB0, ( short )0xFE98, ( short )0xFE18, ( short )0xFDA0, | ||
589 | ( short )0xFD08, ( short )0xFCB8, ( short )0xFCF8, ( short )0xFD60, | ||
590 | ( short )0xFD90, ( short )0xFD90, ( short )0xFDD8, ( short )0xFE50, | ||
591 | ( short )0xFDA0, ( short )0xFCE0, ( short )0xFCC0, ( short )0xFCE8, | ||
592 | ( short )0xFCB0, ( short )0xFC60, ( short )0xFC70, ( short )0xFCB8, | ||
593 | ( short )0xFCE0, ( short )0xFD40, ( short )0xFDD8, ( short )0xFE68, | ||
594 | ( short )0xFF78, ( short )0x0068, ( short )0x0108, ( short )0x0278, | ||
595 | ( short )0x03A0, ( short )0x0420, ( short )0x0590, ( short )0x0708, | ||
596 | ( short )0x07B8, ( short )0x07D8, ( short )0x0808, ( short )0x0838, | ||
597 | ( short )0x07D8, ( short )0x06E8, ( short )0x0600, ( short )0x05B0, | ||
598 | ( short )0x0518, ( short )0x0410, ( short )0x02A0, ( short )0x0198, | ||
599 | ( short )0x00D0, ( short )0x00C8, ( short )0x00B0, ( short )0x0068, | ||
600 | ( short )0x00C0, ( short )0x0150, ( short )0x0180, ( short )0x0220, | ||
601 | ( short )0x02D8, ( short )0x0340, ( short )0x0360, ( short )0x0380, | ||
602 | ( short )0x0380, ( short )0x0338, ( short )0x02C8, ( short )0x02B8, | ||
603 | ( short )0x0280, ( short )0x0200, ( short )0x0100, ( short )0x0098, | ||
604 | ( short )0x0080, ( short )0x0020, ( short )0xFFF0, ( short )0x0000, | ||
605 | ( short )0x0020, ( short )0x0098, ( short )0x0120, ( short )0x0170, | ||
606 | ( short )0x0230, ( short )0x02F0, ( short )0x0350, ( short )0x0480, | ||
607 | ( short )0x05B8, ( short )0x0650, ( short )0x06A8, ( short )0x0738, | ||
608 | ( short )0x0798, ( short )0x07B0, ( short )0x07C0, ( short )0x0798, | ||
609 | ( short )0x0668, ( short )0x0598, ( short )0x0530, ( short )0x04C8, | ||
610 | ( short )0x0410, ( short )0x0350, ( short )0x0278, ( short )0x01D8, | ||
611 | ( short )0x0148, ( short )0x0080, ( short )0x0000, ( short )0xFFC0, | ||
612 | ( short )0xFFD8, ( short )0xFFA8, ( short )0xFF60, ( short )0xFF80, | ||
613 | ( short )0x0018, ( short )0x0070, ( short )0xFFE0, ( short )0xFF88, | ||
614 | ( short )0xFFC0, ( short )0xFF38, ( short )0xFE98, ( short )0xFE50, | ||
615 | ( short )0xFE10, ( short )0xFDD8, ( short )0xFD90, ( short )0xFD30, | ||
616 | ( short )0xFDB8, ( short )0xFE68, ( short )0xFE70, ( short )0xFE60, | ||
617 | ( short )0xFE70, ( short )0xFED0, ( short )0xFF90, ( short )0xFFE0, | ||
618 | ( short )0xFFF0, ( short )0x00A8, ( short )0x0168, ( short )0x01D0, | ||
619 | ( short )0x01F8, ( short )0x0210, ( short )0x0278, ( short )0x0268, | ||
620 | ( short )0x0208, ( short )0x0220, ( short )0x01F8, ( short )0x0198, | ||
621 | ( short )0x0158, ( short )0x0100, ( short )0x00C0, ( short )0x00A0, | ||
622 | ( short )0x0018, ( short )0xFF98, ( short )0xFF28, ( short )0xFEC0, | ||
623 | ( short )0xFE80, ( short )0xFE60, ( short )0xFD88, ( short )0xFCF0, | ||
624 | ( short )0xFCC8, ( short )0xFC70, ( short )0xFC10, ( short )0xFBC8, | ||
625 | ( short )0xFBB0, ( short )0xFBE8, ( short )0xFBE8, ( short )0xFB80, | ||
626 | ( short )0xFB88, ( short )0xFB40, ( short )0xFB18, ( short )0xFB20, | ||
627 | ( short )0xFAB8, ( short )0xFA50, ( short )0xFA50, ( short )0xFAB8, | ||
628 | ( short )0xFAF8, ( short )0xFB18, ( short )0xFBB0, ( short )0xFC88, | ||
629 | ( short )0xFD10, ( short )0xFD40, ( short )0xFD98, ( short )0xFE38, | ||
630 | ( short )0xFEE0, ( short )0xFEF8, ( short )0xFEF0, ( short )0xFF18, | ||
631 | ( short )0xFF18, ( short )0xFF18, ( short )0xFF68, ( short )0xFF98, | ||
632 | ( short )0xFF98, ( short )0xFFD0, ( short )0xFFF8, ( short )0x0048, | ||
633 | ( short )0x0038, ( short )0x0008, ( short )0x0008, ( short )0xFFE0, | ||
634 | ( short )0xFFB0, ( short )0xFFB8, ( short )0xFED0, ( short )0xFE18, | ||
635 | ( short )0xFE18, ( short )0xFDF0, ( short )0xFE38, ( short )0xFE90, | ||
636 | ( short )0xFE90, ( short )0xFDA8, ( short )0xFD48, ( short )0xFD70, | ||
637 | ( short )0xFD68, ( short )0xFD00, ( short )0xFCB8, ( short )0xFCB8, | ||
638 | ( short )0xFCF8, ( short )0xFD00, ( short )0xFC30, ( short )0xFBD0, | ||
639 | ( short )0xFC10, ( short )0xFC20, ( short )0xFBE0, ( short )0xFBA8, | ||
640 | ( short )0xFC30, ( short )0xFD00, ( short )0xFD50, ( short )0xFD90, | ||
641 | ( short )0xFE10, ( short )0xFEA8, ( short )0xFF40, ( short )0xFFA0, | ||
642 | ( short )0xFFD0, ( short )0xFFC8, ( short )0xFFC8, ( short )0xFFD8, | ||
643 | ( short )0xFFA0, ( short )0xFF98, ( short )0xFFB8, ( short )0x0050, | ||
644 | ( short )0x00B8, ( short )0x00B0, ( short )0x01B0, ( short )0x02E0, | ||
645 | ( short )0x0318, ( short )0x0330, ( short )0x02E0, ( short )0x02C8, | ||
646 | ( short )0x0278, ( short )0x0150, ( short )0x0050, ( short )0xFFC0, | ||
647 | ( short )0xFF88, ( short )0xFF18, ( short )0xFE90, ( short )0xFE40, | ||
648 | ( short )0xFE30, ( short )0xFDE8, ( short )0xFDD0, ( short )0xFD70, | ||
649 | ( short )0xFD48, ( short )0xFD10, ( short )0xFC98, ( short )0xFC38, | ||
650 | ( short )0xFC38, ( short )0xFC78, ( short )0xFC98, ( short )0xFCF0, | ||
651 | ( short )0xFDA8, ( short )0xFE48, ( short )0xFEC8, ( short )0xFF30, | ||
652 | ( short )0xFF98, ( short )0x0000, ( short )0x0050, ( short )0x0058, | ||
653 | ( short )0x00A8, ( short )0x00E8, ( short )0x00D0, ( short )0x0138, | ||
654 | ( short )0x01E0, ( short )0x0218, ( short )0x0208, ( short )0x0230, | ||
655 | ( short )0x0258, ( short )0x0248, ( short )0x02B0, ( short )0x0318, | ||
656 | ( short )0x0330, ( short )0x0358, ( short )0x0380, ( short )0x0378, | ||
657 | ( short )0x0408, ( short )0x0480, ( short )0x0460, ( short )0x03C8, | ||
658 | ( short )0x0318, ( short )0x02B0, ( short )0x01E8, ( short )0x00B8, | ||
659 | ( short )0xFFD8, ( short )0xFF30, ( short )0xFEC8, ( short )0xFE60, | ||
660 | ( short )0xFE60, ( short )0xFE78, ( short )0xFE78, ( short )0xFDC0, | ||
661 | ( short )0xFD70, ( short )0xFD50, ( short )0xFD08, ( short )0xFC88, | ||
662 | ( short )0xFC28, ( short )0xFC98, ( short )0xFD18, ( short )0xFD60, | ||
663 | ( short )0xFD60, ( short )0xFDD8, ( short )0xFE90, ( short )0xFEE8, | ||
664 | ( short )0xFF10, ( short )0xFF58, ( short )0xFF90, ( short )0xFFB8, | ||
665 | ( short )0xFFE0, ( short )0xFFF0, ( short )0xFFF0, ( short )0x00D0, | ||
666 | ( short )0x0190, ( short )0x01C8, ( short )0x0180, ( short )0x0188, | ||
667 | ( short )0x01B0, ( short )0x0238, ( short )0x0298, ( short )0x02B8, | ||
668 | ( short )0x0268, ( short )0x0258, ( short )0x0258, ( short )0x0230, | ||
669 | ( short )0x0228, ( short )0x0230, ( short )0x0258, ( short )0x0248, | ||
670 | ( short )0x01F8, ( short )0x0150, ( short )0x00C8, ( short )0x0058, | ||
671 | ( short )0x0058, ( short )0x0038, ( short )0x0000, ( short )0xFF50, | ||
672 | ( short )0xFF00, ( short )0xFEF8, ( short )0xFE80, ( short )0xFDB8, | ||
673 | ( short )0xFD70, ( short )0xFD00, ( short )0xFC90, ( short )0xFC40, | ||
674 | ( short )0xFC28, ( short )0xFC58, ( short )0xFC98, ( short )0xFD10, | ||
675 | ( short )0xFD78, ( short )0xFDE0, ( short )0xFE80, ( short )0xFF08, | ||
676 | ( short )0xFF60, ( short )0xFFD0, ( short )0x0030, ( short )0x0068, | ||
677 | ( short )0x0110, ( short )0x0198, ( short )0x01C0, ( short )0x0208, | ||
678 | ( short )0x0260, ( short )0x0280, ( short )0x0320, ( short )0x0390, | ||
679 | ( short )0x0398, ( short )0x0410, ( short )0x0488, ( short )0x04A0, | ||
680 | ( short )0x0448, ( short )0x0408, ( short )0x03E0, ( short )0x03C8, | ||
681 | ( short )0x0398, ( short )0x0350, ( short )0x0308, ( short )0x02C8, | ||
682 | ( short )0x0278, ( short )0x01D8, ( short )0x0148, ( short )0x00E8, | ||
683 | ( short )0x0040, ( short )0xFFA0, ( short )0xFF50, ( short )0xFDC0, | ||
684 | ( short )0xFC88, ( short )0xFC30, ( short )0xFB88, ( short )0xFAA8, | ||
685 | ( short )0xFA50, ( short )0xFA30, ( short )0xFA40, ( short )0xFA70, | ||
686 | ( short )0xFAB8, ( short )0xFAE0, ( short )0xFB28, ( short )0xFB58, | ||
687 | ( short )0xFB80, ( short )0xFBB0, ( short )0xFC00, ( short )0xFC80, | ||
688 | ( short )0xFCF0, ( short )0xFDB8, ( short )0xFE58, ( short )0xFED8, | ||
689 | ( short )0x0008, ( short )0x0100, ( short )0x0180, ( short )0x01D0, | ||
690 | ( short )0x0210, ( short )0x0248, ( short )0x0238, ( short )0x0200, | ||
691 | ( short )0x01D0, ( short )0x02D0, ( short )0x03A0, ( short )0x03D8, | ||
692 | ( short )0x03C0, ( short )0x03D8, ( short )0x03F8, ( short )0x0370, | ||
693 | ( short )0x02C0, ( short )0x0258, ( short )0x01B8, ( short )0x0120, | ||
694 | ( short )0x0090, ( short )0x0088, ( short )0x00A8, ( short )0x00A8, | ||
695 | ( short )0x0088, ( short )0x0068, ( short )0x0060, ( short )0xFFE0, | ||
696 | ( short )0xFF00, ( short )0xFE50, ( short )0xFDC8, ( short )0xFCF0, | ||
697 | ( short )0xFC30, ( short )0xFBB0, ( short )0xFBD8, ( short )0xFC20, | ||
698 | ( short )0xFC58, ( short )0xFC30, ( short )0xFC40, ( short )0xFC78, | ||
699 | ( short )0xFCC0, ( short )0xFCE8, ( short )0xFD10, ( short )0xFD48, | ||
700 | ( short )0xFD88, ( short )0xFDE8, ( short )0xFF10, ( short )0x0020, | ||
701 | ( short )0x0110, ( short )0x01B8, ( short )0x0248, ( short )0x02C0, | ||
702 | ( short )0x0358, ( short )0x03B8, ( short )0x03C8, ( short )0x0320, | ||
703 | ( short )0x0288, ( short )0x0280, ( short )0x0300, ( short )0x0340, | ||
704 | ( short )0x0320, ( short )0x0380, ( short )0x03F8, ( short )0x0418, | ||
705 | ( short )0x0378, ( short )0x02E0, ( short )0x0288, ( short )0x0280, | ||
706 | ( short )0x0238, ( short )0x01D0, ( short )0x0168, ( short )0x0138, | ||
707 | ( short )0x0110, ( short )0x0140, ( short )0x0148, ( short )0x0150, | ||
708 | ( short )0x00A8, ( short )0x0010, ( short )0xFFB0, ( short )0xFEB8, | ||
709 | ( short )0xFDE0, ( short )0xFD48, ( short )0xFCE8, ( short )0xFCA8, | ||
710 | ( short )0xFC78, ( short )0xFC48, ( short )0xFC50, ( short )0xFC70, | ||
711 | ( short )0xFCA8, ( short )0xFCE8, ( short )0xFD28, ( short )0xFDD0, | ||
712 | ( short )0xFE70, ( short )0xFED8, ( short )0x0040, ( short )0x0188, | ||
713 | ( short )0x0258, ( short )0x03C0, ( short )0x04F0, ( short )0x05B8, | ||
714 | ( short )0x0638, ( short )0x0670, ( short )0x0690, ( short )0x0708, | ||
715 | ( short )0x0708, ( short )0x06B8, ( short )0x0660, ( short )0x0650, | ||
716 | ( short )0x0630, ( short )0x05C8, ( short )0x0578, ( short )0x0548, | ||
717 | ( short )0x0508, ( short )0x0470, ( short )0x03D0, ( short )0x0350, | ||
718 | ( short )0x0278, ( short )0x01A0, ( short )0x00F8, ( short )0x00B0, | ||
719 | ( short )0x0078, ( short )0x0030, ( short )0xFFE8, ( short )0xFFC8, | ||
720 | ( short )0xFFB8, ( short )0xFED0, ( short )0xFE08, ( short )0xFD98, | ||
721 | ( short )0xFC70, ( short )0xFB60, ( short )0xFAA8, ( short )0xFA10, | ||
722 | ( short )0xF9B8, ( short )0xF980, ( short )0xF9A0, ( short )0xFA00, | ||
723 | ( short )0xFA68, ( short )0xFB90, ( short )0xFCB8, ( short )0xFD98, | ||
724 | ( short )0xFE68, ( short )0xFF18, ( short )0xFFC0, ( short )0x0078, | ||
725 | ( short )0x00F8, ( short )0x0218, ( short )0x0320, ( short )0x03C0, | ||
726 | ( short )0x0478, ( short )0x0510, ( short )0x0570, ( short )0x05D8, | ||
727 | ( short )0x05E0, ( short )0x05B8, ( short )0x0508, ( short )0x0468, | ||
728 | ( short )0x03E0, ( short )0x02F0, ( short )0x0218, ( short )0x0168, | ||
729 | ( short )0x00F0, ( short )0x0060, ( short )0xFFD0, ( short )0xFF58, | ||
730 | ( short )0xFEC0, ( short )0xFE48, ( short )0xFDB0, ( short )0xFD58, | ||
731 | ( short )0xFD38, ( short )0xFCD8, ( short )0xFC80, ( short )0xFC50, | ||
732 | ( short )0xFC08, ( short )0xFB48, ( short )0xFA98, ( short )0xF9F8, | ||
733 | ( short )0xF8F8, ( short )0xF810, ( short )0xF7F8, ( short )0xF818, | ||
734 | ( short )0xF848, ( short )0xF8E8, ( short )0xF9E0, ( short )0xFB08, | ||
735 | ( short )0xFC38, ( short )0xFD10, ( short )0xFDE8, ( short )0xFF10, | ||
736 | ( short )0xFFD0, ( short )0x0048, ( short )0x00E0, ( short )0x0160, | ||
737 | ( short )0x01B8, ( short )0x01C8, ( short )0x01E0, ( short )0x0200, | ||
738 | ( short )0x0228, ( short )0x0240, ( short )0x0240, ( short )0x0240, | ||
739 | ( short )0x0260, ( short )0x0280, ( short )0x0280, ( short )0x02F0, | ||
740 | ( short )0x0370, ( short )0x03C8, ( short )0x03C8, ( short )0x03A8, | ||
741 | ( short )0x03A0, ( short )0x02F8, ( short )0x0220, ( short )0x0150, | ||
742 | ( short )0x0098, ( short )0xFFE0, ( short )0xFF20, ( short )0xFEA0, | ||
743 | ( short )0xFE50, ( short )0xFE18, ( short )0xFD38, ( short )0xFC60, | ||
744 | ( short )0xFBE0, ( short )0xFAC8, ( short )0xF9A0, ( short )0xF8B8, | ||
745 | ( short )0xF830, ( short )0xF888, ( short )0xF8B8, ( short )0xF908, | ||
746 | ( short )0xFA80, ( short )0xFBF8, ( short )0xFD48, ( short )0xFEC8, | ||
747 | ( short )0x0040, ( short )0x01B0, ( short )0x0298, ( short )0x0338, | ||
748 | ( short )0x03C0, ( short )0x0470, ( short )0x0520, ( short )0x0588, | ||
749 | ( short )0x0610, ( short )0x0688, ( short )0x06C8, ( short )0x0670, | ||
750 | ( short )0x05E8, ( short )0x0578, ( short )0x0580, ( short )0x0578, | ||
751 | ( short )0x0528, ( short )0x0498, ( short )0x0408, ( short )0x0390, | ||
752 | ( short )0x03F8, ( short )0x0458, ( short )0x0488, ( short )0x0468, | ||
753 | ( short )0x0450, ( short )0x0458, ( short )0x03A8, ( short )0x02D0, | ||
754 | ( short )0x0210, ( short )0x0158, ( short )0x0088, ( short )0xFFA8, | ||
755 | ( short )0xFF00, ( short )0xFE88, ( short )0xFE30, ( short )0xFD88, | ||
756 | ( short )0xFCB8, ( short )0xFC28, ( short )0xFB30, ( short )0xF9F0, | ||
757 | ( short )0xF8E8, ( short )0xF890, ( short )0xF890, ( short )0xF8C0, | ||
758 | ( short )0xF978, ( short )0xFA78, ( short )0xFBE8, ( short )0xFD20, | ||
759 | ( short )0xFE28, ( short )0xFF60, ( short )0x00D8, ( short )0x0220, | ||
760 | ( short )0x02F8, ( short )0x0378, ( short )0x03E0, ( short )0x0438, | ||
761 | ( short )0x0488, ( short )0x0498, ( short )0x04A8, ( short )0x0480, | ||
762 | ( short )0x0440, ( short )0x03C0, ( short )0x02D8, ( short )0x01E8, | ||
763 | ( short )0x0140, ( short )0x00D8, ( short )0x0068, ( short )0xFFE0, | ||
764 | ( short )0x0068, ( short )0x0130, ( short )0x0228, ( short )0x0260, | ||
765 | ( short )0x0278, ( short )0x02D0, ( short )0x02D8, ( short )0x0290, | ||
766 | ( short )0x01E0, ( short )0x00D0, ( short )0xFFE0, ( short )0xFEF8, | ||
767 | ( short )0xFE08, ( short )0xFD28, ( short )0xFC88, ( short )0xFBE0, | ||
768 | ( short )0xFB60, ( short )0xFAD8, ( short )0xFA08, ( short )0xF978, | ||
769 | ( short )0xF8E8, ( short )0xF8B0, ( short )0xF8B0, ( short )0xF8D0, | ||
770 | ( short )0xF9D0, ( short )0xFAF8, ( short )0xFC18, ( short )0xFDB0, | ||
771 | ( short )0xFF38, ( short )0x00A0, ( short )0x01F8, ( short )0x02F8, | ||
772 | ( short )0x03C0, ( short )0x0460, ( short )0x04B8, ( short )0x04C8, | ||
773 | ( short )0x04C8, ( short )0x04C0, ( short )0x0498, ( short )0x0490, | ||
774 | ( short )0x0478, ( short )0x0448, ( short )0x0420, ( short )0x03F8, | ||
775 | ( short )0x0328, ( short )0x0238, ( short )0x01B0, ( short )0x0170, | ||
776 | ( short )0x0128, ( short )0x0090, ( short )0x00E8, ( short )0x01B8, | ||
777 | ( short )0x02B8, ( short )0x0280, ( short )0x0218, ( short )0x0218, | ||
778 | ( short )0x01F0, ( short )0x0148, ( short )0x0000, ( short )0xFEC0, | ||
779 | ( short )0xFE08, ( short )0xFD70, ( short )0xFCA0, ( short )0xFBF0, | ||
780 | ( short )0xFBC0, ( short )0xFBA0, ( short )0xFB80, ( short )0xFB18, | ||
781 | ( short )0xFB28, ( short )0xFB98, ( short )0xFBC0, ( short )0xFBD0, | ||
782 | ( short )0xFC08, ( short )0xFC78, ( short )0xFDC8, ( short )0xFEC8, | ||
783 | ( short )0xFF78, ( short )0x00D0, ( short )0x0238, ( short )0x0360, | ||
784 | ( short )0x0398, ( short )0x0360, ( short )0x0368, ( short )0x0380, | ||
785 | ( short )0x0318, ( short )0x0250, ( short )0x0208, ( short )0x0220, | ||
786 | ( short )0x0218, ( short )0x01F0, ( short )0x01C8, ( short )0x0210, | ||
787 | ( short )0x0270, ( short )0x0270, ( short )0x0240, ( short )0x0290, | ||
788 | ( short )0x0310, ( short )0x0360, ( short )0x0340, ( short )0x0310, | ||
789 | ( short )0x0318, ( short )0x0320, ( short )0x02D8, ( short )0x0240, | ||
790 | ( short )0x0158, ( short )0x00A0, ( short )0x0008, ( short )0xFF30, | ||
791 | ( short )0xFE50, ( short )0xFDA8, ( short )0xFD28, ( short )0xFCC8, | ||
792 | ( short )0xFC60, ( short )0xFBA8, ( short )0xFB40, ( short )0xFB10, | ||
793 | ( short )0xFB18, ( short )0xFB28, ( short )0xFB48, ( short )0xFB68, | ||
794 | ( short )0xFBA8, ( short )0xFBF8, ( short )0xFCB8, ( short )0xFD78, | ||
795 | ( short )0xFE00, ( short )0xFE88, ( short )0xFF30, ( short )0xFF98, | ||
796 | ( short )0xFFC8, ( short )0xFFE8, ( short )0x0050, ( short )0x00B0, | ||
797 | ( short )0x00E0, ( short )0x0040, ( short )0xFF68, ( short )0xFED8, | ||
798 | ( short )0xFEE8, ( short )0xFEE0, ( short )0xFE90, ( short )0xFEA8, | ||
799 | ( short )0xFF88, ( short )0x0080, ( short )0x0188, ( short )0x0208, | ||
800 | ( short )0x0290, ( short )0x0390, ( short )0x0438, ( short )0x0450, | ||
801 | ( short )0x0428, ( short )0x03F8, ( short )0x03E0, ( short )0x0388, | ||
802 | ( short )0x02E0, ( short )0x0240, ( short )0x0190, ( short )0x00D0, | ||
803 | ( short )0x0000, ( short )0x0000, ( short )0x0018, ( short )0x00FF, | ||
804 | ( short )0x0068, ( short )0x00FE, ( short )0x00F8, ( short )0x00FD | ||
805 | }; | ||
806 | |||
807 | gsm_byte gsm_dec_gsmdata[] = { | ||
808 | 0xD5, 0x1F, 0x74, 0x21, 0xA0, 0x50, 0x40, 0xC9, 0x24, 0x7B, 0xFA, 0x6B, | ||
809 | 0x52, 0xE0, 0xB6, 0xD6, 0x8E, 0xB9, 0x2B, 0xAE, 0xE0, 0x8B, 0x23, 0x52, | ||
810 | 0x3B, 0x13, 0x86, 0xE0, 0x14, 0x4A, 0x41, 0x44, 0x32, 0xD3, 0xA1, 0x83, | ||
811 | 0xA1, 0x1D, 0xA6, 0x80, 0xBA, 0xD2, 0x96, 0x26, 0xFB, 0x84, 0x80, 0x6D, | ||
812 | 0x9C, 0x25, 0x1D, 0x9B, 0xAA, 0xC0, 0xBB, 0x4C, 0x95, 0xB9, 0x53, 0xAE, | ||
813 | 0xA0, 0xB6, 0xE4, 0x46, 0x37, 0x1B, 0xD4, 0xA5, 0x7B, 0x1D, 0x22, 0x97, | ||
814 | 0x00, 0xBA, 0xA5, 0x6D, 0xD2, 0xA1, 0x7E, 0xC0, 0xB9, 0x25, 0xD2, 0xB4, | ||
815 | 0x94, 0x9E, 0xE0, 0x3E, 0xDE, 0xED, 0xD6, 0xD2, 0xE2, 0xC0, 0xD7, 0x5D, | ||
816 | 0x8D, 0x59, 0xAC, 0xD3, 0xE4, 0x83, 0x95, 0x59, 0xC0, 0xA1, 0x48, 0xD2, | ||
817 | 0x66, 0xC7, 0x2C, 0x9E, 0xA0, 0x2A, 0xD3, 0xEE, 0x45, 0x1C, 0x80, 0xE0, | ||
818 | 0x6B, 0x34, 0x8C, 0x4B, 0x29, 0xCB, 0x00, 0xBA, 0xF6, 0x0D, 0x26, 0x9A, | ||
819 | 0xD3, 0xA4, 0x82, 0x9D, 0x63, 0x7A, 0xC0, 0x67, 0x24, 0xBA, 0xD6, 0x7C, | ||
820 | 0xC2, 0xC0, 0x37, 0x20, 0x4F, 0x10, 0xE0, 0xC7, 0x80, 0x6A, 0x77, 0x63, | ||
821 | 0xBE, 0x6B, 0x5A, 0xC0, 0xB5, 0x34, 0xD1, 0x34, 0x9C, 0xD4, 0xE8, 0x56, | ||
822 | 0xB2, 0x58, 0x5F, 0x00, 0xB7, 0xAF, 0x92, 0x12, 0x90, 0xD5, 0xA4, 0x39, | ||
823 | 0x23, 0x4E, 0x46, 0x87, 0x51, 0xAC, 0xD8, 0xDB, 0x6D, 0xCB, 0x17, 0x50, | ||
824 | 0x89, 0x7B, 0x44, 0x28, 0x03, 0x6B, 0xD5, 0xA9, 0x36, 0x36, 0xD9, 0x6B, | ||
825 | 0xA8, 0x93, 0x3A, 0x96, 0xEE, 0xFF, 0x67, 0x8B, 0x36, 0xDA, 0x09, 0xB4, | ||
826 | 0x99, 0x67, 0x2B, 0x88, 0xE4, 0xB5, 0xA5, 0xDA, 0x65, 0x47, 0xDA, 0x1E, | ||
827 | 0x96, 0xFA, 0xEC, 0xD5, 0xA9, 0x45, 0x63, 0x1A, 0xCB, 0xC9, 0x48, 0x9D, | ||
828 | 0x83, 0x5F, 0x6F, 0xCB, 0x08, 0x1B, 0x97, 0xC9, 0x18, 0x0A, 0x63, 0xCB, | ||
829 | 0xA6, 0xE1, 0x84, 0xF5, 0x62, 0x61, 0x6A, 0x84, 0xDC, 0xB6, 0x37, 0x9E, | ||
830 | 0xD6, 0xAB, 0x3C, 0x53, 0x93, 0xC1, 0x2A, 0xAA, 0x81, 0x8D, 0x6B, 0x65, | ||
831 | 0x60, 0xA8, 0xFB, 0x2E, 0x22, 0x59, 0x74, 0x61, 0xA6, 0x5D, 0x73, 0x94, | ||
832 | 0xF8, 0xE4, 0xC1, 0x46, 0x26, 0x5E, 0x8A, 0x86, 0xED, 0xD4, 0xA6, 0x2D, | ||
833 | 0x57, 0x6B, 0xBE, 0xE8, 0x58, 0xDA, 0x3D, 0x98, 0x99, 0xBE, 0xA8, 0xC2, | ||
834 | 0xDB, 0x6A, 0x2E, 0x51, 0x62, 0xE5, 0x80, 0x58, 0x76, 0xB8, 0xE4, 0x6C, | ||
835 | 0x84, 0xCA, 0x98, 0x06, 0x0B, 0xFC, 0xD2, 0x66, 0x7C, 0x62, 0x3A, 0x5B, | ||
836 | 0xC5, 0xDF, 0x7D, 0x75, 0x49, 0x1E, 0x52, 0xC7, 0x55, 0xF7, 0x84, 0xA6, | ||
837 | 0xDA, 0x5D, 0x43, 0x26, 0x85, 0x98, 0xD8, 0x8F, 0xB6, 0xC5, 0x28, 0xEB, | ||
838 | 0x3E, 0x75, 0x04, 0xD2, 0x27, 0xBA, 0x2A, 0x2B, 0xB7, 0x03, 0x13, 0x45, | ||
839 | 0x35, 0x1B, 0x78, 0x5F, 0xC3, 0xBA, 0xDB, 0xAE, 0x27, 0xC2, 0x5E, 0xA4, | ||
840 | 0x50, 0x8C, 0x8A, 0xBB, 0x4F, 0x60, 0xC3, 0xEE, 0x41, 0x46, 0x4A, 0xDF, | ||
841 | 0xD2, 0x27, 0xB2, 0xAD, 0xEB, 0x5F, 0x43, 0x4C, 0x6A, 0x09, 0x2A, 0xCC, | ||
842 | 0xB7, 0x47, 0x2A, 0xB9, 0x91, 0xB6, 0xD4, 0x5B, 0x25, 0x58, 0xD8, 0xFD, | ||
843 | 0x46, 0x95, 0x5A, 0xC3, 0x27, 0x5B, 0x3F, 0xFB, 0x12, 0xD2, 0x26, 0xC3, | ||
844 | 0xA9, 0xA1, 0xB6, 0xA2, 0xCB, 0x1B, 0xD0, 0x73, 0xE4, 0xBA, 0xA1, 0xE9, | ||
845 | 0x05, 0xBE, 0x79, 0x23, 0xA4, 0xC2, 0x3A, 0x4B, 0x11, 0xE5, 0x68, 0xC4, | ||
846 | 0xC1, 0xBA, 0xC1, 0xCC, 0x8B, 0x02, 0xD2, 0x63, 0x6C, 0xEE, 0x19, 0x5E, | ||
847 | 0xE1, 0xB6, 0x4C, 0x1A, 0xB4, 0x5E, 0xF0, 0xC2, 0x27, 0x20, 0x55, 0xBD, | ||
848 | 0x6D, 0x64, 0xE1, 0xC7, 0x45, 0xA9, 0x65, 0x6D, 0x7D, 0x42, 0x56, 0xD8, | ||
849 | 0xB2, 0xB6, 0xEC, 0xD3, 0x61, 0x5B, 0x62, 0x61, 0x60, 0xA1, 0x5B, 0xD6, | ||
850 | 0x15, 0x29, 0x09, 0x6C, 0xA1, 0x3E, 0xAD, 0x65, 0x34, 0xC3, 0xC0, 0xC1, | ||
851 | 0x22, 0x6D, 0x4C, 0x57, 0x10, 0xDB, 0x41, 0xD2, 0xE1, 0x77, 0x64, 0xF7, | ||
852 | 0xD3, 0x21, 0x73, 0xA9, 0x29, 0x58, 0xC1, 0xA1, 0x5A, 0x52, 0xB7, 0x32, | ||
853 | 0x64, 0xC1, 0x67, 0x42, 0x74, 0x2C, 0xDC, 0x61, 0x61, 0x65, 0x8B, 0xCB, | ||
854 | 0x04, 0xE5, 0x60, 0xC1, 0xC9, 0x5E, 0x8E, 0x36, 0x83, 0xD2, 0xA2, 0x83, | ||
855 | 0xA9, 0xD9, 0xCD, 0x21, 0xB9, 0x25, 0xCD, 0xE6, 0x1D, 0x60, 0xA1, 0xB4, | ||
856 | 0xAA, 0x8F, 0xBA, 0x75, 0xC3, 0x01, 0x0B, 0x3B, 0x51, 0xDB, 0xEC, 0x62, | ||
857 | 0xE1, 0x38, 0xCD, 0x40, 0x3B, 0xD3, 0xD2, 0x26, 0x94, 0x29, 0xD2, 0x61, | ||
858 | 0x21, 0x6B, 0x4A, 0x8D, 0x24, 0xB5, 0xBB, 0x21, 0x12, 0xA5, 0x99, 0xA5, | ||
859 | 0x1A, 0xCA, 0xA1, 0xEF, 0x5D, 0xAA, 0xAE, 0xD3, 0x64, 0xE1, 0xA3, 0x6B, | ||
860 | 0xAE, 0x35, 0x39, 0xD2, 0x66, 0x73, 0xB6, 0x90, 0xC6, 0xC1, 0x32, 0xD1, | ||
861 | 0xBA, 0xC9, 0x25, 0x65, 0x81, 0xA8, 0xD2, 0xB1, 0xE7, 0x18, 0xBE, 0xC0, | ||
862 | 0xFC, 0xE4, 0x85, 0xB5, 0x06, 0xB4, 0x81, 0x35, 0x46, 0xB6, 0xC8, 0x9B | ||
863 | }; | ||
864 | |||
865 | #endif /* GSM_DEC_DATA_H */ | ||
diff --git a/baseline/source/gsm_dec/gsm.h b/baseline/source/gsm_dec/gsm.h new file mode 100644 index 0000000..1d89577 --- /dev/null +++ b/baseline/source/gsm_dec/gsm.h | |||
@@ -0,0 +1,14 @@ | |||
1 | #ifndef GSM_DEC_GSM_H | ||
2 | #define GSM_DEC_GSM_H | ||
3 | |||
4 | /* | ||
5 | Interface | ||
6 | */ | ||
7 | typedef struct gsm_state *gsm; | ||
8 | typedef short gsm_signal; /* signed 16 bit */ | ||
9 | typedef unsigned char gsm_byte; | ||
10 | typedef gsm_byte gsm_frame[33]; /* 33 * 8 bits */ | ||
11 | |||
12 | #define GSM_MAGIC 0xD /* 13 kbit/s RPE-LTP */ | ||
13 | |||
14 | #endif /* GSM_DEC_GSM_H */ | ||
diff --git a/baseline/source/gsm_dec/gsm_dec.c b/baseline/source/gsm_dec/gsm_dec.c new file mode 100644 index 0000000..7a0a1bd --- /dev/null +++ b/baseline/source/gsm_dec/gsm_dec.c | |||
@@ -0,0 +1,764 @@ | |||
1 | /* | ||
2 | |||
3 | This program is part of the TACLeBench benchmark suite. | ||
4 | Version V 2.0 | ||
5 | |||
6 | Name: gsm_dec | ||
7 | |||
8 | Author: Jutta Degener and Carsten Bormann, | ||
9 | Technische Universitaet Berlin | ||
10 | |||
11 | Function: Decoding of GSM data | ||
12 | |||
13 | Source: included in MediaBench/gsm | ||
14 | |||
15 | Original name: gsm_decode | ||
16 | |||
17 | Changes: no major functional changes | ||
18 | |||
19 | License: see the accompanying COPYRIGHT file | ||
20 | |||
21 | */ | ||
22 | |||
23 | |||
24 | #include "../extra.h" | ||
25 | #include "gsm.h" | ||
26 | #include "add.h" | ||
27 | #include "data.h" | ||
28 | #include "private.h" | ||
29 | |||
30 | #define SAMPLES 20 | ||
31 | |||
32 | /* | ||
33 | Forward declaration of global variables | ||
34 | */ | ||
35 | |||
36 | struct gsm_state gsm_dec_state; | ||
37 | gsm gsm_dec_state_ptr; | ||
38 | volatile int gsm_dec_result; | ||
39 | |||
40 | /* | ||
41 | Forward declaration of functions | ||
42 | */ | ||
43 | |||
44 | extern word gsm_dec_sub( word a, word b ); | ||
45 | extern word gsm_dec_asl( word a, int n ); | ||
46 | void gsm_dec_Decoding_of_the_coded_Log_Area_Ratios( | ||
47 | word *LARc, /* coded log area ratio [0..7] IN */ | ||
48 | word *LARpp ); /* out: decoded .. */ | ||
49 | |||
50 | void gsm_dec_Coefficients_0_12( word *LARpp_j_1, word *LARpp_j, word *LARp ); | ||
51 | |||
52 | void gsm_dec_LARp_to_rp( word *LARp ); /* [0..7] IN/OUT */ | ||
53 | |||
54 | extern int gsm_dec_decode( gsm, gsm_byte *, gsm_signal * ); | ||
55 | |||
56 | extern void gsm_dec_Decoder( struct gsm_state *S, | ||
57 | word *LARcr, /* [0..7] IN */ | ||
58 | word *Ncr, /* [0..3] IN */ | ||
59 | word *bcr, /* [0..3] IN */ | ||
60 | word *Mcr, /* [0..3] IN */ | ||
61 | word *xmaxcr, /* [0..3] IN */ | ||
62 | word *xMcr, /* [0..13*4] IN */ | ||
63 | word *s ); /* [0..159] OUT */ | ||
64 | |||
65 | extern void gsm_dec_Long_Term_Synthesis_Filtering( | ||
66 | struct gsm_state *S, word Ncr, word bcr, | ||
67 | word *erp, /* [0..39] IN */ | ||
68 | word *drp ); /* [-120..-1] IN, [0..40] OUT */ | ||
69 | |||
70 | void gsm_dec_RPE_Decoding( word xmaxcr, word Mcr, | ||
71 | word *xMcr, /* [0..12], 3 bits IN */ | ||
72 | word *erp ); /* [0..39] OUT */ | ||
73 | |||
74 | void gsm_dec_RPE_grid_positioning( word Mc, /* grid position IN */ | ||
75 | word *xMp, /* [0..12] IN */ | ||
76 | word *ep /* [0..39] OUT */ | ||
77 | ); | ||
78 | |||
79 | void gsm_dec_APCM_inverse_quantization( word *xMc, /* [0..12] IN */ | ||
80 | word mant, word exp, | ||
81 | word *xMp ); /* [0..12] OUT */ | ||
82 | |||
83 | extern word gsm_dec_asr( word a, int n ); | ||
84 | |||
85 | void gsm_dec_APCM_quantization_xmaxc_to_exp_mant( | ||
86 | word xmaxc, /* IN */ | ||
87 | word *exp_out, /* OUT */ | ||
88 | word *mant_out ); /* OUT */ | ||
89 | |||
90 | void gsm_dec_Postprocessing( struct gsm_state *S, word *s ); | ||
91 | |||
92 | void gsm_dec_Coefficients_13_26( word *LARpp_j_1, word *LARpp_j, | ||
93 | word *LARp ); | ||
94 | |||
95 | void gsm_dec_Coefficients_40_159( word *LARpp_j, word *LARp ); | ||
96 | |||
97 | void gsm_dec_Short_term_synthesis_filtering( struct gsm_state *S, | ||
98 | word *rrp, /* [0..7] IN */ | ||
99 | int k, /* k_end - k_start */ | ||
100 | word *wt, /* [0..k-1] IN */ | ||
101 | word *sr /* [0..k-1] OUT */ | ||
102 | ); | ||
103 | |||
104 | void gsm_dec_Short_Term_Synthesis_Filter( | ||
105 | struct gsm_state *S, word *LARcr, /* received log area ratios [0..7] IN */ | ||
106 | word *wt, /* received d [0..159] IN */ | ||
107 | word *s /* signal s [0..159] OUT */ | ||
108 | ); | ||
109 | |||
110 | void gsm_dec_Coefficients_27_39( word *LARpp_j_1, word *LARpp_j, word *LARp ); | ||
111 | |||
112 | gsm gsm_dec_create( void ); | ||
113 | void gsm_dec_init( void ); | ||
114 | void gsm_dec_main( void ); | ||
115 | //int main( void ); | ||
116 | |||
117 | /* add.c */ | ||
118 | |||
119 | word gsm_dec_sub( word a, word b ) | ||
120 | { | ||
121 | longword diff = ( longword )a - ( longword )b; | ||
122 | return saturate( diff ); | ||
123 | } | ||
124 | |||
125 | word gsm_dec_asl( word a, int n ) | ||
126 | { | ||
127 | if ( n >= 16 ) | ||
128 | return 0; | ||
129 | if ( n <= -16 ) | ||
130 | return -( a < 0 ); | ||
131 | if ( n < 0 ) | ||
132 | return gsm_dec_asr( a, -n ); | ||
133 | return a << n; | ||
134 | } | ||
135 | |||
136 | /* short_term.c */ | ||
137 | /* | ||
138 | SHORT TERM ANALYSIS FILTERING SECTION | ||
139 | */ | ||
140 | |||
141 | /* 4.2.8 */ | ||
142 | |||
143 | void gsm_dec_Decoding_of_the_coded_Log_Area_Ratios( | ||
144 | word *LARc, /* coded log area ratio [0..7] IN */ | ||
145 | word *LARpp ) /* out: decoded .. */ | ||
146 | { | ||
147 | word temp1 /* for STEP */; | ||
148 | long ltmp; /* for GSM_ADD */ | ||
149 | |||
150 | /* This procedure requires for efficient implementation | ||
151 | two tables. | ||
152 | |||
153 | INVA[1..8] = integer( (32768 * 8) / real_A[1..8]) | ||
154 | MIC[1..8] = minimum value of the LARc[1..8] | ||
155 | */ | ||
156 | |||
157 | /* Compute the LARpp[1..8] | ||
158 | */ | ||
159 | |||
160 | /* for (i = 1; i <= 8; i++, B++, MIC++, INVA++, LARc++, LARpp++) { | ||
161 | |||
162 | temp1 = GSM_ADD( *LARc, *MIC ) << 10; | ||
163 | temp2 = *B << 1; | ||
164 | temp1 = GSM_SUB( temp1, temp2 ); | ||
165 | |||
166 | temp1 = GSM_MULT_R( *INVA, temp1 ); | ||
167 | LARpp = GSM_ADD( temp1, temp1 ); | ||
168 | } | ||
169 | */ | ||
170 | |||
171 | #undef STEP | ||
172 | #define STEP(B, MIC, INVA) \ | ||
173 | temp1 = GSM_ADD(*LARc++, MIC) << 10; \ | ||
174 | temp1 = GSM_SUB(temp1, B << 1); \ | ||
175 | temp1 = GSM_MULT_R(INVA, temp1); \ | ||
176 | *LARpp++ = GSM_ADD(temp1, temp1); | ||
177 | |||
178 | STEP( 0, -32, 13107 ); | ||
179 | STEP( 0, -32, 13107 ); | ||
180 | STEP( 2048, -16, 13107 ); | ||
181 | STEP( 2560, -16, 13107 ); | ||
182 | |||
183 | STEP( 94, -8, 19223 ); | ||
184 | STEP( 1792, -8, 17476 ); | ||
185 | STEP( 341, -4, 31454 ); | ||
186 | STEP( 1144, -4, 29708 ); | ||
187 | |||
188 | /* NOTE: the addition of *MIC is used to restore the sign of *LARc. | ||
189 | */ | ||
190 | } | ||
191 | |||
192 | /* 4.2.9 */ | ||
193 | /* Computation of the quantized reflection coefficients | ||
194 | */ | ||
195 | |||
196 | /* 4.2.9.1 Interpolation of the LARpp[1..8] to get the LARp[1..8] | ||
197 | */ | ||
198 | |||
199 | /* | ||
200 | Within each frame of 160 analyzed speech samples the short term | ||
201 | analysis and synthesis filters operate with four different sets of | ||
202 | coefficients, derived from the previous set of decoded LARs(LARpp(j-1)) | ||
203 | and the actual set of decoded LARs (LARpp(j)) | ||
204 | |||
205 | (Initial value: LARpp(j-1)[1..8] = 0.) | ||
206 | */ | ||
207 | |||
208 | |||
209 | void gsm_dec_Coefficients_0_12( word *LARpp_j_1, word *LARpp_j, word *LARp ) | ||
210 | { | ||
211 | int i; | ||
212 | longword ltmp; | ||
213 | |||
214 | _Pragma( "loopbound min 8 max 8" ) | ||
215 | for ( i = 1; i <= 8; i++, LARp++, LARpp_j_1++, LARpp_j++ ) { | ||
216 | *LARp = GSM_ADD( SASR( *LARpp_j_1, 2 ), SASR( *LARpp_j, 2 ) ); | ||
217 | *LARp = GSM_ADD( *LARp, SASR( *LARpp_j_1, 1 ) ); | ||
218 | } | ||
219 | } | ||
220 | |||
221 | /* 4.2.9.2 */ | ||
222 | |||
223 | void gsm_dec_LARp_to_rp( word *LARp ) /* [0..7] IN/OUT */ | ||
224 | /* | ||
225 | The input of this procedure is the interpolated LARp[0..7] array. | ||
226 | The reflection coefficients, rp[i], are used in the analysis | ||
227 | filter and in the synthesis filter. | ||
228 | */ | ||
229 | { | ||
230 | int i; | ||
231 | word temp; | ||
232 | longword ltmp; | ||
233 | |||
234 | _Pragma( "loopbound min 8 max 8" ) | ||
235 | for ( i = 1; i <= 8; i++, LARp++ ) { | ||
236 | |||
237 | /* temp = GSM_ABS( *LARp ); | ||
238 | |||
239 | if (temp < 11059) temp <<= 1; | ||
240 | else if (temp < 20070) temp += 11059; | ||
241 | else temp = GSM_ADD( temp >> 2, 26112 ); | ||
242 | |||
243 | * *LARp = *LARp < 0 ? -temp : temp; | ||
244 | */ | ||
245 | |||
246 | if ( *LARp < 0 ) { | ||
247 | temp = *LARp == MIN_WORD ? MAX_WORD : -( *LARp ); | ||
248 | *LARp = -( ( temp < 11059 ) ? temp << 1 | ||
249 | : ( ( temp < 20070 ) ? temp + 11059 | ||
250 | : GSM_ADD( temp >> 2, 26112 ) ) ); | ||
251 | } else { | ||
252 | temp = *LARp; | ||
253 | *LARp = ( temp < 11059 ) | ||
254 | ? temp << 1 | ||
255 | : ( ( temp < 20070 ) ? temp + 11059 : GSM_ADD( temp >> 2, 26112 ) ); | ||
256 | } | ||
257 | } | ||
258 | } | ||
259 | |||
260 | void gsm_dec_Decoder( struct gsm_state *S, | ||
261 | word *LARcr, /* [0..7] IN */ | ||
262 | word *Ncr, /* [0..3] IN */ | ||
263 | word *bcr, /* [0..3] IN */ | ||
264 | word *Mcr, /* [0..3] IN */ | ||
265 | word *xmaxcr, /* [0..3] IN */ | ||
266 | word *xMcr, /* [0..13*4] IN */ | ||
267 | word *s ) /* [0..159] OUT */ | ||
268 | { | ||
269 | int j, k; | ||
270 | word erp[40], wt[160]; | ||
271 | word *drp = S->dp0 + 120; | ||
272 | |||
273 | _Pragma( "loopbound min 4 max 4" ) | ||
274 | for ( j = 0; j <= 3; j++, xmaxcr++, bcr++, Ncr++, Mcr++, xMcr += 13 ) { | ||
275 | |||
276 | gsm_dec_RPE_Decoding( *xmaxcr, *Mcr, xMcr, erp ); | ||
277 | gsm_dec_Long_Term_Synthesis_Filtering( S, *Ncr, *bcr, erp, drp ); | ||
278 | |||
279 | _Pragma( "loopbound min 40 max 40" ) | ||
280 | for ( k = 0; k <= 39; k++ ) | ||
281 | wt[j * 40 + k] = drp[k]; | ||
282 | } | ||
283 | |||
284 | gsm_dec_Short_Term_Synthesis_Filter( S, LARcr, wt, s ); | ||
285 | gsm_dec_Postprocessing( S, s ); | ||
286 | } | ||
287 | |||
288 | /* 4.3.2 */ | ||
289 | void gsm_dec_Long_Term_Synthesis_Filtering( | ||
290 | struct gsm_state *S, | ||
291 | word Ncr, word bcr, word *erp, /* [0..39] IN */ | ||
292 | word *drp /* [-120..-1] IN, [0..40] OUT */ | ||
293 | ) | ||
294 | /* | ||
295 | This procedure uses the bcr and Ncr parameter to realize the | ||
296 | long term synthesis filtering. The decoding of bcr needs | ||
297 | table 4.3b. | ||
298 | */ | ||
299 | { | ||
300 | longword ltmp; /* for ADD */ | ||
301 | int k; | ||
302 | word brp, drpp, Nr; | ||
303 | |||
304 | /* Check the limits of Nr. | ||
305 | */ | ||
306 | Nr = Ncr < 40 || Ncr > 120 ? S->nrp : Ncr; | ||
307 | S->nrp = Nr; | ||
308 | |||
309 | /* Decoding of the LTP gain bcr | ||
310 | */ | ||
311 | brp = gsm_dec_QLB[bcr]; | ||
312 | |||
313 | /* Computation of the reconstructed short term residual | ||
314 | signal drp[0..39] | ||
315 | */ | ||
316 | |||
317 | _Pragma( "loopbound min 40 max 40" ) | ||
318 | for ( k = 0; k <= 39; k++ ) { | ||
319 | drpp = GSM_MULT_R( brp, drp[k - Nr] ); | ||
320 | drp[k] = GSM_ADD( erp[k], drpp ); | ||
321 | } | ||
322 | |||
323 | /* | ||
324 | Update of the reconstructed short term residual signal | ||
325 | drp[ -1..-120 ] | ||
326 | */ | ||
327 | |||
328 | _Pragma( "loopbound min 120 max 120" ) | ||
329 | for ( k = 0; k <= 119; k++ ) | ||
330 | drp[-120 + k] = drp[-80 + k]; | ||
331 | } | ||
332 | |||
333 | void gsm_dec_RPE_Decoding( word xmaxcr, word Mcr, | ||
334 | word *xMcr, /* [0..12], 3 bits IN */ | ||
335 | word *erp ) /* [0..39] OUT */ | ||
336 | { | ||
337 | word exp, mant; | ||
338 | word xMp[13]; | ||
339 | |||
340 | gsm_dec_APCM_quantization_xmaxc_to_exp_mant( xmaxcr, &exp, &mant ); | ||
341 | gsm_dec_APCM_inverse_quantization( xMcr, mant, exp, xMp ); | ||
342 | gsm_dec_RPE_grid_positioning( Mcr, xMp, erp ); | ||
343 | } | ||
344 | |||
345 | /* 4.2.17 */ | ||
346 | void gsm_dec_RPE_grid_positioning( | ||
347 | word Mc, /* grid position IN */ | ||
348 | word *xMp, /* [0..12] IN */ | ||
349 | word *ep /* [0..39] OUT */ ) | ||
350 | /* | ||
351 | This procedure computes the reconstructed long term residual signal | ||
352 | ep[0..39] for the LTP analysis filter. The inputs are the Mc | ||
353 | which is the grid position selection and the xMp[0..12] decoded | ||
354 | RPE samples which are upsampled by a factor of 3 by inserting zero | ||
355 | values. | ||
356 | */ | ||
357 | { | ||
358 | int i = 13; | ||
359 | |||
360 | /* Rewritten Duff's device for WCET analysis! */ | ||
361 | switch ( Mc ) { | ||
362 | case 3: | ||
363 | *ep++ = 0; | ||
364 | case 2: | ||
365 | *ep++ = 0; | ||
366 | case 1: | ||
367 | *ep++ = 0; | ||
368 | case 0: | ||
369 | *ep++ = *xMp++; | ||
370 | i--; | ||
371 | } | ||
372 | |||
373 | _Pragma( "loopbound min 12 max 12" ) | ||
374 | do { | ||
375 | *ep++ = 0; | ||
376 | *ep++ = 0; | ||
377 | *ep++ = *xMp++; | ||
378 | } while ( --i ); | ||
379 | |||
380 | _Pragma( "loopbound min 0 max 2" ) | ||
381 | while ( ++Mc < 4 ) | ||
382 | *ep++ = 0; | ||
383 | |||
384 | } | ||
385 | |||
386 | /* 4.2.16 */ | ||
387 | void gsm_dec_APCM_inverse_quantization( word *xMc, /* [0..12] IN */ | ||
388 | word mant, | ||
389 | word exp, | ||
390 | word *xMp ) /* [0..12] OUT */ | ||
391 | /* | ||
392 | This part is for decoding the RPE sequence of coded xMc[0..12] | ||
393 | samples to obtain the xMp[0..12] array. Table 4.6 is used to get | ||
394 | the mantissa of xmaxc (FAC[0..7]). | ||
395 | */ | ||
396 | { | ||
397 | int i; | ||
398 | word temp, temp1, temp2, temp3; | ||
399 | longword ltmp; | ||
400 | |||
401 | temp1 = gsm_dec_FAC[mant]; /* see 4.2-15 for mant */ | ||
402 | temp2 = gsm_dec_sub( 6, exp ); /* see 4.2-15 for exp */ | ||
403 | temp3 = gsm_dec_asl( 1, gsm_dec_sub( temp2, 1 ) ); | ||
404 | |||
405 | _Pragma( "loopbound min 13 max 13" ) | ||
406 | for ( i = 13; i--; ) { | ||
407 | |||
408 | /* temp = gsm_sub( *xMc++ << 1, 7 ); */ | ||
409 | temp = ( *xMc++ << 1 ) - 7; /* restore sign */ | ||
410 | |||
411 | temp <<= 12; /* 16 bit signed */ | ||
412 | temp = GSM_MULT_R( temp1, temp ); | ||
413 | temp = GSM_ADD( temp, temp3 ); | ||
414 | *xMp++ = gsm_dec_asr( temp, temp2 ); | ||
415 | } | ||
416 | } | ||
417 | |||
418 | /* | ||
419 | 4.2.4 .. 4.2.7 LPC ANALYSIS SECTION | ||
420 | */ | ||
421 | word gsm_dec_asr( word a, int n ) | ||
422 | { | ||
423 | if ( n >= 16 ) | ||
424 | return -( a < 0 ); | ||
425 | if ( n <= -16 ) | ||
426 | return 0; | ||
427 | if ( n < 0 ) | ||
428 | return a << -n; | ||
429 | |||
430 | return a >> n; | ||
431 | } | ||
432 | |||
433 | /* rpe.c */ | ||
434 | /* 4.12.15 */ | ||
435 | void gsm_dec_APCM_quantization_xmaxc_to_exp_mant( word xmaxc, /* IN */ | ||
436 | word *exp_out, /* OUT */ | ||
437 | word *mant_out ) /* OUT */ | ||
438 | { | ||
439 | word exp, mant; | ||
440 | |||
441 | /* Compute exponent and mantissa of the decoded version of xmaxc | ||
442 | */ | ||
443 | exp = 0; | ||
444 | if ( xmaxc > 15 ) | ||
445 | exp = SASR( xmaxc, 3 ) - 1; | ||
446 | mant = xmaxc - ( exp << 3 ); | ||
447 | |||
448 | if ( mant == 0 ) { | ||
449 | exp = -4; | ||
450 | mant = 7; | ||
451 | } else { | ||
452 | _Pragma( "loopbound min 0 max 3" ) | ||
453 | while ( mant <= 7 ) { | ||
454 | mant = mant << 1 | 1; | ||
455 | exp--; | ||
456 | } | ||
457 | mant -= 8; | ||
458 | } | ||
459 | |||
460 | *exp_out = exp; | ||
461 | *mant_out = mant; | ||
462 | } | ||
463 | |||
464 | /* decode.c */ | ||
465 | /* | ||
466 | 4.3 FIXED POINT IMPLEMENTATION OF THE RPE-LTP DECODER | ||
467 | */ | ||
468 | void gsm_dec_Postprocessing( struct gsm_state *S, word *s ) | ||
469 | { | ||
470 | int k; | ||
471 | word msr = S->msr; | ||
472 | longword ltmp; /* for GSM_ADD */ | ||
473 | word tmp; | ||
474 | |||
475 | _Pragma( "loopbound min 159 max 159" ) | ||
476 | for ( k = 160; --k; ++s ) { | ||
477 | tmp = GSM_MULT_R( msr, 28180 ); | ||
478 | msr = GSM_ADD( *s, tmp ); /* Deemphasis */ | ||
479 | *s = GSM_ADD( msr, msr ) & 0xFFF8; /* Truncation & Upscaling */ | ||
480 | } | ||
481 | S->msr = msr; | ||
482 | } | ||
483 | |||
484 | void gsm_dec_Coefficients_13_26( word *LARpp_j_1, word *LARpp_j, word *LARp ) | ||
485 | { | ||
486 | int i; | ||
487 | longword ltmp; | ||
488 | _Pragma( "loopbound min 8 max 8" ) | ||
489 | for ( i = 1; i <= 8; i++, LARpp_j_1++, LARpp_j++, LARp++ ) | ||
490 | *LARp = GSM_ADD( SASR( *LARpp_j_1, 1 ), SASR( *LARpp_j, 1 ) ); | ||
491 | } | ||
492 | |||
493 | void gsm_dec_Coefficients_40_159( word *LARpp_j, word *LARp ) | ||
494 | { | ||
495 | int i; | ||
496 | |||
497 | _Pragma( "loopbound min 8 max 8" ) | ||
498 | for ( i = 1; i <= 8; i++, LARp++, LARpp_j++ ) | ||
499 | *LARp = *LARpp_j; | ||
500 | } | ||
501 | |||
502 | void gsm_dec_Short_term_synthesis_filtering( struct gsm_state *S, | ||
503 | word *rrp, /* [0..7] IN */ | ||
504 | int k, /* k_end - k_start */ | ||
505 | word *wt, /* [0..k-1] IN */ | ||
506 | word *sr ) /* [0..k-1] OUT */ | ||
507 | { | ||
508 | word *v = S->v; | ||
509 | int i; | ||
510 | word sri, tmp1, tmp2; | ||
511 | longword ltmp; /* for GSM_ADD & GSM_SUB */ | ||
512 | |||
513 | _Pragma( "loopbound min 12 max 118" ) | ||
514 | while ( --k ) { | ||
515 | sri = *wt++; | ||
516 | _Pragma( "loopbound min 8 max 8" ) | ||
517 | for ( i = 8; i--; ) { | ||
518 | |||
519 | /* sri = GSM_SUB( sri, gsm_mult_r( rrp[i], v[i] ) ); | ||
520 | */ | ||
521 | tmp1 = rrp[i]; | ||
522 | tmp2 = v[i]; | ||
523 | tmp2 = | ||
524 | ( tmp1 == MIN_WORD && tmp2 == MIN_WORD | ||
525 | ? MAX_WORD | ||
526 | : 0x0FFFF & ( ( ( longword )tmp1 * ( longword )tmp2 + 16384 ) >> 15 ) ); | ||
527 | |||
528 | sri = GSM_SUB( sri, tmp2 ); | ||
529 | |||
530 | /* v[i+1] = GSM_ADD( v[i], gsm_mult_r( rrp[i], sri ) ); | ||
531 | */ | ||
532 | tmp1 = ( tmp1 == MIN_WORD && sri == MIN_WORD | ||
533 | ? MAX_WORD | ||
534 | : 0x0FFFF & ( ( ( longword )tmp1 * ( longword )sri + 16384 ) >> 15 ) ); | ||
535 | |||
536 | v[i + 1] = GSM_ADD( v[i], tmp1 ); | ||
537 | } | ||
538 | *sr++ = v[0] = sri; | ||
539 | } | ||
540 | } | ||
541 | |||
542 | void gsm_dec_Short_Term_Synthesis_Filter( | ||
543 | struct gsm_state *S, | ||
544 | word *LARcr, /* received log area ratios [0..7] IN */ | ||
545 | word *wt, /* received d [0..159] IN */ | ||
546 | word *s /* signal s [0..159] OUT */ | ||
547 | ) | ||
548 | { | ||
549 | word *LARpp_j = S->LARpp[S->j]; | ||
550 | word *LARpp_j_1 = S->LARpp[S->j ^= 1]; | ||
551 | |||
552 | word LARp[8]; | ||
553 | |||
554 | gsm_dec_Decoding_of_the_coded_Log_Area_Ratios( LARcr, LARpp_j ); | ||
555 | |||
556 | gsm_dec_Coefficients_0_12( LARpp_j_1, LARpp_j, LARp ); | ||
557 | gsm_dec_LARp_to_rp( LARp ); | ||
558 | gsm_dec_Short_term_synthesis_filtering( S, LARp, 13, wt, s ); | ||
559 | |||
560 | gsm_dec_Coefficients_13_26( LARpp_j_1, LARpp_j, LARp ); | ||
561 | gsm_dec_LARp_to_rp( LARp ); | ||
562 | gsm_dec_Short_term_synthesis_filtering( S, LARp, 14, wt + 13, s + 13 ); | ||
563 | |||
564 | gsm_dec_Coefficients_27_39( LARpp_j_1, LARpp_j, LARp ); | ||
565 | gsm_dec_LARp_to_rp( LARp ); | ||
566 | gsm_dec_Short_term_synthesis_filtering( S, LARp, 13, wt + 27, s + 27 ); | ||
567 | |||
568 | gsm_dec_Coefficients_40_159( LARpp_j, LARp ); | ||
569 | gsm_dec_LARp_to_rp( LARp ); | ||
570 | gsm_dec_Short_term_synthesis_filtering( S, LARp, 120, wt + 40, s + 40 ); | ||
571 | } | ||
572 | |||
573 | void gsm_dec_Coefficients_27_39( word *LARpp_j_1, word *LARpp_j, word *LARp ) | ||
574 | { | ||
575 | int i; | ||
576 | longword ltmp; | ||
577 | |||
578 | _Pragma( "loopbound min 8 max 8" ) | ||
579 | for ( i = 1; i <= 8; i++, LARpp_j_1++, LARpp_j++, LARp++ ) { | ||
580 | *LARp = GSM_ADD( SASR( *LARpp_j_1, 2 ), SASR( *LARpp_j, 2 ) ); | ||
581 | *LARp = GSM_ADD( *LARp, SASR( *LARpp_j, 1 ) ); | ||
582 | } | ||
583 | } | ||
584 | |||
585 | /* | ||
586 | Initialization- and return-value-related functions | ||
587 | */ | ||
588 | |||
589 | gsm gsm_dec_create( void ) | ||
590 | { | ||
591 | unsigned int i; | ||
592 | gsm r; | ||
593 | volatile char x = 0; | ||
594 | |||
595 | r = &gsm_dec_state; | ||
596 | |||
597 | _Pragma( "loopbound min 648 max 648" ) | ||
598 | for ( i = 0; i < sizeof( *r ); i++ ) | ||
599 | ( ( char * )r )[i] = 0 + x; | ||
600 | |||
601 | r->nrp = 40; | ||
602 | |||
603 | return r; | ||
604 | } | ||
605 | |||
606 | void gsm_dec_init( void ) | ||
607 | { | ||
608 | gsm_dec_state_ptr = gsm_dec_create(); | ||
609 | } | ||
610 | |||
611 | int gsm_dec_return( void ) | ||
612 | { | ||
613 | return gsm_dec_result; | ||
614 | } | ||
615 | |||
616 | /* | ||
617 | Main functions | ||
618 | */ | ||
619 | |||
620 | /* gsm_decode.c */ | ||
621 | int gsm_dec_decode( gsm s, gsm_byte *c, gsm_signal *target ) | ||
622 | { | ||
623 | word LARc[8], Nc[4], Mc[4], bc[4], xmaxc[4], xmc[13 * 4]; | ||
624 | |||
625 | /* GSM_MAGIC = (*c >> 4) & 0xF; */ | ||
626 | |||
627 | if ( ( ( *c >> 4 ) & 0x0F ) != GSM_MAGIC ) | ||
628 | return -1; | ||
629 | |||
630 | LARc[0] = ( *c++ & 0xF ) << 2; /* 1 */ | ||
631 | LARc[0] |= ( *c >> 6 ) & 0x3; | ||
632 | LARc[1] = *c++ & 0x3F; | ||
633 | LARc[2] = ( *c >> 3 ) & 0x1F; | ||
634 | LARc[3] = ( *c++ & 0x7 ) << 2; | ||
635 | LARc[3] |= ( *c >> 6 ) & 0x3; | ||
636 | LARc[4] = ( *c >> 2 ) & 0xF; | ||
637 | LARc[5] = ( *c++ & 0x3 ) << 2; | ||
638 | LARc[5] |= ( *c >> 6 ) & 0x3; | ||
639 | LARc[6] = ( *c >> 3 ) & 0x7; | ||
640 | LARc[7] = *c++ & 0x7; | ||
641 | Nc[0] = ( *c >> 1 ) & 0x7F; | ||
642 | bc[0] = ( *c++ & 0x1 ) << 1; | ||
643 | bc[0] |= ( *c >> 7 ) & 0x1; | ||
644 | Mc[0] = ( *c >> 5 ) & 0x3; | ||
645 | xmaxc[0] = ( *c++ & 0x1F ) << 1; | ||
646 | xmaxc[0] |= ( *c >> 7 ) & 0x1; | ||
647 | xmc[0] = ( *c >> 4 ) & 0x7; | ||
648 | xmc[1] = ( *c >> 1 ) & 0x7; | ||
649 | xmc[2] = ( *c++ & 0x1 ) << 2; | ||
650 | xmc[2] |= ( *c >> 6 ) & 0x3; | ||
651 | xmc[3] = ( *c >> 3 ) & 0x7; | ||
652 | xmc[4] = *c++ & 0x7; | ||
653 | xmc[5] = ( *c >> 5 ) & 0x7; | ||
654 | xmc[6] = ( *c >> 2 ) & 0x7; | ||
655 | xmc[7] = ( *c++ & 0x3 ) << 1; /* 10 */ | ||
656 | xmc[7] |= ( *c >> 7 ) & 0x1; | ||
657 | xmc[8] = ( *c >> 4 ) & 0x7; | ||
658 | xmc[9] = ( *c >> 1 ) & 0x7; | ||
659 | xmc[10] = ( *c++ & 0x1 ) << 2; | ||
660 | xmc[10] |= ( *c >> 6 ) & 0x3; | ||
661 | xmc[11] = ( *c >> 3 ) & 0x7; | ||
662 | xmc[12] = *c++ & 0x7; | ||
663 | Nc[1] = ( *c >> 1 ) & 0x7F; | ||
664 | bc[1] = ( *c++ & 0x1 ) << 1; | ||
665 | bc[1] |= ( *c >> 7 ) & 0x1; | ||
666 | Mc[1] = ( *c >> 5 ) & 0x3; | ||
667 | xmaxc[1] = ( *c++ & 0x1F ) << 1; | ||
668 | xmaxc[1] |= ( *c >> 7 ) & 0x1; | ||
669 | xmc[13] = ( *c >> 4 ) & 0x7; | ||
670 | xmc[14] = ( *c >> 1 ) & 0x7; | ||
671 | xmc[15] = ( *c++ & 0x1 ) << 2; | ||
672 | xmc[15] |= ( *c >> 6 ) & 0x3; | ||
673 | xmc[16] = ( *c >> 3 ) & 0x7; | ||
674 | xmc[17] = *c++ & 0x7; | ||
675 | xmc[18] = ( *c >> 5 ) & 0x7; | ||
676 | xmc[19] = ( *c >> 2 ) & 0x7; | ||
677 | xmc[20] = ( *c++ & 0x3 ) << 1; | ||
678 | xmc[20] |= ( *c >> 7 ) & 0x1; | ||
679 | xmc[21] = ( *c >> 4 ) & 0x7; | ||
680 | xmc[22] = ( *c >> 1 ) & 0x7; | ||
681 | xmc[23] = ( *c++ & 0x1 ) << 2; | ||
682 | xmc[23] |= ( *c >> 6 ) & 0x3; | ||
683 | xmc[24] = ( *c >> 3 ) & 0x7; | ||
684 | xmc[25] = *c++ & 0x7; | ||
685 | Nc[2] = ( *c >> 1 ) & 0x7F; | ||
686 | bc[2] = ( *c++ & 0x1 ) << 1; /* 20 */ | ||
687 | bc[2] |= ( *c >> 7 ) & 0x1; | ||
688 | Mc[2] = ( *c >> 5 ) & 0x3; | ||
689 | xmaxc[2] = ( *c++ & 0x1F ) << 1; | ||
690 | xmaxc[2] |= ( *c >> 7 ) & 0x1; | ||
691 | xmc[26] = ( *c >> 4 ) & 0x7; | ||
692 | xmc[27] = ( *c >> 1 ) & 0x7; | ||
693 | xmc[28] = ( *c++ & 0x1 ) << 2; | ||
694 | xmc[28] |= ( *c >> 6 ) & 0x3; | ||
695 | xmc[29] = ( *c >> 3 ) & 0x7; | ||
696 | xmc[30] = *c++ & 0x7; | ||
697 | xmc[31] = ( *c >> 5 ) & 0x7; | ||
698 | xmc[32] = ( *c >> 2 ) & 0x7; | ||
699 | xmc[33] = ( *c++ & 0x3 ) << 1; | ||
700 | xmc[33] |= ( *c >> 7 ) & 0x1; | ||
701 | xmc[34] = ( *c >> 4 ) & 0x7; | ||
702 | xmc[35] = ( *c >> 1 ) & 0x7; | ||
703 | xmc[36] = ( *c++ & 0x1 ) << 2; | ||
704 | xmc[36] |= ( *c >> 6 ) & 0x3; | ||
705 | xmc[37] = ( *c >> 3 ) & 0x7; | ||
706 | xmc[38] = *c++ & 0x7; | ||
707 | Nc[3] = ( *c >> 1 ) & 0x7F; | ||
708 | bc[3] = ( *c++ & 0x1 ) << 1; | ||
709 | bc[3] |= ( *c >> 7 ) & 0x1; | ||
710 | Mc[3] = ( *c >> 5 ) & 0x3; | ||
711 | xmaxc[3] = ( *c++ & 0x1F ) << 1; | ||
712 | xmaxc[3] |= ( *c >> 7 ) & 0x1; | ||
713 | xmc[39] = ( *c >> 4 ) & 0x7; | ||
714 | xmc[40] = ( *c >> 1 ) & 0x7; | ||
715 | xmc[41] = ( *c++ & 0x1 ) << 2; | ||
716 | xmc[41] |= ( *c >> 6 ) & 0x3; | ||
717 | xmc[42] = ( *c >> 3 ) & 0x7; | ||
718 | xmc[43] = *c++ & 0x7; /* 30 */ | ||
719 | xmc[44] = ( *c >> 5 ) & 0x7; | ||
720 | xmc[45] = ( *c >> 2 ) & 0x7; | ||
721 | xmc[46] = ( *c++ & 0x3 ) << 1; | ||
722 | xmc[46] |= ( *c >> 7 ) & 0x1; | ||
723 | xmc[47] = ( *c >> 4 ) & 0x7; | ||
724 | xmc[48] = ( *c >> 1 ) & 0x7; | ||
725 | xmc[49] = ( *c++ & 0x1 ) << 2; | ||
726 | xmc[49] |= ( *c >> 6 ) & 0x3; | ||
727 | xmc[50] = ( *c >> 3 ) & 0x7; | ||
728 | xmc[51] = *c & 0x7; /* 33 */ | ||
729 | |||
730 | gsm_dec_Decoder( s, LARc, Nc, bc, Mc, xmaxc, xmc, target ); | ||
731 | |||
732 | return 0; | ||
733 | } | ||
734 | |||
735 | void _Pragma( "entrypoint" ) gsm_dec_main( void ) | ||
736 | { | ||
737 | gsm r; | ||
738 | unsigned i; | ||
739 | gsm_dec_result = 0; | ||
740 | |||
741 | r = gsm_dec_state_ptr; | ||
742 | |||
743 | _Pragma( "loopbound min 1 max 1" ) | ||
744 | for ( i = 0; i < SAMPLES; i++ ) { | ||
745 | if ( gsm_dec_decode( r, gsm_dec_gsmdata + i * sizeof( gsm_frame ), | ||
746 | gsm_dec_pcmdata + i * 160 ) ) { | ||
747 | gsm_dec_result = 1; | ||
748 | return; | ||
749 | } | ||
750 | } | ||
751 | } | ||
752 | |||
753 | int main( int argc, char **argv) | ||
754 | { | ||
755 | SET_UP | ||
756 | for (jobsComplete=-1; jobsComplete<maxJobs; jobsComplete++){ | ||
757 | START_LOOP | ||
758 | gsm_dec_init(); | ||
759 | gsm_dec_main(); | ||
760 | STOP_LOOP | ||
761 | } | ||
762 | WRITE_TO_FILE | ||
763 | return ( gsm_dec_return() ); | ||
764 | } | ||
diff --git a/baseline/source/gsm_dec/private.h b/baseline/source/gsm_dec/private.h new file mode 100644 index 0000000..80b5c83 --- /dev/null +++ b/baseline/source/gsm_dec/private.h | |||
@@ -0,0 +1,44 @@ | |||
1 | #ifndef GSM_DEC_PRIVATE_H | ||
2 | #define GSM_DEC_PRIVATE_H | ||
3 | |||
4 | typedef short word; /* 16 bit signed int */ | ||
5 | typedef long longword; /* 32 bit signed int */ | ||
6 | |||
7 | typedef unsigned short uword; /* unsigned word */ | ||
8 | typedef unsigned long ulongword; /* unsigned longword */ | ||
9 | |||
10 | /* Table 4.6 Normalized direct mantissa used to compute xM/xmax | ||
11 | */ | ||
12 | /* i 0 1 2 3 4 5 6 7 */ | ||
13 | word gsm_dec_FAC[8] = { | ||
14 | 18431, 20479, 22527, 24575, 26623, 28671, 30719, 32767 }; | ||
15 | |||
16 | struct gsm_state { | ||
17 | word dp0[ 280 ]; | ||
18 | word z1; /* preprocessing.c, Offset_com. */ | ||
19 | longword L_z2; /* Offset_com. */ | ||
20 | int mp; /* Preemphasis */ | ||
21 | word u[8]; /* short_term_aly_filter.c */ | ||
22 | word LARpp[2][8]; /* */ | ||
23 | word j; /* */ | ||
24 | word nrp; /* 40 */ /* long_term.c, synthesis */ | ||
25 | word v[9]; /* short_term.c, synthesis */ | ||
26 | word msr; /* decoder.c, Postprocessing */ | ||
27 | }; | ||
28 | |||
29 | |||
30 | #define MIN_WORD ((-32767)-1) | ||
31 | #define MAX_WORD ( 32767) | ||
32 | |||
33 | #define MIN_LONGWORD ((-2147483647)-1) | ||
34 | #define MAX_LONGWORD ( 2147483647) | ||
35 | |||
36 | /* >> is a signed arithmetic shift right */ | ||
37 | #define SASR(x, by) ((x) >> (by)) | ||
38 | |||
39 | /* Table 4.3b Quantization levels of the LTP gain quantizer | ||
40 | */ | ||
41 | /* bc 0 1 2 3 */ | ||
42 | word gsm_dec_QLB[4] = { 3277, 11469, 21299, 32767 }; | ||
43 | |||
44 | #endif /* GSM_DEC_PRIVATE_H */ | ||