From 386b7d3366f1359a265da207a9cafa3edf553b64 Mon Sep 17 00:00:00 2001 From: Joshua Bakita Date: Mon, 7 Oct 2019 19:13:39 -0400 Subject: Reorganize and commit all the modified TACLeBench code and run scripts --- all_pairs/source/gsm_enc/COPYRIGHT | 16 + all_pairs/source/gsm_enc/ChangeLog.txt | 8 + all_pairs/source/gsm_enc/data.h | 452 +++++++ all_pairs/source/gsm_enc/gsm_enc.c | 2072 ++++++++++++++++++++++++++++++++ all_pairs/source/gsm_enc/private.h | 56 + 5 files changed, 2604 insertions(+) create mode 100644 all_pairs/source/gsm_enc/COPYRIGHT create mode 100644 all_pairs/source/gsm_enc/ChangeLog.txt create mode 100644 all_pairs/source/gsm_enc/data.h create mode 100644 all_pairs/source/gsm_enc/gsm_enc.c create mode 100644 all_pairs/source/gsm_enc/private.h (limited to 'all_pairs/source/gsm_enc') diff --git a/all_pairs/source/gsm_enc/COPYRIGHT b/all_pairs/source/gsm_enc/COPYRIGHT new file mode 100644 index 0000000..eba0e52 --- /dev/null +++ b/all_pairs/source/gsm_enc/COPYRIGHT @@ -0,0 +1,16 @@ +Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann, +Technische Universitaet Berlin + +Any use of this software is permitted provided that this notice is not +removed and that neither the authors nor the Technische Universitaet Berlin +are deemed to have made any representations as to the suitability of this +software for any purpose nor are held responsible for any defects of +this software. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + +As a matter of courtesy, the authors request to be informed about uses +this software has found, about bugs in this software, and about any +improvements that may be of general interest. + +Berlin, 28.11.1994 +Jutta Degener +Carsten Bormann diff --git a/all_pairs/source/gsm_enc/ChangeLog.txt b/all_pairs/source/gsm_enc/ChangeLog.txt new file mode 100644 index 0000000..4dbeeda --- /dev/null +++ b/all_pairs/source/gsm_enc/ChangeLog.txt @@ -0,0 +1,8 @@ +2017-06-28: +- Rename benchmark to gsm_enc. +- Add prefix 'gsm_enc_'. +- Introduce gsm_enc_init and gsm_enc_return functions. +- Rewrite negative shifts to avoid undefined behavior. +- Fix comparisons between signed and unsigned types. +- Remove unused variables and parameters. +- Fix memory corruption in gsm_enc_Short_term_analysis_filtering. diff --git a/all_pairs/source/gsm_enc/data.h b/all_pairs/source/gsm_enc/data.h new file mode 100644 index 0000000..e656335 --- /dev/null +++ b/all_pairs/source/gsm_enc/data.h @@ -0,0 +1,452 @@ +#ifndef DATA_H +#define DATA_H + +gsm_signal gsm_enc_pcmdata[] = { + (short)0x0000, (short)0x0000, (short)0x0010, (short)0x0010, (short)0x0010, (short)0x0020, (short)0x0020, (short)0x0018, + (short)0x0028, (short)0x0020, (short)0x0020, (short)0x0028, (short)0x0028, (short)0x0020, (short)0x0030, (short)0x0030, + (short)0x0028, (short)0x0010, (short)0x0008, (short)0x0000, (short)0x0050, (short)0x0060, (short)0x0058, (short)0x00D0, + (short)0x00E0, (short)0x00D0, (short)0x0118, (short)0x0128, (short)0x0118, (short)0x0128, (short)0x0110, (short)0x0100, + (short)0x00A0, (short)0x0058, (short)0x0048, (short)0x0058, (short)0x0060, (short)0x0058, (short)0x0050, (short)0x0048, + (short)0x0040, (short)0x0030, (short)0x0020, (short)0x0010, (short)0x0008, (short)0xFFF8, (short)0xFFE8, (short)0xFFE0, + (short)0xFFD8, (short)0xFFC8, (short)0xFFC0, (short)0xFFC0, (short)0xFF98, (short)0xFF78, (short)0xFF78, (short)0xFFC8, + (short)0x0000, (short)0x0010, (short)0x0040, (short)0x0060, (short)0x0068, (short)0x0078, (short)0x0078, (short)0x0070, + (short)0x00A8, (short)0x00C8, (short)0x00C8, (short)0x00E0, (short)0x00F0, (short)0x00E8, (short)0x00F8, (short)0x00F8, + (short)0x00F0, (short)0x00E0, (short)0x00C8, (short)0x00B8, (short)0x00E8, (short)0x0100, (short)0x00F8, (short)0x00E8, + (short)0x00D8, (short)0x00C0, (short)0x00A8, (short)0x0020, (short)0xFFC0, (short)0xFFA0, (short)0xFFA0, (short)0xFFA8, + (short)0xFFB0, (short)0xFFD0, (short)0xFFF8, (short)0x0000, (short)0x0020, (short)0x0030, (short)0x0030, (short)0x0030, + (short)0x0028, (short)0x0020, (short)0xFFF0, (short)0xFFD0, (short)0xFFC8, (short)0xFFC8, (short)0xFFD0, (short)0xFFD8, + (short)0xFFE8, (short)0xFFF8, (short)0xFFF8, (short)0x0008, (short)0x0018, (short)0x0018, (short)0x0078, (short)0x00B8, + (short)0x00C0, (short)0x0100, (short)0x0130, (short)0x0128, (short)0x0108, (short)0x00D8, (short)0x00C0, (short)0x0078, + (short)0x0038, (short)0x0020, (short)0x0020, (short)0x0000, (short)0xFFE0, (short)0xFFE0, (short)0xFFD8, (short)0xFFC8, + (short)0xFFC8, (short)0xFFA0, (short)0xFF88, (short)0xFF98, (short)0xFF80, (short)0xFF70, (short)0xFF80, (short)0xFF78, + (short)0xFF78, (short)0xFF90, (short)0xFF80, (short)0xFF78, (short)0xFF78, (short)0xFF50, (short)0xFF30, (short)0xFF50, + (short)0xFF38, (short)0xFF30, (short)0xFF40, (short)0xFF58, (short)0xFF70, (short)0xFF80, (short)0xFF50, (short)0xFF38, + (short)0xFF40, (short)0xFF18, (short)0xFF00, (short)0xFF08, (short)0xFF40, (short)0xFF68, (short)0xFF80, (short)0xFF88, + (short)0xFF88, (short)0xFF88, (short)0xFF88, (short)0xFFB8, (short)0xFFE0, (short)0xFFF0, (short)0xFFD0, (short)0xFFB8, + (short)0xFFB8, (short)0xFF90, (short)0xFF70, (short)0xFF70, (short)0xFF50, (short)0xFF40, (short)0xFF40, (short)0xFF58, + (short)0xFF70, (short)0xFF80, (short)0xFFC8, (short)0x0000, (short)0x0018, (short)0x0030, (short)0x0048, (short)0x0048, + (short)0x0028, (short)0x0008, (short)0xFFF8, (short)0xFFD8, (short)0xFFC8, (short)0xFFB8, (short)0xFF98, (short)0xFF78, + (short)0xFF70, (short)0xFFF0, (short)0x0058, (short)0x0088, (short)0x00B8, (short)0x00D0, (short)0x00D8, (short)0x00E8, + (short)0x0138, (short)0x0160, (short)0x0158, (short)0x0170, (short)0x0178, (short)0x0160, (short)0x0168, (short)0x0160, + (short)0x0140, (short)0x0118, (short)0x00F0, (short)0x00C8, (short)0x0098, (short)0x0078, (short)0x0060, (short)0x0018, + (short)0xFFC0, (short)0xFF90, (short)0xFF48, (short)0xFF00, (short)0xFEE8, (short)0xFEC8, (short)0xFEB8, (short)0xFEB8, + (short)0xFEA0, (short)0xFE88, (short)0xFE80, (short)0xFEB8, (short)0xFEF8, (short)0xFF38, (short)0xFFA0, (short)0xFFE8, + (short)0x0008, (short)0x0030, (short)0x0058, (short)0x0068, (short)0x0068, (short)0x0070, (short)0x0068, (short)0x0050, + (short)0x0040, (short)0x0040, (short)0x0020, (short)0x0000, (short)0xFFE8, (short)0xFFF0, (short)0xFFF8, (short)0xFFF8, + (short)0x0038, (short)0x0068, (short)0x0078, (short)0x0038, (short)0x0008, (short)0xFFF0, (short)0xFFE0, (short)0xFFD8, + (short)0xFFD8, (short)0xFFE0, (short)0xFFD0, (short)0xFFC8, (short)0x0000, (short)0x0030, (short)0x0048, (short)0x0068, + (short)0x0080, (short)0x0088, (short)0x0088, (short)0x0088, (short)0x0088, (short)0x0088, (short)0x0088, (short)0x0078, + (short)0x0098, (short)0x00B0, (short)0x00B8, (short)0x0098, (short)0x0070, (short)0x0058, (short)0x0060, (short)0x0078, + (short)0x00A8, (short)0x00B8, (short)0x00A8, (short)0x00A0, (short)0x0080, (short)0x0068, (short)0x0060, (short)0x0058, + (short)0x0048, (short)0x0030, (short)0x0038, (short)0x0038, (short)0x0030, (short)0x0050, (short)0x0058, (short)0x0060, + (short)0x0030, (short)0x0008, (short)0xFFF8, (short)0xFF90, (short)0xFF48, (short)0xFF28, (short)0xFF10, (short)0xFEF8, + (short)0xFEF0, (short)0xFED8, (short)0xFEB0, (short)0xFEB0, (short)0xFEA8, (short)0xFEB8, (short)0xFED8, (short)0xFEF8, + (short)0xFF10, (short)0xFF20, (short)0xFF40, (short)0xFF58, (short)0xFF80, (short)0xFFA0, (short)0xFFB8, (short)0xFFC8, + (short)0xFFD8, (short)0xFFE0, (short)0xFFF0, (short)0x0048, (short)0x0098, (short)0x00B0, (short)0x0068, (short)0x0018, + (short)0xFFF8, (short)0xFFE8, (short)0xFFF0, (short)0xFFF8, (short)0x0020, (short)0x0038, (short)0x0038, (short)0x0050, + (short)0x0068, (short)0x0070, (short)0x0068, (short)0x0060, (short)0x0060, (short)0x0038, (short)0x0020, (short)0x0018, + (short)0x0040, (short)0x0060, (short)0x0068, (short)0x0040, (short)0x0010, (short)0x0000, (short)0xFFB0, (short)0xFF78, + (short)0xFF70, (short)0xFF90, (short)0xFFA8, (short)0xFFC8, (short)0xFF98, (short)0xFF50, (short)0xFF50, (short)0xFF50, + (short)0xFF58, (short)0xFF68, (short)0xFF48, (short)0xFF20, (short)0xFF18, (short)0xFF38, (short)0xFF60, (short)0xFF70, + (short)0xFF80, (short)0xFF98, (short)0xFFA0, (short)0xFFB8, (short)0xFFD0, (short)0xFFE0, (short)0x0018, (short)0x0048, + (short)0x0058, (short)0x00B0, (short)0x00F8, (short)0x0108, (short)0x0118, (short)0x0120, (short)0x0118, (short)0x0130, + (short)0x0148, (short)0x0140, (short)0x0130, (short)0x0120, (short)0x0108, (short)0x0098, (short)0x0038, (short)0x0018, + (short)0xFFD0, (short)0xFF90, (short)0xFF80, (short)0xFF58, (short)0xFF38, (short)0xFF30, (short)0xFF48, (short)0xFF68, + (short)0xFF78, (short)0xFF88, (short)0xFFB8, (short)0xFFD8, (short)0xFFE8, (short)0xFFD8, (short)0xFFF0, (short)0x0010, + (short)0x0020, (short)0x0020, (short)0x0018, (short)0x0028, (short)0x0030, (short)0x0030, (short)0x0038, (short)0x0060, + (short)0x0080, (short)0x0080, (short)0x00B0, (short)0x00D8, (short)0x00D0, (short)0x00B8, (short)0x00A8, (short)0x00A8, + (short)0x00A0, (short)0x0090, (short)0x0078, (short)0x0070, (short)0x0068, (short)0x0048, (short)0x0018, (short)0x0008, + (short)0x0008, (short)0x0000, (short)0x0000, (short)0xFFE8, (short)0xFFB0, (short)0xFF90, (short)0xFF88, (short)0xFF70, + (short)0xFF60, (short)0xFF60, (short)0xFF90, (short)0xFFC0, (short)0xFFD0, (short)0xFFD8, (short)0xFFE0, (short)0xFFE8, + (short)0x0018, (short)0x0050, (short)0x0058, (short)0x0030, (short)0x0008, (short)0x0000, (short)0x0018, (short)0x0038, + (short)0x0038, (short)0x0048, (short)0x0050, (short)0x0050, (short)0x0020, (short)0x0000, (short)0xFFF8, (short)0xFFB0, + (short)0xFF70, (short)0xFF68, (short)0xFFB0, (short)0xFFE8, (short)0xFFF8, (short)0xFFF8, (short)0xFFF8, (short)0xFFF0, + (short)0x0030, (short)0x0070, (short)0x0090, (short)0x0098, (short)0x0098, (short)0x0090, (short)0x00A0, (short)0x00B0, + (short)0x00B8, (short)0x00C0, (short)0x00C0, (short)0x00A8, (short)0x0098, (short)0x0088, (short)0x0078, (short)0x0050, + (short)0x0030, (short)0x0020, (short)0xFFD8, (short)0xFF98, (short)0xFF88, (short)0xFF50, (short)0xFF20, (short)0xFF18, + (short)0xFEF8, (short)0xFEE0, (short)0xFEE8, (short)0xFE70, (short)0xFE08, (short)0xFE00, (short)0xFE48, (short)0xFE98, + (short)0xFEB8, (short)0xFEE8, (short)0xFF10, (short)0xFF28, (short)0xFF18, (short)0xFF10, (short)0xFF18, (short)0xFF48, + (short)0xFF70, (short)0xFF88, (short)0xFFE0, (short)0x0028, (short)0x0040, (short)0x0058, (short)0x0068, (short)0x0070, + (short)0x0078, (short)0x0070, (short)0x0068, (short)0x0068, (short)0x0078, (short)0x0080, (short)0x0080, (short)0x0088, + (short)0x0088, (short)0x0080, (short)0x0058, (short)0x0030, (short)0x0020, (short)0x0018, (short)0x0018, (short)0x0018, + (short)0x0050, (short)0x0090, (short)0x00A0, (short)0x0080, (short)0x0060, (short)0x0050, (short)0x0030, (short)0x0018, + (short)0x0010, (short)0x0028, (short)0x0038, (short)0x0038, (short)0x0018, (short)0xFFF8, (short)0xFFF0, (short)0x0000, + (short)0x0020, (short)0x0020, (short)0x0030, (short)0x0030, (short)0x0030, (short)0x0040, (short)0x0050, (short)0x0050, + (short)0x0050, (short)0x0048, (short)0x0048, (short)0x0048, (short)0x0048, (short)0x0048, (short)0x0078, (short)0x00A0, + (short)0x00A8, (short)0x00C0, (short)0x00C8, (short)0x00C0, (short)0x00D0, (short)0x00E0, (short)0x00D8, (short)0x00E8, + (short)0x00F0, (short)0x00E0, (short)0x0100, (short)0x0118, (short)0x0110, (short)0x0100, (short)0x00F0, (short)0x00D8, + (short)0x0090, (short)0x0048, (short)0x0028, (short)0x0020, (short)0x0020, (short)0x0020, (short)0x0038, (short)0x0050, + (short)0x0050, (short)0x0050, (short)0x0048, (short)0x0040, (short)0x0050, (short)0x0060, (short)0x0060, (short)0x0040, + (short)0xFFC0, (short)0xFF58, (short)0xFF40, (short)0xFF90, (short)0xFFE8, (short)0x0000, (short)0x0020, (short)0x0030, + (short)0x0030, (short)0x0068, (short)0x0098, (short)0x00A8, (short)0x0110, (short)0x0168, (short)0x0170, (short)0x0148, + (short)0x0118, (short)0x00F0, (short)0x00E8, (short)0x00E0, (short)0x00D0, (short)0x0098, (short)0x0060, (short)0x0040, + (short)0x0000, (short)0xFFD8, (short)0xFFD8, (short)0xFFC0, (short)0xFFB0, (short)0xFFB0, (short)0xFF78, (short)0xFF30, + (short)0xFF10, (short)0xFEF0, (short)0xFEE8, (short)0xFEF0, (short)0xFEC8, (short)0xFED0, (short)0xFEF8, (short)0xFF00, + (short)0xFF10, (short)0xFF20, (short)0xFF50, (short)0xFF78, (short)0xFF90, (short)0xFF80, (short)0xFF70, (short)0xFF70, + (short)0xFF80, (short)0xFF98, (short)0xFFA0, (short)0xFFB8, (short)0xFFD0, (short)0xFFD8, (short)0xFFF0, (short)0x0000, + (short)0x0008, (short)0x0028, (short)0x0048, (short)0x0058, (short)0x0078, (short)0x0070, (short)0x0058, (short)0x0068, + (short)0x0098, (short)0x00B8, (short)0x00D8, (short)0x00F0, (short)0x00F0, (short)0x00E8, (short)0x00F8, (short)0x0100, + (short)0x00D8, (short)0x00D0, (short)0x00C8, (short)0x00E8, (short)0x0100, (short)0x00F0, (short)0x00E0, (short)0x00C8, + (short)0x00B8, (short)0x00A0, (short)0x0078, (short)0x0058, (short)0x0038, (short)0x0020, (short)0x0010, (short)0x0010, + (short)0x0018, (short)0x0010, (short)0x0010, (short)0x0010, (short)0x0018, (short)0x0028, (short)0x0008, (short)0xFFE0, + (short)0xFFC8, (short)0xFF80, (short)0xFF48, (short)0xFF38, (short)0xFF40, (short)0xFF48, (short)0xFF48, (short)0xFF70, + (short)0xFF90, (short)0xFFA8, (short)0xFFB8, (short)0xFFC0, (short)0xFFC8, (short)0xFFC0, (short)0xFFC0, (short)0xFFC0, + (short)0xFFB0, (short)0xFFA0, (short)0xFFA0, (short)0xFFA0, (short)0xFFA8, (short)0xFFB0, (short)0xFF68, (short)0xFF28, + (short)0xFF08, (short)0xFEF8, (short)0xFEF8, (short)0xFEE8, (short)0xFEE0, (short)0xFED8, (short)0xFEA8, (short)0xFE98, + (short)0xFEA8, (short)0xFEA8, (short)0xFEA0, (short)0xFEA0, (short)0xFED0, (short)0xFF00, (short)0xFF30, (short)0xFF28, + (short)0xFF38, (short)0xFF58, (short)0xFF48, (short)0xFF40, (short)0xFF48, (short)0xFFB0, (short)0x0010, (short)0x0038, + (short)0x0028, (short)0x0010, (short)0x0008, (short)0x0050, (short)0x00A0, (short)0x00B8, (short)0x00A0, (short)0x0080, + (short)0x0070, (short)0x0090, (short)0x00B0, (short)0x00B0, (short)0x00B8, (short)0x00B8, (short)0x00B0, (short)0x00C0, + (short)0x00D0, (short)0x00C8, (short)0x00A0, (short)0x0068, (short)0x0038, (short)0xFFF0, (short)0xFFB0, (short)0xFF88, + (short)0xFF78, (short)0xFF68, (short)0xFF60, (short)0xFF90, (short)0xFFC0, (short)0xFFE0, (short)0x0000, (short)0x0020, + (short)0x0030, (short)0x00A0, (short)0x0110, (short)0x0138, (short)0x0140, (short)0x0148, (short)0x0148, (short)0x0110, + (short)0x00E8, (short)0x00C0, (short)0x00A0, (short)0x0088, (short)0x0068, (short)0x0008, (short)0xFFB0, (short)0xFF88, + (short)0xFF58, (short)0xFF30, (short)0xFF20, (short)0xFEF8, (short)0xFED8, (short)0xFED8, (short)0xFF00, (short)0xFF20, + (short)0xFF38, (short)0xFF50, (short)0xFF68, (short)0xFF88, (short)0xFFA0, (short)0xFFB8, (short)0x0020, (short)0x0080, + (short)0x00A0, (short)0x00D8, (short)0x0100, (short)0x0100, (short)0x0138, (short)0x0168, (short)0x0148, (short)0x0128, + (short)0x0120, (short)0x00F8, (short)0x00E8, (short)0x00E0, (short)0x00C0, (short)0x00A8, (short)0x00B0, (short)0x0098, + (short)0x0070, (short)0x0048, (short)0x0030, (short)0xFFD0, (short)0xFF60, (short)0xFF48, (short)0xFF10, (short)0xFEA8, + (short)0xFEA8, (short)0xFEC0, (short)0xFEC0, (short)0xFEE8, (short)0xFEB0, (short)0xFE58, (short)0xFE88, (short)0xFED0, + (short)0xFEB8, (short)0xFE48, (short)0xFE58, (short)0xFEE8, (short)0xFF28, (short)0xFF18, (short)0xFF60, (short)0x00A0, + (short)0x01A0, (short)0x0188, (short)0x0178, (short)0x0208, (short)0x0208, (short)0x0100, (short)0x0018, (short)0xFFE0, + (short)0xFEE0, (short)0xFD68, (short)0xFD00, (short)0xFD60, (short)0xFD70, (short)0xFDA8, (short)0xFF00, (short)0x00A0, + (short)0x0170, (short)0x0210, (short)0x02D8, (short)0x0310, (short)0x0218, (short)0x00A0, (short)0xFFA0, (short)0xFDF0, + (short)0xFBD8, (short)0xFB08, (short)0xF9C0, (short)0xF830, (short)0xF8D8, (short)0xFCC0, (short)0x0038, (short)0x01A0, + (short)0x0380, (short)0x0A18, (short)0x0F50, (short)0x0DB0, (short)0x0C30, (short)0x0E18, (short)0x0CA8, (short)0x0570, + (short)0xFF98, (short)0xFE38, (short)0xFBA0, (short)0xF700, (short)0xF5D0, (short)0xF7C8, (short)0xF9A8, (short)0xFB48, + (short)0xFBB0, (short)0xFC78, (short)0xFF00, (short)0xFE98, (short)0xFB20, (short)0xFA48, (short)0xFAC0, (short)0xF8C8, + (short)0xF6E0, (short)0xF9C0, (short)0xFE08, (short)0xFF80, (short)0x0428, (short)0x0B70, (short)0x0E18, (short)0x0D38, + (short)0x0D38, (short)0x0C28, (short)0x01D0, (short)0xF578, (short)0xF108, (short)0xFB50, (short)0x0498, (short)0x0428, + (short)0x0CE8, (short)0x2190, (short)0x29F0, (short)0x22E0, (short)0x1F68, (short)0x2050, (short)0x1810, (short)0x0710, + (short)0xFA98, (short)0xF438, (short)0xEE68, (short)0xE950, (short)0xEBC8, (short)0xF538, (short)0xFEB8, (short)0x0240, + (short)0x0460, (short)0x09D0, (short)0x0978, (short)0xFFF8, (short)0xF810, (short)0xF190, (short)0xE8D0, (short)0xE290, + (short)0xDF60, (short)0xDFF0, (short)0xE668, (short)0xEC20, (short)0xF138, (short)0xFAC0, (short)0x04F0, (short)0x08D0, + (short)0x08C8, (short)0x0B18, (short)0x09F8, (short)0x0230, (short)0xFA38, (short)0xFA68, (short)0xFC78, (short)0xF9B8, + (short)0xF850, (short)0xFEA8, (short)0x05B8, (short)0x0690, (short)0x02E8, (short)0x0268, (short)0x0498, (short)0xFCB0, + (short)0xF018, (short)0xEDF8, (short)0x0090, (short)0x0F48, (short)0x0C70, (short)0x1278, (short)0x27B8, (short)0x2EA0, + (short)0x21F8, (short)0x1920, (short)0x1918, (short)0x1530, (short)0x0638, (short)0xF858, (short)0xF720, (short)0xF9F8, + (short)0xF600, (short)0xF850, (short)0x0590, (short)0x0EE0, (short)0x1000, (short)0x10D8, (short)0x1460, (short)0x10F8, + (short)0x0500, (short)0xFBC0, (short)0xF7A8, (short)0xF250, (short)0xEC00, (short)0xEB30, (short)0xF1C8, (short)0xF920, + (short)0xFC90, (short)0x0190, (short)0x0A60, (short)0x0E80, (short)0x0DB0, (short)0x0AD8, (short)0x0690, (short)0x0168, + (short)0xFF20, (short)0xFBD0, (short)0xF6F8, (short)0xF660, (short)0xF680, (short)0xF5B0, (short)0xF7C0, (short)0xF120, + (short)0xEA90, (short)0xF030, (short)0xEC18, (short)0xE190, (short)0xE558, (short)0xFF20, (short)0x1090, (short)0x0C50, + (short)0x1248, (short)0x2788, (short)0x2AD0, (short)0x1628, (short)0x08F0, (short)0x0BA8, (short)0x0538, (short)0xEF48, + (short)0xE410, (short)0xEB10, (short)0xEF68, (short)0xEA28, (short)0xEC40, (short)0xFC18, (short)0x08A8, (short)0x0818, + (short)0x0778, (short)0x0858, (short)0x02F8, (short)0xF8E8, (short)0xF1F0, (short)0xEF40, (short)0xECD0, (short)0xE958, + (short)0xEA70, (short)0xF260, (short)0xFAF0, (short)0xFFA0, (short)0x04A0, (short)0x0CF8, (short)0x10F8, (short)0x0EA0, + (short)0x0D48, (short)0x0BE8, (short)0x05E0, (short)0x03B0, (short)0x0358, (short)0xFF18, (short)0xFB40, (short)0xF9B0, + (short)0xF9C0, (short)0xF7C0, (short)0xEE90, (short)0xEAA0, (short)0xEE00, (short)0xE888, (short)0xE200, (short)0xEF00, + (short)0x0948, (short)0x1400, (short)0x1270, (short)0x1D88, (short)0x2CD8, (short)0x2488, (short)0x0DA8, (short)0x04B8, + (short)0x0548, (short)0xF7B0, (short)0xE3F0, (short)0xE268, (short)0xEFF8, (short)0xF5A0, (short)0xF320, (short)0xFC68, + (short)0x0BF0, (short)0x0FA0, (short)0x0A50, (short)0x01F8, (short)0xFE60, (short)0xFC48, (short)0xF340, (short)0xEB28, + (short)0xED58, (short)0xF3C0, (short)0xF5B8, (short)0xF738, (short)0x00F8, (short)0x0C70, (short)0x0E90, (short)0x0DE8, + (short)0x1190, (short)0x12B0, (short)0x1058, (short)0x0B98, (short)0x0638, (short)0x0868, (short)0x0998, (short)0x02B0, + (short)0xFE50, (short)0x0120, (short)0x02A0, (short)0xFC90, (short)0xF810, (short)0xF9D0, (short)0xF818, (short)0xF290, + (short)0xF240, (short)0xF6D0, (short)0x0A48, (short)0x1AD8, (short)0x1840, (short)0x1C18, (short)0x2B18, (short)0x29F0, + (short)0x1608, (short)0x08B8, (short)0x0778, (short)0x0128, (short)0xF118, (short)0xE868, (short)0xEDA0, (short)0xF310, + (short)0xF248, (short)0xF558, (short)0x0058, (short)0x0970, (short)0x0688, (short)0x0108, (short)0xFD08, (short)0xF988, + (short)0xF558, (short)0xF0A0, (short)0xF0B0, (short)0xF540, (short)0xF6E8, (short)0xFCA0, (short)0x0758, (short)0x0CD0, + (short)0x0F60, (short)0x1338, (short)0x1458, (short)0x1278, (short)0x0FD0, (short)0x0CA8, (short)0x0D50, (short)0x0D10, + (short)0x0798, (short)0x0398, (short)0x0428, (short)0x04F0, (short)0x0278, (short)0xFF98, (short)0x0178, (short)0x0088, + (short)0xFB08, (short)0xF660, (short)0xF1A8, (short)0xEF18, (short)0xF9E8, (short)0x0C00, (short)0x11C8, (short)0x1260, + (short)0x1B60, (short)0x21B0, (short)0x18E0, (short)0x0B08, (short)0x04C8, (short)0x0078, (short)0xF730, (short)0xEF60, + (short)0xEB18, (short)0xEC10, (short)0xF290, (short)0xF800, (short)0xFB60, (short)0xFF60, (short)0x0080, (short)0xFFA8, + (short)0xFB08, (short)0xF1A8, (short)0xED10, (short)0xEFF0, (short)0xEED0, (short)0xEB10, (short)0xEFE8, (short)0xF8F0, + (short)0xFDE0, (short)0x0298, (short)0x0528, (short)0x0598, (short)0x0928, (short)0x0A30, (short)0x0670, (short)0x08E8, + (short)0x0BC0, (short)0x0698, (short)0x0210, (short)0x0390, (short)0x0560, (short)0x0288, (short)0xF910, (short)0xF468, + (short)0xF560, (short)0xF3E0, (short)0xEE10, (short)0xE8B0, (short)0xE508, (short)0xEED0, (short)0x03E0, (short)0x0638, + (short)0xFFA8, (short)0x0BB8, (short)0x2078, (short)0x1FA8, (short)0x0EF0, (short)0x0648, (short)0x05C8, (short)0xFF18, + (short)0xF588, (short)0xEE20, (short)0xED88, (short)0xF5A0, (short)0xFBA8, (short)0xFBC0, (short)0xFA98, (short)0xFA20, + (short)0xF7D8, (short)0xF2D0, (short)0xEF48, (short)0xE998, (short)0xE378, (short)0xE530, (short)0xE868, (short)0xE890, + (short)0xEDD0, (short)0xF798, (short)0xFBC0, (short)0xFD20, (short)0x0178, (short)0x0490, (short)0x04A0, (short)0x0758, + (short)0x0858, (short)0x0490, (short)0x04F8, (short)0x0858, (short)0x06F0, (short)0x05F8, (short)0x0450, (short)0x0098, + (short)0xFE60, (short)0xFDA0, (short)0xF9E0, (short)0xF358, (short)0xEDC0, (short)0xF308, (short)0xFFE0, (short)0x0018, + (short)0xFB80, (short)0x0948, (short)0x1DB8, (short)0x1D08, (short)0x0F88, (short)0x0B48, (short)0x0C50, (short)0x09C0, + (short)0xFF78, (short)0xF1A0, (short)0xEF28, (short)0xF6B8, (short)0xF9F0, (short)0xF6F0, (short)0xF688, (short)0xF9E0, + (short)0xF9C0, (short)0xF4C8, (short)0xEBD8, (short)0xE7E8, (short)0xEBE0, (short)0xE8C8, (short)0xE100, (short)0xE518, + (short)0xF0B8, (short)0xF728, (short)0xF770, (short)0xF878, (short)0xFF58, (short)0x06B0, (short)0x0430, (short)0x0060, + (short)0x0390, (short)0x0A18, (short)0x0B98, (short)0x06C8, (short)0x0710, (short)0x0CF0, (short)0x08D0, (short)0x01F8, + (short)0x0280, (short)0x0238, (short)0xFD78, (short)0xF868, (short)0xF198, (short)0xF670, (short)0x0930, (short)0x0A78, + (short)0xFB38, (short)0x04F0, (short)0x1EB8, (short)0x1E98, (short)0x0F68, (short)0x0EC8, (short)0x1548, (short)0x1480, + (short)0x0C60, (short)0x00B0, (short)0xFEF8, (short)0x0830, (short)0x0838, (short)0x0160, (short)0x0380, (short)0x07E8, + (short)0x0270, (short)0xFBA0, (short)0xF9C0, (short)0xF450, (short)0xEE08, (short)0xED08, (short)0xEE10, (short)0xEF20, + (short)0xF1C0, (short)0xF800, (short)0xFE70, (short)0x00B0, (short)0x02D8, (short)0x07C8, (short)0x09F0, (short)0x09A8, + (short)0x0A60, (short)0x0B28, (short)0x0C80, (short)0x0D58, (short)0x0BD0, (short)0x0A48, (short)0x0900, (short)0x0768, + (short)0x03D0, (short)0x00E0, (short)0xFFF8, (short)0xFBD8, (short)0xF5E8, (short)0xFE18, (short)0x0FE8, (short)0x1060, + (short)0x05C8, (short)0x1078, (short)0x2638, (short)0x2580, (short)0x1740, (short)0x14E8, (short)0x19D0, (short)0x17D8, + (short)0x0E10, (short)0x0270, (short)0x0120, (short)0x0900, (short)0x0870, (short)0x0290, (short)0x03A0, (short)0x0600, + (short)0x0100, (short)0xFE28, (short)0xFF28, (short)0xF838, (short)0xF0B8, (short)0xF238, (short)0xF530, (short)0xF440, + (short)0xF440, (short)0xFA38, (short)0x0198, (short)0x03A8, (short)0x03D0, (short)0x0780, (short)0x0AB8, (short)0x0B58, + (short)0x0B10, (short)0x0AD8, (short)0x0A08, (short)0x0878, (short)0x07C8, (short)0x0648, (short)0x01A0, (short)0xFF48, + (short)0xFE58, (short)0xFA68, (short)0xF7D0, (short)0xF758, (short)0xF470, (short)0xF5B0, (short)0x02A8, (short)0x0A58, + (short)0x0448, (short)0x07C8, (short)0x1708, (short)0x1970, (short)0x0EC8, (short)0x0A40, (short)0x0CD0, (short)0x0D28, + (short)0x0838, (short)0x0010, (short)0xFAE0, (short)0xFCB0, (short)0xFEB8, (short)0xFCE8, (short)0xFBA8, (short)0xFD10, + (short)0xFBC8, (short)0xF910, (short)0xF960, (short)0xF830, (short)0xF4D8, (short)0xF500, (short)0xF860, (short)0xF9F0, + (short)0xFB58, (short)0xFE48, (short)0x0050, (short)0x0418, (short)0x0910, (short)0x0940, (short)0x0830, (short)0x0AC8, + (short)0x0C88, (short)0x0A50, (short)0x07C0, (short)0x0700, (short)0x0590, (short)0x0268, (short)0xFFF0, (short)0xFBA8, + (short)0xF720, (short)0xF698, (short)0xF2E0, (short)0xEB68, (short)0xEDA0, (short)0xFC00, (short)0x0358, (short)0xFF30, + (short)0x0398, (short)0x1220, (short)0x1860, (short)0x1368, (short)0x10C0, (short)0x12F0, (short)0x12A0, (short)0x0E08, + (short)0x0780, (short)0x0010, (short)0xFAD8, (short)0xF990, (short)0xF7E0, (short)0xF278, (short)0xEE10, (short)0xEB98, + (short)0xE7A0, (short)0xE6F8, (short)0xEA30, (short)0xE980, (short)0xE420, (short)0xE440, (short)0xEBA8, (short)0xEF98, + (short)0xEF68, (short)0xF288, (short)0xF7A8, (short)0xFC90, (short)0x01F8, (short)0x0528, (short)0x0630, (short)0x08E8, + (short)0x0C98, (short)0x0D50, (short)0x0B98, (short)0x0920, (short)0x0678, (short)0x03F0, (short)0x0260, (short)0xFE00, + (short)0xF810, (short)0xF4B8, (short)0xF0C0, (short)0xEB68, (short)0xEF58, (short)0xFAE8, (short)0xFDE0, (short)0xF680, + (short)0xF910, (short)0x06E0, (short)0x0C20, (short)0x05D8, (short)0x0408, (short)0x05C8, (short)0x0450, (short)0x02D0, + (short)0x0128, (short)0xFB78, (short)0xF668, (short)0xF430, (short)0xF150, (short)0xED90, (short)0xE870, (short)0xE448, + (short)0xE2E0, (short)0xE048, (short)0xDDD0, (short)0xDF08, (short)0xE0E0, (short)0xE098, (short)0xE258, (short)0xE520, + (short)0xE6A8, (short)0xEA28, (short)0xEF88, (short)0xF2A8, (short)0xF548, (short)0xFBA8, (short)0x01C8, (short)0x03F8, + (short)0x0748, (short)0x0C88, (short)0x0E98, (short)0x0DB8, (short)0x0D98, (short)0x0D50, (short)0x0B68, (short)0x0970, + (short)0x06C0, (short)0x0238, (short)0xFE18, (short)0xFB08, (short)0xF820, (short)0xF780, (short)0xF970, (short)0xF9B0, + (short)0xF880, (short)0xFA28, (short)0x0028, (short)0x0698, (short)0x0948, (short)0x08D0, (short)0x09E0, (short)0x0DD0, + (short)0x1010, (short)0x0D40, (short)0x0958, (short)0x0728, (short)0x0308, (short)0xFDA0, (short)0xF9F8, (short)0xF418, + (short)0xEC98, (short)0xE8B8, (short)0xE618, (short)0xE200, (short)0xDED0, (short)0xDF48, (short)0xE100, (short)0xE180, + (short)0xE160, (short)0xE3C8, (short)0xE898, (short)0xEDD8, (short)0xF250, (short)0xF558, (short)0xFB00, (short)0x02F8, + (short)0x07B0, (short)0x0B80, (short)0x1108, (short)0x1518, (short)0x1660, (short)0x1770, (short)0x1870, (short)0x16F8, + (short)0x1300, (short)0x0F78, (short)0x0FC0, (short)0x1070, (short)0x0CE8, (short)0x0AF8, (short)0x0BD8, (short)0x0D28, + (short)0x10A8, (short)0x1370, (short)0x10A0, (short)0x1040, (short)0x1518, (short)0x1740, (short)0x1550, (short)0x1398, + (short)0x10E0, (short)0x0AC8, (short)0x0640, (short)0x0348, (short)0xFD18, (short)0xF658, (short)0xF1D8, (short)0xEC20, + (short)0xE760, (short)0xE550, (short)0xE4B8, (short)0xE418, (short)0xE438, (short)0xE508, (short)0xE738, (short)0xEB18, + (short)0xF0C8, (short)0xF618, (short)0xF988, (short)0xFEC8, (short)0x0518, (short)0x09D8, (short)0x1118, (short)0x17F0, + (short)0x1BB0, (short)0x1E28, (short)0x2120, (short)0x23D8, (short)0x2638, (short)0x2418, (short)0x2080, (short)0x1D30, + (short)0x1CE8, (short)0x1D98, (short)0x1CA8, (short)0x1AD8, (short)0x1960, (short)0x17F8, (short)0x1A40, (short)0x1CF8, + (short)0x1D38, (short)0x1C30, (short)0x1A68, (short)0x1860, (short)0x1480, (short)0x1020, (short)0x0B68, (short)0x03E8, + (short)0xFBA8, (short)0xF508, (short)0xEE40, (short)0xE820, (short)0xE338, (short)0xDE88, (short)0xDA30, (short)0xD7D0, + (short)0xD728, (short)0xD7D8, (short)0xD998, (short)0xDC10, (short)0xDFB0, (short)0xE470, (short)0xE948, (short)0xEF98, + (short)0xF5F0, (short)0xFC38, (short)0x0228, (short)0x0798, (short)0x0D98, (short)0x1320, (short)0x1760, (short)0x1A70, + (short)0x1BE0, (short)0x1CC0, (short)0x1D98, (short)0x1A88, (short)0x1658, (short)0x12A0, (short)0x1180, (short)0x10A8, + (short)0x0ED0, (short)0x0CC8, (short)0x0AD8, (short)0x0920, (short)0x0B70, (short)0x0E30, (short)0x0EE8, (short)0x0D80, + (short)0x0BE0, (short)0x0AC0, (short)0x09B8, (short)0x0890, (short)0x0690, (short)0x01F8, (short)0xFD30, (short)0xF9F0, + (short)0xF5B0, (short)0xF188, (short)0xEE38, (short)0xE9E8, (short)0xE5E8, (short)0xE3E0, (short)0xE4A0, (short)0xE608, + (short)0xE738, (short)0xE858, (short)0xE980, (short)0xEC20, (short)0xF030, (short)0xF450, (short)0xF878, (short)0xFC68, + (short)0xFF68, (short)0x03C8, (short)0x08B8, (short)0x0D00, (short)0x1038, (short)0x12D8, (short)0x1490, (short)0x1648, + (short)0x16B8, (short)0x1468, (short)0x1160, (short)0x0FA8, (short)0x1038, (short)0x1058, (short)0x0F88, (short)0x0E50, + (short)0x0CC8, (short)0x0CC0, (short)0x0FC0, (short)0x1220, (short)0x12A0, (short)0x10F8, (short)0x0F20, (short)0x0D28, + (short)0x0C78, (short)0x0BB8, (short)0x08D0, (short)0x01C8, (short)0xFB38, (short)0xF660, (short)0xF330, (short)0xF078, + (short)0xEC28, (short)0xE6C8, (short)0xE2C0, (short)0xE050, (short)0xDFC8, (short)0xE038, (short)0xE160, (short)0xE300, + (short)0xE568, (short)0xE6B8, (short)0xE9A0, (short)0xED50, (short)0xF238, (short)0xF6D8, (short)0xFB08, (short)0xFF10, + (short)0x02E8, (short)0x06A0, (short)0x0AC0, (short)0x0DC8, (short)0x1010, (short)0x1168, (short)0x1018, (short)0x0E90, + (short)0x0BF8, (short)0x0B08, (short)0x0A50, (short)0x09F0, (short)0x0960, (short)0x0888, (short)0x0808, (short)0x09C8, + (short)0x0BA8, (short)0x0EE8, (short)0x1070, (short)0x10D0, (short)0x0F58, (short)0x0D60, (short)0x0BA0, (short)0x0A60, + (short)0x08F0, (short)0x0608, (short)0xFFB0, (short)0xF938, (short)0xF360, (short)0xF030, (short)0xEE20, (short)0xEB70, + (short)0xE7A8, (short)0xE410, (short)0xE140, (short)0xDFC8, (short)0xDFF8, (short)0xE1F0, (short)0xE448, (short)0xE6D0, + (short)0xE780, (short)0xE9E8, (short)0xECF0, (short)0xF248, (short)0xF730, (short)0xFBC0, (short)0xFF80, (short)0x0310, + (short)0x0670, (short)0x0A98, (short)0x0D88, (short)0x0FD8, (short)0x10C0, (short)0x0EB0, (short)0x0C48, (short)0x08B8, + (short)0x0998, (short)0x0AC0, (short)0x0C68, (short)0x0B78, (short)0x09C8, (short)0x0838, (short)0x08F8, (short)0x0A80, + (short)0x0CA0, (short)0x0E10, (short)0x0E48, (short)0x0D58, (short)0x0A28, (short)0x0750, (short)0x04F0, (short)0x0228, + (short)0xFEE8, (short)0xFA80, (short)0xF468, (short)0xEED0, (short)0xEAE0, (short)0xE8B8, (short)0xE718, (short)0xE5B0, + (short)0xE4A8, (short)0xE410, (short)0xE480, (short)0xE548, (short)0xE738, (short)0xE9B0, (short)0xED80, (short)0xF0B8, + (short)0xF480, (short)0xF7B0, (short)0xFB70, (short)0xFED0, (short)0x0328, (short)0x0720, (short)0x0A98, (short)0x0E00, + (short)0x10F8, (short)0x12E0, (short)0x12A8, (short)0x11B0, (short)0x0F58, (short)0x0F38, (short)0x0E88, (short)0x0F08, + (short)0x0FC0, (short)0x0FF0, (short)0x10B8, (short)0x1138, (short)0x1198, (short)0x13D0, (short)0x1638, (short)0x17E8, + (short)0x1758, (short)0x1628, (short)0x1460, (short)0x10E8, (short)0x0CA0, (short)0x0848, (short)0x0280, (short)0xFC90, + (short)0xF700, (short)0xF0F8, (short)0xEB18, (short)0xE638, (short)0xE1B8, (short)0xDE78, (short)0xDC58, (short)0xDBB8, + (short)0xDC28, (short)0xDDB0, (short)0xE030, (short)0xE330, (short)0xE6F0, (short)0xEC20, (short)0xF210, (short)0xF7C0, + (short)0xFCE0, (short)0x0150, (short)0x0570, (short)0x08F0, (short)0x0C70, (short)0x0F50, (short)0x12B8, (short)0x1560, + (short)0x16E0, (short)0x1630, (short)0x14E8, (short)0x1298, (short)0x11B8, (short)0x1170, (short)0x11B8, (short)0x11C0, + (short)0x0FE8, (short)0x0E58, (short)0x0CB8, (short)0x0C50, (short)0x0D68, (short)0x0E98, (short)0x0E30, (short)0x0C28, + (short)0x0A10, (short)0x06D8, (short)0x02E0, (short)0xFEA0, (short)0xFA18, (short)0xF4E8, (short)0xF018, (short)0xEB68, + (short)0xE6E8, (short)0xE310, (short)0xDFC8, (short)0xDD38, (short)0xDBF8, (short)0xDC38, (short)0xDDD0, (short)0xE070, + (short)0xE390, (short)0xE760, (short)0xEB88, (short)0xEF20, (short)0xF378, (short)0xF830, (short)0xFCE0, (short)0x00F8, + (short)0x0480, (short)0x0768, (short)0x0968, (short)0x0AE0, (short)0x0BB8, (short)0x0C10, (short)0x0BB0, (short)0x0A78, + (short)0x08E0, (short)0x06E8, (short)0x0540, (short)0x0870, (short)0x0BE0, (short)0x0ED0, (short)0x0E40, (short)0x0D10, + (short)0x0CC8, (short)0x0E28, (short)0x0FA0, (short)0x0FB0, (short)0x0F18, (short)0x0DD0, (short)0x0BC8, (short)0x08E8, + (short)0x0628, (short)0x0300, (short)0xFF18, (short)0xFB40, (short)0xF780, (short)0xF388, (short)0xF028, (short)0xED80, + (short)0xEB18, (short)0xE968, (short)0xE8C0, (short)0xE738, (short)0xE658, (short)0xE698, (short)0xE888, (short)0xEB38, + (short)0xEDA0, (short)0xF178, (short)0xF5B8, (short)0xFA28, (short)0xFEA8, (short)0x0300, (short)0x06C8, (short)0x0960, + (short)0x0B70, (short)0x0CE0, (short)0x0D70, (short)0x0D50, (short)0x0C60, (short)0x0890, (short)0x0418, (short)0x0028, + (short)0x01D0, (short)0x03F8, (short)0x05A8, (short)0x0700, (short)0x0808, (short)0x09A0, (short)0x0B18, (short)0x0CC8, + (short)0x0D90, (short)0x0E68, (short)0x0EC0, (short)0x0E30, (short)0x0C28, (short)0x09D8, (short)0x0730, (short)0x0308, + (short)0xFED8, (short)0xFAC0, (short)0xF598, (short)0xF0D8, (short)0xECE0, (short)0xEAA8, (short)0xE948, (short)0xE8D0, + (short)0xE850, (short)0xE888, (short)0xE910, (short)0xEAD0, (short)0xED68, (short)0xF018, (short)0xF350, (short)0xF6B8, + (short)0xFAE0, (short)0xFF00, (short)0x02D8, (short)0x05E8, (short)0x0830, (short)0x09F8, (short)0x0B08, (short)0x0B80, + (short)0x0B60, (short)0x0988, (short)0x0648, (short)0x02D0, (short)0x0150, (short)0x01E8, (short)0x0270, (short)0x03E0, + (short)0x0538, (short)0x0658, (short)0x0918, (short)0x0C00, (short)0x0E88, (short)0x10B8, (short)0x12A0, (short)0x13E0, + (short)0x1488, (short)0x1448, (short)0x1368, (short)0x1120, (short)0x0DD0, (short)0x0A40, (short)0x0608, (short)0x0148, + (short)0xFC80, (short)0xF860, (short)0xF4D8, (short)0xF1C0, (short)0xF008, (short)0xEF38, (short)0xEE78, (short)0xEE98, + (short)0xEF90, (short)0xF170, (short)0xF390, (short)0xF5C0, (short)0xF888, (short)0xFB48, (short)0xFDF0, (short)0x0078, + (short)0x03D0, (short)0x06C8, (short)0x08F8, (short)0x0AA0, (short)0x0BC8, (short)0x0C48, (short)0x0B30, (short)0x0978, + (short)0x06A8, (short)0x0530, (short)0x03F0, (short)0x0438, (short)0x03C0, (short)0x0350, (short)0x0360, (short)0x04E8, + (short)0x0698, (short)0x07D0, (short)0x08D0, (short)0x0998, (short)0x0A70, (short)0x0B48, (short)0x0B70, (short)0x0AD0, + (short)0x09C0, (short)0x0890, (short)0x0730, (short)0x0588, (short)0x0358, (short)0x0140, (short)0xFF58, (short)0xFD40, + (short)0xFB68, (short)0xF9E8, (short)0xF828, (short)0xF6D0, (short)0xF608, (short)0xF5D8, (short)0xF610, (short)0xF668, + (short)0xF778, (short)0xF8E8, (short)0xFA48, (short)0xFCC8, (short)0xFF50, (short)0x01C8, (short)0x0428, (short)0x0640, + (short)0x07D0, (short)0x09D0, (short)0x0B40, (short)0x0BF8, (short)0x0C30, (short)0x0C08, (short)0x0B08, (short)0x0988, + (short)0x07C0, (short)0x0670, (short)0x0608, (short)0x0590, (short)0x0588, (short)0x05B0, (short)0x05E0, (short)0x06B8, + (short)0x0748, (short)0x0758, (short)0x0700, (short)0x06A8, (short)0x0620, (short)0x05D8, (short)0x0590, (short)0x0528, + (short)0x03A8, (short)0x0240, (short)0x0108, (short)0xFF38, (short)0xFD50, (short)0xFBA0, (short)0xFA38, (short)0xF920, + (short)0xF860, (short)0xF6E8, (short)0xF640, (short)0xF628, (short)0xF680, (short)0xF720, (short)0xF800, (short)0xF8E0, + (short)0xF9A0, (short)0xFA78, (short)0xFB88, (short)0xFD20, (short)0xFEA0, (short)0x0008, (short)0x0110, (short)0x0200, + (short)0x0360, (short)0x04E0, (short)0x0608, (short)0x0738, (short)0x0838, (short)0x08D8, (short)0x0828, (short)0x0738, + (short)0x0600, (short)0x04A8, (short)0x02E0, (short)0x0130, (short)0xFFA0, (short)0xFF48, (short)0xFF10, (short)0xFEF0, + (short)0xFF30, (short)0xFFD0, (short)0x0090, (short)0x0090, (short)0x0070, (short)0x0060, (short)0xFFE8, (short)0xFF50, + (short)0xFEB8, (short)0xFE98, (short)0xFE88, (short)0xFE80, (short)0xFE58, (short)0xFE50, (short)0xFE58, (short)0xFDB0, + (short)0xFD08, (short)0xFC80, (short)0xFAF8, (short)0xF988, (short)0xF860, (short)0xF798, (short)0xF720, (short)0xF6E8, + (short)0xF728, (short)0xF7C0, (short)0xF8A8, (short)0xF8F8, (short)0xF960, (short)0xFA18, (short)0xFAC0, (short)0xFB58, + (short)0xFC18, (short)0xFCE0, (short)0xFDA0, (short)0xFE20, (short)0xFE88, (short)0xFEF8, (short)0xFEF0, (short)0xFEC8, + (short)0xFEA8, (short)0xFDE0, (short)0xFD10, (short)0xFC70, (short)0xFBA8, (short)0xFB10, (short)0xFAB8, (short)0xFAA0, + (short)0xFAD0, (short)0xFB18, (short)0xFA90, (short)0xFA18, (short)0xFA10, (short)0xFA80, (short)0xFB10, (short)0xFB88, + (short)0xFC90, (short)0xFDB8, (short)0xFEB8, (short)0xFF80, (short)0x0058, (short)0x0138, (short)0x0118, (short)0x00C8, + (short)0x00C0, (short)0xFF98, (short)0xFE30, (short)0xFD38, (short)0xFC68, (short)0xFB78, (short)0xFAB8, (short)0xFAE8, + (short)0xFB78, (short)0xFBD0, (short)0xFBE8, (short)0xFC18, (short)0xFC98, (short)0xFD28, (short)0xFD48, (short)0xFD68, + (short)0xFD68, (short)0xFD90, (short)0xFDB8, (short)0xFD90, (short)0xFD68, (short)0xFD78, (short)0xFCA0, (short)0xFB70, + (short)0xFAD0, (short)0xF9F0, (short)0xF870, (short)0xF748, (short)0xF748, (short)0xF770, (short)0xF748, (short)0xF720, + (short)0xF7A8, (short)0xF878, (short)0xF930, (short)0xF998, (short)0xFA38, (short)0xFC10, (short)0xFDA0, (short)0xFE70, + (short)0x0030, (short)0x0248, (short)0x03A0, (short)0x0568, (short)0x0738, (short)0x0870, (short)0x0960, (short)0x0A10, + (short)0x0A40, (short)0x0A28, (short)0x09B8, (short)0x08E8, (short)0x07E8, (short)0x06E0, (short)0x0588, (short)0x0430, + (short)0x0300, (short)0x0260, (short)0x01D0, (short)0x0118, (short)0xFFB0, (short)0xFE98, (short)0xFE18, (short)0xFDA0, + (short)0xFD08, (short)0xFCB8, (short)0xFCF8, (short)0xFD60, (short)0xFD90, (short)0xFD90, (short)0xFDD8, (short)0xFE50, + (short)0xFDA0, (short)0xFCE0, (short)0xFCC0, (short)0xFCE8, (short)0xFCB0, (short)0xFC60, (short)0xFC70, (short)0xFCB8, + (short)0xFCE0, (short)0xFD40, (short)0xFDD8, (short)0xFE68, (short)0xFF78, (short)0x0068, (short)0x0108, (short)0x0278, + (short)0x03A0, (short)0x0420, (short)0x0590, (short)0x0708, (short)0x07B8, (short)0x07D8, (short)0x0808, (short)0x0838, + (short)0x07D8, (short)0x06E8, (short)0x0600, (short)0x05B0, (short)0x0518, (short)0x0410, (short)0x02A0, (short)0x0198, + (short)0x00D0, (short)0x00C8, (short)0x00B0, (short)0x0068, (short)0x00C0, (short)0x0150, (short)0x0180, (short)0x0220, + (short)0x02D8, (short)0x0340, (short)0x0360, (short)0x0380, (short)0x0380, (short)0x0338, (short)0x02C8, (short)0x02B8, + (short)0x0280, (short)0x0200, (short)0x0100, (short)0x0098, (short)0x0080, (short)0x0020, (short)0xFFF0, (short)0x0000, + (short)0x0020, (short)0x0098, (short)0x0120, (short)0x0170, (short)0x0230, (short)0x02F0, (short)0x0350, (short)0x0480, + (short)0x05B8, (short)0x0650, (short)0x06A8, (short)0x0738, (short)0x0798, (short)0x07B0, (short)0x07C0, (short)0x0798, + (short)0x0668, (short)0x0598, (short)0x0530, (short)0x04C8, (short)0x0410, (short)0x0350, (short)0x0278, (short)0x01D8, + (short)0x0148, (short)0x0080, (short)0x0000, (short)0xFFC0, (short)0xFFD8, (short)0xFFA8, (short)0xFF60, (short)0xFF80, + (short)0x0018, (short)0x0070, (short)0xFFE0, (short)0xFF88, (short)0xFFC0, (short)0xFF38, (short)0xFE98, (short)0xFE50, + (short)0xFE10, (short)0xFDD8, (short)0xFD90, (short)0xFD30, (short)0xFDB8, (short)0xFE68, (short)0xFE70, (short)0xFE60, + (short)0xFE70, (short)0xFED0, (short)0xFF90, (short)0xFFE0, (short)0xFFF0, (short)0x00A8, (short)0x0168, (short)0x01D0, + (short)0x01F8, (short)0x0210, (short)0x0278, (short)0x0268, (short)0x0208, (short)0x0220, (short)0x01F8, (short)0x0198, + (short)0x0158, (short)0x0100, (short)0x00C0, (short)0x00A0, (short)0x0018, (short)0xFF98, (short)0xFF28, (short)0xFEC0, + (short)0xFE80, (short)0xFE60, (short)0xFD88, (short)0xFCF0, (short)0xFCC8, (short)0xFC70, (short)0xFC10, (short)0xFBC8, + (short)0xFBB0, (short)0xFBE8, (short)0xFBE8, (short)0xFB80, (short)0xFB88, (short)0xFB40, (short)0xFB18, (short)0xFB20, + (short)0xFAB8, (short)0xFA50, (short)0xFA50, (short)0xFAB8, (short)0xFAF8, (short)0xFB18, (short)0xFBB0, (short)0xFC88, + (short)0xFD10, (short)0xFD40, (short)0xFD98, (short)0xFE38, (short)0xFEE0, (short)0xFEF8, (short)0xFEF0, (short)0xFF18, + (short)0xFF18, (short)0xFF18, (short)0xFF68, (short)0xFF98, (short)0xFF98, (short)0xFFD0, (short)0xFFF8, (short)0x0048, + (short)0x0038, (short)0x0008, (short)0x0008, (short)0xFFE0, (short)0xFFB0, (short)0xFFB8, (short)0xFED0, (short)0xFE18, + (short)0xFE18, (short)0xFDF0, (short)0xFE38, (short)0xFE90, (short)0xFE90, (short)0xFDA8, (short)0xFD48, (short)0xFD70, + (short)0xFD68, (short)0xFD00, (short)0xFCB8, (short)0xFCB8, (short)0xFCF8, (short)0xFD00, (short)0xFC30, (short)0xFBD0, + (short)0xFC10, (short)0xFC20, (short)0xFBE0, (short)0xFBA8, (short)0xFC30, (short)0xFD00, (short)0xFD50, (short)0xFD90, + (short)0xFE10, (short)0xFEA8, (short)0xFF40, (short)0xFFA0, (short)0xFFD0, (short)0xFFC8, (short)0xFFC8, (short)0xFFD8, + (short)0xFFA0, (short)0xFF98, (short)0xFFB8, (short)0x0050, (short)0x00B8, (short)0x00B0, (short)0x01B0, (short)0x02E0, + (short)0x0318, (short)0x0330, (short)0x02E0, (short)0x02C8, (short)0x0278, (short)0x0150, (short)0x0050, (short)0xFFC0, + (short)0xFF88, (short)0xFF18, (short)0xFE90, (short)0xFE40, (short)0xFE30, (short)0xFDE8, (short)0xFDD0, (short)0xFD70, + (short)0xFD48, (short)0xFD10, (short)0xFC98, (short)0xFC38, (short)0xFC38, (short)0xFC78, (short)0xFC98, (short)0xFCF0, + (short)0xFDA8, (short)0xFE48, (short)0xFEC8, (short)0xFF30, (short)0xFF98, (short)0x0000, (short)0x0050, (short)0x0058, + (short)0x00A8, (short)0x00E8, (short)0x00D0, (short)0x0138, (short)0x01E0, (short)0x0218, (short)0x0208, (short)0x0230, + (short)0x0258, (short)0x0248, (short)0x02B0, (short)0x0318, (short)0x0330, (short)0x0358, (short)0x0380, (short)0x0378, + (short)0x0408, (short)0x0480, (short)0x0460, (short)0x03C8, (short)0x0318, (short)0x02B0, (short)0x01E8, (short)0x00B8, + (short)0xFFD8, (short)0xFF30, (short)0xFEC8, (short)0xFE60, (short)0xFE60, (short)0xFE78, (short)0xFE78, (short)0xFDC0, + (short)0xFD70, (short)0xFD50, (short)0xFD08, (short)0xFC88, (short)0xFC28, (short)0xFC98, (short)0xFD18, (short)0xFD60, + (short)0xFD60, (short)0xFDD8, (short)0xFE90, (short)0xFEE8, (short)0xFF10, (short)0xFF58, (short)0xFF90, (short)0xFFB8, + (short)0xFFE0, (short)0xFFF0, (short)0xFFF0, (short)0x00D0, (short)0x0190, (short)0x01C8, (short)0x0180, (short)0x0188, + (short)0x01B0, (short)0x0238, (short)0x0298, (short)0x02B8, (short)0x0268, (short)0x0258, (short)0x0258, (short)0x0230, + (short)0x0228, (short)0x0230, (short)0x0258, (short)0x0248, (short)0x01F8, (short)0x0150, (short)0x00C8, (short)0x0058, + (short)0x0058, (short)0x0038, (short)0x0000, (short)0xFF50, (short)0xFF00, (short)0xFEF8, (short)0xFE80, (short)0xFDB8, + (short)0xFD70, (short)0xFD00, (short)0xFC90, (short)0xFC40, (short)0xFC28, (short)0xFC58, (short)0xFC98, (short)0xFD10, + (short)0xFD78, (short)0xFDE0, (short)0xFE80, (short)0xFF08, (short)0xFF60, (short)0xFFD0, (short)0x0030, (short)0x0068, + (short)0x0110, (short)0x0198, (short)0x01C0, (short)0x0208, (short)0x0260, (short)0x0280, (short)0x0320, (short)0x0390, + (short)0x0398, (short)0x0410, (short)0x0488, (short)0x04A0, (short)0x0448, (short)0x0408, (short)0x03E0, (short)0x03C8, + (short)0x0398, (short)0x0350, (short)0x0308, (short)0x02C8, (short)0x0278, (short)0x01D8, (short)0x0148, (short)0x00E8, + (short)0x0040, (short)0xFFA0, (short)0xFF50, (short)0xFDC0, (short)0xFC88, (short)0xFC30, (short)0xFB88, (short)0xFAA8, + (short)0xFA50, (short)0xFA30, (short)0xFA40, (short)0xFA70, (short)0xFAB8, (short)0xFAE0, (short)0xFB28, (short)0xFB58, + (short)0xFB80, (short)0xFBB0, (short)0xFC00, (short)0xFC80, (short)0xFCF0, (short)0xFDB8, (short)0xFE58, (short)0xFED8, + (short)0x0008, (short)0x0100, (short)0x0180, (short)0x01D0, (short)0x0210, (short)0x0248, (short)0x0238, (short)0x0200, + (short)0x01D0, (short)0x02D0, (short)0x03A0, (short)0x03D8, (short)0x03C0, (short)0x03D8, (short)0x03F8, (short)0x0370, + (short)0x02C0, (short)0x0258, (short)0x01B8, (short)0x0120, (short)0x0090, (short)0x0088, (short)0x00A8, (short)0x00A8, + (short)0x0088, (short)0x0068, (short)0x0060, (short)0xFFE0, (short)0xFF00, (short)0xFE50, (short)0xFDC8, (short)0xFCF0, + (short)0xFC30, (short)0xFBB0, (short)0xFBD8, (short)0xFC20, (short)0xFC58, (short)0xFC30, (short)0xFC40, (short)0xFC78, + (short)0xFCC0, (short)0xFCE8, (short)0xFD10, (short)0xFD48, (short)0xFD88, (short)0xFDE8, (short)0xFF10, (short)0x0020, + (short)0x0110, (short)0x01B8, (short)0x0248, (short)0x02C0, (short)0x0358, (short)0x03B8, (short)0x03C8, (short)0x0320, + (short)0x0288, (short)0x0280, (short)0x0300, (short)0x0340, (short)0x0320, (short)0x0380, (short)0x03F8, (short)0x0418, + (short)0x0378, (short)0x02E0, (short)0x0288, (short)0x0280, (short)0x0238, (short)0x01D0, (short)0x0168, (short)0x0138, + (short)0x0110, (short)0x0140, (short)0x0148, (short)0x0150, (short)0x00A8, (short)0x0010, (short)0xFFB0, (short)0xFEB8, + (short)0xFDE0, (short)0xFD48, (short)0xFCE8, (short)0xFCA8, (short)0xFC78, (short)0xFC48, (short)0xFC50, (short)0xFC70, + (short)0xFCA8, (short)0xFCE8, (short)0xFD28, (short)0xFDD0, (short)0xFE70, (short)0xFED8, (short)0x0040, (short)0x0188, + (short)0x0258, (short)0x03C0, (short)0x04F0, (short)0x05B8, (short)0x0638, (short)0x0670, (short)0x0690, (short)0x0708, + (short)0x0708, (short)0x06B8, (short)0x0660, (short)0x0650, (short)0x0630, (short)0x05C8, (short)0x0578, (short)0x0548, + (short)0x0508, (short)0x0470, (short)0x03D0, (short)0x0350, (short)0x0278, (short)0x01A0, (short)0x00F8, (short)0x00B0, + (short)0x0078, (short)0x0030, (short)0xFFE8, (short)0xFFC8, (short)0xFFB8, (short)0xFED0, (short)0xFE08, (short)0xFD98, + (short)0xFC70, (short)0xFB60, (short)0xFAA8, (short)0xFA10, (short)0xF9B8, (short)0xF980, (short)0xF9A0, (short)0xFA00, + (short)0xFA68, (short)0xFB90, (short)0xFCB8, (short)0xFD98, (short)0xFE68, (short)0xFF18, (short)0xFFC0, (short)0x0078, + (short)0x00F8, (short)0x0218, (short)0x0320, (short)0x03C0, (short)0x0478, (short)0x0510, (short)0x0570, (short)0x05D8, + (short)0x05E0, (short)0x05B8, (short)0x0508, (short)0x0468, (short)0x03E0, (short)0x02F0, (short)0x0218, (short)0x0168, + (short)0x00F0, (short)0x0060, (short)0xFFD0, (short)0xFF58, (short)0xFEC0, (short)0xFE48, (short)0xFDB0, (short)0xFD58, + (short)0xFD38, (short)0xFCD8, (short)0xFC80, (short)0xFC50, (short)0xFC08, (short)0xFB48, (short)0xFA98, (short)0xF9F8, + (short)0xF8F8, (short)0xF810, (short)0xF7F8, (short)0xF818, (short)0xF848, (short)0xF8E8, (short)0xF9E0, (short)0xFB08, + (short)0xFC38, (short)0xFD10, (short)0xFDE8, (short)0xFF10, (short)0xFFD0, (short)0x0048, (short)0x00E0, (short)0x0160, + (short)0x01B8, (short)0x01C8, (short)0x01E0, (short)0x0200, (short)0x0228, (short)0x0240, (short)0x0240, (short)0x0240, + (short)0x0260, (short)0x0280, (short)0x0280, (short)0x02F0, (short)0x0370, (short)0x03C8, (short)0x03C8, (short)0x03A8, + (short)0x03A0, (short)0x02F8, (short)0x0220, (short)0x0150, (short)0x0098, (short)0xFFE0, (short)0xFF20, (short)0xFEA0, + (short)0xFE50, (short)0xFE18, (short)0xFD38, (short)0xFC60, (short)0xFBE0, (short)0xFAC8, (short)0xF9A0, (short)0xF8B8, + (short)0xF830, (short)0xF888, (short)0xF8B8, (short)0xF908, (short)0xFA80, (short)0xFBF8, (short)0xFD48, (short)0xFEC8, + (short)0x0040, (short)0x01B0, (short)0x0298, (short)0x0338, (short)0x03C0, (short)0x0470, (short)0x0520, (short)0x0588, + (short)0x0610, (short)0x0688, (short)0x06C8, (short)0x0670, (short)0x05E8, (short)0x0578, (short)0x0580, (short)0x0578, + (short)0x0528, (short)0x0498, (short)0x0408, (short)0x0390, (short)0x03F8, (short)0x0458, (short)0x0488, (short)0x0468, + (short)0x0450, (short)0x0458, (short)0x03A8, (short)0x02D0, (short)0x0210, (short)0x0158, (short)0x0088, (short)0xFFA8, + (short)0xFF00, (short)0xFE88, (short)0xFE30, (short)0xFD88, (short)0xFCB8, (short)0xFC28, (short)0xFB30, (short)0xF9F0, + (short)0xF8E8, (short)0xF890, (short)0xF890, (short)0xF8C0, (short)0xF978, (short)0xFA78, (short)0xFBE8, (short)0xFD20, + (short)0xFE28, (short)0xFF60, (short)0x00D8, (short)0x0220, (short)0x02F8, (short)0x0378, (short)0x03E0, (short)0x0438, + (short)0x0488, (short)0x0498, (short)0x04A8, (short)0x0480, (short)0x0440, (short)0x03C0, (short)0x02D8, (short)0x01E8, + (short)0x0140, (short)0x00D8, (short)0x0068, (short)0xFFE0, (short)0x0068, (short)0x0130, (short)0x0228, (short)0x0260, + (short)0x0278, (short)0x02D0, (short)0x02D8, (short)0x0290, (short)0x01E0, (short)0x00D0, (short)0xFFE0, (short)0xFEF8, + (short)0xFE08, (short)0xFD28, (short)0xFC88, (short)0xFBE0, (short)0xFB60, (short)0xFAD8, (short)0xFA08, (short)0xF978, + (short)0xF8E8, (short)0xF8B0, (short)0xF8B0, (short)0xF8D0, (short)0xF9D0, (short)0xFAF8, (short)0xFC18, (short)0xFDB0, + (short)0xFF38, (short)0x00A0, (short)0x01F8, (short)0x02F8, (short)0x03C0, (short)0x0460, (short)0x04B8, (short)0x04C8, + (short)0x04C8, (short)0x04C0, (short)0x0498, (short)0x0490, (short)0x0478, (short)0x0448, (short)0x0420, (short)0x03F8, + (short)0x0328, (short)0x0238, (short)0x01B0, (short)0x0170, (short)0x0128, (short)0x0090, (short)0x00E8, (short)0x01B8, + (short)0x02B8, (short)0x0280, (short)0x0218, (short)0x0218, (short)0x01F0, (short)0x0148, (short)0x0000, (short)0xFEC0, + (short)0xFE08, (short)0xFD70, (short)0xFCA0, (short)0xFBF0, (short)0xFBC0, (short)0xFBA0, (short)0xFB80, (short)0xFB18, + (short)0xFB28, (short)0xFB98, (short)0xFBC0, (short)0xFBD0, (short)0xFC08, (short)0xFC78, (short)0xFDC8, (short)0xFEC8, + (short)0xFF78, (short)0x00D0, (short)0x0238, (short)0x0360, (short)0x0398, (short)0x0360, (short)0x0368, (short)0x0380, + (short)0x0318, (short)0x0250, (short)0x0208, (short)0x0220, (short)0x0218, (short)0x01F0, (short)0x01C8, (short)0x0210, + (short)0x0270, (short)0x0270, (short)0x0240, (short)0x0290, (short)0x0310, (short)0x0360, (short)0x0340, (short)0x0310, + (short)0x0318, (short)0x0320, (short)0x02D8, (short)0x0240, (short)0x0158, (short)0x00A0, (short)0x0008, (short)0xFF30, + (short)0xFE50, (short)0xFDA8, (short)0xFD28, (short)0xFCC8, (short)0xFC60, (short)0xFBA8, (short)0xFB40, (short)0xFB10, + (short)0xFB18, (short)0xFB28, (short)0xFB48, (short)0xFB68, (short)0xFBA8, (short)0xFBF8, (short)0xFCB8, (short)0xFD78, + (short)0xFE00, (short)0xFE88, (short)0xFF30, (short)0xFF98, (short)0xFFC8, (short)0xFFE8, (short)0x0050, (short)0x00B0, + (short)0x00E0, (short)0x0040, (short)0xFF68, (short)0xFED8, (short)0xFEE8, (short)0xFEE0, (short)0xFE90, (short)0xFEA8, + (short)0xFF88, (short)0x0080, (short)0x0188, (short)0x0208, (short)0x0290, (short)0x0390, (short)0x0438, (short)0x0450, + (short)0x0428, (short)0x03F8, (short)0x03E0, (short)0x0388, (short)0x02E0, (short)0x0240, (short)0x0190, (short)0x00D0, + (short)0x0000, (short)0x0000, (short)0x0018, (short)0x00FF, (short)0x0068, (short)0x00FE, (short)0x00F8, (short)0x00FD +}; + +gsm_byte gsm_enc_gsmdata[] = { + 0xD5, 0x1F, 0x74, 0x21, 0xA0, 0x50, 0x40, 0xC9, 0x24, 0x7B, 0xFA, 0x6B, 0x52, 0xE0, 0xB6, 0xD6, + 0x8E, 0xB9, 0x2B, 0xAE, 0xE0, 0x8B, 0x23, 0x52, 0x3B, 0x13, 0x86, 0xE0, 0x14, 0x4A, 0x41, 0x44, + 0x32, 0xD3, 0xA1, 0x83, 0xA1, 0x1D, 0xA6, 0x80, 0xBA, 0xD2, 0x96, 0x26, 0xFB, 0x84, 0x80, 0x6D, + 0x9C, 0x25, 0x1D, 0x9B, 0xAA, 0xC0, 0xBB, 0x4C, 0x95, 0xB9, 0x53, 0xAE, 0xA0, 0xB6, 0xE4, 0x46, + 0x37, 0x1B, 0xD4, 0xA5, 0x7B, 0x1D, 0x22, 0x97, 0x00, 0xBA, 0xA5, 0x6D, 0xD2, 0xA1, 0x7E, 0xC0, + 0xB9, 0x25, 0xD2, 0xB4, 0x94, 0x9E, 0xE0, 0x3E, 0xDE, 0xED, 0xD6, 0xD2, 0xE2, 0xC0, 0xD7, 0x5D, + 0x8D, 0x59, 0xAC, 0xD3, 0xE4, 0x83, 0x95, 0x59, 0xC0, 0xA1, 0x48, 0xD2, 0x66, 0xC7, 0x2C, 0x9E, + 0xA0, 0x2A, 0xD3, 0xEE, 0x45, 0x1C, 0x80, 0xE0, 0x6B, 0x34, 0x8C, 0x4B, 0x29, 0xCB, 0x00, 0xBA, + 0xF6, 0x0D, 0x26, 0x9A, 0xD3, 0xA4, 0x82, 0x9D, 0x63, 0x7A, 0xC0, 0x67, 0x24, 0xBA, 0xD6, 0x7C, + 0xC2, 0xC0, 0x37, 0x20, 0x4F, 0x10, 0xE0, 0xC7, 0x80, 0x6A, 0x77, 0x63, 0xBE, 0x6B, 0x5A, 0xC0, + 0xB5, 0x34, 0xD1, 0x34, 0x9C, 0xD4, 0xE8, 0x56, 0xB2, 0x58, 0x5F, 0x00, 0xB7, 0xAF, 0x92, 0x12, + 0x90, 0xD5, 0xA4, 0x39, 0x23, 0x4E, 0x46, 0x87, 0x51, 0xAC, 0xD8, 0xDB, 0x6D, 0xCB, 0x17, 0x50, + 0x89, 0x7B, 0x44, 0x28, 0x03, 0x6B, 0xD5, 0xA9, 0x36, 0x36, 0xD9, 0x6B, 0xA8, 0x93, 0x3A, 0x96, + 0xEE, 0xFF, 0x67, 0x8B, 0x36, 0xDA, 0x09, 0xB4, 0x99, 0x67, 0x2B, 0x88, 0xE4, 0xB5, 0xA5, 0xDA, + 0x65, 0x47, 0xDA, 0x1E, 0x96, 0xFA, 0xEC, 0xD5, 0xA9, 0x45, 0x63, 0x1A, 0xCB, 0xC9, 0x48, 0x9D, + 0x83, 0x5F, 0x6F, 0xCB, 0x08, 0x1B, 0x97, 0xC9, 0x18, 0x0A, 0x63, 0xCB, 0xA6, 0xE1, 0x84, 0xF5, + 0x62, 0x61, 0x6A, 0x84, 0xDC, 0xB6, 0x37, 0x9E, 0xD6, 0xAB, 0x3C, 0x53, 0x93, 0xC1, 0x2A, 0xAA, + 0x81, 0x8D, 0x6B, 0x65, 0x60, 0xA8, 0xFB, 0x2E, 0x22, 0x59, 0x74, 0x61, 0xA6, 0x5D, 0x73, 0x94, + 0xF8, 0xE4, 0xC1, 0x46, 0x26, 0x5E, 0x8A, 0x86, 0xED, 0xD4, 0xA6, 0x2D, 0x57, 0x6B, 0xBE, 0xE8, + 0x58, 0xDA, 0x3D, 0x98, 0x99, 0xBE, 0xA8, 0xC2, 0xDB, 0x6A, 0x2E, 0x51, 0x62, 0xE5, 0x80, 0x58, + 0x76, 0xB8, 0xE4, 0x6C, 0x84, 0xCA, 0x98, 0x06, 0x0B, 0xFC, 0xD2, 0x66, 0x7C, 0x62, 0x3A, 0x5B, + 0xC5, 0xDF, 0x7D, 0x75, 0x49, 0x1E, 0x52, 0xC7, 0x55, 0xF7, 0x84, 0xA6, 0xDA, 0x5D, 0x43, 0x26, + 0x85, 0x98, 0xD8, 0x8F, 0xB6, 0xC5, 0x28, 0xEB, 0x3E, 0x75, 0x04, 0xD2, 0x27, 0xBA, 0x2A, 0x2B, + 0xB7, 0x03, 0x13, 0x45, 0x35, 0x1B, 0x78, 0x5F, 0xC3, 0xBA, 0xDB, 0xAE, 0x27, 0xC2, 0x5E, 0xA4, + 0x50, 0x8C, 0x8A, 0xBB, 0x4F, 0x60, 0xC3, 0xEE, 0x41, 0x46, 0x4A, 0xDF, 0xD2, 0x27, 0xB2, 0xAD, + 0xEB, 0x5F, 0x43, 0x4C, 0x6A, 0x09, 0x2A, 0xCC, 0xB7, 0x47, 0x2A, 0xB9, 0x91, 0xB6, 0xD4, 0x5B, + 0x25, 0x58, 0xD8, 0xFD, 0x46, 0x95, 0x5A, 0xC3, 0x27, 0x5B, 0x3F, 0xFB, 0x12, 0xD2, 0x26, 0xC3, + 0xA9, 0xA1, 0xB6, 0xA2, 0xCB, 0x1B, 0xD0, 0x73, 0xE4, 0xBA, 0xA1, 0xE9, 0x05, 0xBE, 0x79, 0x23, + 0xA4, 0xC2, 0x3A, 0x4B, 0x11, 0xE5, 0x68, 0xC4, 0xC1, 0xBA, 0xC1, 0xCC, 0x8B, 0x02, 0xD2, 0x63, + 0x6C, 0xEE, 0x19, 0x5E, 0xE1, 0xB6, 0x4C, 0x1A, 0xB4, 0x5E, 0xF0, 0xC2, 0x27, 0x20, 0x55, 0xBD, + 0x6D, 0x64, 0xE1, 0xC7, 0x45, 0xA9, 0x65, 0x6D, 0x7D, 0x42, 0x56, 0xD8, 0xB2, 0xB6, 0xEC, 0xD3, + 0x61, 0x5B, 0x62, 0x61, 0x60, 0xA1, 0x5B, 0xD6, 0x15, 0x29, 0x09, 0x6C, 0xA1, 0x3E, 0xAD, 0x65, + 0x34, 0xC3, 0xC0, 0xC1, 0x22, 0x6D, 0x4C, 0x57, 0x10, 0xDB, 0x41, 0xD2, 0xE1, 0x77, 0x64, 0xF7, + 0xD3, 0x21, 0x73, 0xA9, 0x29, 0x58, 0xC1, 0xA1, 0x5A, 0x52, 0xB7, 0x32, 0x64, 0xC1, 0x67, 0x42, + 0x74, 0x2C, 0xDC, 0x61, 0x61, 0x65, 0x8B, 0xCB, 0x04, 0xE5, 0x60, 0xC1, 0xC9, 0x5E, 0x8E, 0x36, + 0x83, 0xD2, 0xA2, 0x83, 0xA9, 0xD9, 0xCD, 0x21, 0xB9, 0x25, 0xCD, 0xE6, 0x1D, 0x60, 0xA1, 0xB4, + 0xAA, 0x8F, 0xBA, 0x75, 0xC3, 0x01, 0x0B, 0x3B, 0x51, 0xDB, 0xEC, 0x62, 0xE1, 0x38, 0xCD, 0x40, + 0x3B, 0xD3, 0xD2, 0x26, 0x94, 0x29, 0xD2, 0x61, 0x21, 0x6B, 0x4A, 0x8D, 0x24, 0xB5, 0xBB, 0x21, + 0x12, 0xA5, 0x99, 0xA5, 0x1A, 0xCA, 0xA1, 0xEF, 0x5D, 0xAA, 0xAE, 0xD3, 0x64, 0xE1, 0xA3, 0x6B, + 0xAE, 0x35, 0x39, 0xD2, 0x66, 0x73, 0xB6, 0x90, 0xC6, 0xC1, 0x32, 0xD1, 0xBA, 0xC9, 0x25, 0x65, + 0x81, 0xA8, 0xD2, 0xB1, 0xE7, 0x18, 0xBE, 0xC0, 0xFC, 0xE4, 0x85, 0xB5, 0x06, 0xB4, 0x81, 0x35, + 0x46, 0xB6, 0xC8, 0x9B +}; + +#endif /* end of include guard: DATA_H */ diff --git a/all_pairs/source/gsm_enc/gsm_enc.c b/all_pairs/source/gsm_enc/gsm_enc.c new file mode 100644 index 0000000..cdac899 --- /dev/null +++ b/all_pairs/source/gsm_enc/gsm_enc.c @@ -0,0 +1,2072 @@ +/* gsm_enc_encode.c */ +/* + * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische + * Universitaet Berlin. See the accompanying file "COPYRIGHT" for + * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + */ + +#include "../extra.h" +#include "private.h" + +/* + * Prototypes from add.c + */ + +extern word gsm_enc_div (word num, word denum); + +extern word gsm_enc_sub (word a, word b); + +extern word gsm_enc_norm ( longword a ); + +extern word gsm_enc_asl (word a, int n); + +extern word gsm_enc_asr (word a, int n); + +/* + * Inlined functions from add.h + */ + +#define GSM_MULT_R(a, b) /* word a, word b, !(a == b == MIN_WORD) */ \ + (SASR( ((longword)(a) * (longword)(b) + 16384), 15 )) + +# define GSM_MULT(a,b) /* word a, word b, !(a == b == MIN_WORD) */ \ + (SASR( ((longword)(a) * (longword)(b)), 15 )) + +# define GSM_L_ADD(a, b) \ + ( (a) < 0 ? ( (b) >= 0 ? (a) + (b) \ + : (utmp = (ulongword)-((a) + 1) + (ulongword)-((b) + 1)) \ + >= MAX_LONGWORD ? MIN_LONGWORD : -(longword)utmp-2 ) \ + : ((b) <= 0 ? (a) + (b) \ + : (utmp = (ulongword)(a) + (ulongword)(b)) >= (ulongword)MAX_LONGWORD \ + ? MAX_LONGWORD : a + b)) + +#define GSM_ADD(a, b) \ + ((ulongword)((ltmp = (longword)(a) + (longword)(b)) - MIN_WORD) > \ + MAX_WORD - MIN_WORD ? (ltmp > 0 ? MAX_WORD : MIN_WORD) : ltmp) + +# define GSM_SUB(a, b) \ + ((ltmp = (longword)(a) - (longword)(b)) >= MAX_WORD \ + ? MAX_WORD : ltmp <= MIN_WORD ? MIN_WORD : ltmp) + +# define GSM_ABS(a) ((a) < 0 ? ((a) == MIN_WORD ? MAX_WORD : -(a)) : (a)) + +#define saturate(x) \ + ((x) < MIN_WORD ? MIN_WORD : (x) > MAX_WORD ? MAX_WORD: (x)) + +/* Use these if necessary: + +# define GSM_MULT_R(a, b) gsm_enc_mult_r(a, b) +# define GSM_MULT(a, b) gsm_enc_mult(a, b) +# define GSM_L_MULT(a, b) gsm_enc_L_mult(a, b) + +# define GSM_L_ADD(a, b) gsm_enc_L_add(a, b) +# define GSM_ADD(a, b) gsm_enc_add(a, b) +# define GSM_SUB(a, b) gsm_enc_sub(a, b) + +# define GSM_ABS(a) gsm_enc_abs(a) +*/ + +/* + * More prototypes from implementations.. + */ +extern void gsm_enc_Gsm_Coder ( + struct gsm_state * S, + word * s, /* [0..159] samples IN */ + word * LARc, /* [0..7] LAR coefficients OUT */ + word * Nc, /* [0..3] LTP lag OUT */ + word * bc, /* [0..3] coded LTP gain OUT */ + word * Mc, /* [0..3] RPE grid selection OUT */ + word * xmaxc,/* [0..3] Coded maximum amplitude OUT */ + word * xMc /* [13*4] normalized RPE samples OUT */); + +extern void gsm_enc_Gsm_Long_Term_Predictor ( /* 4x for 160 samples */ + word * d, /* [0..39] residual signal IN */ + word * dp, /* [-120..-1] d' IN */ + word * e, /* [0..40] OUT */ + word * dpp, /* [0..40] OUT */ + word * Nc, /* correlation lag OUT */ + word * bc /* gain factor OUT */); + +extern void gsm_enc_Gsm_LPC_Analysis ( + word * s, /* 0..159 signals IN/OUT */ + word * LARc); /* 0..7 LARc's OUT */ + +extern void gsm_enc_Gsm_Preprocess ( + struct gsm_state * S, + word * s, word * so); + +extern void gsm_enc_Gsm_Short_Term_Analysis_Filter ( + struct gsm_state * S, + word * LARc, /* coded log area ratio [0..7] IN */ + word * d /* st res. signal [0..159] IN/OUT */); + +void gsm_enc_Gsm_RPE_Encoding ( + word * e, /* -5..-1][0..39][40..44 IN/OUT */ + word * xmaxc, /* OUT */ + word * Mc, /* OUT */ + word * xMc); /* [0..12] OUT */ + + +/**************** end #include "private.h" **********************************/ + +/* + * Interface + */ + +typedef struct gsm_state * gsm; +typedef short gsm_signal; /* signed 16 bit */ +typedef unsigned char gsm_byte; +typedef gsm_byte gsm_frame[33]; /* 33 * 8 bits */ + +#define GSM_MAGIC 0xD /* 13 kbit/s RPE-LTP */ + +#define GSM_PATCHLEVEL 6 +#define GSM_MINOR 0 +#define GSM_MAJOR 1 + +#include "data.h" + +extern void gsm_enc_encode (gsm, gsm_signal *, gsm_byte *); + +extern int gsm_enc_explode (gsm, gsm_byte *, gsm_signal *); +extern void gsm_enc_implode (gsm, gsm_signal *, gsm_byte *); + + +/******************* end #include "gsm.h" **********************************/ + +#define SAMPLES 20 + +/* + Forward declaration of global variables +*/ + +struct gsm_state gsm_enc_state; +gsm gsm_enc_state_ptr; +volatile int gsm_enc_result; + + +/* add.c */ + +word gsm_enc_sub (word a, word b) +{ + longword diff = (longword)a - (longword)b; + return saturate(diff); +} + + +unsigned char gsm_enc_bitoff[ 256 ] = { + 8, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +void gsm_enc_encode (gsm s, gsm_signal * source, gsm_byte * c) +{ + word LARc[8], Nc[4], Mc[4], bc[4], xmaxc[4], xmc[13*4]; + + gsm_enc_Gsm_Coder(s, source, LARc, Nc, bc, Mc, xmaxc, xmc); + + + /* variable size + + GSM_MAGIC 4 + + LARc[0] 6 + LARc[1] 6 + LARc[2] 5 + LARc[3] 5 + LARc[4] 4 + LARc[5] 4 + LARc[6] 3 + LARc[7] 3 + + Nc[0] 7 + bc[0] 2 + Mc[0] 2 + xmaxc[0] 6 + xmc[0] 3 + xmc[1] 3 + xmc[2] 3 + xmc[3] 3 + xmc[4] 3 + xmc[5] 3 + xmc[6] 3 + xmc[7] 3 + xmc[8] 3 + xmc[9] 3 + xmc[10] 3 + xmc[11] 3 + xmc[12] 3 + + Nc[1] 7 + bc[1] 2 + Mc[1] 2 + xmaxc[1] 6 + xmc[13] 3 + xmc[14] 3 + xmc[15] 3 + xmc[16] 3 + xmc[17] 3 + xmc[18] 3 + xmc[19] 3 + xmc[20] 3 + xmc[21] 3 + xmc[22] 3 + xmc[23] 3 + xmc[24] 3 + xmc[25] 3 + + Nc[2] 7 + bc[2] 2 + Mc[2] 2 + xmaxc[2] 6 + xmc[26] 3 + xmc[27] 3 + xmc[28] 3 + xmc[29] 3 + xmc[30] 3 + xmc[31] 3 + xmc[32] 3 + xmc[33] 3 + xmc[34] 3 + xmc[35] 3 + xmc[36] 3 + xmc[37] 3 + xmc[38] 3 + + Nc[3] 7 + bc[3] 2 + Mc[3] 2 + xmaxc[3] 6 + xmc[39] 3 + xmc[40] 3 + xmc[41] 3 + xmc[42] 3 + xmc[43] 3 + xmc[44] 3 + xmc[45] 3 + xmc[46] 3 + xmc[47] 3 + xmc[48] 3 + xmc[49] 3 + xmc[50] 3 + xmc[51] 3 + */ + + + *c++ = ((GSM_MAGIC & 0xF) << 4) /* 1 */ + | ((LARc[0] >> 2) & 0xF); + *c++ = ((LARc[0] & 0x3) << 6) + | (LARc[1] & 0x3F); + *c++ = ((LARc[2] & 0x1F) << 3) + | ((LARc[3] >> 2) & 0x7); + *c++ = ((LARc[3] & 0x3) << 6) + | ((LARc[4] & 0xF) << 2) + | ((LARc[5] >> 2) & 0x3); + *c++ = ((LARc[5] & 0x3) << 6) + | ((LARc[6] & 0x7) << 3) + | (LARc[7] & 0x7); + *c++ = ((Nc[0] & 0x7F) << 1) + | ((bc[0] >> 1) & 0x1); + *c++ = ((bc[0] & 0x1) << 7) + | ((Mc[0] & 0x3) << 5) + | ((xmaxc[0] >> 1) & 0x1F); + *c++ = ((xmaxc[0] & 0x1) << 7) + | ((xmc[0] & 0x7) << 4) + | ((xmc[1] & 0x7) << 1) + | ((xmc[2] >> 2) & 0x1); + *c++ = ((xmc[2] & 0x3) << 6) + | ((xmc[3] & 0x7) << 3) + | (xmc[4] & 0x7); + *c++ = ((xmc[5] & 0x7) << 5) /* 10 */ + | ((xmc[6] & 0x7) << 2) + | ((xmc[7] >> 1) & 0x3); + *c++ = ((xmc[7] & 0x1) << 7) + | ((xmc[8] & 0x7) << 4) + | ((xmc[9] & 0x7) << 1) + | ((xmc[10] >> 2) & 0x1); + *c++ = ((xmc[10] & 0x3) << 6) + | ((xmc[11] & 0x7) << 3) + | (xmc[12] & 0x7); + *c++ = ((Nc[1] & 0x7F) << 1) + | ((bc[1] >> 1) & 0x1); + *c++ = ((bc[1] & 0x1) << 7) + | ((Mc[1] & 0x3) << 5) + | ((xmaxc[1] >> 1) & 0x1F); + *c++ = ((xmaxc[1] & 0x1) << 7) + | ((xmc[13] & 0x7) << 4) + | ((xmc[14] & 0x7) << 1) + | ((xmc[15] >> 2) & 0x1); + *c++ = ((xmc[15] & 0x3) << 6) + | ((xmc[16] & 0x7) << 3) + | (xmc[17] & 0x7); + *c++ = ((xmc[18] & 0x7) << 5) + | ((xmc[19] & 0x7) << 2) + | ((xmc[20] >> 1) & 0x3); + *c++ = ((xmc[20] & 0x1) << 7) + | ((xmc[21] & 0x7) << 4) + | ((xmc[22] & 0x7) << 1) + | ((xmc[23] >> 2) & 0x1); + *c++ = ((xmc[23] & 0x3) << 6) + | ((xmc[24] & 0x7) << 3) + | (xmc[25] & 0x7); + *c++ = ((Nc[2] & 0x7F) << 1) /* 20 */ + | ((bc[2] >> 1) & 0x1); + *c++ = ((bc[2] & 0x1) << 7) + | ((Mc[2] & 0x3) << 5) + | ((xmaxc[2] >> 1) & 0x1F); + *c++ = ((xmaxc[2] & 0x1) << 7) + | ((xmc[26] & 0x7) << 4) + | ((xmc[27] & 0x7) << 1) + | ((xmc[28] >> 2) & 0x1); + *c++ = ((xmc[28] & 0x3) << 6) + | ((xmc[29] & 0x7) << 3) + | (xmc[30] & 0x7); + *c++ = ((xmc[31] & 0x7) << 5) + | ((xmc[32] & 0x7) << 2) + | ((xmc[33] >> 1) & 0x3); + *c++ = ((xmc[33] & 0x1) << 7) + | ((xmc[34] & 0x7) << 4) + | ((xmc[35] & 0x7) << 1) + | ((xmc[36] >> 2) & 0x1); + *c++ = ((xmc[36] & 0x3) << 6