github.com/cloudwego/dynamicgo@v0.2.6-0.20240519101509-707f41b6b834/native/tab.h (about)

     1  /*
     2   * Copyright 2023 CloudWeGo Authors.
     3   *
     4   * Licensed under the Apache License, Version 2.0 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *     http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   */
    16  
    17  #ifndef TAB_H
    18  #define TAB_H
    19  
    20  #include "test/xassert.h"
    21  
    22  struct uint64x2
    23  {
    24      uint64_t hi;
    25      uint64_t lo;
    26  };
    27  typedef struct uint64x2 uint64x2;
    28  
    29  static const char Digits[200] = {
    30      '0',
    31      '0',
    32      '0',
    33      '1',
    34      '0',
    35      '2',
    36      '0',
    37      '3',
    38      '0',
    39      '4',
    40      '0',
    41      '5',
    42      '0',
    43      '6',
    44      '0',
    45      '7',
    46      '0',
    47      '8',
    48      '0',
    49      '9',
    50      '1',
    51      '0',
    52      '1',
    53      '1',
    54      '1',
    55      '2',
    56      '1',
    57      '3',
    58      '1',
    59      '4',
    60      '1',
    61      '5',
    62      '1',
    63      '6',
    64      '1',
    65      '7',
    66      '1',
    67      '8',
    68      '1',
    69      '9',
    70      '2',
    71      '0',
    72      '2',
    73      '1',
    74      '2',
    75      '2',
    76      '2',
    77      '3',
    78      '2',
    79      '4',
    80      '2',
    81      '5',
    82      '2',
    83      '6',
    84      '2',
    85      '7',
    86      '2',
    87      '8',
    88      '2',
    89      '9',
    90      '3',
    91      '0',
    92      '3',
    93      '1',
    94      '3',
    95      '2',
    96      '3',
    97      '3',
    98      '3',
    99      '4',
   100      '3',
   101      '5',
   102      '3',
   103      '6',
   104      '3',
   105      '7',
   106      '3',
   107      '8',
   108      '3',
   109      '9',
   110      '4',
   111      '0',
   112      '4',
   113      '1',
   114      '4',
   115      '2',
   116      '4',
   117      '3',
   118      '4',
   119      '4',
   120      '4',
   121      '5',
   122      '4',
   123      '6',
   124      '4',
   125      '7',
   126      '4',
   127      '8',
   128      '4',
   129      '9',
   130      '5',
   131      '0',
   132      '5',
   133      '1',
   134      '5',
   135      '2',
   136      '5',
   137      '3',
   138      '5',
   139      '4',
   140      '5',
   141      '5',
   142      '5',
   143      '6',
   144      '5',
   145      '7',
   146      '5',
   147      '8',
   148      '5',
   149      '9',
   150      '6',
   151      '0',
   152      '6',
   153      '1',
   154      '6',
   155      '2',
   156      '6',
   157      '3',
   158      '6',
   159      '4',
   160      '6',
   161      '5',
   162      '6',
   163      '6',
   164      '6',
   165      '7',
   166      '6',
   167      '8',
   168      '6',
   169      '9',
   170      '7',
   171      '0',
   172      '7',
   173      '1',
   174      '7',
   175      '2',
   176      '7',
   177      '3',
   178      '7',
   179      '4',
   180      '7',
   181      '5',
   182      '7',
   183      '6',
   184      '7',
   185      '7',
   186      '7',
   187      '8',
   188      '7',
   189      '9',
   190      '8',
   191      '0',
   192      '8',
   193      '1',
   194      '8',
   195      '2',
   196      '8',
   197      '3',
   198      '8',
   199      '4',
   200      '8',
   201      '5',
   202      '8',
   203      '6',
   204      '8',
   205      '7',
   206      '8',
   207      '8',
   208      '8',
   209      '9',
   210      '9',
   211      '0',
   212      '9',
   213      '1',
   214      '9',
   215      '2',
   216      '9',
   217      '3',
   218      '9',
   219      '4',
   220      '9',
   221      '5',
   222      '9',
   223      '6',
   224      '9',
   225      '7',
   226      '9',
   227      '8',
   228      '9',
   229      '9',
   230  };
   231  
   232  static inline bool is_div_pow2(uint64_t val, int32_t e)
   233  {
   234      xassert(e >= 0 && e <= 63);
   235      uint64_t mask = (1ull << e) - 1;
   236      return (val & mask) == 0;
   237  }
   238  
   239  static inline char *utoa2(char *p, uint32_t val)
   240  {
   241      p[0] = Digits[val];
   242      p[1] = Digits[val + 1];
   243      return p + 2;
   244  }
   245  
   246  static inline void copy_two_digs(char *dst, const char *src)
   247  {
   248      *(dst) = *(src);
   249      *(dst + 1) = *(src + 1);
   250  }
   251  
   252  static inline const uint64x2 pow10_ceil_sig(int32_t k)
   253  {
   254      // There are unique beta and r such that 10^k = beta 2^r and
   255      // 2^127 <= beta < 2^128, namely r = floor(log_2 10^k) - 127 and
   256      // beta = 2^-r 10^k.
   257      // Let g = ceil(beta), so (g-1) 2^r < 10^k <= g 2^r, with the latter
   258      // value being a pretty good overestimate for 10^k.
   259  
   260      // NB: Since for all the required exponents k, we have g < 2^128,
   261      //     all constants can be stored in 128-bit integers.
   262      // Reference from:
   263      //  https://github.com/abolz/Drachennest/blob/master/src/schubfach_64.cc#L151
   264  
   265  #define KMIN -292
   266  #define KMAX 324
   267      static const uint64x2 g[KMAX - KMIN + 1] = {
   268          {0xFF77B1FCBEBCDC4F, 0x25E8E89C13BB0F7B}, // -292
   269          {0x9FAACF3DF73609B1, 0x77B191618C54E9AD}, // -291
   270          {0xC795830D75038C1D, 0xD59DF5B9EF6A2418}, // -290
   271          {0xF97AE3D0D2446F25, 0x4B0573286B44AD1E}, // -289
   272          {0x9BECCE62836AC577, 0x4EE367F9430AEC33}, // -288
   273          {0xC2E801FB244576D5, 0x229C41F793CDA740}, // -287
   274          {0xF3A20279ED56D48A, 0x6B43527578C11110}, // -286
   275          {0x9845418C345644D6, 0x830A13896B78AAAA}, // -285
   276          {0xBE5691EF416BD60C, 0x23CC986BC656D554}, // -284
   277          {0xEDEC366B11C6CB8F, 0x2CBFBE86B7EC8AA9}, // -283
   278          {0x94B3A202EB1C3F39, 0x7BF7D71432F3D6AA}, // -282
   279          {0xB9E08A83A5E34F07, 0xDAF5CCD93FB0CC54}, // -281
   280          {0xE858AD248F5C22C9, 0xD1B3400F8F9CFF69}, // -280
   281          {0x91376C36D99995BE, 0x23100809B9C21FA2}, // -279
   282          {0xB58547448FFFFB2D, 0xABD40A0C2832A78B}, // -278
   283          {0xE2E69915B3FFF9F9, 0x16C90C8F323F516D}, // -277
   284          {0x8DD01FAD907FFC3B, 0xAE3DA7D97F6792E4}, // -276
   285          {0xB1442798F49FFB4A, 0x99CD11CFDF41779D}, // -275
   286          {0xDD95317F31C7FA1D, 0x40405643D711D584}, // -274
   287          {0x8A7D3EEF7F1CFC52, 0x482835EA666B2573}, // -273
   288          {0xAD1C8EAB5EE43B66, 0xDA3243650005EED0}, // -272
   289          {0xD863B256369D4A40, 0x90BED43E40076A83}, // -271
   290          {0x873E4F75E2224E68, 0x5A7744A6E804A292}, // -270
   291          {0xA90DE3535AAAE202, 0x711515D0A205CB37}, // -269
   292          {0xD3515C2831559A83, 0x0D5A5B44CA873E04}, // -268
   293          {0x8412D9991ED58091, 0xE858790AFE9486C3}, // -267
   294          {0xA5178FFF668AE0B6, 0x626E974DBE39A873}, // -266
   295          {0xCE5D73FF402D98E3, 0xFB0A3D212DC81290}, // -265
   296          {0x80FA687F881C7F8E, 0x7CE66634BC9D0B9A}, // -264
   297          {0xA139029F6A239F72, 0x1C1FFFC1EBC44E81}, // -263
   298          {0xC987434744AC874E, 0xA327FFB266B56221}, // -262
   299          {0xFBE9141915D7A922, 0x4BF1FF9F0062BAA9}, // -261
   300          {0x9D71AC8FADA6C9B5, 0x6F773FC3603DB4AA}, // -260
   301          {0xC4CE17B399107C22, 0xCB550FB4384D21D4}, // -259
   302          {0xF6019DA07F549B2B, 0x7E2A53A146606A49}, // -258
   303          {0x99C102844F94E0FB, 0x2EDA7444CBFC426E}, // -257
   304          {0xC0314325637A1939, 0xFA911155FEFB5309}, // -256
   305          {0xF03D93EEBC589F88, 0x793555AB7EBA27CB}, // -255
   306          {0x96267C7535B763B5, 0x4BC1558B2F3458DF}, // -254
   307          {0xBBB01B9283253CA2, 0x9EB1AAEDFB016F17}, // -253
   308          {0xEA9C227723EE8BCB, 0x465E15A979C1CADD}, // -252
   309          {0x92A1958A7675175F, 0x0BFACD89EC191ECA}, // -251
   310          {0xB749FAED14125D36, 0xCEF980EC671F667C}, // -250
   311          {0xE51C79A85916F484, 0x82B7E12780E7401B}, // -249
   312          {0x8F31CC0937AE58D2, 0xD1B2ECB8B0908811}, // -248
   313          {0xB2FE3F0B8599EF07, 0x861FA7E6DCB4AA16}, // -247
   314          {0xDFBDCECE67006AC9, 0x67A791E093E1D49B}, // -246
   315          {0x8BD6A141006042BD, 0xE0C8BB2C5C6D24E1}, // -245
   316          {0xAECC49914078536D, 0x58FAE9F773886E19}, // -244
   317          {0xDA7F5BF590966848, 0xAF39A475506A899F}, // -243
   318          {0x888F99797A5E012D, 0x6D8406C952429604}, // -242
   319          {0xAAB37FD7D8F58178, 0xC8E5087BA6D33B84}, // -241
   320          {0xD5605FCDCF32E1D6, 0xFB1E4A9A90880A65}, // -240
   321          {0x855C3BE0A17FCD26, 0x5CF2EEA09A550680}, // -239
   322          {0xA6B34AD8C9DFC06F, 0xF42FAA48C0EA481F}, // -238
   323          {0xD0601D8EFC57B08B, 0xF13B94DAF124DA27}, // -237
   324          {0x823C12795DB6CE57, 0x76C53D08D6B70859}, // -236
   325          {0xA2CB1717B52481ED, 0x54768C4B0C64CA6F}, // -235
   326          {0xCB7DDCDDA26DA268, 0xA9942F5DCF7DFD0A}, // -234
   327          {0xFE5D54150B090B02, 0xD3F93B35435D7C4D}, // -233
   328          {0x9EFA548D26E5A6E1, 0xC47BC5014A1A6DB0}, // -232
   329          {0xC6B8E9B0709F109A, 0x359AB6419CA1091C}, // -231
   330          {0xF867241C8CC6D4C0, 0xC30163D203C94B63}, // -230
   331          {0x9B407691D7FC44F8, 0x79E0DE63425DCF1E}, // -229
   332          {0xC21094364DFB5636, 0x985915FC12F542E5}, // -228
   333          {0xF294B943E17A2BC4, 0x3E6F5B7B17B2939E}, // -227
   334          {0x979CF3CA6CEC5B5A, 0xA705992CEECF9C43}, // -226
   335          {0xBD8430BD08277231, 0x50C6FF782A838354}, // -225
   336          {0xECE53CEC4A314EBD, 0xA4F8BF5635246429}, // -224
   337          {0x940F4613AE5ED136, 0x871B7795E136BE9A}, // -223
   338          {0xB913179899F68584, 0x28E2557B59846E40}, // -222
   339          {0xE757DD7EC07426E5, 0x331AEADA2FE589D0}, // -221
   340          {0x9096EA6F3848984F, 0x3FF0D2C85DEF7622}, // -220
   341          {0xB4BCA50B065ABE63, 0x0FED077A756B53AA}, // -219
   342          {0xE1EBCE4DC7F16DFB, 0xD3E8495912C62895}, // -218
   343          {0x8D3360F09CF6E4BD, 0x64712DD7ABBBD95D}, // -217
   344          {0xB080392CC4349DEC, 0xBD8D794D96AACFB4}, // -216
   345          {0xDCA04777F541C567, 0xECF0D7A0FC5583A1}, // -215
   346          {0x89E42CAAF9491B60, 0xF41686C49DB57245}, // -214
   347          {0xAC5D37D5B79B6239, 0x311C2875C522CED6}, // -213
   348          {0xD77485CB25823AC7, 0x7D633293366B828C}, // -212
   349          {0x86A8D39EF77164BC, 0xAE5DFF9C02033198}, // -211
   350          {0xA8530886B54DBDEB, 0xD9F57F830283FDFD}, // -210
   351          {0xD267CAA862A12D66, 0xD072DF63C324FD7C}, // -209
   352          {0x8380DEA93DA4BC60, 0x4247CB9E59F71E6E}, // -208
   353          {0xA46116538D0DEB78, 0x52D9BE85F074E609}, // -207
   354          {0xCD795BE870516656, 0x67902E276C921F8C}, // -206
   355          {0x806BD9714632DFF6, 0x00BA1CD8A3DB53B7}, // -205
   356          {0xA086CFCD97BF97F3, 0x80E8A40ECCD228A5}, // -204
   357          {0xC8A883C0FDAF7DF0, 0x6122CD128006B2CE}, // -203
   358          {0xFAD2A4B13D1B5D6C, 0x796B805720085F82}, // -202
   359          {0x9CC3A6EEC6311A63, 0xCBE3303674053BB1}, // -201
   360          {0xC3F490AA77BD60FC, 0xBEDBFC4411068A9D}, // -200
   361          {0xF4F1B4D515ACB93B, 0xEE92FB5515482D45}, // -199
   362          {0x991711052D8BF3C5, 0x751BDD152D4D1C4B}, // -198
   363          {0xBF5CD54678EEF0B6, 0xD262D45A78A0635E}, // -197
   364          {0xEF340A98172AACE4, 0x86FB897116C87C35}, // -196
   365          {0x9580869F0E7AAC0E, 0xD45D35E6AE3D4DA1}, // -195
   366          {0xBAE0A846D2195712, 0x8974836059CCA10A}, // -194
   367          {0xE998D258869FACD7, 0x2BD1A438703FC94C}, // -193
   368          {0x91FF83775423CC06, 0x7B6306A34627DDD0}, // -192
   369          {0xB67F6455292CBF08, 0x1A3BC84C17B1D543}, // -191
   370          {0xE41F3D6A7377EECA, 0x20CABA5F1D9E4A94}, // -190
   371          {0x8E938662882AF53E, 0x547EB47B7282EE9D}, // -189
   372          {0xB23867FB2A35B28D, 0xE99E619A4F23AA44}, // -188
   373          {0xDEC681F9F4C31F31, 0x6405FA00E2EC94D5}, // -187
   374          {0x8B3C113C38F9F37E, 0xDE83BC408DD3DD05}, // -186
   375          {0xAE0B158B4738705E, 0x9624AB50B148D446}, // -185
   376          {0xD98DDAEE19068C76, 0x3BADD624DD9B0958}, // -184
   377          {0x87F8A8D4CFA417C9, 0xE54CA5D70A80E5D7}, // -183
   378          {0xA9F6D30A038D1DBC, 0x5E9FCF4CCD211F4D}, // -182
   379          {0xD47487CC8470652B, 0x7647C32000696720}, // -181
   380          {0x84C8D4DFD2C63F3B, 0x29ECD9F40041E074}, // -180
   381          {0xA5FB0A17C777CF09, 0xF468107100525891}, // -179
   382          {0xCF79CC9DB955C2CC, 0x7182148D4066EEB5}, // -178
   383          {0x81AC1FE293D599BF, 0xC6F14CD848405531}, // -177
   384          {0xA21727DB38CB002F, 0xB8ADA00E5A506A7D}, // -176
   385          {0xCA9CF1D206FDC03B, 0xA6D90811F0E4851D}, // -175
   386          {0xFD442E4688BD304A, 0x908F4A166D1DA664}, // -174
   387          {0x9E4A9CEC15763E2E, 0x9A598E4E043287FF}, // -173
   388          {0xC5DD44271AD3CDBA, 0x40EFF1E1853F29FE}, // -172
   389          {0xF7549530E188C128, 0xD12BEE59E68EF47D}, // -171
   390          {0x9A94DD3E8CF578B9, 0x82BB74F8301958CF}, // -170
   391          {0xC13A148E3032D6E7, 0xE36A52363C1FAF02}, // -169
   392          {0xF18899B1BC3F8CA1, 0xDC44E6C3CB279AC2}, // -168
   393          {0x96F5600F15A7B7E5, 0x29AB103A5EF8C0BA}, // -167
   394          {0xBCB2B812DB11A5DE, 0x7415D448F6B6F0E8}, // -166
   395          {0xEBDF661791D60F56, 0x111B495B3464AD22}, // -165
   396          {0x936B9FCEBB25C995, 0xCAB10DD900BEEC35}, // -164
   397          {0xB84687C269EF3BFB, 0x3D5D514F40EEA743}, // -163
   398          {0xE65829B3046B0AFA, 0x0CB4A5A3112A5113}, // -162
   399          {0x8FF71A0FE2C2E6DC, 0x47F0E785EABA72AC}, // -161
   400          {0xB3F4E093DB73A093, 0x59ED216765690F57}, // -160
   401          {0xE0F218B8D25088B8, 0x306869C13EC3532D}, // -159
   402          {0x8C974F7383725573, 0x1E414218C73A13FC}, // -158
   403          {0xAFBD2350644EEACF, 0xE5D1929EF90898FB}, // -157
   404          {0xDBAC6C247D62A583, 0xDF45F746B74ABF3A}, // -156
   405          {0x894BC396CE5DA772, 0x6B8BBA8C328EB784}, // -155
   406          {0xAB9EB47C81F5114F, 0x066EA92F3F326565}, // -154
   407          {0xD686619BA27255A2, 0xC80A537B0EFEFEBE}, // -153
   408          {0x8613FD0145877585, 0xBD06742CE95F5F37}, // -152
   409          {0xA798FC4196E952E7, 0x2C48113823B73705}, // -151
   410          {0xD17F3B51FCA3A7A0, 0xF75A15862CA504C6}, // -150
   411          {0x82EF85133DE648C4, 0x9A984D73DBE722FC}, // -149
   412          {0xA3AB66580D5FDAF5, 0xC13E60D0D2E0EBBB}, // -148
   413          {0xCC963FEE10B7D1B3, 0x318DF905079926A9}, // -147
   414          {0xFFBBCFE994E5C61F, 0xFDF17746497F7053}, // -146
   415          {0x9FD561F1FD0F9BD3, 0xFEB6EA8BEDEFA634}, // -145
   416          {0xC7CABA6E7C5382C8, 0xFE64A52EE96B8FC1}, // -144
   417          {0xF9BD690A1B68637B, 0x3DFDCE7AA3C673B1}, // -143
   418          {0x9C1661A651213E2D, 0x06BEA10CA65C084F}, // -142
   419          {0xC31BFA0FE5698DB8, 0x486E494FCFF30A63}, // -141
   420          {0xF3E2F893DEC3F126, 0x5A89DBA3C3EFCCFB}, // -140
   421          {0x986DDB5C6B3A76B7, 0xF89629465A75E01D}, // -139
   422          {0xBE89523386091465, 0xF6BBB397F1135824}, // -138
   423          {0xEE2BA6C0678B597F, 0x746AA07DED582E2D}, // -137
   424          {0x94DB483840B717EF, 0xA8C2A44EB4571CDD}, // -136
   425          {0xBA121A4650E4DDEB, 0x92F34D62616CE414}, // -135
   426          {0xE896A0D7E51E1566, 0x77B020BAF9C81D18}, // -134
   427          {0x915E2486EF32CD60, 0x0ACE1474DC1D122F}, // -133
   428          {0xB5B5ADA8AAFF80B8, 0x0D819992132456BB}, // -132
   429          {0xE3231912D5BF60E6, 0x10E1FFF697ED6C6A}, // -131
   430          {0x8DF5EFABC5979C8F, 0xCA8D3FFA1EF463C2}, // -130
   431          {0xB1736B96B6FD83B3, 0xBD308FF8A6B17CB3}, // -129
   432          {0xDDD0467C64BCE4A0, 0xAC7CB3F6D05DDBDF}, // -128
   433          {0x8AA22C0DBEF60EE4, 0x6BCDF07A423AA96C}, // -127
   434          {0xAD4AB7112EB3929D, 0x86C16C98D2C953C7}, // -126
   435          {0xD89D64D57A607744, 0xE871C7BF077BA8B8}, // -125
   436          {0x87625F056C7C4A8B, 0x11471CD764AD4973}, // -124
   437          {0xA93AF6C6C79B5D2D, 0xD598E40D3DD89BD0}, // -123
   438          {0xD389B47879823479, 0x4AFF1D108D4EC2C4}, // -122
   439          {0x843610CB4BF160CB, 0xCEDF722A585139BB}, // -121
   440          {0xA54394FE1EEDB8FE, 0xC2974EB4EE658829}, // -120
   441          {0xCE947A3DA6A9273E, 0x733D226229FEEA33}, // -119
   442          {0x811CCC668829B887, 0x0806357D5A3F5260}, // -118
   443          {0xA163FF802A3426A8, 0xCA07C2DCB0CF26F8}, // -117
   444          {0xC9BCFF6034C13052, 0xFC89B393DD02F0B6}, // -116
   445          {0xFC2C3F3841F17C67, 0xBBAC2078D443ACE3}, // -115
   446          {0x9D9BA7832936EDC0, 0xD54B944B84AA4C0E}, // -114
   447          {0xC5029163F384A931, 0x0A9E795E65D4DF12}, // -113
   448          {0xF64335BCF065D37D, 0x4D4617B5FF4A16D6}, // -112
   449          {0x99EA0196163FA42E, 0x504BCED1BF8E4E46}, // -111
   450          {0xC06481FB9BCF8D39, 0xE45EC2862F71E1D7}, // -110
   451          {0xF07DA27A82C37088, 0x5D767327BB4E5A4D}, // -109
   452          {0x964E858C91BA2655, 0x3A6A07F8D510F870}, // -108
   453          {0xBBE226EFB628AFEA, 0x890489F70A55368C}, // -107
   454          {0xEADAB0ABA3B2DBE5, 0x2B45AC74CCEA842F}, // -106
   455          {0x92C8AE6B464FC96F, 0x3B0B8BC90012929E}, // -105
   456          {0xB77ADA0617E3BBCB, 0x09CE6EBB40173745}, // -104
   457          {0xE55990879DDCAABD, 0xCC420A6A101D0516}, // -103
   458          {0x8F57FA54C2A9EAB6, 0x9FA946824A12232E}, // -102
   459          {0xB32DF8E9F3546564, 0x47939822DC96ABFA}, // -101
   460          {0xDFF9772470297EBD, 0x59787E2B93BC56F8}, // -100
   461          {0x8BFBEA76C619EF36, 0x57EB4EDB3C55B65B}, //  -99
   462          {0xAEFAE51477A06B03, 0xEDE622920B6B23F2}, //  -98
   463          {0xDAB99E59958885C4, 0xE95FAB368E45ECEE}, //  -97
   464          {0x88B402F7FD75539B, 0x11DBCB0218EBB415}, //  -96
   465          {0xAAE103B5FCD2A881, 0xD652BDC29F26A11A}, //  -95
   466          {0xD59944A37C0752A2, 0x4BE76D3346F04960}, //  -94
   467          {0x857FCAE62D8493A5, 0x6F70A4400C562DDC}, //  -93
   468          {0xA6DFBD9FB8E5B88E, 0xCB4CCD500F6BB953}, //  -92
   469          {0xD097AD07A71F26B2, 0x7E2000A41346A7A8}, //  -91
   470          {0x825ECC24C873782F, 0x8ED400668C0C28C9}, //  -90
   471          {0xA2F67F2DFA90563B, 0x728900802F0F32FB}, //  -89
   472          {0xCBB41EF979346BCA, 0x4F2B40A03AD2FFBA}, //  -88
   473          {0xFEA126B7D78186BC, 0xE2F610C84987BFA9}, //  -87
   474          {0x9F24B832E6B0F436, 0x0DD9CA7D2DF4D7CA}, //  -86
   475          {0xC6EDE63FA05D3143, 0x91503D1C79720DBC}, //  -85
   476          {0xF8A95FCF88747D94, 0x75A44C6397CE912B}, //  -84
   477          {0x9B69DBE1B548CE7C, 0xC986AFBE3EE11ABB}, //  -83
   478          {0xC24452DA229B021B, 0xFBE85BADCE996169}, //  -82
   479          {0xF2D56790AB41C2A2, 0xFAE27299423FB9C4}, //  -81
   480          {0x97C560BA6B0919A5, 0xDCCD879FC967D41B}, //  -80
   481          {0xBDB6B8E905CB600F, 0x5400E987BBC1C921}, //  -79
   482          {0xED246723473E3813, 0x290123E9AAB23B69}, //  -78
   483          {0x9436C0760C86E30B, 0xF9A0B6720AAF6522}, //  -77
   484          {0xB94470938FA89BCE, 0xF808E40E8D5B3E6A}, //  -76
   485          {0xE7958CB87392C2C2, 0xB60B1D1230B20E05}, //  -75
   486          {0x90BD77F3483BB9B9, 0xB1C6F22B5E6F48C3}, //  -74
   487          {0xB4ECD5F01A4AA828, 0x1E38AEB6360B1AF4}, //  -73
   488          {0xE2280B6C20DD5232, 0x25C6DA63C38DE1B1}, //  -72
   489          {0x8D590723948A535F, 0x579C487E5A38AD0F}, //  -71
   490          {0xB0AF48EC79ACE837, 0x2D835A9DF0C6D852}, //  -70
   491          {0xDCDB1B2798182244, 0xF8E431456CF88E66}, //  -69
   492          {0x8A08F0F8BF0F156B, 0x1B8E9ECB641B5900}, //  -68
   493          {0xAC8B2D36EED2DAC5, 0xE272467E3D222F40}, //  -67
   494          {0xD7ADF884AA879177, 0x5B0ED81DCC6ABB10}, //  -66
   495          {0x86CCBB52EA94BAEA, 0x98E947129FC2B4EA}, //  -65
   496          {0xA87FEA27A539E9A5, 0x3F2398D747B36225}, //  -64
   497          {0xD29FE4B18E88640E, 0x8EEC7F0D19A03AAE}, //  -63
   498          {0x83A3EEEEF9153E89, 0x1953CF68300424AD}, //  -62
   499          {0xA48CEAAAB75A8E2B, 0x5FA8C3423C052DD8}, //  -61
   500          {0xCDB02555653131B6, 0x3792F412CB06794E}, //  -60
   501          {0x808E17555F3EBF11, 0xE2BBD88BBEE40BD1}, //  -59
   502          {0xA0B19D2AB70E6ED6, 0x5B6ACEAEAE9D0EC5}, //  -58
   503          {0xC8DE047564D20A8B, 0xF245825A5A445276}, //  -57
   504          {0xFB158592BE068D2E, 0xEED6E2F0F0D56713}, //  -56
   505          {0x9CED737BB6C4183D, 0x55464DD69685606C}, //  -55
   506          {0xC428D05AA4751E4C, 0xAA97E14C3C26B887}, //  -54
   507          {0xF53304714D9265DF, 0xD53DD99F4B3066A9}, //  -53
   508          {0x993FE2C6D07B7FAB, 0xE546A8038EFE402A}, //  -52
   509          {0xBF8FDB78849A5F96, 0xDE98520472BDD034}, //  -51
   510          {0xEF73D256A5C0F77C, 0x963E66858F6D4441}, //  -50
   511          {0x95A8637627989AAD, 0xDDE7001379A44AA9}, //  -49
   512          {0xBB127C53B17EC159, 0x5560C018580D5D53}, //  -48
   513          {0xE9D71B689DDE71AF, 0xAAB8F01E6E10B4A7}, //  -47
   514          {0x9226712162AB070D, 0xCAB3961304CA70E9}, //  -46
   515          {0xB6B00D69BB55C8D1, 0x3D607B97C5FD0D23}, //  -45
   516          {0xE45C10C42A2B3B05, 0x8CB89A7DB77C506B}, //  -44
   517          {0x8EB98A7A9A5B04E3, 0x77F3608E92ADB243}, //  -43
   518          {0xB267ED1940F1C61C, 0x55F038B237591ED4}, //  -42
   519          {0xDF01E85F912E37A3, 0x6B6C46DEC52F6689}, //  -41
   520          {0x8B61313BBABCE2C6, 0x2323AC4B3B3DA016}, //  -40
   521          {0xAE397D8AA96C1B77, 0xABEC975E0A0D081B}, //  -39
   522          {0xD9C7DCED53C72255, 0x96E7BD358C904A22}, //  -38
   523          {0x881CEA14545C7575, 0x7E50D64177DA2E55}, //  -37
   524          {0xAA242499697392D2, 0xDDE50BD1D5D0B9EA}, //  -36
   525          {0xD4AD2DBFC3D07787, 0x955E4EC64B44E865}, //  -35
   526          {0x84EC3C97DA624AB4, 0xBD5AF13BEF0B113F}, //  -34
   527          {0xA6274BBDD0FADD61, 0xECB1AD8AEACDD58F}, //  -33
   528          {0xCFB11EAD453994BA, 0x67DE18EDA5814AF3}, //  -32
   529          {0x81CEB32C4B43FCF4, 0x80EACF948770CED8}, //  -31
   530          {0xA2425FF75E14FC31, 0xA1258379A94D028E}, //  -30
   531          {0xCAD2F7F5359A3B3E, 0x096EE45813A04331}, //  -29
   532          {0xFD87B5F28300CA0D, 0x8BCA9D6E188853FD}, //  -28
   533          {0x9E74D1B791E07E48, 0x775EA264CF55347E}, //  -27
   534          {0xC612062576589DDA, 0x95364AFE032A819E}, //  -26
   535          {0xF79687AED3EEC551, 0x3A83DDBD83F52205}, //  -25
   536          {0x9ABE14CD44753B52, 0xC4926A9672793543}, //  -24
   537          {0xC16D9A0095928A27, 0x75B7053C0F178294}, //  -23
   538          {0xF1C90080BAF72CB1, 0x5324C68B12DD6339}, //  -22
   539          {0x971DA05074DA7BEE, 0xD3F6FC16EBCA5E04}, //  -21
   540          {0xBCE5086492111AEA, 0x88F4BB1CA6BCF585}, //  -20
   541          {0xEC1E4A7DB69561A5, 0x2B31E9E3D06C32E6}, //  -19
   542          {0x9392EE8E921D5D07, 0x3AFF322E62439FD0}, //  -18
   543          {0xB877AA3236A4B449, 0x09BEFEB9FAD487C3}, //  -17
   544          {0xE69594BEC44DE15B, 0x4C2EBE687989A9B4}, //  -16
   545          {0x901D7CF73AB0ACD9, 0x0F9D37014BF60A11}, //  -15
   546          {0xB424DC35095CD80F, 0x538484C19EF38C95}, //  -14
   547          {0xE12E13424BB40E13, 0x2865A5F206B06FBA}, //  -13
   548          {0x8CBCCC096F5088CB, 0xF93F87B7442E45D4}, //  -12
   549          {0xAFEBFF0BCB24AAFE, 0xF78F69A51539D749}, //  -11
   550          {0xDBE6FECEBDEDD5BE, 0xB573440E5A884D1C}, //  -10
   551          {0x89705F4136B4A597, 0x31680A88F8953031}, //   -9
   552          {0xABCC77118461CEFC, 0xFDC20D2B36BA7C3E}, //   -8
   553          {0xD6BF94D5E57A42BC, 0x3D32907604691B4D}, //   -7
   554          {0x8637BD05AF6C69B5, 0xA63F9A49C2C1B110}, //   -6
   555          {0xA7C5AC471B478423, 0x0FCF80DC33721D54}, //   -5
   556          {0xD1B71758E219652B, 0xD3C36113404EA4A9}, //   -4
   557          {0x83126E978D4FDF3B, 0x645A1CAC083126EA}, //   -3
   558          {0xA3D70A3D70A3D70A, 0x3D70A3D70A3D70A4}, //   -2
   559          {0xCCCCCCCCCCCCCCCC, 0xCCCCCCCCCCCCCCCD}, //   -1
   560          {0x8000000000000000, 0x0000000000000000}, //    0
   561          {0xA000000000000000, 0x0000000000000000}, //    1
   562          {0xC800000000000000, 0x0000000000000000}, //    2
   563          {0xFA00000000000000, 0x0000000000000000}, //    3
   564          {0x9C40000000000000, 0x0000000000000000}, //    4
   565          {0xC350000000000000, 0x0000000000000000}, //    5
   566          {0xF424000000000000, 0x0000000000000000}, //    6
   567          {0x9896800000000000, 0x0000000000000000}, //    7
   568          {0xBEBC200000000000, 0x0000000000000000}, //    8
   569          {0xEE6B280000000000, 0x0000000000000000}, //    9
   570          {0x9502F90000000000, 0x0000000000000000}, //   10
   571          {0xBA43B74000000000, 0x0000000000000000}, //   11
   572          {0xE8D4A51000000000, 0x0000000000000000}, //   12
   573          {0x9184E72A00000000, 0x0000000000000000}, //   13
   574          {0xB5E620F480000000, 0x0000000000000000}, //   14
   575          {0xE35FA931A0000000, 0x0000000000000000}, //   15
   576          {0x8E1BC9BF04000000, 0x0000000000000000}, //   16
   577          {0xB1A2BC2EC5000000, 0x0000000000000000}, //   17
   578          {0xDE0B6B3A76400000, 0x0000000000000000}, //   18
   579          {0x8AC7230489E80000, 0x0000000000000000}, //   19
   580          {0xAD78EBC5AC620000, 0x0000000000000000}, //   20
   581          {0xD8D726B7177A8000, 0x0000000000000000}, //   21
   582          {0x878678326EAC9000, 0x0000000000000000}, //   22
   583          {0xA968163F0A57B400, 0x0000000000000000}, //   23
   584          {0xD3C21BCECCEDA100, 0x0000000000000000}, //   24
   585          {0x84595161401484A0, 0x0000000000000000}, //   25
   586          {0xA56FA5B99019A5C8, 0x0000000000000000}, //   26
   587          {0xCECB8F27F4200F3A, 0x0000000000000000}, //   27
   588          {0x813F3978F8940984, 0x4000000000000000}, //   28
   589          {0xA18F07D736B90BE5, 0x5000000000000000}, //   29
   590          {0xC9F2C9CD04674EDE, 0xA400000000000000}, //   30
   591          {0xFC6F7C4045812296, 0x4D00000000000000}, //   31
   592          {0x9DC5ADA82B70B59D, 0xF020000000000000}, //   32
   593          {0xC5371912364CE305, 0x6C28000000000000}, //   33
   594          {0xF684DF56C3E01BC6, 0xC732000000000000}, //   34
   595          {0x9A130B963A6C115C, 0x3C7F400000000000}, //   35
   596          {0xC097CE7BC90715B3, 0x4B9F100000000000}, //   36
   597          {0xF0BDC21ABB48DB20, 0x1E86D40000000000}, //   37
   598          {0x96769950B50D88F4, 0x1314448000000000}, //   38
   599          {0xBC143FA4E250EB31, 0x17D955A000000000}, //   39
   600          {0xEB194F8E1AE525FD, 0x5DCFAB0800000000}, //   40
   601          {0x92EFD1B8D0CF37BE, 0x5AA1CAE500000000}, //   41
   602          {0xB7ABC627050305AD, 0xF14A3D9E40000000}, //   42
   603          {0xE596B7B0C643C719, 0x6D9CCD05D0000000}, //   43
   604          {0x8F7E32CE7BEA5C6F, 0xE4820023A2000000}, //   44
   605          {0xB35DBF821AE4F38B, 0xDDA2802C8A800000}, //   45
   606          {0xE0352F62A19E306E, 0xD50B2037AD200000}, //   46
   607          {0x8C213D9DA502DE45, 0x4526F422CC340000}, //   47
   608          {0xAF298D050E4395D6, 0x9670B12B7F410000}, //   48
   609          {0xDAF3F04651D47B4C, 0x3C0CDD765F114000}, //   49
   610          {0x88D8762BF324CD0F, 0xA5880A69FB6AC800}, //   50
   611          {0xAB0E93B6EFEE0053, 0x8EEA0D047A457A00}, //   51
   612          {0xD5D238A4ABE98068, 0x72A4904598D6D880}, //   52
   613          {0x85A36366EB71F041, 0x47A6DA2B7F864750}, //   53
   614          {0xA70C3C40A64E6C51, 0x999090B65F67D924}, //   54
   615          {0xD0CF4B50CFE20765, 0xFFF4B4E3F741CF6D}, //   55
   616          {0x82818F1281ED449F, 0xBFF8F10E7A8921A5}, //   56
   617          {0xA321F2D7226895C7, 0xAFF72D52192B6A0E}, //   57
   618          {0xCBEA6F8CEB02BB39, 0x9BF4F8A69F764491}, //   58
   619          {0xFEE50B7025C36A08, 0x02F236D04753D5B5}, //   59
   620          {0x9F4F2726179A2245, 0x01D762422C946591}, //   60
   621          {0xC722F0EF9D80AAD6, 0x424D3AD2B7B97EF6}, //   61
   622          {0xF8EBAD2B84E0D58B, 0xD2E0898765A7DEB3}, //   62
   623          {0x9B934C3B330C8577, 0x63CC55F49F88EB30}, //   63
   624          {0xC2781F49FFCFA6D5, 0x3CBF6B71C76B25FC}, //   64
   625          {0xF316271C7FC3908A, 0x8BEF464E3945EF7B}, //   65
   626          {0x97EDD871CFDA3A56, 0x97758BF0E3CBB5AD}, //   66
   627          {0xBDE94E8E43D0C8EC, 0x3D52EEED1CBEA318}, //   67
   628          {0xED63A231D4C4FB27, 0x4CA7AAA863EE4BDE}, //   68
   629          {0x945E455F24FB1CF8, 0x8FE8CAA93E74EF6B}, //   69
   630          {0xB975D6B6EE39E436, 0xB3E2FD538E122B45}, //   70
   631          {0xE7D34C64A9C85D44, 0x60DBBCA87196B617}, //   71
   632          {0x90E40FBEEA1D3A4A, 0xBC8955E946FE31CE}, //   72
   633          {0xB51D13AEA4A488DD, 0x6BABAB6398BDBE42}, //   73
   634          {0xE264589A4DCDAB14, 0xC696963C7EED2DD2}, //   74
   635          {0x8D7EB76070A08AEC, 0xFC1E1DE5CF543CA3}, //   75
   636          {0xB0DE65388CC8ADA8, 0x3B25A55F43294BCC}, //   76
   637          {0xDD15FE86AFFAD912, 0x49EF0EB713F39EBF}, //   77
   638          {0x8A2DBF142DFCC7AB, 0x6E3569326C784338}, //   78
   639          {0xACB92ED9397BF996, 0x49C2C37F07965405}, //   79
   640          {0xD7E77A8F87DAF7FB, 0xDC33745EC97BE907}, //   80
   641          {0x86F0AC99B4E8DAFD, 0x69A028BB3DED71A4}, //   81
   642          {0xA8ACD7C0222311BC, 0xC40832EA0D68CE0D}, //   82
   643          {0xD2D80DB02AABD62B, 0xF50A3FA490C30191}, //   83
   644          {0x83C7088E1AAB65DB, 0x792667C6DA79E0FB}, //   84
   645          {0xA4B8CAB1A1563F52, 0x577001B891185939}, //   85
   646          {0xCDE6FD5E09ABCF26, 0xED4C0226B55E6F87}, //   86
   647          {0x80B05E5AC60B6178, 0x544F8158315B05B5}, //   87
   648          {0xA0DC75F1778E39D6, 0x696361AE3DB1C722}, //   88
   649          {0xC913936DD571C84C, 0x03BC3A19CD1E38EA}, //   89
   650          {0xFB5878494ACE3A5F, 0x04AB48A04065C724}, //   90
   651          {0x9D174B2DCEC0E47B, 0x62EB0D64283F9C77}, //   91
   652          {0xC45D1DF942711D9A, 0x3BA5D0BD324F8395}, //   92
   653          {0xF5746577930D6500, 0xCA8F44EC7EE3647A}, //   93
   654          {0x9968BF6ABBE85F20, 0x7E998B13CF4E1ECC}, //   94
   655          {0xBFC2EF456AE276E8, 0x9E3FEDD8C321A67F}, //   95
   656          {0xEFB3AB16C59B14A2, 0xC5CFE94EF3EA101F}, //   96
   657          {0x95D04AEE3B80ECE5, 0xBBA1F1D158724A13}, //   97
   658          {0xBB445DA9CA61281F, 0x2A8A6E45AE8EDC98}, //   98
   659          {0xEA1575143CF97226, 0xF52D09D71A3293BE}, //   99
   660          {0x924D692CA61BE758, 0x593C2626705F9C57}, //  100
   661          {0xB6E0C377CFA2E12E, 0x6F8B2FB00C77836D}, //  101
   662          {0xE498F455C38B997A, 0x0B6DFB9C0F956448}, //  102
   663          {0x8EDF98B59A373FEC, 0x4724BD4189BD5EAD}, //  103
   664          {0xB2977EE300C50FE7, 0x58EDEC91EC2CB658}, //  104
   665          {0xDF3D5E9BC0F653E1, 0x2F2967B66737E3EE}, //  105
   666          {0x8B865B215899F46C, 0xBD79E0D20082EE75}, //  106
   667          {0xAE67F1E9AEC07187, 0xECD8590680A3AA12}, //  107
   668          {0xDA01EE641A708DE9, 0xE80E6F4820CC9496}, //  108
   669          {0x884134FE908658B2, 0x3109058D147FDCDE}, //  109
   670          {0xAA51823E34A7EEDE, 0xBD4B46F0599FD416}, //  110
   671          {0xD4E5E2CDC1D1EA96, 0x6C9E18AC7007C91B}, //  111
   672          {0x850FADC09923329E, 0x03E2CF6BC604DDB1}, //  112
   673          {0xA6539930BF6BFF45, 0x84DB8346B786151D}, //  113
   674          {0xCFE87F7CEF46FF16, 0xE612641865679A64}, //  114
   675          {0x81F14FAE158C5F6E, 0x4FCB7E8F3F60C07F}, //  115
   676          {0xA26DA3999AEF7749, 0xE3BE5E330F38F09E}, //  116
   677          {0xCB090C8001AB551C, 0x5CADF5BFD3072CC6}, //  117
   678          {0xFDCB4FA002162A63, 0x73D9732FC7C8F7F7}, //  118
   679          {0x9E9F11C4014DDA7E, 0x2867E7FDDCDD9AFB}, //  119
   680          {0xC646D63501A1511D, 0xB281E1FD541501B9}, //  120
   681          {0xF7D88BC24209A565, 0x1F225A7CA91A4227}, //  121
   682          {0x9AE757596946075F, 0x3375788DE9B06959}, //  122
   683          {0xC1A12D2FC3978937, 0x0052D6B1641C83AF}, //  123
   684          {0xF209787BB47D6B84, 0xC0678C5DBD23A49B}, //  124
   685          {0x9745EB4D50CE6332, 0xF840B7BA963646E1}, //  125
   686          {0xBD176620A501FBFF, 0xB650E5A93BC3D899}, //  126
   687          {0xEC5D3FA8CE427AFF, 0xA3E51F138AB4CEBF}, //  127
   688          {0x93BA47C980E98CDF, 0xC66F336C36B10138}, //  128
   689          {0xB8A8D9BBE123F017, 0xB80B0047445D4185}, //  129
   690          {0xE6D3102AD96CEC1D, 0xA60DC059157491E6}, //  130
   691          {0x9043EA1AC7E41392, 0x87C89837AD68DB30}, //  131
   692          {0xB454E4A179DD1877, 0x29BABE4598C311FC}, //  132
   693          {0xE16A1DC9D8545E94, 0xF4296DD6FEF3D67B}, //  133
   694          {0x8CE2529E2734BB1D, 0x1899E4A65F58660D}, //  134
   695          {0xB01AE745B101E9E4, 0x5EC05DCFF72E7F90}, //  135
   696          {0xDC21A1171D42645D, 0x76707543F4FA1F74}, //  136
   697          {0x899504AE72497EBA, 0x6A06494A791C53A9}, //  137
   698          {0xABFA45DA0EDBDE69, 0x0487DB9D17636893}, //  138
   699          {0xD6F8D7509292D603, 0x45A9D2845D3C42B7}, //  139
   700          {0x865B86925B9BC5C2, 0x0B8A2392BA45A9B3}, //  140
   701          {0xA7F26836F282B732, 0x8E6CAC7768D7141F}, //  141
   702          {0xD1EF0244AF2364FF, 0x3207D795430CD927}, //  142
   703          {0x8335616AED761F1F, 0x7F44E6BD49E807B9}, //  143
   704          {0xA402B9C5A8D3A6E7, 0x5F16206C9C6209A7}, //  144
   705          {0xCD036837130890A1, 0x36DBA887C37A8C10}, //  145
   706          {0x802221226BE55A64, 0xC2494954DA2C978A}, //  146
   707          {0xA02AA96B06DEB0FD, 0xF2DB9BAA10B7BD6D}, //  147
   708          {0xC83553C5C8965D3D, 0x6F92829494E5ACC8}, //  148
   709          {0xFA42A8B73ABBF48C, 0xCB772339BA1F17FA}, //  149
   710          {0x9C69A97284B578D7, 0xFF2A760414536EFC}, //  150
   711          {0xC38413CF25E2D70D, 0xFEF5138519684ABB}, //  151
   712          {0xF46518C2EF5B8CD1, 0x7EB258665FC25D6A}, //  152
   713          {0x98BF2F79D5993802, 0xEF2F773FFBD97A62}, //  153
   714          {0xBEEEFB584AFF8603, 0xAAFB550FFACFD8FB}, //  154
   715          {0xEEAABA2E5DBF6784, 0x95BA2A53F983CF39}, //  155
   716          {0x952AB45CFA97A0B2, 0xDD945A747BF26184}, //  156
   717          {0xBA756174393D88DF, 0x94F971119AEEF9E5}, //  157
   718          {0xE912B9D1478CEB17, 0x7A37CD5601AAB85E}, //  158
   719          {0x91ABB422CCB812EE, 0xAC62E055C10AB33B}, //  159
   720          {0xB616A12B7FE617AA, 0x577B986B314D600A}, //  160
   721          {0xE39C49765FDF9D94, 0xED5A7E85FDA0B80C}, //  161
   722          {0x8E41ADE9FBEBC27D, 0x14588F13BE847308}, //  162
   723          {0xB1D219647AE6B31C, 0x596EB2D8AE258FC9}, //  163
   724          {0xDE469FBD99A05FE3, 0x6FCA5F8ED9AEF3BC}, //  164
   725          {0x8AEC23D680043BEE, 0x25DE7BB9480D5855}, //  165
   726          {0xADA72CCC20054AE9, 0xAF561AA79A10AE6B}, //  166
   727          {0xD910F7FF28069DA4, 0x1B2BA1518094DA05}, //  167
   728          {0x87AA9AFF79042286, 0x90FB44D2F05D0843}, //  168
   729          {0xA99541BF57452B28, 0x353A1607AC744A54}, //  169
   730          {0xD3FA922F2D1675F2, 0x42889B8997915CE9}, //  170
   731          {0x847C9B5D7C2E09B7, 0x69956135FEBADA12}, //  171
   732          {0xA59BC234DB398C25, 0x43FAB9837E699096}, //  172
   733          {0xCF02B2C21207EF2E, 0x94F967E45E03F4BC}, //  173
   734          {0x8161AFB94B44F57D, 0x1D1BE0EEBAC278F6}, //  174
   735          {0xA1BA1BA79E1632DC, 0x6462D92A69731733}, //  175
   736          {0xCA28A291859BBF93, 0x7D7B8F7503CFDCFF}, //  176
   737          {0xFCB2CB35E702AF78, 0x5CDA735244C3D43F}, //  177
   738          {0x9DEFBF01B061ADAB, 0x3A0888136AFA64A8}, //  178
   739          {0xC56BAEC21C7A1916, 0x088AAA1845B8FDD1}, //  179
   740          {0xF6C69A72A3989F5B, 0x8AAD549E57273D46}, //  180
   741          {0x9A3C2087A63F6399, 0x36AC54E2F678864C}, //  181
   742          {0xC0CB28A98FCF3C7F, 0x84576A1BB416A7DE}, //  182
   743          {0xF0FDF2D3F3C30B9F, 0x656D44A2A11C51D6}, //  183
   744          {0x969EB7C47859E743, 0x9F644AE5A4B1B326}, //  184
   745          {0xBC4665B596706114, 0x873D5D9F0DDE1FEF}, //  185
   746          {0xEB57FF22FC0C7959, 0xA90CB506D155A7EB}, //  186
   747          {0x9316FF75DD87CBD8, 0x09A7F12442D588F3}, //  187
   748          {0xB7DCBF5354E9BECE, 0x0C11ED6D538AEB30}, //  188
   749          {0xE5D3EF282A242E81, 0x8F1668C8A86DA5FB}, //  189
   750          {0x8FA475791A569D10, 0xF96E017D694487BD}, //  190
   751          {0xB38D92D760EC4455, 0x37C981DCC395A9AD}, //  191
   752          {0xE070F78D3927556A, 0x85BBE253F47B1418}, //  192
   753          {0x8C469AB843B89562, 0x93956D7478CCEC8F}, //  193
   754          {0xAF58416654A6BABB, 0x387AC8D1970027B3}, //  194
   755          {0xDB2E51BFE9D0696A, 0x06997B05FCC0319F}, //  195
   756          {0x88FCF317F22241E2, 0x441FECE3BDF81F04}, //  196
   757          {0xAB3C2FDDEEAAD25A, 0xD527E81CAD7626C4}, //  197
   758          {0xD60B3BD56A5586F1, 0x8A71E223D8D3B075}, //  198
   759          {0x85C7056562757456, 0xF6872D5667844E4A}, //  199
   760          {0xA738C6BEBB12D16C, 0xB428F8AC016561DC}, //  200
   761          {0xD106F86E69D785C7, 0xE13336D701BEBA53}, //  201
   762          {0x82A45B450226B39C, 0xECC0024661173474}, //  202
   763          {0xA34D721642B06084, 0x27F002D7F95D0191}, //  203
   764          {0xCC20CE9BD35C78A5, 0x31EC038DF7B441F5}, //  204
   765          {0xFF290242C83396CE, 0x7E67047175A15272}, //  205
   766          {0x9F79A169BD203E41, 0x0F0062C6E984D387}, //  206
   767          {0xC75809C42C684DD1, 0x52C07B78A3E60869}, //  207
   768          {0xF92E0C3537826145, 0xA7709A56CCDF8A83}, //  208
   769          {0x9BBCC7A142B17CCB, 0x88A66076400BB692}, //  209
   770          {0xC2ABF989935DDBFE, 0x6ACFF893D00EA436}, //  210
   771          {0xF356F7EBF83552FE, 0x0583F6B8C4124D44}, //  211
   772          {0x98165AF37B2153DE, 0xC3727A337A8B704B}, //  212
   773          {0xBE1BF1B059E9A8D6, 0x744F18C0592E4C5D}, //  213
   774          {0xEDA2EE1C7064130C, 0x1162DEF06F79DF74}, //  214
   775          {0x9485D4D1C63E8BE7, 0x8ADDCB5645AC2BA9}, //  215
   776          {0xB9A74A0637CE2EE1, 0x6D953E2BD7173693}, //  216
   777          {0xE8111C87C5C1BA99, 0xC8FA8DB6CCDD0438}, //  217
   778          {0x910AB1D4DB9914A0, 0x1D9C9892400A22A3}, //  218
   779          {0xB54D5E4A127F59C8, 0x2503BEB6D00CAB4C}, //  219
   780          {0xE2A0B5DC971F303A, 0x2E44AE64840FD61E}, //  220
   781          {0x8DA471A9DE737E24, 0x5CEAECFED289E5D3}, //  221
   782          {0xB10D8E1456105DAD, 0x7425A83E872C5F48}, //  222
   783          {0xDD50F1996B947518, 0xD12F124E28F7771A}, //  223
   784          {0x8A5296FFE33CC92F, 0x82BD6B70D99AAA70}, //  224
   785          {0xACE73CBFDC0BFB7B, 0x636CC64D1001550C}, //  225
   786          {0xD8210BEFD30EFA5A, 0x3C47F7E05401AA4F}, //  226
   787          {0x8714A775E3E95C78, 0x65ACFAEC34810A72}, //  227
   788          {0xA8D9D1535CE3B396, 0x7F1839A741A14D0E}, //  228
   789          {0xD31045A8341CA07C, 0x1EDE48111209A051}, //  229
   790          {0x83EA2B892091E44D, 0x934AED0AAB460433}, //  230
   791          {0xA4E4B66B68B65D60, 0xF81DA84D56178540}, //  231
   792          {0xCE1DE40642E3F4B9, 0x36251260AB9D668F}, //  232
   793          {0x80D2AE83E9CE78F3, 0xC1D72B7C6B42601A}, //  233
   794          {0xA1075A24E4421730, 0xB24CF65B8612F820}, //  234
   795          {0xC94930AE1D529CFC, 0xDEE033F26797B628}, //  235
   796          {0xFB9B7CD9A4A7443C, 0x169840EF017DA3B2}, //  236
   797          {0x9D412E0806E88AA5, 0x8E1F289560EE864F}, //  237
   798          {0xC491798A08A2AD4E, 0xF1A6F2BAB92A27E3}, //  238
   799          {0xF5B5D7EC8ACB58A2, 0xAE10AF696774B1DC}, //  239
   800          {0x9991A6F3D6BF1765, 0xACCA6DA1E0A8EF2A}, //  240
   801          {0xBFF610B0CC6EDD3F, 0x17FD090A58D32AF4}, //  241
   802          {0xEFF394DCFF8A948E, 0xDDFC4B4CEF07F5B1}, //  242
   803          {0x95F83D0A1FB69CD9, 0x4ABDAF101564F98F}, //  243
   804          {0xBB764C4CA7A4440F, 0x9D6D1AD41ABE37F2}, //  244
   805          {0xEA53DF5FD18D5513, 0x84C86189216DC5EE}, //  245
   806          {0x92746B9BE2F8552C, 0x32FD3CF5B4E49BB5}, //  246
   807          {0xB7118682DBB66A77, 0x3FBC8C33221DC2A2}, //  247
   808          {0xE4D5E82392A40515, 0x0FABAF3FEAA5334B}, //  248
   809          {0x8F05B1163BA6832D, 0x29CB4D87F2A7400F}, //  249
   810          {0xB2C71D5BCA9023F8, 0x743E20E9EF511013}, //  250
   811          {0xDF78E4B2BD342CF6, 0x914DA9246B255417}, //  251
   812          {0x8BAB8EEFB6409C1A, 0x1AD089B6C2F7548F}, //  252
   813          {0xAE9672ABA3D0C320, 0xA184AC2473B529B2}, //  253
   814          {0xDA3C0F568CC4F3E8, 0xC9E5D72D90A2741F}, //  254
   815          {0x8865899617FB1871, 0x7E2FA67C7A658893}, //  255
   816          {0xAA7EEBFB9DF9DE8D, 0xDDBB901B98FEEAB8}, //  256
   817          {0xD51EA6FA85785631, 0x552A74227F3EA566}, //  257
   818          {0x8533285C936B35DE, 0xD53A88958F872760}, //  258
   819          {0xA67FF273B8460356, 0x8A892ABAF368F138}, //  259
   820          {0xD01FEF10A657842C, 0x2D2B7569B0432D86}, //  260
   821          {0x8213F56A67F6B29B, 0x9C3B29620E29FC74}, //  261
   822          {0xA298F2C501F45F42, 0x8349F3BA91B47B90}, //  262
   823          {0xCB3F2F7642717713, 0x241C70A936219A74}, //  263
   824          {0xFE0EFB53D30DD4D7, 0xED238CD383AA0111}, //  264
   825          {0x9EC95D1463E8A506, 0xF4363804324A40AB}, //  265
   826          {0xC67BB4597CE2CE48, 0xB143C6053EDCD0D6}, //  266
   827          {0xF81AA16FDC1B81DA, 0xDD94B7868E94050B}, //  267
   828          {0x9B10A4E5E9913128, 0xCA7CF2B4191C8327}, //  268
   829          {0xC1D4CE1F63F57D72, 0xFD1C2F611F63A3F1}, //  269
   830          {0xF24A01A73CF2DCCF, 0xBC633B39673C8CED}, //  270
   831          {0x976E41088617CA01, 0xD5BE0503E085D814}, //  271
   832          {0xBD49D14AA79DBC82, 0x4B2D8644D8A74E19}, //  272
   833          {0xEC9C459D51852BA2, 0xDDF8E7D60ED1219F}, //  273
   834          {0x93E1AB8252F33B45, 0xCABB90E5C942B504}, //  274
   835          {0xB8DA1662E7B00A17, 0x3D6A751F3B936244}, //  275
   836          {0xE7109BFBA19C0C9D, 0x0CC512670A783AD5}, //  276
   837          {0x906A617D450187E2, 0x27FB2B80668B24C6}, //  277
   838          {0xB484F9DC9641E9DA, 0xB1F9F660802DEDF7}, //  278
   839          {0xE1A63853BBD26451, 0x5E7873F8A0396974}, //  279
   840          {0x8D07E33455637EB2, 0xDB0B487B6423E1E9}, //  280
   841          {0xB049DC016ABC5E5F, 0x91CE1A9A3D2CDA63}, //  281
   842          {0xDC5C5301C56B75F7, 0x7641A140CC7810FC}, //  282
   843          {0x89B9B3E11B6329BA, 0xA9E904C87FCB0A9E}, //  283
   844          {0xAC2820D9623BF429, 0x546345FA9FBDCD45}, //  284
   845          {0xD732290FBACAF133, 0xA97C177947AD4096}, //  285
   846          {0x867F59A9D4BED6C0, 0x49ED8EABCCCC485E}, //  286
   847          {0xA81F301449EE8C70, 0x5C68F256BFFF5A75}, //  287
   848          {0xD226FC195C6A2F8C, 0x73832EEC6FFF3112}, //  288
   849          {0x83585D8FD9C25DB7, 0xC831FD53C5FF7EAC}, //  289
   850          {0xA42E74F3D032F525, 0xBA3E7CA8B77F5E56}, //  290
   851          {0xCD3A1230C43FB26F, 0x28CE1BD2E55F35EC}, //  291
   852          {0x80444B5E7AA7CF85, 0x7980D163CF5B81B4}, //  292
   853          {0xA0555E361951C366, 0xD7E105BCC3326220}, //  293
   854          {0xC86AB5C39FA63440, 0x8DD9472BF3FEFAA8}, //  294
   855          {0xFA856334878FC150, 0xB14F98F6F0FEB952}, //  295
   856          {0x9C935E00D4B9D8D2, 0x6ED1BF9A569F33D4}, //  296
   857          {0xC3B8358109E84F07, 0x0A862F80EC4700C9}, //  297
   858          {0xF4A642E14C6262C8, 0xCD27BB612758C0FB}, //  298
   859          {0x98E7E9CCCFBD7DBD, 0x8038D51CB897789D}, //  299
   860          {0xBF21E44003ACDD2C, 0xE0470A63E6BD56C4}, //  300
   861          {0xEEEA5D5004981478, 0x1858CCFCE06CAC75}, //  301
   862          {0x95527A5202DF0CCB, 0x0F37801E0C43EBC9}, //  302
   863          {0xBAA718E68396CFFD, 0xD30560258F54E6BB}, //  303
   864          {0xE950DF20247C83FD, 0x47C6B82EF32A206A}, //  304
   865          {0x91D28B7416CDD27E, 0x4CDC331D57FA5442}, //  305
   866          {0xB6472E511C81471D, 0xE0133FE4ADF8E953}, //  306
   867          {0xE3D8F9E563A198E5, 0x58180FDDD97723A7}, //  307
   868          {0x8E679C2F5E44FF8F, 0x570F09EAA7EA7649}, //  308
   869          {0xB201833B35D63F73, 0x2CD2CC6551E513DB}, //  309
   870          {0xDE81E40A034BCF4F, 0xF8077F7EA65E58D2}, //  310
   871          {0x8B112E86420F6191, 0xFB04AFAF27FAF783}, //  311
   872          {0xADD57A27D29339F6, 0x79C5DB9AF1F9B564}, //  312
   873          {0xD94AD8B1C7380874, 0x18375281AE7822BD}, //  313
   874          {0x87CEC76F1C830548, 0x8F2293910D0B15B6}, //  314
   875          {0xA9C2794AE3A3C69A, 0xB2EB3875504DDB23}, //  315
   876          {0xD433179D9C8CB841, 0x5FA60692A46151EC}, //  316
   877          {0x849FEEC281D7F328, 0xDBC7C41BA6BCD334}, //  317
   878          {0xA5C7EA73224DEFF3, 0x12B9B522906C0801}, //  318
   879          {0xCF39E50FEAE16BEF, 0xD768226B34870A01}, //  319
   880          {0x81842F29F2CCE375, 0xE6A1158300D46641}, //  320
   881          {0xA1E53AF46F801C53, 0x60495AE3C1097FD1}, //  321
   882          {0xCA5E89B18B602368, 0x385BB19CB14BDFC5}, //  322
   883          {0xFCF62C1DEE382C42, 0x46729E03DD9ED7B6}, //  323
   884          {0x9E19DB92B4E31BA9, 0x6C07A2C26A8346D2}, //  324
   885      };
   886      return g[k - KMIN];
   887  #undef KMIN
   888  #undef KMAX
   889  }
   890  
   891  #endif