1/*
2 * tstotv - tables for converting from NTP time stamps to struct timeval
3 */
4
5#include "ntp_types.h"
6
7/*
8 * Tables to convert from a time stamp fraction to usecs.  Note that
9 * the units of these tables are actually (usec<<3).  We carry three
10 * guard bits so that the result can be properly truncated (or rounded)
11 * to be correct to the least significant bit.
12 *
13 * These tables are rounded.
14 */
15
16long tstoushi[256] = {
17	0x000000, 0x007a12, 0x00f424, 0x016e36,
18	0x01e848, 0x02625a, 0x02dc6c, 0x03567e,
19	0x03d090, 0x044aa2, 0x04c4b4, 0x053ec6,
20	0x05b8d8, 0x0632ea, 0x06acfc, 0x07270e,
21	0x07a120, 0x081b32, 0x089544, 0x090f56,
22	0x098968, 0x0a037a, 0x0a7d8c, 0x0af79e,
23	0x0b71b0, 0x0bebc2, 0x0c65d4, 0x0cdfe6,
24	0x0d59f8, 0x0dd40a, 0x0e4e1c, 0x0ec82e,
25	0x0f4240, 0x0fbc52, 0x103664, 0x10b076,
26	0x112a88, 0x11a49a, 0x121eac, 0x1298be,
27	0x1312d0, 0x138ce2, 0x1406f4, 0x148106,
28	0x14fb18, 0x15752a, 0x15ef3c, 0x16694e,
29	0x16e360, 0x175d72, 0x17d784, 0x185196,
30	0x18cba8, 0x1945ba, 0x19bfcc, 0x1a39de,
31	0x1ab3f0, 0x1b2e02, 0x1ba814, 0x1c2226,
32	0x1c9c38, 0x1d164a, 0x1d905c, 0x1e0a6e,
33	0x1e8480, 0x1efe92, 0x1f78a4, 0x1ff2b6,
34	0x206cc8, 0x20e6da, 0x2160ec, 0x21dafe,
35	0x225510, 0x22cf22, 0x234934, 0x23c346,
36	0x243d58, 0x24b76a, 0x25317c, 0x25ab8e,
37	0x2625a0, 0x269fb2, 0x2719c4, 0x2793d6,
38	0x280de8, 0x2887fa, 0x29020c, 0x297c1e,
39	0x29f630, 0x2a7042, 0x2aea54, 0x2b6466,
40	0x2bde78, 0x2c588a, 0x2cd29c, 0x2d4cae,
41	0x2dc6c0, 0x2e40d2, 0x2ebae4, 0x2f34f6,
42	0x2faf08, 0x30291a, 0x30a32c, 0x311d3e,
43	0x319750, 0x321162, 0x328b74, 0x330586,
44	0x337f98, 0x33f9aa, 0x3473bc, 0x34edce,
45	0x3567e0, 0x35e1f2, 0x365c04, 0x36d616,
46	0x375028, 0x37ca3a, 0x38444c, 0x38be5e,
47	0x393870, 0x39b282, 0x3a2c94, 0x3aa6a6,
48	0x3b20b8, 0x3b9aca, 0x3c14dc, 0x3c8eee,
49	0x3d0900, 0x3d8312, 0x3dfd24, 0x3e7736,
50	0x3ef148, 0x3f6b5a, 0x3fe56c, 0x405f7e,
51	0x40d990, 0x4153a2, 0x41cdb4, 0x4247c6,
52	0x42c1d8, 0x433bea, 0x43b5fc, 0x44300e,
53	0x44aa20, 0x452432, 0x459e44, 0x461856,
54	0x469268, 0x470c7a, 0x47868c, 0x48009e,
55	0x487ab0, 0x48f4c2, 0x496ed4, 0x49e8e6,
56	0x4a62f8, 0x4add0a, 0x4b571c, 0x4bd12e,
57	0x4c4b40, 0x4cc552, 0x4d3f64, 0x4db976,
58	0x4e3388, 0x4ead9a, 0x4f27ac, 0x4fa1be,
59	0x501bd0, 0x5095e2, 0x510ff4, 0x518a06,
60	0x520418, 0x527e2a, 0x52f83c, 0x53724e,
61	0x53ec60, 0x546672, 0x54e084, 0x555a96,
62	0x55d4a8, 0x564eba, 0x56c8cc, 0x5742de,
63	0x57bcf0, 0x583702, 0x58b114, 0x592b26,
64	0x59a538, 0x5a1f4a, 0x5a995c, 0x5b136e,
65	0x5b8d80, 0x5c0792, 0x5c81a4, 0x5cfbb6,
66	0x5d75c8, 0x5defda, 0x5e69ec, 0x5ee3fe,
67	0x5f5e10, 0x5fd822, 0x605234, 0x60cc46,
68	0x614658, 0x61c06a, 0x623a7c, 0x62b48e,
69	0x632ea0, 0x63a8b2, 0x6422c4, 0x649cd6,
70	0x6516e8, 0x6590fa, 0x660b0c, 0x66851e,
71	0x66ff30, 0x677942, 0x67f354, 0x686d66,
72	0x68e778, 0x69618a, 0x69db9c, 0x6a55ae,
73	0x6acfc0, 0x6b49d2, 0x6bc3e4, 0x6c3df6,
74	0x6cb808, 0x6d321a, 0x6dac2c, 0x6e263e,
75	0x6ea050, 0x6f1a62, 0x6f9474, 0x700e86,
76	0x708898, 0x7102aa, 0x717cbc, 0x71f6ce,
77	0x7270e0, 0x72eaf2, 0x736504, 0x73df16,
78	0x745928, 0x74d33a, 0x754d4c, 0x75c75e,
79	0x764170, 0x76bb82, 0x773594, 0x77afa6,
80	0x7829b8, 0x78a3ca, 0x791ddc, 0x7997ee
81};
82
83long tstousmid[256] = {
84	0x0000, 0x007a, 0x00f4, 0x016e, 0x01e8, 0x0262, 0x02dc, 0x0356,
85	0x03d1, 0x044b, 0x04c5, 0x053f, 0x05b9, 0x0633, 0x06ad, 0x0727,
86	0x07a1, 0x081b, 0x0895, 0x090f, 0x0989, 0x0a03, 0x0a7e, 0x0af8,
87	0x0b72, 0x0bec, 0x0c66, 0x0ce0, 0x0d5a, 0x0dd4, 0x0e4e, 0x0ec8,
88	0x0f42, 0x0fbc, 0x1036, 0x10b0, 0x112b, 0x11a5, 0x121f, 0x1299,
89	0x1313, 0x138d, 0x1407, 0x1481, 0x14fb, 0x1575, 0x15ef, 0x1669,
90	0x16e3, 0x175d, 0x17d8, 0x1852, 0x18cc, 0x1946, 0x19c0, 0x1a3a,
91	0x1ab4, 0x1b2e, 0x1ba8, 0x1c22, 0x1c9c, 0x1d16, 0x1d90, 0x1e0a,
92	0x1e84, 0x1eff, 0x1f79, 0x1ff3, 0x206d, 0x20e7, 0x2161, 0x21db,
93	0x2255, 0x22cf, 0x2349, 0x23c3, 0x243d, 0x24b7, 0x2531, 0x25ac,
94	0x2626, 0x26a0, 0x271a, 0x2794, 0x280e, 0x2888, 0x2902, 0x297c,
95	0x29f6, 0x2a70, 0x2aea, 0x2b64, 0x2bde, 0x2c59, 0x2cd3, 0x2d4d,
96	0x2dc7, 0x2e41, 0x2ebb, 0x2f35, 0x2faf, 0x3029, 0x30a3, 0x311d,
97	0x3197, 0x3211, 0x328b, 0x3306, 0x3380, 0x33fa, 0x3474, 0x34ee,
98	0x3568, 0x35e2, 0x365c, 0x36d6, 0x3750, 0x37ca, 0x3844, 0x38be,
99	0x3938, 0x39b3, 0x3a2d, 0x3aa7, 0x3b21, 0x3b9b, 0x3c15, 0x3c8f,
100	0x3d09, 0x3d83, 0x3dfd, 0x3e77, 0x3ef1, 0x3f6b, 0x3fe5, 0x405f,
101	0x40da, 0x4154, 0x41ce, 0x4248, 0x42c2, 0x433c, 0x43b6, 0x4430,
102	0x44aa, 0x4524, 0x459e, 0x4618, 0x4692, 0x470c, 0x4787, 0x4801,
103	0x487b, 0x48f5, 0x496f, 0x49e9, 0x4a63, 0x4add, 0x4b57, 0x4bd1,
104	0x4c4b, 0x4cc5, 0x4d3f, 0x4db9, 0x4e34, 0x4eae, 0x4f28, 0x4fa2,
105	0x501c, 0x5096, 0x5110, 0x518a, 0x5204, 0x527e, 0x52f8, 0x5372,
106	0x53ec, 0x5466, 0x54e1, 0x555b, 0x55d5, 0x564f, 0x56c9, 0x5743,
107	0x57bd, 0x5837, 0x58b1, 0x592b, 0x59a5, 0x5a1f, 0x5a99, 0x5b13,
108	0x5b8d, 0x5c08, 0x5c82, 0x5cfc, 0x5d76, 0x5df0, 0x5e6a, 0x5ee4,
109	0x5f5e, 0x5fd8, 0x6052, 0x60cc, 0x6146, 0x61c0, 0x623a, 0x62b5,
110	0x632f, 0x63a9, 0x6423, 0x649d, 0x6517, 0x6591, 0x660b, 0x6685,
111	0x66ff, 0x6779, 0x67f3, 0x686d, 0x68e7, 0x6962, 0x69dc, 0x6a56,
112	0x6ad0, 0x6b4a, 0x6bc4, 0x6c3e, 0x6cb8, 0x6d32, 0x6dac, 0x6e26,
113	0x6ea0, 0x6f1a, 0x6f94, 0x700f, 0x7089, 0x7103, 0x717d, 0x71f7,
114	0x7271, 0x72eb, 0x7365, 0x73df, 0x7459, 0x74d3, 0x754d, 0x75c7,
115	0x7641, 0x76bc, 0x7736, 0x77b0, 0x782a, 0x78a4, 0x791e, 0x7998
116};
117
118long tstouslo[128] = {
119	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
120	0x08, 0x09, 0x0a, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
121	0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
122	0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e,
123	0x1f, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,
124	0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d,
125	0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x33, 0x34,
126	0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
127	0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44,
128	0x45, 0x46, 0x47, 0x48, 0x48, 0x49, 0x4a, 0x4b,
129	0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53,
130	0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b,
131	0x5c, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62,
132	0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a,
133	0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x71,
134	0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79
135};
136