1 /*
   2  * Copyright (c) 2015, Intel Corporation.
   3  * Intel Math Library (LIBM) Source Code
   4  *
   5  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   6  *
   7  * This code is free software; you can redistribute it and/or modify it
   8  * under the terms of the GNU General Public License version 2 only, as
   9  * published by the Free Software Foundation.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  *
  25  */
  26 
  27 #include "precompiled.hpp"
  28 #include "asm/assembler.hpp"
  29 #include "asm/assembler.inline.hpp"
  30 #include "macroAssembler_x86.hpp"
  31 
  32 #ifdef _MSC_VER
  33 #define ALIGNED_(x) __declspec(align(x))
  34 #else
  35 #define ALIGNED_(x) __attribute__ ((aligned(x)))
  36 #endif
  37 
  38 // The 32 bit and 64 bit code is at most SSE2 compliant
  39 
  40 /******************************************************************************/
  41 //                     ALGORITHM DESCRIPTION - EXP()
  42 //                     ---------------------
  43 //
  44 // Description:
  45 //  Let K = 64 (table size).
  46 //        x    x/log(2)     n
  47 //       e  = 2          = 2 * T[j] * (1 + P(y))
  48 //  where
  49 //       x = m*log(2)/K + y,    y in [-log(2)/K..log(2)/K]
  50 //       m = n*K + j,           m,n,j - signed integer, j in [-K/2..K/2]
  51 //                  j/K
  52 //       values of 2   are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
  53 //
  54 //       P(y) is a minimax polynomial approximation of exp(x)-1
  55 //       on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
  56 //
  57 //  To avoid problems with arithmetic overflow and underflow,
  58 //            n                        n1  n2
  59 //  value of 2  is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
  60 //  where BIAS is a value of exponent bias.
  61 //
  62 // Special cases:
  63 //  exp(NaN) = NaN
  64 //  exp(+INF) = +INF
  65 //  exp(-INF) = 0
  66 //  exp(x) = 1 for subnormals
  67 //  for finite argument, only exp(0)=1 is exact
  68 //  For IEEE double
  69 //    if x >  709.782712893383973096 then exp(x) overflow
  70 //    if x < -745.133219101941108420 then exp(x) underflow
  71 //
  72 /******************************************************************************/
  73 
  74 #ifdef _LP64
  75 
  76 ALIGNED_(16) juint _cv[] =
  77 {
  78     0x652b82feUL, 0x40571547UL, 0x652b82feUL, 0x40571547UL, 0xfefa0000UL,
  79     0x3f862e42UL, 0xfefa0000UL, 0x3f862e42UL, 0xbc9e3b3aUL, 0x3d1cf79aUL,
  80     0xbc9e3b3aUL, 0x3d1cf79aUL, 0xfffffffeUL, 0x3fdfffffUL, 0xfffffffeUL,
  81     0x3fdfffffUL, 0xe3289860UL, 0x3f56c15cUL, 0x555b9e25UL, 0x3fa55555UL,
  82     0xc090cf0fUL, 0x3f811115UL, 0x55548ba1UL, 0x3fc55555UL
  83 };
  84 
  85 ALIGNED_(16) juint _shifter[] =
  86 {
  87     0x00000000UL, 0x43380000UL, 0x00000000UL, 0x43380000UL
  88 };
  89 
  90 ALIGNED_(16) juint _mmask[] =
  91 {
  92     0xffffffc0UL, 0x00000000UL, 0xffffffc0UL, 0x00000000UL
  93 };
  94 
  95 ALIGNED_(16) juint _bias[] =
  96 {
  97     0x0000ffc0UL, 0x00000000UL, 0x0000ffc0UL, 0x00000000UL
  98 };
  99 
 100 ALIGNED_(16) juint _Tbl_addr[] =
 101 {
 102     0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x0e03754dUL,
 103     0x3cad7bbfUL, 0x3e778060UL, 0x00002c9aUL, 0x3567f613UL, 0x3c8cd252UL,
 104     0xd3158574UL, 0x000059b0UL, 0x61e6c861UL, 0x3c60f74eUL, 0x18759bc8UL,
 105     0x00008745UL, 0x5d837b6cUL, 0x3c979aa6UL, 0x6cf9890fUL, 0x0000b558UL,
 106     0x702f9cd1UL, 0x3c3ebe3dUL, 0x32d3d1a2UL, 0x0000e3ecUL, 0x1e63bcd8UL,
 107     0x3ca3516eUL, 0xd0125b50UL, 0x00011301UL, 0x26f0387bUL, 0x3ca4c554UL,
 108     0xaea92ddfUL, 0x0001429aUL, 0x62523fb6UL, 0x3ca95153UL, 0x3c7d517aUL,
 109     0x000172b8UL, 0x3f1353bfUL, 0x3c8b898cUL, 0xeb6fcb75UL, 0x0001a35bUL,
 110     0x3e3a2f5fUL, 0x3c9aecf7UL, 0x3168b9aaUL, 0x0001d487UL, 0x44a6c38dUL,
 111     0x3c8a6f41UL, 0x88628cd6UL, 0x0002063bUL, 0xe3a8a894UL, 0x3c968efdUL,
 112     0x6e756238UL, 0x0002387aUL, 0x981fe7f2UL, 0x3c80472bUL, 0x65e27cddUL,
 113     0x00026b45UL, 0x6d09ab31UL, 0x3c82f7e1UL, 0xf51fdee1UL, 0x00029e9dUL,
 114     0x720c0ab3UL, 0x3c8b3782UL, 0xa6e4030bUL, 0x0002d285UL, 0x4db0abb6UL,
 115     0x3c834d75UL, 0x0a31b715UL, 0x000306feUL, 0x5dd3f84aUL, 0x3c8fdd39UL,
 116     0xb26416ffUL, 0x00033c08UL, 0xcc187d29UL, 0x3ca12f8cUL, 0x373aa9caUL,
 117     0x000371a7UL, 0x738b5e8bUL, 0x3ca7d229UL, 0x34e59ff6UL, 0x0003a7dbUL,
 118     0xa72a4c6dUL, 0x3c859f48UL, 0x4c123422UL, 0x0003dea6UL, 0x259d9205UL,
 119     0x3ca8b846UL, 0x21f72e29UL, 0x0004160aUL, 0x60c2ac12UL, 0x3c4363edUL,
 120     0x6061892dUL, 0x00044e08UL, 0xdaa10379UL, 0x3c6ecce1UL, 0xb5c13cd0UL,
 121     0x000486a2UL, 0xbb7aafb0UL, 0x3c7690ceUL, 0xd5362a27UL, 0x0004bfdaUL,
 122     0x9b282a09UL, 0x3ca083ccUL, 0x769d2ca6UL, 0x0004f9b2UL, 0xc1aae707UL,
 123     0x3ca509b0UL, 0x569d4f81UL, 0x0005342bUL, 0x18fdd78eUL, 0x3c933505UL,
 124     0x36b527daUL, 0x00056f47UL, 0xe21c5409UL, 0x3c9063e1UL, 0xdd485429UL,
 125     0x0005ab07UL, 0x2b64c035UL, 0x3c9432e6UL, 0x15ad2148UL, 0x0005e76fUL,
 126     0x99f08c0aUL, 0x3ca01284UL, 0xb03a5584UL, 0x0006247eUL, 0x0073dc06UL,
 127     0x3c99f087UL, 0x82552224UL, 0x00066238UL, 0x0da05571UL, 0x3c998d4dUL,
 128     0x667f3bccUL, 0x0006a09eUL, 0x86ce4786UL, 0x3ca52bb9UL, 0x3c651a2eUL,
 129     0x0006dfb2UL, 0x206f0dabUL, 0x3ca32092UL, 0xe8ec5f73UL, 0x00071f75UL,
 130     0x8e17a7a6UL, 0x3ca06122UL, 0x564267c8UL, 0x00075febUL, 0x461e9f86UL,
 131     0x3ca244acUL, 0x73eb0186UL, 0x0007a114UL, 0xabd66c55UL, 0x3c65ebe1UL,
 132     0x36cf4e62UL, 0x0007e2f3UL, 0xbbff67d0UL, 0x3c96fe9fUL, 0x994cce12UL,
 133     0x00082589UL, 0x14c801dfUL, 0x3c951f14UL, 0x9b4492ecUL, 0x000868d9UL,
 134     0xc1f0eab4UL, 0x3c8db72fUL, 0x422aa0dbUL, 0x0008ace5UL, 0x59f35f44UL,
 135     0x3c7bf683UL, 0x99157736UL, 0x0008f1aeUL, 0x9c06283cUL, 0x3ca360baUL,
 136     0xb0cdc5e4UL, 0x00093737UL, 0x20f962aaUL, 0x3c95e8d1UL, 0x9fde4e4fUL,
 137     0x00097d82UL, 0x2b91ce27UL, 0x3c71affcUL, 0x82a3f090UL, 0x0009c491UL,
 138     0x589a2ebdUL, 0x3c9b6d34UL, 0x7b5de564UL, 0x000a0c66UL, 0x9ab89880UL,
 139     0x3c95277cUL, 0xb23e255cUL, 0x000a5503UL, 0x6e735ab3UL, 0x3c846984UL,
 140     0x5579fdbfUL, 0x000a9e6bUL, 0x92cb3387UL, 0x3c8c1a77UL, 0x995ad3adUL,
 141     0x000ae89fUL, 0xdc2d1d96UL, 0x3ca22466UL, 0xb84f15faUL, 0x000b33a2UL,
 142     0xb19505aeUL, 0x3ca1112eUL, 0xf2fb5e46UL, 0x000b7f76UL, 0x0a5fddcdUL,
 143     0x3c74ffd7UL, 0x904bc1d2UL, 0x000bcc1eUL, 0x30af0cb3UL, 0x3c736eaeUL,
 144     0xdd85529cUL, 0x000c199bUL, 0xd10959acUL, 0x3c84e08fUL, 0x2e57d14bUL,
 145     0x000c67f1UL, 0x6c921968UL, 0x3c676b2cUL, 0xdcef9069UL, 0x000cb720UL,
 146     0x36df99b3UL, 0x3c937009UL, 0x4a07897bUL, 0x000d072dUL, 0xa63d07a7UL,
 147     0x3c74a385UL, 0xdcfba487UL, 0x000d5818UL, 0xd5c192acUL, 0x3c8e5a50UL,
 148     0x03db3285UL, 0x000da9e6UL, 0x1c4a9792UL, 0x3c98bb73UL, 0x337b9b5eUL,
 149     0x000dfc97UL, 0x603a88d3UL, 0x3c74b604UL, 0xe78b3ff6UL, 0x000e502eUL,
 150     0x92094926UL, 0x3c916f27UL, 0xa2a490d9UL, 0x000ea4afUL, 0x41aa2008UL,
 151     0x3c8ec3bcUL, 0xee615a27UL, 0x000efa1bUL, 0x31d185eeUL, 0x3c8a64a9UL,
 152     0x5b6e4540UL, 0x000f5076UL, 0x4d91cd9dUL, 0x3c77893bUL, 0x819e90d8UL,
 153     0x000fa7c1UL
 154 };
 155 
 156 ALIGNED_(16) juint _ALLONES[] =
 157 {
 158     0xffffffffUL, 0xffffffffUL, 0xffffffffUL, 0xffffffffUL
 159 };
 160 
 161 ALIGNED_(16) juint _ebias[] =
 162 {
 163     0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x3ff00000UL
 164 };
 165 
 166 ALIGNED_(4) juint _XMAX[] =
 167 {
 168     0xffffffffUL, 0x7fefffffUL
 169 };
 170 
 171 ALIGNED_(4) juint _XMIN[] =
 172 {
 173     0x00000000UL, 0x00100000UL
 174 };
 175 
 176 ALIGNED_(4) juint _INF[] =
 177 {
 178     0x00000000UL, 0x7ff00000UL
 179 };
 180 
 181 ALIGNED_(4) juint _ZERO[] =
 182 {
 183     0x00000000UL, 0x00000000UL
 184 };
 185 
 186 ALIGNED_(4) juint _ONE_val[] =
 187 {
 188     0x00000000UL, 0x3ff00000UL
 189 };
 190 
 191 
 192 // Registers:
 193 // input: xmm0
 194 // scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
 195 //          rax, rdx, rcx, tmp - r11
 196 
 197 // Code generated by Intel C compiler for LIBM library
 198 
 199 void MacroAssembler::fast_exp(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp) {
 200   Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
 201   Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
 202   Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, L_2TAG_PACKET_10_0_2, L_2TAG_PACKET_11_0_2;
 203   Label L_2TAG_PACKET_12_0_2, B1_3, B1_5, start;
 204 
 205   assert_different_registers(tmp, eax, ecx, edx);
 206   jmp(start);
 207   address cv = (address)_cv;
 208   address Shifter = (address)_shifter;
 209   address mmask = (address)_mmask;
 210   address bias = (address)_bias;
 211   address Tbl_addr = (address)_Tbl_addr;
 212   address ALLONES = (address)_ALLONES;
 213   address ebias = (address)_ebias;
 214   address XMAX = (address)_XMAX;
 215   address XMIN = (address)_XMIN;
 216   address INF = (address)_INF;
 217   address ZERO = (address)_ZERO;
 218   address ONE_val = (address)_ONE_val;
 219 
 220   bind(start);
 221   subq(rsp, 24);
 222   movsd(Address(rsp, 8), xmm0);
 223   unpcklpd(xmm0, xmm0);
 224   movdqu(xmm1, ExternalAddress(cv));       // 0x652b82feUL, 0x40571547UL, 0x652b82feUL, 0x40571547UL
 225   movdqu(xmm6, ExternalAddress(Shifter));  // 0x00000000UL, 0x43380000UL, 0x00000000UL, 0x43380000UL
 226   movdqu(xmm2, ExternalAddress(16+cv));    // 0xfefa0000UL, 0x3f862e42UL, 0xfefa0000UL, 0x3f862e42UL
 227   movdqu(xmm3, ExternalAddress(32+cv));    // 0xbc9e3b3aUL, 0x3d1cf79aUL, 0xbc9e3b3aUL, 0x3d1cf79aUL
 228   pextrw(eax, xmm0, 3);
 229   andl(eax, 32767);
 230   movl(edx, 16527);
 231   subl(edx, eax);
 232   subl(eax, 15504);
 233   orl(edx, eax);
 234   cmpl(edx, INT_MIN);
 235   jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
 236   mulpd(xmm1, xmm0);
 237   addpd(xmm1, xmm6);
 238   movapd(xmm7, xmm1);
 239   subpd(xmm1, xmm6);
 240   mulpd(xmm2, xmm1);
 241   movdqu(xmm4, ExternalAddress(64+cv));    // 0xe3289860UL, 0x3f56c15cUL, 0x555b9e25UL, 0x3fa55555UL
 242   mulpd(xmm3, xmm1);
 243   movdqu(xmm5, ExternalAddress(80+cv));    // 0xc090cf0fUL, 0x3f811115UL, 0x55548ba1UL, 0x3fc55555UL
 244   subpd(xmm0, xmm2);
 245   movdl(eax, xmm7);
 246   movl(ecx, eax);
 247   andl(ecx, 63);
 248   shll(ecx, 4);
 249   sarl(eax, 6);
 250   movl(edx, eax);
 251   movdqu(xmm6, ExternalAddress(mmask));    // 0xffffffc0UL, 0x00000000UL, 0xffffffc0UL, 0x00000000UL
 252   pand(xmm7, xmm6);
 253   movdqu(xmm6, ExternalAddress(bias));     // 0x0000ffc0UL, 0x00000000UL, 0x0000ffc0UL, 0x00000000UL
 254   paddq(xmm7, xmm6);
 255   psllq(xmm7, 46);
 256   subpd(xmm0, xmm3);
 257   lea(tmp, ExternalAddress(Tbl_addr));
 258   movdqu(xmm2, Address(ecx,tmp));
 259   mulpd(xmm4, xmm0);
 260   movapd(xmm6, xmm0);
 261   movapd(xmm1, xmm0);
 262   mulpd(xmm6, xmm6);
 263   mulpd(xmm0, xmm6);
 264   addpd(xmm5, xmm4);
 265   mulsd(xmm0, xmm6);
 266   mulpd(xmm6, ExternalAddress(48+cv));     // 0xfffffffeUL, 0x3fdfffffUL, 0xfffffffeUL, 0x3fdfffffUL
 267   addsd(xmm1, xmm2);
 268   unpckhpd(xmm2, xmm2);
 269   mulpd(xmm0, xmm5);
 270   addsd(xmm1, xmm0);
 271   por(xmm2, xmm7);
 272   unpckhpd(xmm0, xmm0);
 273   addsd(xmm0, xmm1);
 274   addsd(xmm0, xmm6);
 275   addl(edx, 894);
 276   cmpl(edx, 1916);
 277   jcc (Assembler::above, L_2TAG_PACKET_1_0_2);
 278   mulsd(xmm0, xmm2);
 279   addsd(xmm0, xmm2);
 280   jmp (B1_5);
 281 
 282   bind(L_2TAG_PACKET_1_0_2);
 283   xorpd(xmm3, xmm3);
 284   movdqu(xmm4, ExternalAddress(ALLONES));  // 0xffffffffUL, 0xffffffffUL, 0xffffffffUL, 0xffffffffUL
 285   movl(edx, -1022);
 286   subl(edx, eax);
 287   movdl(xmm5, edx);
 288   psllq(xmm4, xmm5);
 289   movl(ecx, eax);
 290   sarl(eax, 1);
 291   pinsrw(xmm3, eax, 3);
 292   movdqu(xmm6, ExternalAddress(ebias));    // 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x3ff00000UL
 293   psllq(xmm3, 4);
 294   psubd(xmm2, xmm3);
 295   mulsd(xmm0, xmm2);
 296   cmpl(edx, 52);
 297   jcc(Assembler::greater, L_2TAG_PACKET_2_0_2);
 298   pand(xmm4, xmm2);
 299   paddd(xmm3, xmm6);
 300   subsd(xmm2, xmm4);
 301   addsd(xmm0, xmm2);
 302   cmpl(ecx, 1023);
 303   jcc(Assembler::greaterEqual, L_2TAG_PACKET_3_0_2);
 304   pextrw(ecx, xmm0, 3);
 305   andl(ecx, 32768);
 306   orl(edx, ecx);
 307   cmpl(edx, 0);
 308   jcc(Assembler::equal, L_2TAG_PACKET_4_0_2);
 309   movapd(xmm6, xmm0);
 310   addsd(xmm0, xmm4);
 311   mulsd(xmm0, xmm3);
 312   pextrw(ecx, xmm0, 3);
 313   andl(ecx, 32752);
 314   cmpl(ecx, 0);
 315   jcc(Assembler::equal, L_2TAG_PACKET_5_0_2);
 316   jmp(B1_5);
 317 
 318   bind(L_2TAG_PACKET_5_0_2);
 319   mulsd(xmm6, xmm3);
 320   mulsd(xmm4, xmm3);
 321   movdqu(xmm0, xmm6);
 322   pxor(xmm6, xmm4);
 323   psrad(xmm6, 31);
 324   pshufd(xmm6, xmm6, 85);
 325   psllq(xmm0, 1);
 326   psrlq(xmm0, 1);
 327   pxor(xmm0, xmm6);
 328   psrlq(xmm6, 63);
 329   paddq(xmm0, xmm6);
 330   paddq(xmm0, xmm4);
 331   movl(Address(rsp,0), 15);
 332   jmp(L_2TAG_PACKET_6_0_2);
 333 
 334   bind(L_2TAG_PACKET_4_0_2);
 335   addsd(xmm0, xmm4);
 336   mulsd(xmm0, xmm3);
 337   jmp(B1_5);
 338 
 339   bind(L_2TAG_PACKET_3_0_2);
 340   addsd(xmm0, xmm4);
 341   mulsd(xmm0, xmm3);
 342   pextrw(ecx, xmm0, 3);
 343   andl(ecx, 32752);
 344   cmpl(ecx, 32752);
 345   jcc(Assembler::aboveEqual, L_2TAG_PACKET_7_0_2);
 346   jmp(B1_5);
 347 
 348   bind(L_2TAG_PACKET_2_0_2);
 349   paddd(xmm3, xmm6);
 350   addpd(xmm0, xmm2);
 351   mulsd(xmm0, xmm3);
 352   movl(Address(rsp,0), 15);
 353   jmp(L_2TAG_PACKET_6_0_2);
 354 
 355   bind(L_2TAG_PACKET_8_0_2);
 356   cmpl(eax, 2146435072);
 357   jcc(Assembler::aboveEqual, L_2TAG_PACKET_9_0_2);
 358   movl(eax, Address(rsp,12));
 359   cmpl(eax, INT_MIN);
 360   jcc(Assembler::aboveEqual, L_2TAG_PACKET_10_0_2);
 361   movsd(xmm0, ExternalAddress(XMAX));      // 0xffffffffUL, 0x7fefffffUL
 362   mulsd(xmm0, xmm0);
 363 
 364   bind(L_2TAG_PACKET_7_0_2);
 365   movl(Address(rsp,0), 14);
 366   jmp(L_2TAG_PACKET_6_0_2);
 367 
 368   bind(L_2TAG_PACKET_10_0_2);
 369   movsd(xmm0, ExternalAddress(XMIN));      // 0x00000000UL, 0x00100000UL
 370   mulsd(xmm0, xmm0);
 371   movl(Address(rsp,0), 15);
 372   jmp(L_2TAG_PACKET_6_0_2);
 373 
 374   bind(L_2TAG_PACKET_9_0_2);
 375   movl(edx, Address(rsp,8));
 376   cmpl(eax, 2146435072);
 377   jcc(Assembler::above, L_2TAG_PACKET_11_0_2);
 378   cmpl(edx, 0);
 379   jcc(Assembler::notEqual, L_2TAG_PACKET_11_0_2);
 380   movl(eax, Address(rsp,12));
 381   cmpl(eax, 2146435072);
 382   jcc(Assembler::notEqual, L_2TAG_PACKET_12_0_2);
 383   movsd(xmm0, ExternalAddress(INF));       // 0x00000000UL, 0x7ff00000UL
 384   jmp(B1_5);
 385 
 386   bind(L_2TAG_PACKET_12_0_2);
 387   movsd(xmm0, ExternalAddress(ZERO));      // 0x00000000UL, 0x00000000UL
 388   jmp(B1_5);
 389 
 390   bind(L_2TAG_PACKET_11_0_2);
 391   movsd(xmm0, Address(rsp, 8));
 392   addsd(xmm0, xmm0);
 393   jmp(B1_5);
 394 
 395   bind(L_2TAG_PACKET_0_0_2);
 396   movl(eax, Address(rsp, 12));
 397   andl(eax, 2147483647);
 398   cmpl(eax, 1083179008);
 399   jcc(Assembler::aboveEqual, L_2TAG_PACKET_8_0_2);
 400   movsd(Address(rsp, 8), xmm0);
 401   addsd(xmm0, ExternalAddress(ONE_val));   // 0x00000000UL, 0x3ff00000UL
 402   jmp(B1_5);
 403 
 404   bind(L_2TAG_PACKET_6_0_2);
 405   movq(Address(rsp, 16), xmm0);
 406 
 407   bind(B1_3);
 408   movq(xmm0, Address(rsp, 16));
 409 
 410   bind(B1_5);
 411   addq(rsp, 24);
 412 }
 413 
 414 #endif  // _LP64
 415 
 416 #ifndef _LP64
 417 
 418 ALIGNED_(16) juint _static_const_table[] =
 419 {
 420     0x00000000UL, 0xfff00000UL, 0x00000000UL, 0xfff00000UL, 0xffffffc0UL,
 421     0x00000000UL, 0xffffffc0UL, 0x00000000UL, 0x0000ffc0UL, 0x00000000UL,
 422     0x0000ffc0UL, 0x00000000UL, 0x00000000UL, 0x43380000UL, 0x00000000UL,
 423     0x43380000UL, 0x652b82feUL, 0x40571547UL, 0x652b82feUL, 0x40571547UL,
 424     0xfefa0000UL, 0x3f862e42UL, 0xfefa0000UL, 0x3f862e42UL, 0xbc9e3b3aUL,
 425     0x3d1cf79aUL, 0xbc9e3b3aUL, 0x3d1cf79aUL, 0xfffffffeUL, 0x3fdfffffUL,
 426     0xfffffffeUL, 0x3fdfffffUL, 0xe3289860UL, 0x3f56c15cUL, 0x555b9e25UL,
 427     0x3fa55555UL, 0xc090cf0fUL, 0x3f811115UL, 0x55548ba1UL, 0x3fc55555UL,
 428     0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x0e03754dUL,
 429     0x3cad7bbfUL, 0x3e778060UL, 0x00002c9aUL, 0x3567f613UL, 0x3c8cd252UL,
 430     0xd3158574UL, 0x000059b0UL, 0x61e6c861UL, 0x3c60f74eUL, 0x18759bc8UL,
 431     0x00008745UL, 0x5d837b6cUL, 0x3c979aa6UL, 0x6cf9890fUL, 0x0000b558UL,
 432     0x702f9cd1UL, 0x3c3ebe3dUL, 0x32d3d1a2UL, 0x0000e3ecUL, 0x1e63bcd8UL,
 433     0x3ca3516eUL, 0xd0125b50UL, 0x00011301UL, 0x26f0387bUL, 0x3ca4c554UL,
 434     0xaea92ddfUL, 0x0001429aUL, 0x62523fb6UL, 0x3ca95153UL, 0x3c7d517aUL,
 435     0x000172b8UL, 0x3f1353bfUL, 0x3c8b898cUL, 0xeb6fcb75UL, 0x0001a35bUL,
 436     0x3e3a2f5fUL, 0x3c9aecf7UL, 0x3168b9aaUL, 0x0001d487UL, 0x44a6c38dUL,
 437     0x3c8a6f41UL, 0x88628cd6UL, 0x0002063bUL, 0xe3a8a894UL, 0x3c968efdUL,
 438     0x6e756238UL, 0x0002387aUL, 0x981fe7f2UL, 0x3c80472bUL, 0x65e27cddUL,
 439     0x00026b45UL, 0x6d09ab31UL, 0x3c82f7e1UL, 0xf51fdee1UL, 0x00029e9dUL,
 440     0x720c0ab3UL, 0x3c8b3782UL, 0xa6e4030bUL, 0x0002d285UL, 0x4db0abb6UL,
 441     0x3c834d75UL, 0x0a31b715UL, 0x000306feUL, 0x5dd3f84aUL, 0x3c8fdd39UL,
 442     0xb26416ffUL, 0x00033c08UL, 0xcc187d29UL, 0x3ca12f8cUL, 0x373aa9caUL,
 443     0x000371a7UL, 0x738b5e8bUL, 0x3ca7d229UL, 0x34e59ff6UL, 0x0003a7dbUL,
 444     0xa72a4c6dUL, 0x3c859f48UL, 0x4c123422UL, 0x0003dea6UL, 0x259d9205UL,
 445     0x3ca8b846UL, 0x21f72e29UL, 0x0004160aUL, 0x60c2ac12UL, 0x3c4363edUL,
 446     0x6061892dUL, 0x00044e08UL, 0xdaa10379UL, 0x3c6ecce1UL, 0xb5c13cd0UL,
 447     0x000486a2UL, 0xbb7aafb0UL, 0x3c7690ceUL, 0xd5362a27UL, 0x0004bfdaUL,
 448     0x9b282a09UL, 0x3ca083ccUL, 0x769d2ca6UL, 0x0004f9b2UL, 0xc1aae707UL,
 449     0x3ca509b0UL, 0x569d4f81UL, 0x0005342bUL, 0x18fdd78eUL, 0x3c933505UL,
 450     0x36b527daUL, 0x00056f47UL, 0xe21c5409UL, 0x3c9063e1UL, 0xdd485429UL,
 451     0x0005ab07UL, 0x2b64c035UL, 0x3c9432e6UL, 0x15ad2148UL, 0x0005e76fUL,
 452     0x99f08c0aUL, 0x3ca01284UL, 0xb03a5584UL, 0x0006247eUL, 0x0073dc06UL,
 453     0x3c99f087UL, 0x82552224UL, 0x00066238UL, 0x0da05571UL, 0x3c998d4dUL,
 454     0x667f3bccUL, 0x0006a09eUL, 0x86ce4786UL, 0x3ca52bb9UL, 0x3c651a2eUL,
 455     0x0006dfb2UL, 0x206f0dabUL, 0x3ca32092UL, 0xe8ec5f73UL, 0x00071f75UL,
 456     0x8e17a7a6UL, 0x3ca06122UL, 0x564267c8UL, 0x00075febUL, 0x461e9f86UL,
 457     0x3ca244acUL, 0x73eb0186UL, 0x0007a114UL, 0xabd66c55UL, 0x3c65ebe1UL,
 458     0x36cf4e62UL, 0x0007e2f3UL, 0xbbff67d0UL, 0x3c96fe9fUL, 0x994cce12UL,
 459     0x00082589UL, 0x14c801dfUL, 0x3c951f14UL, 0x9b4492ecUL, 0x000868d9UL,
 460     0xc1f0eab4UL, 0x3c8db72fUL, 0x422aa0dbUL, 0x0008ace5UL, 0x59f35f44UL,
 461     0x3c7bf683UL, 0x99157736UL, 0x0008f1aeUL, 0x9c06283cUL, 0x3ca360baUL,
 462     0xb0cdc5e4UL, 0x00093737UL, 0x20f962aaUL, 0x3c95e8d1UL, 0x9fde4e4fUL,
 463     0x00097d82UL, 0x2b91ce27UL, 0x3c71affcUL, 0x82a3f090UL, 0x0009c491UL,
 464     0x589a2ebdUL, 0x3c9b6d34UL, 0x7b5de564UL, 0x000a0c66UL, 0x9ab89880UL,
 465     0x3c95277cUL, 0xb23e255cUL, 0x000a5503UL, 0x6e735ab3UL, 0x3c846984UL,
 466     0x5579fdbfUL, 0x000a9e6bUL, 0x92cb3387UL, 0x3c8c1a77UL, 0x995ad3adUL,
 467     0x000ae89fUL, 0xdc2d1d96UL, 0x3ca22466UL, 0xb84f15faUL, 0x000b33a2UL,
 468     0xb19505aeUL, 0x3ca1112eUL, 0xf2fb5e46UL, 0x000b7f76UL, 0x0a5fddcdUL,
 469     0x3c74ffd7UL, 0x904bc1d2UL, 0x000bcc1eUL, 0x30af0cb3UL, 0x3c736eaeUL,
 470     0xdd85529cUL, 0x000c199bUL, 0xd10959acUL, 0x3c84e08fUL, 0x2e57d14bUL,
 471     0x000c67f1UL, 0x6c921968UL, 0x3c676b2cUL, 0xdcef9069UL, 0x000cb720UL,
 472     0x36df99b3UL, 0x3c937009UL, 0x4a07897bUL, 0x000d072dUL, 0xa63d07a7UL,
 473     0x3c74a385UL, 0xdcfba487UL, 0x000d5818UL, 0xd5c192acUL, 0x3c8e5a50UL,
 474     0x03db3285UL, 0x000da9e6UL, 0x1c4a9792UL, 0x3c98bb73UL, 0x337b9b5eUL,
 475     0x000dfc97UL, 0x603a88d3UL, 0x3c74b604UL, 0xe78b3ff6UL, 0x000e502eUL,
 476     0x92094926UL, 0x3c916f27UL, 0xa2a490d9UL, 0x000ea4afUL, 0x41aa2008UL,
 477     0x3c8ec3bcUL, 0xee615a27UL, 0x000efa1bUL, 0x31d185eeUL, 0x3c8a64a9UL,
 478     0x5b6e4540UL, 0x000f5076UL, 0x4d91cd9dUL, 0x3c77893bUL, 0x819e90d8UL,
 479     0x000fa7c1UL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x7ff00000UL,
 480     0x00000000UL, 0x00000000UL, 0xffffffffUL, 0x7fefffffUL, 0x00000000UL,
 481     0x00100000UL
 482 };
 483 
 484 //registers,
 485 // input: (rbp + 8)
 486 // scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
 487 //          rax, rdx, rcx, rbx (tmp)
 488 
 489 // Code generated by Intel C compiler for LIBM library
 490 
 491 void MacroAssembler::fast_exp(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp) {
 492   Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
 493   Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
 494   Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, L_2TAG_PACKET_10_0_2, L_2TAG_PACKET_11_0_2;
 495   Label L_2TAG_PACKET_12_0_2, L_2TAG_PACKET_13_0_2, B1_3, B1_5, start;
 496 
 497   assert_different_registers(tmp, eax, ecx, edx);
 498   jmp(start);
 499   address static_const_table = (address)_static_const_table;
 500 
 501   bind(start);
 502   subl(rsp, 120);
 503   movl(Address(rsp, 64), tmp);
 504   lea(tmp, ExternalAddress(static_const_table));
 505   movdqu(xmm0, Address(rsp, 128));
 506   unpcklpd(xmm0, xmm0);
 507   movdqu(xmm1, Address(tmp, 64));          // 0x652b82feUL, 0x40571547UL, 0x652b82feUL, 0x40571547UL
 508   movdqu(xmm6, Address(tmp, 48));          // 0x00000000UL, 0x43380000UL, 0x00000000UL, 0x43380000UL
 509   movdqu(xmm2, Address(tmp, 80));          // 0xfefa0000UL, 0x3f862e42UL, 0xfefa0000UL, 0x3f862e42UL
 510   movdqu(xmm3, Address(tmp, 96));          // 0xbc9e3b3aUL, 0x3d1cf79aUL, 0xbc9e3b3aUL, 0x3d1cf79aUL
 511   pextrw(eax, xmm0, 3);
 512   andl(eax, 32767);
 513   movl(edx, 16527);
 514   subl(edx, eax);
 515   subl(eax, 15504);
 516   orl(edx, eax);
 517   cmpl(edx, INT_MIN);
 518   jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
 519   mulpd(xmm1, xmm0);
 520   addpd(xmm1, xmm6);
 521   movapd(xmm7, xmm1);
 522   subpd(xmm1, xmm6);
 523   mulpd(xmm2, xmm1);
 524   movdqu(xmm4, Address(tmp, 128));         // 0xe3289860UL, 0x3f56c15cUL, 0x555b9e25UL, 0x3fa55555UL
 525   mulpd(xmm3, xmm1);
 526   movdqu(xmm5, Address(tmp, 144));         // 0xc090cf0fUL, 0x3f811115UL, 0x55548ba1UL, 0x3fc55555UL
 527   subpd(xmm0, xmm2);
 528   movdl(eax, xmm7);
 529   movl(ecx, eax);
 530   andl(ecx, 63);
 531   shll(ecx, 4);
 532   sarl(eax, 6);
 533   movl(edx, eax);
 534   movdqu(xmm6, Address(tmp, 16));          // 0xffffffc0UL, 0x00000000UL, 0xffffffc0UL, 0x00000000UL
 535   pand(xmm7, xmm6);
 536   movdqu(xmm6, Address(tmp, 32));          // 0x0000ffc0UL, 0x00000000UL, 0x0000ffc0UL, 0x00000000UL
 537   paddq(xmm7, xmm6);
 538   psllq(xmm7, 46);
 539   subpd(xmm0, xmm3);
 540   movdqu(xmm2, Address(tmp, ecx, Address::times_1, 160));
 541   mulpd(xmm4, xmm0);
 542   movapd(xmm6, xmm0);
 543   movapd(xmm1, xmm0);
 544   mulpd(xmm6, xmm6);
 545   mulpd(xmm0, xmm6);
 546   addpd(xmm5, xmm4);
 547   mulsd(xmm0, xmm6);
 548   mulpd(xmm6, Address(tmp, 112));          // 0xfffffffeUL, 0x3fdfffffUL, 0xfffffffeUL, 0x3fdfffffUL
 549   addsd(xmm1, xmm2);
 550   unpckhpd(xmm2, xmm2);
 551   mulpd(xmm0, xmm5);
 552   addsd(xmm1, xmm0);
 553   por(xmm2, xmm7);
 554   unpckhpd(xmm0, xmm0);
 555   addsd(xmm0, xmm1);
 556   addsd(xmm0, xmm6);
 557   addl(edx, 894);
 558   cmpl(edx, 1916);
 559   jcc (Assembler::above, L_2TAG_PACKET_1_0_2);
 560   mulsd(xmm0, xmm2);
 561   addsd(xmm0, xmm2);
 562   jmp(L_2TAG_PACKET_2_0_2);
 563 
 564   bind(L_2TAG_PACKET_1_0_2);
 565   fnstcw(Address(rsp, 24));
 566   movzwl(edx, Address(rsp, 24));
 567   orl(edx, 768);
 568   movw(Address(rsp, 28), edx);
 569   fldcw(Address(rsp, 28));
 570   movl(edx, eax);
 571   sarl(eax, 1);
 572   subl(edx, eax);
 573   movdqu(xmm6, Address(tmp, 0));           // 0x00000000UL, 0xfff00000UL, 0x00000000UL, 0xfff00000UL
 574   pandn(xmm6, xmm2);
 575   addl(eax, 1023);
 576   movdl(xmm3, eax);
 577   psllq(xmm3, 52);
 578   por(xmm6, xmm3);
 579   addl(edx, 1023);
 580   movdl(xmm4, edx);
 581   psllq(xmm4, 52);
 582   movsd(Address(rsp, 8), xmm0);
 583   fld_d(Address(rsp, 8));
 584   movsd(Address(rsp, 16), xmm6);
 585   fld_d(Address(rsp, 16));
 586   fmula(1);
 587   faddp(1);
 588   movsd(Address(rsp, 8), xmm4);
 589   fld_d(Address(rsp, 8));
 590   fmulp(1);
 591   fstp_d(Address(rsp, 8));
 592   movsd(xmm0,Address(rsp, 8));
 593   fldcw(Address(rsp, 24));
 594   pextrw(ecx, xmm0, 3);
 595   andl(ecx, 32752);
 596   cmpl(ecx, 32752);
 597   jcc(Assembler::greaterEqual, L_2TAG_PACKET_3_0_2);
 598   cmpl(ecx, 0);
 599   jcc(Assembler::equal, L_2TAG_PACKET_4_0_2);
 600   jmp(L_2TAG_PACKET_2_0_2);
 601   cmpl(ecx, INT_MIN);
 602   jcc(Assembler::less, L_2TAG_PACKET_3_0_2);
 603   cmpl(ecx, -1064950997);
 604   jcc(Assembler::less, L_2TAG_PACKET_2_0_2);
 605   jcc(Assembler::greater, L_2TAG_PACKET_4_0_2);
 606   movl(edx, Address(rsp, 128));
 607   cmpl(edx ,-17155601);
 608   jcc(Assembler::less, L_2TAG_PACKET_2_0_2);
 609   jmp(L_2TAG_PACKET_4_0_2);
 610 
 611   bind(L_2TAG_PACKET_3_0_2);
 612   movl(edx, 14);
 613   jmp(L_2TAG_PACKET_5_0_2);
 614 
 615   bind(L_2TAG_PACKET_4_0_2);
 616   movl(edx, 15);
 617 
 618   bind(L_2TAG_PACKET_5_0_2);
 619   movsd(Address(rsp, 0), xmm0);
 620   movsd(xmm0, Address(rsp, 128));
 621   fld_d(Address(rsp, 0));
 622   jmp(L_2TAG_PACKET_6_0_2);
 623 
 624   bind(L_2TAG_PACKET_7_0_2);
 625   cmpl(eax, 2146435072);
 626   jcc(Assembler::greaterEqual, L_2TAG_PACKET_8_0_2);
 627   movl(eax, Address(rsp, 132));
 628   cmpl(eax, INT_MIN);
 629   jcc(Assembler::greaterEqual, L_2TAG_PACKET_9_0_2);
 630   movsd(xmm0, Address(tmp, 1208));         // 0xffffffffUL, 0x7fefffffUL
 631   mulsd(xmm0, xmm0);
 632   movl(edx, 14);
 633   jmp(L_2TAG_PACKET_5_0_2);
 634 
 635   bind(L_2TAG_PACKET_9_0_2);
 636   movsd(xmm0, Address(tmp, 1216));
 637   mulsd(xmm0, xmm0);
 638   movl(edx, 15);
 639   jmp(L_2TAG_PACKET_5_0_2);
 640 
 641   bind(L_2TAG_PACKET_8_0_2);
 642   movl(edx, Address(rsp, 128));
 643   cmpl(eax, 2146435072);
 644   jcc(Assembler::above, L_2TAG_PACKET_10_0_2);
 645   cmpl(edx, 0);
 646   jcc(Assembler::notEqual, L_2TAG_PACKET_10_0_2);
 647   movl(eax, Address(rsp, 132));
 648   cmpl(eax, 2146435072);
 649   jcc(Assembler::notEqual, L_2TAG_PACKET_11_0_2);
 650   movsd(xmm0, Address(tmp, 1192));         // 0x00000000UL, 0x7ff00000UL
 651   jmp(L_2TAG_PACKET_2_0_2);
 652 
 653   bind(L_2TAG_PACKET_11_0_2);
 654   movsd(xmm0, Address(tmp, 1200));         // 0x00000000UL, 0x00000000UL
 655   jmp(L_2TAG_PACKET_2_0_2);
 656 
 657   bind(L_2TAG_PACKET_10_0_2);
 658   movsd(xmm0, Address(rsp, 128));
 659   addsd(xmm0, xmm0);
 660   jmp(L_2TAG_PACKET_2_0_2);
 661 
 662   bind(L_2TAG_PACKET_0_0_2);
 663   movl(eax, Address(rsp, 132));
 664   andl(eax, 2147483647);
 665   cmpl(eax, 1083179008);
 666   jcc(Assembler::aboveEqual, L_2TAG_PACKET_7_0_2);
 667   movsd(xmm0, Address(rsp, 128));
 668   addsd(xmm0, Address(tmp, 1184));         // 0x00000000UL, 0x3ff00000UL
 669   jmp(L_2TAG_PACKET_2_0_2);
 670 
 671   bind(L_2TAG_PACKET_2_0_2);
 672   movsd(Address(rsp, 48), xmm0);
 673   fld_d(Address(rsp, 48));
 674 
 675   bind(L_2TAG_PACKET_6_0_2);
 676   movl(tmp, Address(rsp, 64));
 677 }
 678 
 679 #endif  // !_LP64
 680 
 681 /******************************************************************************/
 682 //                     ALGORITHM DESCRIPTION - LOG()
 683 //                     ---------------------
 684 //
 685 //    x=2^k * mx, mx in [1,2)
 686 //
 687 //    Get B~1/mx based on the output of rcpss instruction (B0)
 688 //    B = int((B0*2^7+0.5))/2^7
 689 //
 690 //    Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
 691 //
 692 //    Result:  k*log(2) - log(B) + p(r) if |x-1| >= small value (2^-6)  and
 693 //             p(r) is a degree 7 polynomial
 694 //             -log(B) read from data table (high, low parts)
 695 //             Result is formed from high and low parts
 696 //
 697 // Special cases:
 698 //  log(NaN) = quiet NaN, and raise invalid exception
 699 //  log(+INF) = that INF
 700 //  log(0) = -INF with divide-by-zero exception raised
 701 //  log(1) = +0
 702 //  log(x) = NaN with invalid exception raised if x < -0, including -INF
 703 //
 704 /******************************************************************************/
 705 
 706 #ifdef _LP64
 707 
 708 ALIGNED_(16) juint _L_tbl[] =
 709 {
 710   0xfefa3800UL, 0x3fe62e42UL, 0x93c76730UL, 0x3d2ef357UL, 0xaa241800UL,
 711   0x3fe5ee82UL, 0x0cda46beUL, 0x3d220238UL, 0x5c364800UL, 0x3fe5af40UL,
 712   0xac10c9fbUL, 0x3d2dfa63UL, 0x26bb8c00UL, 0x3fe5707aUL, 0xff3303ddUL,
 713   0x3d09980bUL, 0x26867800UL, 0x3fe5322eUL, 0x5d257531UL, 0x3d05ccc4UL,
 714   0x835a5000UL, 0x3fe4f45aUL, 0x6d93b8fbUL, 0xbd2e6c51UL, 0x6f970c00UL,
 715   0x3fe4b6fdUL, 0xed4c541cUL, 0x3cef7115UL, 0x27e8a400UL, 0x3fe47a15UL,
 716   0xf94d60aaUL, 0xbd22cb6aUL, 0xf2f92400UL, 0x3fe43d9fUL, 0x481051f7UL,
 717   0xbcfd984fUL, 0x2125cc00UL, 0x3fe4019cUL, 0x30f0c74cUL, 0xbd26ce79UL,
 718   0x0c36c000UL, 0x3fe3c608UL, 0x7cfe13c2UL, 0xbd02b736UL, 0x17197800UL,
 719   0x3fe38ae2UL, 0xbb5569a4UL, 0xbd218b7aUL, 0xad9d8c00UL, 0x3fe35028UL,
 720   0x9527e6acUL, 0x3d10b83fUL, 0x44340800UL, 0x3fe315daUL, 0xc5a0ed9cUL,
 721   0xbd274e93UL, 0x57b0e000UL, 0x3fe2dbf5UL, 0x07b9dc11UL, 0xbd17a6e5UL,
 722   0x6d0ec000UL, 0x3fe2a278UL, 0xe797882dUL, 0x3d206d2bUL, 0x1134dc00UL,
 723   0x3fe26962UL, 0x05226250UL, 0xbd0b61f1UL, 0xd8bebc00UL, 0x3fe230b0UL,
 724   0x6e48667bUL, 0x3d12fc06UL, 0x5fc61800UL, 0x3fe1f863UL, 0xc9fe81d3UL,
 725   0xbd2a7242UL, 0x49ae6000UL, 0x3fe1c078UL, 0xed70e667UL, 0x3cccacdeUL,
 726   0x40f23c00UL, 0x3fe188eeUL, 0xf8ab4650UL, 0x3d14cc4eUL, 0xf6f29800UL,
 727   0x3fe151c3UL, 0xa293ae49UL, 0xbd2edd97UL, 0x23c75c00UL, 0x3fe11af8UL,
 728   0xbb9ddcb2UL, 0xbd258647UL, 0x8611cc00UL, 0x3fe0e489UL, 0x07801742UL,
 729   0x3d1c2998UL, 0xe2d05400UL, 0x3fe0ae76UL, 0x887e7e27UL, 0x3d1f486bUL,
 730   0x0533c400UL, 0x3fe078bfUL, 0x41edf5fdUL, 0x3d268122UL, 0xbe760400UL,
 731   0x3fe04360UL, 0xe79539e0UL, 0xbd04c45fUL, 0xe5b20800UL, 0x3fe00e5aUL,
 732   0xb1727b1cUL, 0xbd053ba3UL, 0xaf7a4800UL, 0x3fdfb358UL, 0x3c164935UL,
 733   0x3d0085faUL, 0xee031800UL, 0x3fdf4aa7UL, 0x6f014a8bUL, 0x3d12cde5UL,
 734   0x56b41000UL, 0x3fdee2a1UL, 0x5a470251UL, 0x3d2f27f4UL, 0xc3ddb000UL,
 735   0x3fde7b42UL, 0x5372bd08UL, 0xbd246550UL, 0x1a272800UL, 0x3fde148aUL,
 736   0x07322938UL, 0xbd1326b2UL, 0x484c9800UL, 0x3fddae75UL, 0x60dc616aUL,
 737   0xbd1ea42dUL, 0x46def800UL, 0x3fdd4902UL, 0xe9a767a8UL, 0x3d235bafUL,
 738   0x18064800UL, 0x3fdce42fUL, 0x3ec7a6b0UL, 0xbd0797c3UL, 0xc7455800UL,
 739   0x3fdc7ff9UL, 0xc15249aeUL, 0xbd29b6ddUL, 0x693fa000UL, 0x3fdc1c60UL,
 740   0x7fe8e180UL, 0x3d2cec80UL, 0x1b80e000UL, 0x3fdbb961UL, 0xf40a666dUL,
 741   0x3d27d85bUL, 0x04462800UL, 0x3fdb56faUL, 0x2d841995UL, 0x3d109525UL,
 742   0x5248d000UL, 0x3fdaf529UL, 0x52774458UL, 0xbd217cc5UL, 0x3c8ad800UL,
 743   0x3fda93edUL, 0xbea77a5dUL, 0x3d1e36f2UL, 0x0224f800UL, 0x3fda3344UL,
 744   0x7f9d79f5UL, 0x3d23c645UL, 0xea15f000UL, 0x3fd9d32bUL, 0x10d0c0b0UL,
 745   0xbd26279eUL, 0x43135800UL, 0x3fd973a3UL, 0xa502d9f0UL, 0xbd152313UL,
 746   0x635bf800UL, 0x3fd914a8UL, 0x2ee6307dUL, 0xbd1766b5UL, 0xa88b3000UL,
 747   0x3fd8b639UL, 0xe5e70470UL, 0xbd205ae1UL, 0x776dc800UL, 0x3fd85855UL,
 748   0x3333778aUL, 0x3d2fd56fUL, 0x3bd81800UL, 0x3fd7fafaUL, 0xc812566aUL,
 749   0xbd272090UL, 0x687cf800UL, 0x3fd79e26UL, 0x2efd1778UL, 0x3d29ec7dUL,
 750   0x76c67800UL, 0x3fd741d8UL, 0x49dc60b3UL, 0x3d2d8b09UL, 0xe6af1800UL,
 751   0x3fd6e60eUL, 0x7c222d87UL, 0x3d172165UL, 0x3e9c6800UL, 0x3fd68ac8UL,
 752   0x2756eba0UL, 0x3d20a0d3UL, 0x0b3ab000UL, 0x3fd63003UL, 0xe731ae00UL,
 753   0xbd2db623UL, 0xdf596000UL, 0x3fd5d5bdUL, 0x08a465dcUL, 0xbd0a0b2aUL,
 754   0x53c8d000UL, 0x3fd57bf7UL, 0xee5d40efUL, 0x3d1fadedUL, 0x0738a000UL,
 755   0x3fd522aeUL, 0x8164c759UL, 0x3d2ebe70UL, 0x9e173000UL, 0x3fd4c9e0UL,
 756   0x1b0ad8a4UL, 0xbd2e2089UL, 0xc271c800UL, 0x3fd4718dUL, 0x0967d675UL,
 757   0xbd2f27ceUL, 0x23d5e800UL, 0x3fd419b4UL, 0xec90e09dUL, 0x3d08e436UL,
 758   0x77333000UL, 0x3fd3c252UL, 0xb606bd5cUL, 0x3d183b54UL, 0x76be1000UL,
 759   0x3fd36b67UL, 0xb0f177c8UL, 0x3d116ecdUL, 0xe1d36000UL, 0x3fd314f1UL,
 760   0xd3213cb8UL, 0xbd28e27aUL, 0x7cdc9000UL, 0x3fd2bef0UL, 0x4a5004f4UL,
 761   0x3d2a9cfaUL, 0x1134d800UL, 0x3fd26962UL, 0xdf5bb3b6UL, 0x3d2c93c1UL,
 762   0x6d0eb800UL, 0x3fd21445UL, 0xba46baeaUL, 0x3d0a87deUL, 0x635a6800UL,
 763   0x3fd1bf99UL, 0x5147bdb7UL, 0x3d2ca6edUL, 0xcbacf800UL, 0x3fd16b5cUL,
 764   0xf7a51681UL, 0x3d2b9acdUL, 0x8227e800UL, 0x3fd1178eUL, 0x63a5f01cUL,
 765   0xbd2c210eUL, 0x67616000UL, 0x3fd0c42dUL, 0x163ceae9UL, 0x3d27188bUL,
 766   0x604d5800UL, 0x3fd07138UL, 0x16ed4e91UL, 0x3cf89cdbUL, 0x5626c800UL,
 767   0x3fd01eaeUL, 0x1485e94aUL, 0xbd16f08cUL, 0x6cb3b000UL, 0x3fcf991cUL,
 768   0xca0cdf30UL, 0x3d1bcbecUL, 0xe4dd0000UL, 0x3fcef5adUL, 0x65bb8e11UL,
 769   0xbcca2115UL, 0xffe71000UL, 0x3fce530eUL, 0x6041f430UL, 0x3cc21227UL,
 770   0xb0d49000UL, 0x3fcdb13dUL, 0xf715b035UL, 0xbd2aff2aUL, 0xf2656000UL,
 771   0x3fcd1037UL, 0x75b6f6e4UL, 0xbd084a7eUL, 0xc6f01000UL, 0x3fcc6ffbUL,
 772   0xc5962bd2UL, 0xbcf1ec72UL, 0x383be000UL, 0x3fcbd087UL, 0x595412b6UL,
 773   0xbd2d4bc4UL, 0x575bd000UL, 0x3fcb31d8UL, 0x4eace1aaUL, 0xbd0c358dUL,
 774   0x3c8ae000UL, 0x3fca93edUL, 0x50562169UL, 0xbd287243UL, 0x07089000UL,
 775   0x3fc9f6c4UL, 0x6865817aUL, 0x3d29904dUL, 0xdcf70000UL, 0x3fc95a5aUL,
 776   0x58a0ff6fUL, 0x3d07f228UL, 0xeb390000UL, 0x3fc8beafUL, 0xaae92cd1UL,
 777   0xbd073d54UL, 0x6551a000UL, 0x3fc823c1UL, 0x9a631e83UL, 0x3d1e0ddbUL,
 778   0x85445000UL, 0x3fc7898dUL, 0x70914305UL, 0xbd1c6610UL, 0x8b757000UL,
 779   0x3fc6f012UL, 0xe59c21e1UL, 0xbd25118dUL, 0xbe8c1000UL, 0x3fc6574eUL,
 780   0x2c3c2e78UL, 0x3d19cf8bUL, 0x6b544000UL, 0x3fc5bf40UL, 0xeb68981cUL,
 781   0xbd127023UL, 0xe4a1b000UL, 0x3fc527e5UL, 0xe5697dc7UL, 0x3d2633e8UL,
 782   0x8333b000UL, 0x3fc4913dUL, 0x54fdb678UL, 0x3d258379UL, 0xa5993000UL,
 783   0x3fc3fb45UL, 0x7e6a354dUL, 0xbd2cd1d8UL, 0xb0159000UL, 0x3fc365fcUL,
 784   0x234b7289UL, 0x3cc62fa8UL, 0x0c868000UL, 0x3fc2d161UL, 0xcb81b4a1UL,
 785   0x3d039d6cUL, 0x2a49c000UL, 0x3fc23d71UL, 0x8fd3df5cUL, 0x3d100d23UL,
 786   0x7e23f000UL, 0x3fc1aa2bUL, 0x44389934UL, 0x3d2ca78eUL, 0x8227e000UL,
 787   0x3fc1178eUL, 0xce2d07f2UL, 0x3d21ef78UL, 0xb59e4000UL, 0x3fc08598UL,
 788   0x7009902cUL, 0xbd27e5ddUL, 0x39dbe000UL, 0x3fbfe891UL, 0x4fa10afdUL,
 789   0xbd2534d6UL, 0x830a2000UL, 0x3fbec739UL, 0xafe645e0UL, 0xbd2dc068UL,
 790   0x63844000UL, 0x3fbda727UL, 0x1fa71733UL, 0x3d1a8940UL, 0x01bc4000UL,
 791   0x3fbc8858UL, 0xc65aacd3UL, 0x3d2646d1UL, 0x8dad6000UL, 0x3fbb6ac8UL,
 792   0x2bf768e5UL, 0xbd139080UL, 0x40b1c000UL, 0x3fba4e76UL, 0xb94407c8UL,
 793   0xbd0e42b6UL, 0x5d594000UL, 0x3fb9335eUL, 0x3abd47daUL, 0x3d23115cUL,
 794   0x2f40e000UL, 0x3fb8197eUL, 0xf96ffdf7UL, 0x3d0f80dcUL, 0x0aeac000UL,
 795   0x3fb700d3UL, 0xa99ded32UL, 0x3cec1e8dUL, 0x4d97a000UL, 0x3fb5e95aUL,
 796   0x3c5d1d1eUL, 0xbd2c6906UL, 0x5d208000UL, 0x3fb4d311UL, 0x82f4e1efUL,
 797   0xbcf53a25UL, 0xa7d1e000UL, 0x3fb3bdf5UL, 0xa5db4ed7UL, 0x3d2cc85eUL,
 798   0xa4472000UL, 0x3fb2aa04UL, 0xae9c697dUL, 0xbd20b6e8UL, 0xd1466000UL,
 799   0x3fb1973bUL, 0x560d9e9bUL, 0xbd25325dUL, 0xb59e4000UL, 0x3fb08598UL,
 800   0x7009902cUL, 0xbd17e5ddUL, 0xc006c000UL, 0x3faeea31UL, 0x4fc93b7bUL,
 801   0xbd0e113eUL, 0xcdddc000UL, 0x3faccb73UL, 0x47d82807UL, 0xbd1a68f2UL,
 802   0xd0fb0000UL, 0x3faaaef2UL, 0x353bb42eUL, 0x3d20fc1aUL, 0x149fc000UL,
 803   0x3fa894aaUL, 0xd05a267dUL, 0xbd197995UL, 0xf2d4c000UL, 0x3fa67c94UL,
 804   0xec19afa2UL, 0xbd029efbUL, 0xd42e0000UL, 0x3fa466aeUL, 0x75bdfd28UL,
 805   0xbd2c1673UL, 0x2f8d0000UL, 0x3fa252f3UL, 0xe021b67bUL, 0x3d283e9aUL,
 806   0x89e74000UL, 0x3fa0415dUL, 0x5cf1d753UL, 0x3d0111c0UL, 0xec148000UL,
 807   0x3f9c63d2UL, 0x3f9eb2f3UL, 0x3d2578c6UL, 0x28c90000UL, 0x3f984925UL,
 808   0x325a0c34UL, 0xbd2aa0baUL, 0x25980000UL, 0x3f9432a9UL, 0x928637feUL,
 809   0x3d098139UL, 0x58938000UL, 0x3f902056UL, 0x06e2f7d2UL, 0xbd23dc5bUL,
 810   0xa3890000UL, 0x3f882448UL, 0xda74f640UL, 0xbd275577UL, 0x75890000UL,
 811   0x3f801015UL, 0x999d2be8UL, 0xbd10c76bUL, 0x59580000UL, 0x3f700805UL,
 812   0xcb31c67bUL, 0x3d2166afUL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
 813   0x80000000UL
 814 };
 815 
 816 ALIGNED_(16) juint _log2[] =
 817 {
 818   0xfefa3800UL, 0x3fa62e42UL, 0x93c76730UL, 0x3ceef357UL
 819 };
 820 
 821 ALIGNED_(16) juint _coeff[] =
 822 {
 823   0x92492492UL, 0x3fc24924UL, 0x00000000UL, 0xbfd00000UL, 0x3d6fb175UL,
 824   0xbfc5555eUL, 0x55555555UL, 0x3fd55555UL, 0x9999999aUL, 0x3fc99999UL,
 825   0x00000000UL, 0xbfe00000UL
 826 };
 827 
 828 //registers,
 829 // input: xmm0
 830 // scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
 831 //          rax, rdx, rcx, r8, r11
 832 
 833 void MacroAssembler::fast_log(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp1, Register tmp2) {
 834   Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
 835   Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
 836   Label L_2TAG_PACKET_8_0_2;
 837   Label L_2TAG_PACKET_12_0_2, L_2TAG_PACKET_13_0_2, B1_3, B1_5, start;
 838 
 839   assert_different_registers(tmp1, tmp2, eax, ecx, edx);
 840   jmp(start);
 841   address L_tbl = (address)_L_tbl;
 842   address log2 = (address)_log2;
 843   address coeff = (address)_coeff;
 844 
 845   bind(start);
 846   subq(rsp, 24);
 847   movsd(Address(rsp, 0), xmm0);
 848   mov64(rax, 0x3ff0000000000000);
 849   movdq(xmm2, rax);
 850   mov64(rdx, 0x77f0000000000000);
 851   movdq(xmm3, rdx);
 852   movl(ecx, 32768);
 853   movdl(xmm4, rcx);
 854   mov64(tmp1, 0xffffe00000000000);
 855   movdq(xmm5, tmp1);
 856   movdqu(xmm1, xmm0);
 857   pextrw(eax, xmm0, 3);
 858   por(xmm0, xmm2);
 859   movl(ecx, 16352);
 860   psrlq(xmm0, 27);
 861   lea(tmp2, ExternalAddress(L_tbl));
 862   psrld(xmm0, 2);
 863   rcpps(xmm0, xmm0);
 864   psllq(xmm1, 12);
 865   pshufd(xmm6, xmm5, 228);
 866   psrlq(xmm1, 12);
 867   subl(eax, 16);
 868   cmpl(eax, 32736);
 869   jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
 870 
 871   bind(L_2TAG_PACKET_1_0_2);
 872   paddd(xmm0, xmm4);
 873   por(xmm1, xmm3);
 874   movdl(edx, xmm0);
 875   psllq(xmm0, 29);
 876   pand(xmm5, xmm1);
 877   pand(xmm0, xmm6);
 878   subsd(xmm1, xmm5);
 879   mulpd(xmm5, xmm0);
 880   andl(eax, 32752);
 881   subl(eax, ecx);
 882   cvtsi2sdl(xmm7, eax);
 883   mulsd(xmm1, xmm0);
 884   movq(xmm6, ExternalAddress(log2));       // 0xfefa3800UL, 0x3fa62e42UL
 885   movdqu(xmm3, ExternalAddress(coeff));    // 0x92492492UL, 0x3fc24924UL, 0x00000000UL, 0xbfd00000UL
 886   subsd(xmm5, xmm2);
 887   andl(edx, 16711680);
 888   shrl(edx, 12);
 889   movdqu(xmm0, Address(tmp2, edx));
 890   movdqu(xmm4, ExternalAddress(16 + coeff)); // 0x3d6fb175UL, 0xbfc5555eUL, 0x55555555UL, 0x3fd55555UL
 891   addsd(xmm1, xmm5);
 892   movdqu(xmm2, ExternalAddress(32 + coeff)); // 0x9999999aUL, 0x3fc99999UL, 0x00000000UL, 0xbfe00000UL
 893   mulsd(xmm6, xmm7);
 894   if (VM_Version::supports_sse3()) {
 895     movddup(xmm5, xmm1);
 896   } else {
 897     movdqu(xmm5, xmm1);
 898     movlhps(xmm5, xmm5);
 899   }
 900   mulsd(xmm7, ExternalAddress(8 + log2));    // 0x93c76730UL, 0x3ceef357UL
 901   mulsd(xmm3, xmm1);
 902   addsd(xmm0, xmm6);
 903   mulpd(xmm4, xmm5);
 904   mulpd(xmm5, xmm5);
 905   if (VM_Version::supports_sse3()) {
 906     movddup(xmm6, xmm0);
 907   } else {
 908     movdqu(xmm6, xmm0);
 909     movlhps(xmm6, xmm6);
 910   }
 911   addsd(xmm0, xmm1);
 912   addpd(xmm4, xmm2);
 913   mulpd(xmm3, xmm5);
 914   subsd(xmm6, xmm0);
 915   mulsd(xmm4, xmm1);
 916   pshufd(xmm2, xmm0, 238);
 917   addsd(xmm1, xmm6);
 918   mulsd(xmm5, xmm5);
 919   addsd(xmm7, xmm2);
 920   addpd(xmm4, xmm3);
 921   addsd(xmm1, xmm7);
 922   mulpd(xmm4, xmm5);
 923   addsd(xmm1, xmm4);
 924   pshufd(xmm5, xmm4, 238);
 925   addsd(xmm1, xmm5);
 926   addsd(xmm0, xmm1);
 927   jmp(B1_5);
 928 
 929   bind(L_2TAG_PACKET_0_0_2);
 930   movq(xmm0, Address(rsp, 0));
 931   movq(xmm1, Address(rsp, 0));
 932   addl(eax, 16);
 933   cmpl(eax, 32768);
 934   jcc(Assembler::aboveEqual, L_2TAG_PACKET_2_0_2);
 935   cmpl(eax, 16);
 936   jcc(Assembler::below, L_2TAG_PACKET_3_0_2);
 937 
 938   bind(L_2TAG_PACKET_4_0_2);
 939   addsd(xmm0, xmm0);
 940   jmp(B1_5);
 941 
 942   bind(L_2TAG_PACKET_5_0_2);
 943   jcc(Assembler::above, L_2TAG_PACKET_4_0_2);
 944   cmpl(edx, 0);
 945   jcc(Assembler::above, L_2TAG_PACKET_4_0_2);
 946   jmp(L_2TAG_PACKET_6_0_2);
 947 
 948   bind(L_2TAG_PACKET_3_0_2);
 949   xorpd(xmm1, xmm1);
 950   addsd(xmm1, xmm0);
 951   movdl(edx, xmm1);
 952   psrlq(xmm1, 32);
 953   movdl(ecx, xmm1);
 954   orl(edx, ecx);
 955   cmpl(edx, 0);
 956   jcc(Assembler::equal, L_2TAG_PACKET_7_0_2);
 957   xorpd(xmm1, xmm1);
 958   movl(eax, 18416);
 959   pinsrw(xmm1, eax, 3);
 960   mulsd(xmm0, xmm1);
 961   movdqu(xmm1, xmm0);
 962   pextrw(eax, xmm0, 3);
 963   por(xmm0, xmm2);
 964   psrlq(xmm0, 27);
 965   movl(ecx, 18416);
 966   psrld(xmm0, 2);
 967   rcpps(xmm0, xmm0);
 968   psllq(xmm1, 12);
 969   pshufd(xmm6, xmm5, 228);
 970   psrlq(xmm1, 12);
 971   jmp(L_2TAG_PACKET_1_0_2);
 972 
 973   bind(L_2TAG_PACKET_2_0_2);
 974   movdl(edx, xmm1);
 975   psrlq(xmm1, 32);
 976   movdl(ecx, xmm1);
 977   addl(ecx, ecx);
 978   cmpl(ecx, -2097152);
 979   jcc(Assembler::aboveEqual, L_2TAG_PACKET_5_0_2);
 980   orl(edx, ecx);
 981   cmpl(edx, 0);
 982   jcc(Assembler::equal, L_2TAG_PACKET_7_0_2);
 983 
 984   bind(L_2TAG_PACKET_6_0_2);
 985   xorpd(xmm1, xmm1);
 986   xorpd(xmm0, xmm0);
 987   movl(eax, 32752);
 988   pinsrw(xmm1, eax, 3);
 989   mulsd(xmm0, xmm1);
 990   movl(Address(rsp, 16), 3);
 991   jmp(L_2TAG_PACKET_8_0_2);
 992   bind(L_2TAG_PACKET_7_0_2);
 993   xorpd(xmm1, xmm1);
 994   xorpd(xmm0, xmm0);
 995   movl(eax, 49136);
 996   pinsrw(xmm0, eax, 3);
 997   divsd(xmm0, xmm1);
 998   movl(Address(rsp, 16), 2);
 999 
1000   bind(L_2TAG_PACKET_8_0_2);
1001   movq(Address(rsp, 8), xmm0);
1002 
1003   bind(B1_3);
1004   movq(xmm0, Address(rsp, 8));
1005 
1006   bind(B1_5);
1007   addq(rsp, 24);
1008 }
1009 
1010 #endif // _LP64
1011 
1012 #ifndef _LP64
1013 
1014 ALIGNED_(16) juint _static_const_table_log[] =
1015 {
1016   0xfefa3800UL, 0x3fe62e42UL, 0x93c76730UL, 0x3d2ef357UL, 0xaa241800UL,
1017   0x3fe5ee82UL, 0x0cda46beUL, 0x3d220238UL, 0x5c364800UL, 0x3fe5af40UL,
1018   0xac10c9fbUL, 0x3d2dfa63UL, 0x26bb8c00UL, 0x3fe5707aUL, 0xff3303ddUL,
1019   0x3d09980bUL, 0x26867800UL, 0x3fe5322eUL, 0x5d257531UL, 0x3d05ccc4UL,
1020   0x835a5000UL, 0x3fe4f45aUL, 0x6d93b8fbUL, 0xbd2e6c51UL, 0x6f970c00UL,
1021   0x3fe4b6fdUL, 0xed4c541cUL, 0x3cef7115UL, 0x27e8a400UL, 0x3fe47a15UL,
1022   0xf94d60aaUL, 0xbd22cb6aUL, 0xf2f92400UL, 0x3fe43d9fUL, 0x481051f7UL,
1023   0xbcfd984fUL, 0x2125cc00UL, 0x3fe4019cUL, 0x30f0c74cUL, 0xbd26ce79UL,
1024   0x0c36c000UL, 0x3fe3c608UL, 0x7cfe13c2UL, 0xbd02b736UL, 0x17197800UL,
1025   0x3fe38ae2UL, 0xbb5569a4UL, 0xbd218b7aUL, 0xad9d8c00UL, 0x3fe35028UL,
1026   0x9527e6acUL, 0x3d10b83fUL, 0x44340800UL, 0x3fe315daUL, 0xc5a0ed9cUL,
1027   0xbd274e93UL, 0x57b0e000UL, 0x3fe2dbf5UL, 0x07b9dc11UL, 0xbd17a6e5UL,
1028   0x6d0ec000UL, 0x3fe2a278UL, 0xe797882dUL, 0x3d206d2bUL, 0x1134dc00UL,
1029   0x3fe26962UL, 0x05226250UL, 0xbd0b61f1UL, 0xd8bebc00UL, 0x3fe230b0UL,
1030   0x6e48667bUL, 0x3d12fc06UL, 0x5fc61800UL, 0x3fe1f863UL, 0xc9fe81d3UL,
1031   0xbd2a7242UL, 0x49ae6000UL, 0x3fe1c078UL, 0xed70e667UL, 0x3cccacdeUL,
1032   0x40f23c00UL, 0x3fe188eeUL, 0xf8ab4650UL, 0x3d14cc4eUL, 0xf6f29800UL,
1033   0x3fe151c3UL, 0xa293ae49UL, 0xbd2edd97UL, 0x23c75c00UL, 0x3fe11af8UL,
1034   0xbb9ddcb2UL, 0xbd258647UL, 0x8611cc00UL, 0x3fe0e489UL, 0x07801742UL,
1035   0x3d1c2998UL, 0xe2d05400UL, 0x3fe0ae76UL, 0x887e7e27UL, 0x3d1f486bUL,
1036   0x0533c400UL, 0x3fe078bfUL, 0x41edf5fdUL, 0x3d268122UL, 0xbe760400UL,
1037   0x3fe04360UL, 0xe79539e0UL, 0xbd04c45fUL, 0xe5b20800UL, 0x3fe00e5aUL,
1038   0xb1727b1cUL, 0xbd053ba3UL, 0xaf7a4800UL, 0x3fdfb358UL, 0x3c164935UL,
1039   0x3d0085faUL, 0xee031800UL, 0x3fdf4aa7UL, 0x6f014a8bUL, 0x3d12cde5UL,
1040   0x56b41000UL, 0x3fdee2a1UL, 0x5a470251UL, 0x3d2f27f4UL, 0xc3ddb000UL,
1041   0x3fde7b42UL, 0x5372bd08UL, 0xbd246550UL, 0x1a272800UL, 0x3fde148aUL,
1042   0x07322938UL, 0xbd1326b2UL, 0x484c9800UL, 0x3fddae75UL, 0x60dc616aUL,
1043   0xbd1ea42dUL, 0x46def800UL, 0x3fdd4902UL, 0xe9a767a8UL, 0x3d235bafUL,
1044   0x18064800UL, 0x3fdce42fUL, 0x3ec7a6b0UL, 0xbd0797c3UL, 0xc7455800UL,
1045   0x3fdc7ff9UL, 0xc15249aeUL, 0xbd29b6ddUL, 0x693fa000UL, 0x3fdc1c60UL,
1046   0x7fe8e180UL, 0x3d2cec80UL, 0x1b80e000UL, 0x3fdbb961UL, 0xf40a666dUL,
1047   0x3d27d85bUL, 0x04462800UL, 0x3fdb56faUL, 0x2d841995UL, 0x3d109525UL,
1048   0x5248d000UL, 0x3fdaf529UL, 0x52774458UL, 0xbd217cc5UL, 0x3c8ad800UL,
1049   0x3fda93edUL, 0xbea77a5dUL, 0x3d1e36f2UL, 0x0224f800UL, 0x3fda3344UL,
1050   0x7f9d79f5UL, 0x3d23c645UL, 0xea15f000UL, 0x3fd9d32bUL, 0x10d0c0b0UL,
1051   0xbd26279eUL, 0x43135800UL, 0x3fd973a3UL, 0xa502d9f0UL, 0xbd152313UL,
1052   0x635bf800UL, 0x3fd914a8UL, 0x2ee6307dUL, 0xbd1766b5UL, 0xa88b3000UL,
1053   0x3fd8b639UL, 0xe5e70470UL, 0xbd205ae1UL, 0x776dc800UL, 0x3fd85855UL,
1054   0x3333778aUL, 0x3d2fd56fUL, 0x3bd81800UL, 0x3fd7fafaUL, 0xc812566aUL,
1055   0xbd272090UL, 0x687cf800UL, 0x3fd79e26UL, 0x2efd1778UL, 0x3d29ec7dUL,
1056   0x76c67800UL, 0x3fd741d8UL, 0x49dc60b3UL, 0x3d2d8b09UL, 0xe6af1800UL,
1057   0x3fd6e60eUL, 0x7c222d87UL, 0x3d172165UL, 0x3e9c6800UL, 0x3fd68ac8UL,
1058   0x2756eba0UL, 0x3d20a0d3UL, 0x0b3ab000UL, 0x3fd63003UL, 0xe731ae00UL,
1059   0xbd2db623UL, 0xdf596000UL, 0x3fd5d5bdUL, 0x08a465dcUL, 0xbd0a0b2aUL,
1060   0x53c8d000UL, 0x3fd57bf7UL, 0xee5d40efUL, 0x3d1fadedUL, 0x0738a000UL,
1061   0x3fd522aeUL, 0x8164c759UL, 0x3d2ebe70UL, 0x9e173000UL, 0x3fd4c9e0UL,
1062   0x1b0ad8a4UL, 0xbd2e2089UL, 0xc271c800UL, 0x3fd4718dUL, 0x0967d675UL,
1063   0xbd2f27ceUL, 0x23d5e800UL, 0x3fd419b4UL, 0xec90e09dUL, 0x3d08e436UL,
1064   0x77333000UL, 0x3fd3c252UL, 0xb606bd5cUL, 0x3d183b54UL, 0x76be1000UL,
1065   0x3fd36b67UL, 0xb0f177c8UL, 0x3d116ecdUL, 0xe1d36000UL, 0x3fd314f1UL,
1066   0xd3213cb8UL, 0xbd28e27aUL, 0x7cdc9000UL, 0x3fd2bef0UL, 0x4a5004f4UL,
1067   0x3d2a9cfaUL, 0x1134d800UL, 0x3fd26962UL, 0xdf5bb3b6UL, 0x3d2c93c1UL,
1068   0x6d0eb800UL, 0x3fd21445UL, 0xba46baeaUL, 0x3d0a87deUL, 0x635a6800UL,
1069   0x3fd1bf99UL, 0x5147bdb7UL, 0x3d2ca6edUL, 0xcbacf800UL, 0x3fd16b5cUL,
1070   0xf7a51681UL, 0x3d2b9acdUL, 0x8227e800UL, 0x3fd1178eUL, 0x63a5f01cUL,
1071   0xbd2c210eUL, 0x67616000UL, 0x3fd0c42dUL, 0x163ceae9UL, 0x3d27188bUL,
1072   0x604d5800UL, 0x3fd07138UL, 0x16ed4e91UL, 0x3cf89cdbUL, 0x5626c800UL,
1073   0x3fd01eaeUL, 0x1485e94aUL, 0xbd16f08cUL, 0x6cb3b000UL, 0x3fcf991cUL,
1074   0xca0cdf30UL, 0x3d1bcbecUL, 0xe4dd0000UL, 0x3fcef5adUL, 0x65bb8e11UL,
1075   0xbcca2115UL, 0xffe71000UL, 0x3fce530eUL, 0x6041f430UL, 0x3cc21227UL,
1076   0xb0d49000UL, 0x3fcdb13dUL, 0xf715b035UL, 0xbd2aff2aUL, 0xf2656000UL,
1077   0x3fcd1037UL, 0x75b6f6e4UL, 0xbd084a7eUL, 0xc6f01000UL, 0x3fcc6ffbUL,
1078   0xc5962bd2UL, 0xbcf1ec72UL, 0x383be000UL, 0x3fcbd087UL, 0x595412b6UL,
1079   0xbd2d4bc4UL, 0x575bd000UL, 0x3fcb31d8UL, 0x4eace1aaUL, 0xbd0c358dUL,
1080   0x3c8ae000UL, 0x3fca93edUL, 0x50562169UL, 0xbd287243UL, 0x07089000UL,
1081   0x3fc9f6c4UL, 0x6865817aUL, 0x3d29904dUL, 0xdcf70000UL, 0x3fc95a5aUL,
1082   0x58a0ff6fUL, 0x3d07f228UL, 0xeb390000UL, 0x3fc8beafUL, 0xaae92cd1UL,
1083   0xbd073d54UL, 0x6551a000UL, 0x3fc823c1UL, 0x9a631e83UL, 0x3d1e0ddbUL,
1084   0x85445000UL, 0x3fc7898dUL, 0x70914305UL, 0xbd1c6610UL, 0x8b757000UL,
1085   0x3fc6f012UL, 0xe59c21e1UL, 0xbd25118dUL, 0xbe8c1000UL, 0x3fc6574eUL,
1086   0x2c3c2e78UL, 0x3d19cf8bUL, 0x6b544000UL, 0x3fc5bf40UL, 0xeb68981cUL,
1087   0xbd127023UL, 0xe4a1b000UL, 0x3fc527e5UL, 0xe5697dc7UL, 0x3d2633e8UL,
1088   0x8333b000UL, 0x3fc4913dUL, 0x54fdb678UL, 0x3d258379UL, 0xa5993000UL,
1089   0x3fc3fb45UL, 0x7e6a354dUL, 0xbd2cd1d8UL, 0xb0159000UL, 0x3fc365fcUL,
1090   0x234b7289UL, 0x3cc62fa8UL, 0x0c868000UL, 0x3fc2d161UL, 0xcb81b4a1UL,
1091   0x3d039d6cUL, 0x2a49c000UL, 0x3fc23d71UL, 0x8fd3df5cUL, 0x3d100d23UL,
1092   0x7e23f000UL, 0x3fc1aa2bUL, 0x44389934UL, 0x3d2ca78eUL, 0x8227e000UL,
1093   0x3fc1178eUL, 0xce2d07f2UL, 0x3d21ef78UL, 0xb59e4000UL, 0x3fc08598UL,
1094   0x7009902cUL, 0xbd27e5ddUL, 0x39dbe000UL, 0x3fbfe891UL, 0x4fa10afdUL,
1095   0xbd2534d6UL, 0x830a2000UL, 0x3fbec739UL, 0xafe645e0UL, 0xbd2dc068UL,
1096   0x63844000UL, 0x3fbda727UL, 0x1fa71733UL, 0x3d1a8940UL, 0x01bc4000UL,
1097   0x3fbc8858UL, 0xc65aacd3UL, 0x3d2646d1UL, 0x8dad6000UL, 0x3fbb6ac8UL,
1098   0x2bf768e5UL, 0xbd139080UL, 0x40b1c000UL, 0x3fba4e76UL, 0xb94407c8UL,
1099   0xbd0e42b6UL, 0x5d594000UL, 0x3fb9335eUL, 0x3abd47daUL, 0x3d23115cUL,
1100   0x2f40e000UL, 0x3fb8197eUL, 0xf96ffdf7UL, 0x3d0f80dcUL, 0x0aeac000UL,
1101   0x3fb700d3UL, 0xa99ded32UL, 0x3cec1e8dUL, 0x4d97a000UL, 0x3fb5e95aUL,
1102   0x3c5d1d1eUL, 0xbd2c6906UL, 0x5d208000UL, 0x3fb4d311UL, 0x82f4e1efUL,
1103   0xbcf53a25UL, 0xa7d1e000UL, 0x3fb3bdf5UL, 0xa5db4ed7UL, 0x3d2cc85eUL,
1104   0xa4472000UL, 0x3fb2aa04UL, 0xae9c697dUL, 0xbd20b6e8UL, 0xd1466000UL,
1105   0x3fb1973bUL, 0x560d9e9bUL, 0xbd25325dUL, 0xb59e4000UL, 0x3fb08598UL,
1106   0x7009902cUL, 0xbd17e5ddUL, 0xc006c000UL, 0x3faeea31UL, 0x4fc93b7bUL,
1107   0xbd0e113eUL, 0xcdddc000UL, 0x3faccb73UL, 0x47d82807UL, 0xbd1a68f2UL,
1108   0xd0fb0000UL, 0x3faaaef2UL, 0x353bb42eUL, 0x3d20fc1aUL, 0x149fc000UL,
1109   0x3fa894aaUL, 0xd05a267dUL, 0xbd197995UL, 0xf2d4c000UL, 0x3fa67c94UL,
1110   0xec19afa2UL, 0xbd029efbUL, 0xd42e0000UL, 0x3fa466aeUL, 0x75bdfd28UL,
1111   0xbd2c1673UL, 0x2f8d0000UL, 0x3fa252f3UL, 0xe021b67bUL, 0x3d283e9aUL,
1112   0x89e74000UL, 0x3fa0415dUL, 0x5cf1d753UL, 0x3d0111c0UL, 0xec148000UL,
1113   0x3f9c63d2UL, 0x3f9eb2f3UL, 0x3d2578c6UL, 0x28c90000UL, 0x3f984925UL,
1114   0x325a0c34UL, 0xbd2aa0baUL, 0x25980000UL, 0x3f9432a9UL, 0x928637feUL,
1115   0x3d098139UL, 0x58938000UL, 0x3f902056UL, 0x06e2f7d2UL, 0xbd23dc5bUL,
1116   0xa3890000UL, 0x3f882448UL, 0xda74f640UL, 0xbd275577UL, 0x75890000UL,
1117   0x3f801015UL, 0x999d2be8UL, 0xbd10c76bUL, 0x59580000UL, 0x3f700805UL,
1118   0xcb31c67bUL, 0x3d2166afUL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
1119   0x80000000UL, 0xfefa3800UL, 0x3fa62e42UL, 0x93c76730UL, 0x3ceef357UL,
1120   0x92492492UL, 0x3fc24924UL, 0x00000000UL, 0xbfd00000UL, 0x3d6fb175UL,
1121   0xbfc5555eUL, 0x55555555UL, 0x3fd55555UL, 0x9999999aUL, 0x3fc99999UL,
1122   0x00000000UL, 0xbfe00000UL, 0x00000000UL, 0xffffe000UL, 0x00000000UL,
1123   0xffffe000UL
1124 };
1125 //registers,
1126 // input: xmm0
1127 // scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
1128 //          rax, rdx, rcx, rbx (tmp)
1129 
1130 void MacroAssembler::fast_log(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp) {
1131   Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
1132   Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
1133   Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2;
1134   Label L_2TAG_PACKET_10_0_2, start;
1135 
1136   assert_different_registers(tmp, eax, ecx, edx);
1137   jmp(start);
1138   address static_const_table = (address)_static_const_table_log;
1139 
1140   bind(start);
1141   subl(rsp, 104);
1142   movl(Address(rsp, 40), tmp);
1143   lea(tmp, ExternalAddress(static_const_table));
1144   xorpd(xmm2, xmm2);
1145   movl(eax, 16368);
1146   pinsrw(xmm2, eax, 3);
1147   xorpd(xmm3, xmm3);
1148   movl(edx, 30704);
1149   pinsrw(xmm3, edx, 3);
1150   movsd(xmm0, Address(rsp, 112));
1151   movapd(xmm1, xmm0);
1152   movl(ecx, 32768);
1153   movdl(xmm4, ecx);
1154   movsd(xmm5, Address(tmp, 2128));         // 0x00000000UL, 0xffffe000UL
1155   pextrw(eax, xmm0, 3);
1156   por(xmm0, xmm2);
1157   psllq(xmm0, 5);
1158   movl(ecx, 16352);
1159   psrlq(xmm0, 34);
1160   rcpss(xmm0, xmm0);
1161   psllq(xmm1, 12);
1162   pshufd(xmm6, xmm5, 228);
1163   psrlq(xmm1, 12);
1164   subl(eax, 16);
1165   cmpl(eax, 32736);
1166   jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
1167 
1168   bind(L_2TAG_PACKET_1_0_2);
1169   paddd(xmm0, xmm4);
1170   por(xmm1, xmm3);
1171   movdl(edx, xmm0);
1172   psllq(xmm0, 29);
1173   pand(xmm5, xmm1);
1174   pand(xmm0, xmm6);
1175   subsd(xmm1, xmm5);
1176   mulpd(xmm5, xmm0);
1177   andl(eax, 32752);
1178   subl(eax, ecx);
1179   cvtsi2sdl(xmm7, eax);
1180   mulsd(xmm1, xmm0);
1181   movsd(xmm6, Address(tmp, 2064));         // 0xfefa3800UL, 0x3fa62e42UL
1182   movdqu(xmm3, Address(tmp, 2080));        // 0x92492492UL, 0x3fc24924UL, 0x00000000UL, 0xbfd00000UL
1183   subsd(xmm5, xmm2);
1184   andl(edx, 16711680);
1185   shrl(edx, 12);
1186   movdqu(xmm0, Address(tmp, edx));
1187   movdqu(xmm4, Address(tmp, 2096));        // 0x3d6fb175UL, 0xbfc5555eUL, 0x55555555UL, 0x3fd55555UL
1188   addsd(xmm1, xmm5);
1189   movdqu(xmm2, Address(tmp, 2112));        // 0x9999999aUL, 0x3fc99999UL, 0x00000000UL, 0xbfe00000UL
1190   mulsd(xmm6, xmm7);
1191   pshufd(xmm5, xmm1, 68);
1192   mulsd(xmm7, Address(tmp, 2072));         // 0x93c76730UL, 0x3ceef357UL, 0x92492492UL, 0x3fc24924UL
1193   mulsd(xmm3, xmm1);
1194   addsd(xmm0, xmm6);
1195   mulpd(xmm4, xmm5);
1196   mulpd(xmm5, xmm5);
1197   pshufd(xmm6, xmm0, 228);
1198   addsd(xmm0, xmm1);
1199   addpd(xmm4, xmm2);
1200   mulpd(xmm3, xmm5);
1201   subsd(xmm6, xmm0);
1202   mulsd(xmm4, xmm1);
1203   pshufd(xmm2, xmm0, 238);
1204   addsd(xmm1, xmm6);
1205   mulsd(xmm5, xmm5);
1206   addsd(xmm7, xmm2);
1207   addpd(xmm4, xmm3);
1208   addsd(xmm1, xmm7);
1209   mulpd(xmm4, xmm5);
1210   addsd(xmm1, xmm4);
1211   pshufd(xmm5, xmm4, 238);
1212   addsd(xmm1, xmm5);
1213   addsd(xmm0, xmm1);
1214   jmp(L_2TAG_PACKET_2_0_2);
1215 
1216   bind(L_2TAG_PACKET_0_0_2);
1217   movsd(xmm0, Address(rsp, 112));
1218   movdqu(xmm1, xmm0);
1219   addl(eax, 16);
1220   cmpl(eax, 32768);
1221   jcc(Assembler::aboveEqual, L_2TAG_PACKET_3_0_2);
1222   cmpl(eax, 16);
1223   jcc(Assembler::below, L_2TAG_PACKET_4_0_2);
1224 
1225   bind(L_2TAG_PACKET_5_0_2);
1226   addsd(xmm0, xmm0);
1227   jmp(L_2TAG_PACKET_2_0_2);
1228 
1229   bind(L_2TAG_PACKET_6_0_2);
1230   jcc(Assembler::above, L_2TAG_PACKET_5_0_2);
1231   cmpl(edx, 0);
1232   jcc(Assembler::above, L_2TAG_PACKET_5_0_2);
1233   jmp(L_2TAG_PACKET_7_0_2);
1234 
1235   bind(L_2TAG_PACKET_3_0_2);
1236   movdl(edx, xmm1);
1237   psrlq(xmm1, 32);
1238   movdl(ecx, xmm1);
1239   addl(ecx, ecx);
1240   cmpl(ecx, -2097152);
1241   jcc(Assembler::aboveEqual, L_2TAG_PACKET_6_0_2);
1242   orl(edx, ecx);
1243   cmpl(edx, 0);
1244   jcc(Assembler::equal, L_2TAG_PACKET_8_0_2);
1245 
1246   bind(L_2TAG_PACKET_7_0_2);
1247   xorpd(xmm1, xmm1);
1248   xorpd(xmm0, xmm0);
1249   movl(eax, 32752);
1250   pinsrw(xmm1, eax, 3);
1251   movl(edx, 3);
1252   mulsd(xmm0, xmm1);
1253 
1254   bind(L_2TAG_PACKET_9_0_2);
1255   movsd(Address(rsp, 0), xmm0);
1256   movsd(xmm0, Address(rsp, 112));
1257   fld_d(Address(rsp, 0));
1258   jmp(L_2TAG_PACKET_10_0_2);
1259 
1260   bind(L_2TAG_PACKET_8_0_2);
1261   xorpd(xmm1, xmm1);
1262   xorpd(xmm0, xmm0);
1263   movl(eax, 49136);
1264   pinsrw(xmm0, eax, 3);
1265   divsd(xmm0, xmm1);
1266   movl(edx, 2);
1267   jmp(L_2TAG_PACKET_9_0_2);
1268 
1269   bind(L_2TAG_PACKET_4_0_2);
1270   movdl(edx, xmm1);
1271   psrlq(xmm1, 32);
1272   movdl(ecx, xmm1);
1273   orl(edx, ecx);
1274   cmpl(edx, 0);
1275   jcc(Assembler::equal, L_2TAG_PACKET_8_0_2);
1276   xorpd(xmm1, xmm1);
1277   movl(eax, 18416);
1278   pinsrw(xmm1, eax, 3);
1279   mulsd(xmm0, xmm1);
1280   movapd(xmm1, xmm0);
1281   pextrw(eax, xmm0, 3);
1282   por(xmm0, xmm2);
1283   psllq(xmm0, 5);
1284   movl(ecx, 18416);
1285   psrlq(xmm0, 34);
1286   rcpss(xmm0, xmm0);
1287   psllq(xmm1, 12);
1288   pshufd(xmm6, xmm5, 228);
1289   psrlq(xmm1, 12);
1290   jmp(L_2TAG_PACKET_1_0_2);
1291 
1292   bind(L_2TAG_PACKET_2_0_2);
1293   movsd(Address(rsp, 24), xmm0);
1294   fld_d(Address(rsp, 24));
1295 
1296   bind(L_2TAG_PACKET_10_0_2);
1297   movl(tmp, Address(rsp, 40));
1298 }
1299 
1300 #endif // !_LP64
1301 
1302 /******************************************************************************/
1303 //                     ALGORITHM DESCRIPTION  - POW()
1304 //                     ---------------------
1305 //
1306 //    Let x=2^k * mx, mx in [1,2)
1307 //
1308 //    log2(x) calculation:
1309 //
1310 //    Get B~1/mx based on the output of rcpps instruction (B0)
1311 //    B = int((B0*LH*2^9+0.5))/2^9
1312 //    LH is a short approximation for log2(e)
1313 //
1314 //    Reduced argument, scaled by LH:
1315 //                r=B*mx-LH (computed accurately in high and low parts)
1316 //
1317 //    log2(x) result:  k - log2(B) + p(r)
1318 //             p(r) is a degree 8 polynomial
1319 //             -log2(B) read from data table (high, low parts)
1320 //             log2(x) is formed from high and low parts
1321 //    For |x| in [1-1/32, 1+1/16), a slower but more accurate computation
1322 //    based om the same table design is performed.
1323 //
1324 //   Main path is taken if | floor(log2(|log2(|x|)|) + floor(log2|y|) | < 8,
1325 //   to filter out all potential OF/UF cases.
1326 //   exp2(y*log2(x)) is computed using an 8-bit index table and a degree 5
1327 //   polynomial
1328 //
1329 // Special cases:
1330 //  pow(-0,y) = -INF and raises the divide-by-zero exception for y an odd
1331 //  integer < 0.
1332 //  pow(-0,y) = +INF and raises the divide-by-zero exception for y < 0 and
1333 //  not an odd integer.
1334 //  pow(-0,y) = -0 for y an odd integer > 0.
1335 //  pow(-0,y) = +0 for y > 0 and not an odd integer.
1336 //  pow(-1,-INF) = NaN.
1337 //  pow(+1,y) = NaN for any y, even a NaN.
1338 //  pow(x,-0) = 1 for any x, even a NaN.
1339 //  pow(x,y) = a NaN and raises the invalid exception for finite x < 0 and
1340 //  finite non-integer y.
1341 //  pow(x,-INF) = +INF for |x|<1.
1342 //  pow(x,-INF) = +0 for |x|>1.
1343 //  pow(x,+INF) = +0 for |x|<1.
1344 //  pow(x,+INF) = +INF for |x|>1.
1345 //  pow(-INF,y) = -0 for y an odd integer < 0.
1346 //  pow(-INF,y) = +0 for y < 0 and not an odd integer.
1347 //  pow(-INF,y) = -INF for y an odd integer > 0.
1348 //  pow(-INF,y) = +INF for y > 0 and not an odd integer.
1349 //  pow(+INF,y) = +0 for y <0.
1350 //  pow(+INF,y) = +INF for y >0.
1351 //
1352 /******************************************************************************/
1353 
1354 #ifdef _LP64
1355 ALIGNED_(16) juint _HIGHSIGMASK[] =
1356 {
1357   0x00000000UL, 0xfffff800UL, 0x00000000UL, 0xfffff800UL
1358 };
1359 
1360 ALIGNED_(16) juint _LOG2_E[] =
1361 {
1362   0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
1363 };
1364 
1365 ALIGNED_(16) juint _HIGHMASK_Y[] =
1366 {
1367   0x00000000UL, 0xfffffff8UL, 0x00000000UL, 0xffffffffUL
1368 };
1369 
1370 ALIGNED_(16) juint _T_exp[] =
1371 {
1372   0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x3b700000UL, 0xfa5abcbfUL,
1373   0x3ff00b1aUL, 0xa7609f71UL, 0xbc84f6b2UL, 0xa9fb3335UL, 0x3ff0163dUL,
1374   0x9ab8cdb7UL, 0x3c9b6129UL, 0x143b0281UL, 0x3ff02168UL, 0x0fc54eb6UL,
1375   0xbc82bf31UL, 0x3e778061UL, 0x3ff02c9aUL, 0x535b085dUL, 0xbc719083UL,
1376   0x2e11bbccUL, 0x3ff037d4UL, 0xeeade11aUL, 0x3c656811UL, 0xe86e7f85UL,
1377   0x3ff04315UL, 0x1977c96eUL, 0xbc90a31cUL, 0x72f654b1UL, 0x3ff04e5fUL,
1378   0x3aa0d08cUL, 0x3c84c379UL, 0xd3158574UL, 0x3ff059b0UL, 0xa475b465UL,
1379   0x3c8d73e2UL, 0x0e3c1f89UL, 0x3ff0650aUL, 0x5799c397UL, 0xbc95cb7bUL,
1380   0x29ddf6deUL, 0x3ff0706bUL, 0xe2b13c27UL, 0xbc8c91dfUL, 0x2b72a836UL,
1381   0x3ff07bd4UL, 0x54458700UL, 0x3c832334UL, 0x18759bc8UL, 0x3ff08745UL,
1382   0x4bb284ffUL, 0x3c6186beUL, 0xf66607e0UL, 0x3ff092bdUL, 0x800a3fd1UL,
1383   0xbc968063UL, 0xcac6f383UL, 0x3ff09e3eUL, 0x18316136UL, 0x3c914878UL,
1384   0x9b1f3919UL, 0x3ff0a9c7UL, 0x873d1d38UL, 0x3c85d16cUL, 0x6cf9890fUL,
1385   0x3ff0b558UL, 0x4adc610bUL, 0x3c98a62eUL, 0x45e46c85UL, 0x3ff0c0f1UL,
1386   0x06d21cefUL, 0x3c94f989UL, 0x2b7247f7UL, 0x3ff0cc92UL, 0x16e24f71UL,
1387   0x3c901edcUL, 0x23395decUL, 0x3ff0d83bUL, 0xe43f316aUL, 0xbc9bc14dUL,
1388   0x32d3d1a2UL, 0x3ff0e3ecUL, 0x27c57b52UL, 0x3c403a17UL, 0x5fdfa9c5UL,
1389   0x3ff0efa5UL, 0xbc54021bUL, 0xbc949db9UL, 0xaffed31bUL, 0x3ff0fb66UL,
1390   0xc44ebd7bUL, 0xbc6b9bedUL, 0x28d7233eUL, 0x3ff10730UL, 0x1692fdd5UL,
1391   0x3c8d46ebUL, 0xd0125b51UL, 0x3ff11301UL, 0x39449b3aUL, 0xbc96c510UL,
1392   0xab5e2ab6UL, 0x3ff11edbUL, 0xf703fb72UL, 0xbc9ca454UL, 0xc06c31ccUL,
1393   0x3ff12abdUL, 0xb36ca5c7UL, 0xbc51b514UL, 0x14f204abUL, 0x3ff136a8UL,
1394   0xba48dcf0UL, 0xbc67108fUL, 0xaea92de0UL, 0x3ff1429aUL, 0x9af1369eUL,
1395   0xbc932fbfUL, 0x934f312eUL, 0x3ff14e95UL, 0x39bf44abUL, 0xbc8b91e8UL,
1396   0xc8a58e51UL, 0x3ff15a98UL, 0xb9eeab0aUL, 0x3c82406aUL, 0x5471c3c2UL,
1397   0x3ff166a4UL, 0x82ea1a32UL, 0x3c58f23bUL, 0x3c7d517bUL, 0x3ff172b8UL,
1398   0xb9d78a76UL, 0xbc819041UL, 0x8695bbc0UL, 0x3ff17ed4UL, 0xe2ac5a64UL,
1399   0x3c709e3fUL, 0x388c8deaUL, 0x3ff18af9UL, 0xd1970f6cUL, 0xbc911023UL,
1400   0x58375d2fUL, 0x3ff19726UL, 0x85f17e08UL, 0x3c94aaddUL, 0xeb6fcb75UL,
1401   0x3ff1a35bUL, 0x7b4968e4UL, 0x3c8e5b4cUL, 0xf8138a1cUL, 0x3ff1af99UL,
1402   0xa4b69280UL, 0x3c97bf85UL, 0x84045cd4UL, 0x3ff1bbe0UL, 0x352ef607UL,
1403   0xbc995386UL, 0x95281c6bUL, 0x3ff1c82fUL, 0x8010f8c9UL, 0x3c900977UL,
1404   0x3168b9aaUL, 0x3ff1d487UL, 0x00a2643cUL, 0x3c9e016eUL, 0x5eb44027UL,
1405   0x3ff1e0e7UL, 0x088cb6deUL, 0xbc96fdd8UL, 0x22fcd91dUL, 0x3ff1ed50UL,
1406   0x027bb78cUL, 0xbc91df98UL, 0x8438ce4dUL, 0x3ff1f9c1UL, 0xa097af5cUL,
1407   0xbc9bf524UL, 0x88628cd6UL, 0x3ff2063bUL, 0x814a8495UL, 0x3c8dc775UL,
1408   0x3578a819UL, 0x3ff212beUL, 0x2cfcaac9UL, 0x3c93592dUL, 0x917ddc96UL,
1409   0x3ff21f49UL, 0x9494a5eeUL, 0x3c82a97eUL, 0xa27912d1UL, 0x3ff22bddUL,
1410   0x5577d69fUL, 0x3c8d34fbUL, 0x6e756238UL, 0x3ff2387aUL, 0xb6c70573UL,
1411   0x3c99b07eUL, 0xfb82140aUL, 0x3ff2451fUL, 0x911ca996UL, 0x3c8acfccUL,
1412   0x4fb2a63fUL, 0x3ff251ceUL, 0xbef4f4a4UL, 0x3c8ac155UL, 0x711ece75UL,
1413   0x3ff25e85UL, 0x4ac31b2cUL, 0x3c93e1a2UL, 0x65e27cddUL, 0x3ff26b45UL,
1414   0x9940e9d9UL, 0x3c82bd33UL, 0x341ddf29UL, 0x3ff2780eUL, 0x05f9e76cUL,
1415   0x3c9e067cUL, 0xe1f56381UL, 0x3ff284dfUL, 0x8c3f0d7eUL, 0xbc9a4c3aUL,
1416   0x7591bb70UL, 0x3ff291baUL, 0x28401cbdUL, 0xbc82cc72UL, 0xf51fdee1UL,
1417   0x3ff29e9dUL, 0xafad1255UL, 0x3c8612e8UL, 0x66d10f13UL, 0x3ff2ab8aUL,
1418   0x191690a7UL, 0xbc995743UL, 0xd0dad990UL, 0x3ff2b87fUL, 0xd6381aa4UL,
1419   0xbc410adcUL, 0x39771b2fUL, 0x3ff2c57eUL, 0xa6eb5124UL, 0xbc950145UL,
1420   0xa6e4030bUL, 0x3ff2d285UL, 0x54db41d5UL, 0x3c900247UL, 0x1f641589UL,
1421   0x3ff2df96UL, 0xfbbce198UL, 0x3c9d16cfUL, 0xa93e2f56UL, 0x3ff2ecafUL,
1422   0x45d52383UL, 0x3c71ca0fUL, 0x4abd886bUL, 0x3ff2f9d2UL, 0x532bda93UL,
1423   0xbc653c55UL, 0x0a31b715UL, 0x3ff306feUL, 0xd23182e4UL, 0x3c86f46aUL,
1424   0xedeeb2fdUL, 0x3ff31432UL, 0xf3f3fcd1UL, 0x3c8959a3UL, 0xfc4cd831UL,
1425   0x3ff32170UL, 0x8e18047cUL, 0x3c8a9ce7UL, 0x3ba8ea32UL, 0x3ff32eb8UL,
1426   0x3cb4f318UL, 0xbc9c45e8UL, 0xb26416ffUL, 0x3ff33c08UL, 0x843659a6UL,
1427   0x3c932721UL, 0x66e3fa2dUL, 0x3ff34962UL, 0x930881a4UL, 0xbc835a75UL,
1428   0x5f929ff1UL, 0x3ff356c5UL, 0x5c4e4628UL, 0xbc8b5ceeUL, 0xa2de883bUL,
1429   0x3ff36431UL, 0xa06cb85eUL, 0xbc8c3144UL, 0x373aa9cbUL, 0x3ff371a7UL,
1430   0xbf42eae2UL, 0xbc963aeaUL, 0x231e754aUL, 0x3ff37f26UL, 0x9eceb23cUL,
1431   0xbc99f5caUL, 0x6d05d866UL, 0x3ff38caeUL, 0x3c9904bdUL, 0xbc9e958dUL,
1432   0x1b7140efUL, 0x3ff39a40UL, 0xfc8e2934UL, 0xbc99a9a5UL, 0x34e59ff7UL,
1433   0x3ff3a7dbUL, 0xd661f5e3UL, 0xbc75e436UL, 0xbfec6cf4UL, 0x3ff3b57fUL,
1434   0xe26fff18UL, 0x3c954c66UL, 0xc313a8e5UL, 0x3ff3c32dUL, 0x375d29c3UL,
1435   0xbc9efff8UL, 0x44ede173UL, 0x3ff3d0e5UL, 0x8c284c71UL, 0x3c7fe8d0UL,
1436   0x4c123422UL, 0x3ff3dea6UL, 0x11f09ebcUL, 0x3c8ada09UL, 0xdf1c5175UL,
1437   0x3ff3ec70UL, 0x7b8c9bcaUL, 0xbc8af663UL, 0x04ac801cUL, 0x3ff3fa45UL,
1438   0xf956f9f3UL, 0xbc97d023UL, 0xc367a024UL, 0x3ff40822UL, 0xb6f4d048UL,
1439   0x3c8bddf8UL, 0x21f72e2aUL, 0x3ff4160aUL, 0x1c309278UL, 0xbc5ef369UL,
1440   0x2709468aUL, 0x3ff423fbUL, 0xc0b314ddUL, 0xbc98462dUL, 0xd950a897UL,
1441   0x3ff431f5UL, 0xe35f7999UL, 0xbc81c7ddUL, 0x3f84b9d4UL, 0x3ff43ffaUL,
1442   0x9704c003UL, 0x3c8880beUL, 0x6061892dUL, 0x3ff44e08UL, 0x04ef80d0UL,
1443   0x3c489b7aUL, 0x42a7d232UL, 0x3ff45c20UL, 0x82fb1f8eUL, 0xbc686419UL,
1444   0xed1d0057UL, 0x3ff46a41UL, 0xd1648a76UL, 0x3c9c944bUL, 0x668b3237UL,
1445   0x3ff4786dUL, 0xed445733UL, 0xbc9c20f0UL, 0xb5c13cd0UL, 0x3ff486a2UL,
1446   0xb69062f0UL, 0x3c73c1a3UL, 0xe192aed2UL, 0x3ff494e1UL, 0x5e499ea0UL,
1447   0xbc83b289UL, 0xf0d7d3deUL, 0x3ff4a32aUL, 0xf3d1be56UL, 0x3c99cb62UL,
1448   0xea6db7d7UL, 0x3ff4b17dUL, 0x7f2897f0UL, 0xbc8125b8UL, 0xd5362a27UL,
1449   0x3ff4bfdaUL, 0xafec42e2UL, 0x3c7d4397UL, 0xb817c114UL, 0x3ff4ce41UL,
1450   0x690abd5dUL, 0x3c905e29UL, 0x99fddd0dUL, 0x3ff4dcb2UL, 0xbc6a7833UL,
1451   0x3c98ecdbUL, 0x81d8abffUL, 0x3ff4eb2dUL, 0x2e5d7a52UL, 0xbc95257dUL,
1452   0x769d2ca7UL, 0x3ff4f9b2UL, 0xd25957e3UL, 0xbc94b309UL, 0x7f4531eeUL,
1453   0x3ff50841UL, 0x49b7465fUL, 0x3c7a249bUL, 0xa2cf6642UL, 0x3ff516daUL,
1454   0x69bd93efUL, 0xbc8f7685UL, 0xe83f4eefUL, 0x3ff5257dUL, 0x43efef71UL,
1455   0xbc7c998dUL, 0x569d4f82UL, 0x3ff5342bUL, 0x1db13cadUL, 0xbc807abeUL,
1456   0xf4f6ad27UL, 0x3ff542e2UL, 0x192d5f7eUL, 0x3c87926dUL, 0xca5d920fUL,
1457   0x3ff551a4UL, 0xefede59bUL, 0xbc8d689cUL, 0xdde910d2UL, 0x3ff56070UL,
1458   0x168eebf0UL, 0xbc90fb6eUL, 0x36b527daUL, 0x3ff56f47UL, 0x011d93adUL,
1459   0x3c99bb2cUL, 0xdbe2c4cfUL, 0x3ff57e27UL, 0x8a57b9c4UL, 0xbc90b98cUL,
1460   0xd497c7fdUL, 0x3ff58d12UL, 0x5b9a1de8UL, 0x3c8295e1UL, 0x27ff07ccUL,
1461   0x3ff59c08UL, 0xe467e60fUL, 0xbc97e2ceUL, 0xdd485429UL, 0x3ff5ab07UL,
1462   0x054647adUL, 0x3c96324cUL, 0xfba87a03UL, 0x3ff5ba11UL, 0x4c233e1aUL,
1463   0xbc9b77a1UL, 0x8a5946b7UL, 0x3ff5c926UL, 0x816986a2UL, 0x3c3c4b1bUL,
1464   0x90998b93UL, 0x3ff5d845UL, 0xa8b45643UL, 0xbc9cd6a7UL, 0x15ad2148UL,
1465   0x3ff5e76fUL, 0x3080e65eUL, 0x3c9ba6f9UL, 0x20dceb71UL, 0x3ff5f6a3UL,
1466   0xe3cdcf92UL, 0xbc89eaddUL, 0xb976dc09UL, 0x3ff605e1UL, 0x9b56de47UL,
1467   0xbc93e242UL, 0xe6cdf6f4UL, 0x3ff6152aUL, 0x4ab84c27UL, 0x3c9e4b3eUL,
1468   0xb03a5585UL, 0x3ff6247eUL, 0x7e40b497UL, 0xbc9383c1UL, 0x1d1929fdUL,
1469   0x3ff633ddUL, 0xbeb964e5UL, 0x3c984710UL, 0x34ccc320UL, 0x3ff64346UL,
1470   0x759d8933UL, 0xbc8c483cUL, 0xfebc8fb7UL, 0x3ff652b9UL, 0xc9a73e09UL,
1471   0xbc9ae3d5UL, 0x82552225UL, 0x3ff66238UL, 0x87591c34UL, 0xbc9bb609UL,
1472   0xc70833f6UL, 0x3ff671c1UL, 0x586c6134UL, 0xbc8e8732UL, 0xd44ca973UL,
1473   0x3ff68155UL, 0x44f73e65UL, 0x3c6038aeUL, 0xb19e9538UL, 0x3ff690f4UL,
1474   0x9aeb445dUL, 0x3c8804bdUL, 0x667f3bcdUL, 0x3ff6a09eUL, 0x13b26456UL,
1475   0xbc9bdd34UL, 0xfa75173eUL, 0x3ff6b052UL, 0x2c9a9d0eUL, 0x3c7a38f5UL,
1476   0x750bdabfUL, 0x3ff6c012UL, 0x67ff0b0dUL, 0xbc728956UL, 0xddd47645UL,
1477   0x3ff6cfdcUL, 0xb6f17309UL, 0x3c9c7aa9UL, 0x3c651a2fUL, 0x3ff6dfb2UL,
1478   0x683c88abUL, 0xbc6bbe3aUL, 0x98593ae5UL, 0x3ff6ef92UL, 0x9e1ac8b2UL,
1479   0xbc90b974UL, 0xf9519484UL, 0x3ff6ff7dUL, 0x25860ef6UL, 0xbc883c0fUL,
1480   0x66f42e87UL, 0x3ff70f74UL, 0xd45aa65fUL, 0x3c59d644UL, 0xe8ec5f74UL,
1481   0x3ff71f75UL, 0x86887a99UL, 0xbc816e47UL, 0x86ead08aUL, 0x3ff72f82UL,
1482   0x2cd62c72UL, 0xbc920aa0UL, 0x48a58174UL, 0x3ff73f9aUL, 0x6c65d53cUL,
1483   0xbc90a8d9UL, 0x35d7cbfdUL, 0x3ff74fbdUL, 0x618a6e1cUL, 0x3c9047fdUL,
1484   0x564267c9UL, 0x3ff75febUL, 0x57316dd3UL, 0xbc902459UL, 0xb1ab6e09UL,
1485   0x3ff77024UL, 0x169147f8UL, 0x3c9b7877UL, 0x4fde5d3fUL, 0x3ff78069UL,
1486   0x0a02162dUL, 0x3c9866b8UL, 0x38ac1cf6UL, 0x3ff790b9UL, 0x62aadd3eUL,
1487   0x3c9349a8UL, 0x73eb0187UL, 0x3ff7a114UL, 0xee04992fUL, 0xbc841577UL,
1488   0x0976cfdbUL, 0x3ff7b17bUL, 0x8468dc88UL, 0xbc9bebb5UL, 0x0130c132UL,
1489   0x3ff7c1edUL, 0xd1164dd6UL, 0x3c9f124cUL, 0x62ff86f0UL, 0x3ff7d26aUL,
1490   0xfb72b8b4UL, 0x3c91bddbUL, 0x36cf4e62UL, 0x3ff7e2f3UL, 0xba15797eUL,
1491   0x3c705d02UL, 0x8491c491UL, 0x3ff7f387UL, 0xcf9311aeUL, 0xbc807f11UL,
1492   0x543e1a12UL, 0x3ff80427UL, 0x626d972bUL, 0xbc927c86UL, 0xadd106d9UL,
1493   0x3ff814d2UL, 0x0d151d4dUL, 0x3c946437UL, 0x994cce13UL, 0x3ff82589UL,
1494   0xd41532d8UL, 0xbc9d4c1dUL, 0x1eb941f7UL, 0x3ff8364cUL, 0x31df2bd5UL,
1495   0x3c999b9aUL, 0x4623c7adUL, 0x3ff8471aUL, 0xa341cdfbUL, 0xbc88d684UL,
1496   0x179f5b21UL, 0x3ff857f4UL, 0xf8b216d0UL, 0xbc5ba748UL, 0x9b4492edUL,
1497   0x3ff868d9UL, 0x9bd4f6baUL, 0xbc9fc6f8UL, 0xd931a436UL, 0x3ff879caUL,
1498   0xd2db47bdUL, 0x3c85d2d7UL, 0xd98a6699UL, 0x3ff88ac7UL, 0xf37cb53aUL,
1499   0x3c9994c2UL, 0xa478580fUL, 0x3ff89bd0UL, 0x4475202aUL, 0x3c9d5395UL,
1500   0x422aa0dbUL, 0x3ff8ace5UL, 0x56864b27UL, 0x3c96e9f1UL, 0xbad61778UL,
1501   0x3ff8be05UL, 0xfc43446eUL, 0x3c9ecb5eUL, 0x16b5448cUL, 0x3ff8cf32UL,
1502   0x32e9e3aaUL, 0xbc70d55eUL, 0x5e0866d9UL, 0x3ff8e06aUL, 0x6fc9b2e6UL,
1503   0xbc97114aUL, 0x99157736UL, 0x3ff8f1aeUL, 0xa2e3976cUL, 0x3c85cc13UL,
1504   0xd0282c8aUL, 0x3ff902feUL, 0x85fe3fd2UL, 0x3c9592caUL, 0x0b91ffc6UL,
1505   0x3ff9145bUL, 0x2e582524UL, 0xbc9dd679UL, 0x53aa2fe2UL, 0x3ff925c3UL,
1506   0xa639db7fUL, 0xbc83455fUL, 0xb0cdc5e5UL, 0x3ff93737UL, 0x81b57ebcUL,
1507   0xbc675fc7UL, 0x2b5f98e5UL, 0x3ff948b8UL, 0x797d2d99UL, 0xbc8dc3d6UL,
1508   0xcbc8520fUL, 0x3ff95a44UL, 0x96a5f039UL, 0xbc764b7cUL, 0x9a7670b3UL,
1509   0x3ff96bddUL, 0x7f19c896UL, 0xbc5ba596UL, 0x9fde4e50UL, 0x3ff97d82UL,
1510   0x7c1b85d1UL, 0xbc9d185bUL, 0xe47a22a2UL, 0x3ff98f33UL, 0xa24c78ecUL,
1511   0x3c7cabdaUL, 0x70ca07baUL, 0x3ff9a0f1UL, 0x91cee632UL, 0xbc9173bdUL,
1512   0x4d53fe0dUL, 0x3ff9b2bbUL, 0x4df6d518UL, 0xbc9dd84eUL, 0x82a3f090UL,
1513   0x3ff9c491UL, 0xb071f2beUL, 0x3c7c7c46UL, 0x194bb8d5UL, 0x3ff9d674UL,
1514   0xa3dd8233UL, 0xbc9516beUL, 0x19e32323UL, 0x3ff9e863UL, 0x78e64c6eUL,
1515   0x3c7824caUL, 0x8d07f29eUL, 0x3ff9fa5eUL, 0xaaf1faceUL, 0xbc84a9ceUL,
1516   0x7b5de565UL, 0x3ffa0c66UL, 0x5d1cd533UL, 0xbc935949UL, 0xed8eb8bbUL,
1517   0x3ffa1e7aUL, 0xee8be70eUL, 0x3c9c6618UL, 0xec4a2d33UL, 0x3ffa309bUL,
1518   0x7ddc36abUL, 0x3c96305cUL, 0x80460ad8UL, 0x3ffa42c9UL, 0x589fb120UL,
1519   0xbc9aa780UL, 0xb23e255dUL, 0x3ffa5503UL, 0xdb8d41e1UL, 0xbc9d2f6eUL,
1520   0x8af46052UL, 0x3ffa674aUL, 0x30670366UL, 0x3c650f56UL, 0x1330b358UL,
1521   0x3ffa799eUL, 0xcac563c7UL, 0x3c9bcb7eUL, 0x53c12e59UL, 0x3ffa8bfeUL,
1522   0xb2ba15a9UL, 0xbc94f867UL, 0x5579fdbfUL, 0x3ffa9e6bUL, 0x0ef7fd31UL,
1523   0x3c90fac9UL, 0x21356ebaUL, 0x3ffab0e5UL, 0xdae94545UL, 0x3c889c31UL,
1524   0xbfd3f37aUL, 0x3ffac36bUL, 0xcae76cd0UL, 0xbc8f9234UL, 0x3a3c2774UL,
1525   0x3ffad5ffUL, 0xb6b1b8e5UL, 0x3c97ef3bUL, 0x995ad3adUL, 0x3ffae89fUL,
1526   0x345dcc81UL, 0x3c97a1cdUL, 0xe622f2ffUL, 0x3ffafb4cUL, 0x0f315ecdUL,
1527   0xbc94b2fcUL, 0x298db666UL, 0x3ffb0e07UL, 0x4c80e425UL, 0xbc9bdef5UL,
1528   0x6c9a8952UL, 0x3ffb20ceUL, 0x4a0756ccUL, 0x3c94dd02UL, 0xb84f15fbUL,
1529   0x3ffb33a2UL, 0x3084d708UL, 0xbc62805eUL, 0x15b749b1UL, 0x3ffb4684UL,
1530   0xe9df7c90UL, 0xbc7f763dUL, 0x8de5593aUL, 0x3ffb5972UL, 0xbbba6de3UL,
1531   0xbc9c71dfUL, 0x29f1c52aUL, 0x3ffb6c6eUL, 0x52883f6eUL, 0x3c92a8f3UL,
1532   0xf2fb5e47UL, 0x3ffb7f76UL, 0x7e54ac3bUL, 0xbc75584fUL, 0xf22749e4UL,
1533   0x3ffb928cUL, 0x54cb65c6UL, 0xbc9b7216UL, 0x30a1064aUL, 0x3ffba5b0UL,
1534   0x0e54292eUL, 0xbc9efcd3UL, 0xb79a6f1fUL, 0x3ffbb8e0UL, 0xc9696205UL,
1535   0xbc3f52d1UL, 0x904bc1d2UL, 0x3ffbcc1eUL, 0x7a2d9e84UL, 0x3c823dd0UL,
1536   0xc3f3a207UL, 0x3ffbdf69UL, 0x60ea5b53UL, 0xbc3c2623UL, 0x5bd71e09UL,
1537   0x3ffbf2c2UL, 0x3f6b9c73UL, 0xbc9efdcaUL, 0x6141b33dUL, 0x3ffc0628UL,
1538   0xa1fbca34UL, 0xbc8d8a5aUL, 0xdd85529cUL, 0x3ffc199bUL, 0x895048ddUL,
1539   0x3c811065UL, 0xd9fa652cUL, 0x3ffc2d1cUL, 0x17c8a5d7UL, 0xbc96e516UL,
1540   0x5fffd07aUL, 0x3ffc40abUL, 0xe083c60aUL, 0x3c9b4537UL, 0x78fafb22UL,
1541   0x3ffc5447UL, 0x2493b5afUL, 0x3c912f07UL, 0x2e57d14bUL, 0x3ffc67f1UL,
1542   0xff483cadUL, 0x3c92884dUL, 0x8988c933UL, 0x3ffc7ba8UL, 0xbe255559UL,
1543   0xbc8e76bbUL, 0x9406e7b5UL, 0x3ffc8f6dUL, 0x48805c44UL, 0x3c71acbcUL,
1544   0x5751c4dbUL, 0x3ffca340UL, 0xd10d08f5UL, 0xbc87f2beUL, 0xdcef9069UL,
1545   0x3ffcb720UL, 0xd1e949dbUL, 0x3c7503cbUL, 0x2e6d1675UL, 0x3ffccb0fUL,
1546   0x86009092UL, 0xbc7d220fUL, 0x555dc3faUL, 0x3ffcdf0bUL, 0x53829d72UL,
1547   0xbc8dd83bUL, 0x5b5bab74UL, 0x3ffcf315UL, 0xb86dff57UL, 0xbc9a08e9UL,
1548   0x4a07897cUL, 0x3ffd072dUL, 0x43797a9cUL, 0xbc9cbc37UL, 0x2b08c968UL,
1549   0x3ffd1b53UL, 0x219a36eeUL, 0x3c955636UL, 0x080d89f2UL, 0x3ffd2f87UL,
1550   0x719d8578UL, 0xbc9d487bUL, 0xeacaa1d6UL, 0x3ffd43c8UL, 0xbf5a1614UL,
1551   0x3c93db53UL, 0xdcfba487UL, 0x3ffd5818UL, 0xd75b3707UL, 0x3c82ed02UL,
1552   0xe862e6d3UL, 0x3ffd6c76UL, 0x4a8165a0UL, 0x3c5fe87aUL, 0x16c98398UL,
1553   0x3ffd80e3UL, 0x8beddfe8UL, 0xbc911ec1UL, 0x71ff6075UL, 0x3ffd955dUL,
1554   0xbb9af6beUL, 0x3c9a052dUL, 0x03db3285UL, 0x3ffda9e6UL, 0x696db532UL,
1555   0x3c9c2300UL, 0xd63a8315UL, 0x3ffdbe7cUL, 0x926b8be4UL, 0xbc9b76f1UL,
1556   0xf301b460UL, 0x3ffdd321UL, 0x78f018c3UL, 0x3c92da57UL, 0x641c0658UL,
1557   0x3ffde7d5UL, 0x8e79ba8fUL, 0xbc9ca552UL, 0x337b9b5fUL, 0x3ffdfc97UL,
1558   0x4f184b5cUL, 0xbc91a5cdUL, 0x6b197d17UL, 0x3ffe1167UL, 0xbd5c7f44UL,
1559   0xbc72b529UL, 0x14f5a129UL, 0x3ffe2646UL, 0x817a1496UL, 0xbc97b627UL,
1560   0x3b16ee12UL, 0x3ffe3b33UL, 0x31fdc68bUL, 0xbc99f4a4UL, 0xe78b3ff6UL,
1561   0x3ffe502eUL, 0x80a9cc8fUL, 0x3c839e89UL, 0x24676d76UL, 0x3ffe6539UL,
1562   0x7522b735UL, 0xbc863ff8UL, 0xfbc74c83UL, 0x3ffe7a51UL, 0xca0c8de2UL,
1563   0x3c92d522UL, 0x77cdb740UL, 0x3ffe8f79UL, 0x80b054b1UL, 0xbc910894UL,
1564   0xa2a490daUL, 0x3ffea4afUL, 0x179c2893UL, 0xbc9e9c23UL, 0x867cca6eUL,
1565   0x3ffeb9f4UL, 0x2293e4f2UL, 0x3c94832fUL, 0x2d8e67f1UL, 0x3ffecf48UL,
1566   0xb411ad8cUL, 0xbc9c93f3UL, 0xa2188510UL, 0x3ffee4aaUL, 0xa487568dUL,
1567   0x3c91c68dUL, 0xee615a27UL, 0x3ffefa1bUL, 0x86a4b6b0UL, 0x3c9dc7f4UL,
1568   0x1cb6412aUL, 0x3fff0f9cUL, 0x65181d45UL, 0xbc932200UL, 0x376bba97UL,
1569   0x3fff252bUL, 0xbf0d8e43UL, 0x3c93a1a5UL, 0x48dd7274UL, 0x3fff3ac9UL,
1570   0x3ed837deUL, 0xbc795a5aUL, 0x5b6e4540UL, 0x3fff5076UL, 0x2dd8a18bUL,
1571   0x3c99d3e1UL, 0x798844f8UL, 0x3fff6632UL, 0x3539343eUL, 0x3c9fa37bUL,
1572   0xad9cbe14UL, 0x3fff7bfdUL, 0xd006350aUL, 0xbc9dbb12UL, 0x02243c89UL,
1573   0x3fff91d8UL, 0xa779f689UL, 0xbc612ea8UL, 0x819e90d8UL, 0x3fffa7c1UL,
1574   0xf3a5931eUL, 0x3c874853UL, 0x3692d514UL, 0x3fffbdbaUL, 0x15098eb6UL,
1575   0xbc796773UL, 0x2b8f71f1UL, 0x3fffd3c2UL, 0x966579e7UL, 0x3c62eb74UL,
1576   0x6b2a23d9UL, 0x3fffe9d9UL, 0x7442fde3UL, 0x3c74a603UL
1577 };
1578 
1579 ALIGNED_(16) juint _e_coeff[] =
1580 {
1581   0xe78a6731UL, 0x3f55d87fUL, 0xd704a0c0UL, 0x3fac6b08UL, 0x6fba4e77UL,
1582   0x3f83b2abUL, 0xff82c58fUL, 0x3fcebfbdUL, 0xfefa39efUL, 0x3fe62e42UL,
1583   0x00000000UL, 0x00000000UL
1584 };
1585 
1586 ALIGNED_(16) juint _coeff_h[] =
1587 {
1588   0x00000000UL, 0xbfd61a00UL, 0x00000000UL, 0xbf5dabe1UL
1589 };
1590 
1591 ALIGNED_(16) juint _HIGHMASK_LOG_X[] =
1592 {
1593   0xf8000000UL, 0xffffffffUL, 0x00000000UL, 0xfffff800UL
1594 };
1595 
1596 ALIGNED_(8) juint _HALFMASK[] =
1597 {
1598   0xf8000000UL, 0xffffffffUL, 0xf8000000UL, 0xffffffffUL
1599 };
1600 
1601 ALIGNED_(16) juint _coeff_pow[] =
1602 {
1603   0x6dc96112UL, 0xbf836578UL, 0xee241472UL, 0xbf9b0301UL, 0x9f95985aUL,
1604   0xbfb528dbUL, 0xb3841d2aUL, 0xbfd619b6UL, 0x518775e3UL, 0x3f9004f2UL,
1605   0xac8349bbUL, 0x3fa76c9bUL, 0x486ececcUL, 0x3fc4635eUL, 0x161bb241UL,
1606   0xbf5dabe1UL, 0x9f95985aUL, 0xbfb528dbUL, 0xf8b5787dUL, 0x3ef2531eUL,
1607   0x486ececbUL, 0x3fc4635eUL, 0x412055ccUL, 0xbdd61bb2UL
1608 };
1609 
1610 ALIGNED_(16) juint _L_tbl_pow[] =
1611 {
1612   0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x00000000UL, 0x20000000UL,
1613   0x3feff00aUL, 0x96621f95UL, 0x3e5b1856UL, 0xe0000000UL, 0x3fefe019UL,
1614   0xe5916f9eUL, 0xbe325278UL, 0x00000000UL, 0x3fefd02fUL, 0x859a1062UL,
1615   0x3e595fb7UL, 0xc0000000UL, 0x3fefc049UL, 0xb245f18fUL, 0xbe529c38UL,
1616   0xe0000000UL, 0x3fefb069UL, 0xad2880a7UL, 0xbe501230UL, 0x60000000UL,
1617   0x3fefa08fUL, 0xc8e72420UL, 0x3e597bd1UL, 0x80000000UL, 0x3fef90baUL,
1618   0xc30c4500UL, 0xbe5d6c75UL, 0xe0000000UL, 0x3fef80eaUL, 0x02c63f43UL,
1619   0x3e2e1318UL, 0xc0000000UL, 0x3fef7120UL, 0xb3d4ccccUL, 0xbe44c52aUL,
1620   0x00000000UL, 0x3fef615cUL, 0xdbd91397UL, 0xbe4e7d6cUL, 0xa0000000UL,
1621   0x3fef519cUL, 0x65c5cd68UL, 0xbe522dc8UL, 0xa0000000UL, 0x3fef41e2UL,
1622   0x46d1306cUL, 0xbe5a840eUL, 0xe0000000UL, 0x3fef322dUL, 0xd2980e94UL,
1623   0x3e5071afUL, 0xa0000000UL, 0x3fef227eUL, 0x773abadeUL, 0xbe5891e5UL,
1624   0xa0000000UL, 0x3fef12d4UL, 0xdc6bf46bUL, 0xbe5cccbeUL, 0xe0000000UL,
1625   0x3fef032fUL, 0xbc7247faUL, 0xbe2bab83UL, 0x80000000UL, 0x3feef390UL,
1626   0xbcaa1e46UL, 0xbe53bb3bUL, 0x60000000UL, 0x3feee3f6UL, 0x5f6c682dUL,
1627   0xbe54c619UL, 0x80000000UL, 0x3feed461UL, 0x5141e368UL, 0xbe4b6d86UL,
1628   0xe0000000UL, 0x3feec4d1UL, 0xec678f76UL, 0xbe369af6UL, 0x80000000UL,
1629   0x3feeb547UL, 0x41301f55UL, 0xbe2d4312UL, 0x60000000UL, 0x3feea5c2UL,
1630   0x676da6bdUL, 0xbe4d8dd0UL, 0x60000000UL, 0x3fee9642UL, 0x57a891c4UL,
1631   0x3e51f991UL, 0xa0000000UL, 0x3fee86c7UL, 0xe4eb491eUL, 0x3e579bf9UL,
1632   0x20000000UL, 0x3fee7752UL, 0xfddc4a2cUL, 0xbe3356e6UL, 0xc0000000UL,
1633   0x3fee67e1UL, 0xd75b5bf1UL, 0xbe449531UL, 0x80000000UL, 0x3fee5876UL,
1634   0xbd423b8eUL, 0x3df54fe4UL, 0x60000000UL, 0x3fee4910UL, 0x330e51b9UL,
1635   0x3e54289cUL, 0x80000000UL, 0x3fee39afUL, 0x8651a95fUL, 0xbe55aad6UL,
1636   0xa0000000UL, 0x3fee2a53UL, 0x5e98c708UL, 0xbe2fc4a9UL, 0xe0000000UL,
1637   0x3fee1afcUL, 0x0989328dUL, 0x3e23958cUL, 0x40000000UL, 0x3fee0babUL,
1638   0xee642abdUL, 0xbe425dd8UL, 0xa0000000UL, 0x3fedfc5eUL, 0xc394d236UL,
1639   0x3e526362UL, 0x20000000UL, 0x3feded17UL, 0xe104aa8eUL, 0x3e4ce247UL,
1640   0xc0000000UL, 0x3fedddd4UL, 0x265a9be4UL, 0xbe5bb77aUL, 0x40000000UL,
1641   0x3fedce97UL, 0x0ecac52fUL, 0x3e4a7cb1UL, 0xe0000000UL, 0x3fedbf5eUL,
1642   0x124cb3b8UL, 0x3e257024UL, 0x80000000UL, 0x3fedb02bUL, 0xe6d4febeUL,
1643   0xbe2033eeUL, 0x20000000UL, 0x3feda0fdUL, 0x39cca00eUL, 0xbe3ddabcUL,
1644   0xc0000000UL, 0x3fed91d3UL, 0xef8a552aUL, 0xbe543390UL, 0x40000000UL,
1645   0x3fed82afUL, 0xb8e85204UL, 0x3e513850UL, 0xe0000000UL, 0x3fed738fUL,
1646   0x3d59fe08UL, 0xbe5db728UL, 0x40000000UL, 0x3fed6475UL, 0x3aa7ead1UL,
1647   0x3e58804bUL, 0xc0000000UL, 0x3fed555fUL, 0xf8a35ba9UL, 0xbe5298b0UL,
1648   0x00000000UL, 0x3fed464fUL, 0x9a88dd15UL, 0x3e5a8cdbUL, 0x40000000UL,
1649   0x3fed3743UL, 0xb0b0a190UL, 0x3e598635UL, 0x80000000UL, 0x3fed283cUL,
1650   0xe2113295UL, 0xbe5c1119UL, 0x80000000UL, 0x3fed193aUL, 0xafbf1728UL,
1651   0xbe492e9cUL, 0x60000000UL, 0x3fed0a3dUL, 0xe4a4ccf3UL, 0x3e19b90eUL,
1652   0x20000000UL, 0x3fecfb45UL, 0xba3cbeb8UL, 0x3e406b50UL, 0xc0000000UL,
1653   0x3fecec51UL, 0x110f7dddUL, 0x3e0d6806UL, 0x40000000UL, 0x3fecdd63UL,
1654   0x7dd7d508UL, 0xbe5a8943UL, 0x80000000UL, 0x3fecce79UL, 0x9b60f271UL,
1655   0xbe50676aUL, 0x80000000UL, 0x3fecbf94UL, 0x0b9ad660UL, 0x3e59174fUL,
1656   0x60000000UL, 0x3fecb0b4UL, 0x00823d9cUL, 0x3e5bbf72UL, 0x20000000UL,
1657   0x3feca1d9UL, 0x38a6ec89UL, 0xbe4d38f9UL, 0x80000000UL, 0x3fec9302UL,
1658   0x3a0b7d8eUL, 0x3e53dbfdUL, 0xc0000000UL, 0x3fec8430UL, 0xc6826b34UL,
1659   0xbe27c5c9UL, 0xc0000000UL, 0x3fec7563UL, 0x0c706381UL, 0xbe593653UL,
1660   0x60000000UL, 0x3fec669bUL, 0x7df34ec7UL, 0x3e461ab5UL, 0xe0000000UL,
1661   0x3fec57d7UL, 0x40e5e7e8UL, 0xbe5c3daeUL, 0x00000000UL, 0x3fec4919UL,
1662   0x5602770fUL, 0xbe55219dUL, 0xc0000000UL, 0x3fec3a5eUL, 0xec7911ebUL,
1663   0x3e5a5d25UL, 0x60000000UL, 0x3fec2ba9UL, 0xb39ea225UL, 0xbe53c00bUL,
1664   0x80000000UL, 0x3fec1cf8UL, 0x967a212eUL, 0x3e5a8ddfUL, 0x60000000UL,
1665   0x3fec0e4cUL, 0x580798bdUL, 0x3e5f53abUL, 0x00000000UL, 0x3febffa5UL,
1666   0xb8282df6UL, 0xbe46b874UL, 0x20000000UL, 0x3febf102UL, 0xe33a6729UL,
1667   0x3e54963fUL, 0x00000000UL, 0x3febe264UL, 0x3b53e88aUL, 0xbe3adce1UL,
1668   0x60000000UL, 0x3febd3caUL, 0xc2585084UL, 0x3e5cde9fUL, 0x80000000UL,
1669   0x3febc535UL, 0xa335c5eeUL, 0xbe39fd9cUL, 0x20000000UL, 0x3febb6a5UL,
1670   0x7325b04dUL, 0x3e42ba15UL, 0x60000000UL, 0x3feba819UL, 0x1564540fUL,
1671   0x3e3a9f35UL, 0x40000000UL, 0x3feb9992UL, 0x83fff592UL, 0xbe5465ceUL,
1672   0xa0000000UL, 0x3feb8b0fUL, 0xb9da63d3UL, 0xbe4b1a0aUL, 0x80000000UL,
1673   0x3feb7c91UL, 0x6d6f1ea4UL, 0x3e557657UL, 0x00000000UL, 0x3feb6e18UL,
1674   0x5e80a1bfUL, 0x3e4ddbb6UL, 0x00000000UL, 0x3feb5fa3UL, 0x1c9eacb5UL,
1675   0x3e592877UL, 0xa0000000UL, 0x3feb5132UL, 0x6d40beb3UL, 0xbe51858cUL,
1676   0xa0000000UL, 0x3feb42c6UL, 0xd740c67bUL, 0x3e427ad2UL, 0x40000000UL,
1677   0x3feb345fUL, 0xa3e0cceeUL, 0xbe5c2fc4UL, 0x40000000UL, 0x3feb25fcUL,
1678   0x8e752b50UL, 0xbe3da3c2UL, 0xc0000000UL, 0x3feb179dUL, 0xa892e7deUL,
1679   0x3e1fb481UL, 0xc0000000UL, 0x3feb0943UL, 0x21ed71e9UL, 0xbe365206UL,
1680   0x20000000UL, 0x3feafaeeUL, 0x0e1380a3UL, 0x3e5c5b7bUL, 0x20000000UL,
1681   0x3feaec9dUL, 0x3c3d640eUL, 0xbe5dbbd0UL, 0x60000000UL, 0x3feade50UL,
1682   0x8f97a715UL, 0x3e3a8ec5UL, 0x20000000UL, 0x3fead008UL, 0x23ab2839UL,
1683   0x3e2fe98aUL, 0x40000000UL, 0x3feac1c4UL, 0xf4bbd50fUL, 0x3e54d8f6UL,
1684   0xe0000000UL, 0x3feab384UL, 0x14757c4dUL, 0xbe48774cUL, 0xc0000000UL,
1685   0x3feaa549UL, 0x7c7b0eeaUL, 0x3e5b51bbUL, 0x20000000UL, 0x3fea9713UL,
1686   0xf56f7013UL, 0x3e386200UL, 0xe0000000UL, 0x3fea88e0UL, 0xbe428ebeUL,
1687   0xbe514af5UL, 0xe0000000UL, 0x3fea7ab2UL, 0x8d0e4496UL, 0x3e4f9165UL,
1688   0x60000000UL, 0x3fea6c89UL, 0xdbacc5d5UL, 0xbe5c063bUL, 0x20000000UL,
1689   0x3fea5e64UL, 0x3f19d970UL, 0xbe5a0c8cUL, 0x20000000UL, 0x3fea5043UL,
1690   0x09ea3e6bUL, 0x3e5065dcUL, 0x80000000UL, 0x3fea4226UL, 0x78df246cUL,
1691   0x3e5e05f6UL, 0x40000000UL, 0x3fea340eUL, 0x4057d4a0UL, 0x3e431b2bUL,
1692   0x40000000UL, 0x3fea25faUL, 0x82867bb5UL, 0x3e4b76beUL, 0xa0000000UL,
1693   0x3fea17eaUL, 0x9436f40aUL, 0xbe5aad39UL, 0x20000000UL, 0x3fea09dfUL,
1694   0x4b5253b3UL, 0x3e46380bUL, 0x00000000UL, 0x3fe9fbd8UL, 0x8fc52466UL,
1695   0xbe386f9bUL, 0x20000000UL, 0x3fe9edd5UL, 0x22d3f344UL, 0xbe538347UL,
1696   0x60000000UL, 0x3fe9dfd6UL, 0x1ac33522UL, 0x3e5dbc53UL, 0x00000000UL,
1697   0x3fe9d1dcUL, 0xeabdff1dUL, 0x3e40fc0cUL, 0xe0000000UL, 0x3fe9c3e5UL,
1698   0xafd30e73UL, 0xbe585e63UL, 0xe0000000UL, 0x3fe9b5f3UL, 0xa52f226aUL,
1699   0xbe43e8f9UL, 0x20000000UL, 0x3fe9a806UL, 0xecb8698dUL, 0xbe515b36UL,
1700   0x80000000UL, 0x3fe99a1cUL, 0xf2b4e89dUL, 0x3e48b62bUL, 0x20000000UL,
1701   0x3fe98c37UL, 0x7c9a88fbUL, 0x3e44414cUL, 0x00000000UL, 0x3fe97e56UL,
1702   0xda015741UL, 0xbe5d13baUL, 0xe0000000UL, 0x3fe97078UL, 0x5fdace06UL,
1703   0x3e51b947UL, 0x00000000UL, 0x3fe962a0UL, 0x956ca094UL, 0x3e518785UL,
1704   0x40000000UL, 0x3fe954cbUL, 0x01164c1dUL, 0x3e5d5b57UL, 0xc0000000UL,
1705   0x3fe946faUL, 0xe63b3767UL, 0xbe4f84e7UL, 0x40000000UL, 0x3fe9392eUL,
1706   0xe57cc2a9UL, 0x3e34eda3UL, 0xe0000000UL, 0x3fe92b65UL, 0x8c75b544UL,
1707   0x3e5766a0UL, 0xc0000000UL, 0x3fe91da1UL, 0x37d1d087UL, 0xbe5e2ab1UL,
1708   0x80000000UL, 0x3fe90fe1UL, 0xa953dc20UL, 0x3e5fa1f3UL, 0x80000000UL,
1709   0x3fe90225UL, 0xdbd3f369UL, 0x3e47d6dbUL, 0xa0000000UL, 0x3fe8f46dUL,
1710   0x1c9be989UL, 0xbe5e2b0aUL, 0xa0000000UL, 0x3fe8e6b9UL, 0x3c93d76aUL,
1711   0x3e5c8618UL, 0xe0000000UL, 0x3fe8d909UL, 0x2182fc9aUL, 0xbe41aa9eUL,
1712   0x20000000UL, 0x3fe8cb5eUL, 0xe6b3539dUL, 0xbe530d19UL, 0x60000000UL,
1713   0x3fe8bdb6UL, 0x49e58cc3UL, 0xbe3bb374UL, 0xa0000000UL, 0x3fe8b012UL,
1714   0xa7cfeb8fUL, 0x3e56c412UL, 0x00000000UL, 0x3fe8a273UL, 0x8d52bc19UL,
1715   0x3e1429b8UL, 0x60000000UL, 0x3fe894d7UL, 0x4dc32c6cUL, 0xbe48604cUL,
1716   0xc0000000UL, 0x3fe8873fUL, 0x0c868e56UL, 0xbe564ee5UL, 0x00000000UL,
1717   0x3fe879acUL, 0x56aee828UL, 0x3e5e2fd8UL, 0x60000000UL, 0x3fe86c1cUL,
1718   0x7ceab8ecUL, 0x3e493365UL, 0xc0000000UL, 0x3fe85e90UL, 0x78d4dadcUL,
1719   0xbe4f7f25UL, 0x00000000UL, 0x3fe85109UL, 0x0ccd8280UL, 0x3e31e7a2UL,
1720   0x40000000UL, 0x3fe84385UL, 0x34ba4e15UL, 0x3e328077UL, 0x80000000UL,
1721   0x3fe83605UL, 0xa670975aUL, 0xbe53eee5UL, 0xa0000000UL, 0x3fe82889UL,
1722   0xf61b77b2UL, 0xbe43a20aUL, 0xa0000000UL, 0x3fe81b11UL, 0x13e6643bUL,
1723   0x3e5e5fe5UL, 0xc0000000UL, 0x3fe80d9dUL, 0x82cc94e8UL, 0xbe5ff1f9UL,
1724   0xa0000000UL, 0x3fe8002dUL, 0x8a0c9c5dUL, 0xbe42b0e7UL, 0x60000000UL,
1725   0x3fe7f2c1UL, 0x22a16f01UL, 0x3e5d9ea0UL, 0x20000000UL, 0x3fe7e559UL,
1726   0xc38cd451UL, 0x3e506963UL, 0xc0000000UL, 0x3fe7d7f4UL, 0x9902bc71UL,
1727   0x3e4503d7UL, 0x40000000UL, 0x3fe7ca94UL, 0xdef2a3c0UL, 0x3e3d98edUL,
1728   0xa0000000UL, 0x3fe7bd37UL, 0xed49abb0UL, 0x3e24c1ffUL, 0xe0000000UL,
1729   0x3fe7afdeUL, 0xe3b0be70UL, 0xbe40c467UL, 0x00000000UL, 0x3fe7a28aUL,
1730   0xaf9f193cUL, 0xbe5dff6cUL, 0xe0000000UL, 0x3fe79538UL, 0xb74cf6b6UL,
1731   0xbe258ed0UL, 0xa0000000UL, 0x3fe787ebUL, 0x1d9127c7UL, 0x3e345fb0UL,
1732   0x40000000UL, 0x3fe77aa2UL, 0x1028c21dUL, 0xbe4619bdUL, 0xa0000000UL,
1733   0x3fe76d5cUL, 0x7cb0b5e4UL, 0x3e40f1a2UL, 0xe0000000UL, 0x3fe7601aUL,
1734   0x2b1bc4adUL, 0xbe32e8bbUL, 0xe0000000UL, 0x3fe752dcUL, 0x6839f64eUL,
1735   0x3e41f57bUL, 0xc0000000UL, 0x3fe745a2UL, 0xc4121f7eUL, 0xbe52c40aUL,
1736   0x60000000UL, 0x3fe7386cUL, 0xd6852d72UL, 0xbe5c4e6bUL, 0xc0000000UL,
1737   0x3fe72b39UL, 0x91d690f7UL, 0xbe57f88fUL, 0xe0000000UL, 0x3fe71e0aUL,
1738   0x627a2159UL, 0xbe4425d5UL, 0xc0000000UL, 0x3fe710dfUL, 0x50a54033UL,
1739   0x3e422b7eUL, 0x60000000UL, 0x3fe703b8UL, 0x3b0b5f91UL, 0x3e5d3857UL,
1740   0xe0000000UL, 0x3fe6f694UL, 0x84d628a2UL, 0xbe51f090UL, 0x00000000UL,
1741   0x3fe6e975UL, 0x306d8894UL, 0xbe414d83UL, 0xe0000000UL, 0x3fe6dc58UL,
1742   0x30bf24aaUL, 0xbe4650caUL, 0x80000000UL, 0x3fe6cf40UL, 0xd4628d69UL,
1743   0xbe5db007UL, 0xc0000000UL, 0x3fe6c22bUL, 0xa2aae57bUL, 0xbe31d279UL,
1744   0xc0000000UL, 0x3fe6b51aUL, 0x860edf7eUL, 0xbe2d4c4aUL, 0x80000000UL,
1745   0x3fe6a80dUL, 0xf3559341UL, 0xbe5f7e98UL, 0xe0000000UL, 0x3fe69b03UL,
1746   0xa885899eUL, 0xbe5c2011UL, 0xe0000000UL, 0x3fe68dfdUL, 0x2bdc6d37UL,
1747   0x3e224a82UL, 0xa0000000UL, 0x3fe680fbUL, 0xc12ad1b9UL, 0xbe40cf56UL,
1748   0x00000000UL, 0x3fe673fdUL, 0x1bcdf659UL, 0xbdf52f2dUL, 0x00000000UL,
1749   0x3fe66702UL, 0x5df10408UL, 0x3e5663e0UL, 0xc0000000UL, 0x3fe65a0aUL,
1750   0xa4070568UL, 0xbe40b12fUL, 0x00000000UL, 0x3fe64d17UL, 0x71c54c47UL,
1751   0x3e5f5e8bUL, 0x00000000UL, 0x3fe64027UL, 0xbd4b7e83UL, 0x3e42ead6UL,
1752   0xa0000000UL, 0x3fe6333aUL, 0x61598bd2UL, 0xbe4c48d4UL, 0xc0000000UL,
1753   0x3fe62651UL, 0x6f538d61UL, 0x3e548401UL, 0xa0000000UL, 0x3fe6196cUL,
1754   0x14344120UL, 0xbe529af6UL, 0x00000000UL, 0x3fe60c8bUL, 0x5982c587UL,
1755   0xbe3e1e4fUL, 0x00000000UL, 0x3fe5ffadUL, 0xfe51d4eaUL, 0xbe4c897aUL,
1756   0x80000000UL, 0x3fe5f2d2UL, 0xfd46ebe1UL, 0x3e552e00UL, 0xa0000000UL,
1757   0x3fe5e5fbUL, 0xa4695699UL, 0x3e5ed471UL, 0x60000000UL, 0x3fe5d928UL,
1758   0x80d118aeUL, 0x3e456b61UL, 0xa0000000UL, 0x3fe5cc58UL, 0x304c330bUL,
1759   0x3e54dc29UL, 0x80000000UL, 0x3fe5bf8cUL, 0x0af2dedfUL, 0xbe3aa9bdUL,
1760   0xe0000000UL, 0x3fe5b2c3UL, 0x15fc9258UL, 0xbe479a37UL, 0xc0000000UL,
1761   0x3fe5a5feUL, 0x9292c7eaUL, 0x3e188650UL, 0x20000000UL, 0x3fe5993dUL,
1762   0x33b4d380UL, 0x3e5d6d93UL, 0x20000000UL, 0x3fe58c7fUL, 0x02fd16c7UL,
1763   0x3e2fe961UL, 0xa0000000UL, 0x3fe57fc4UL, 0x4a05edb6UL, 0xbe4d55b4UL,
1764   0xa0000000UL, 0x3fe5730dUL, 0x3d443abbUL, 0xbe5e6954UL, 0x00000000UL,
1765   0x3fe5665aUL, 0x024acfeaUL, 0x3e50e61bUL, 0x00000000UL, 0x3fe559aaUL,
1766   0xcc9edd09UL, 0xbe325403UL, 0x60000000UL, 0x3fe54cfdUL, 0x1fe26950UL,
1767   0x3e5d500eUL, 0x60000000UL, 0x3fe54054UL, 0x6c5ae164UL, 0xbe4a79b4UL,
1768   0xc0000000UL, 0x3fe533aeUL, 0x154b0287UL, 0xbe401571UL, 0xa0000000UL,
1769   0x3fe5270cUL, 0x0673f401UL, 0xbe56e56bUL, 0xe0000000UL, 0x3fe51a6dUL,
1770   0x751b639cUL, 0x3e235269UL, 0xa0000000UL, 0x3fe50dd2UL, 0x7c7b2bedUL,
1771   0x3ddec887UL, 0xc0000000UL, 0x3fe5013aUL, 0xafab4e17UL, 0x3e5e7575UL,
1772   0x60000000UL, 0x3fe4f4a6UL, 0x2e308668UL, 0x3e59aed6UL, 0x80000000UL,
1773   0x3fe4e815UL, 0xf33e2a76UL, 0xbe51f184UL, 0xe0000000UL, 0x3fe4db87UL,
1774   0x839f3e3eUL, 0x3e57db01UL, 0xc0000000UL, 0x3fe4cefdUL, 0xa9eda7bbUL,
1775   0x3e535e0fUL, 0x00000000UL, 0x3fe4c277UL, 0x2a8f66a5UL, 0x3e5ce451UL,
1776   0xc0000000UL, 0x3fe4b5f3UL, 0x05192456UL, 0xbe4e8518UL, 0xc0000000UL,
1777   0x3fe4a973UL, 0x4aa7cd1dUL, 0x3e46784aUL, 0x40000000UL, 0x3fe49cf7UL,
1778   0x8e23025eUL, 0xbe5749f2UL, 0x00000000UL, 0x3fe4907eUL, 0x18d30215UL,
1779   0x3e360f39UL, 0x20000000UL, 0x3fe48408UL, 0x63dcf2f3UL, 0x3e5e00feUL,
1780   0xc0000000UL, 0x3fe47795UL, 0x46182d09UL, 0xbe5173d9UL, 0xa0000000UL,
1781   0x3fe46b26UL, 0x8f0e62aaUL, 0xbe48f281UL, 0xe0000000UL, 0x3fe45ebaUL,
1782   0x5775c40cUL, 0xbe56aad4UL, 0x60000000UL, 0x3fe45252UL, 0x0fe25f69UL,
1783   0x3e48bd71UL, 0x40000000UL, 0x3fe445edUL, 0xe9989ec5UL, 0x3e590d97UL,
1784   0x80000000UL, 0x3fe4398bUL, 0xb3d9ffe3UL, 0x3e479dbcUL, 0x20000000UL,
1785   0x3fe42d2dUL, 0x388e4d2eUL, 0xbe5eed80UL, 0xe0000000UL, 0x3fe420d1UL,
1786   0x6f797c18UL, 0x3e554b4cUL, 0x20000000UL, 0x3fe4147aUL, 0x31048bb4UL,
1787   0xbe5b1112UL, 0x80000000UL, 0x3fe40825UL, 0x2efba4f9UL, 0x3e48ebc7UL,
1788   0x40000000UL, 0x3fe3fbd4UL, 0x50201119UL, 0x3e40b701UL, 0x40000000UL,
1789   0x3fe3ef86UL, 0x0a4db32cUL, 0x3e551de8UL, 0xa0000000UL, 0x3fe3e33bUL,
1790   0x0c9c148bUL, 0xbe50c1f6UL, 0x20000000UL, 0x3fe3d6f4UL, 0xc9129447UL,
1791   0x3e533fa0UL, 0x00000000UL, 0x3fe3cab0UL, 0xaae5b5a0UL, 0xbe22b68eUL,
1792   0x20000000UL, 0x3fe3be6fUL, 0x02305e8aUL, 0xbe54fc08UL, 0x60000000UL,
1793   0x3fe3b231UL, 0x7f908258UL, 0x3e57dc05UL, 0x00000000UL, 0x3fe3a5f7UL,
1794   0x1a09af78UL, 0x3e08038bUL, 0xe0000000UL, 0x3fe399bfUL, 0x490643c1UL,
1795   0xbe5dbe42UL, 0xe0000000UL, 0x3fe38d8bUL, 0x5e8ad724UL, 0xbe3c2b72UL,
1796   0x20000000UL, 0x3fe3815bUL, 0xc67196b6UL, 0x3e1713cfUL, 0xa0000000UL,
1797   0x3fe3752dUL, 0x6182e429UL, 0xbe3ec14cUL, 0x40000000UL, 0x3fe36903UL,
1798   0xab6eb1aeUL, 0x3e5a2cc5UL, 0x40000000UL, 0x3fe35cdcUL, 0xfe5dc064UL,
1799   0xbe5c5878UL, 0x40000000UL, 0x3fe350b8UL, 0x0ba6b9e4UL, 0x3e51619bUL,
1800   0x80000000UL, 0x3fe34497UL, 0x857761aaUL, 0x3e5fff53UL, 0x00000000UL,
1801   0x3fe3387aUL, 0xf872d68cUL, 0x3e484f4dUL, 0xa0000000UL, 0x3fe32c5fUL,
1802   0x087e97c2UL, 0x3e52842eUL, 0x80000000UL, 0x3fe32048UL, 0x73d6d0c0UL,
1803   0xbe503edfUL, 0x80000000UL, 0x3fe31434UL, 0x0c1456a1UL, 0xbe5f72adUL,
1804   0xa0000000UL, 0x3fe30823UL, 0x83a1a4d5UL, 0xbe5e65ccUL, 0xe0000000UL,
1805   0x3fe2fc15UL, 0x855a7390UL, 0xbe506438UL, 0x40000000UL, 0x3fe2f00bUL,
1806   0xa2898287UL, 0x3e3d22a2UL, 0xe0000000UL, 0x3fe2e403UL, 0x8b56f66fUL,
1807   0xbe5aa5fdUL, 0x80000000UL, 0x3fe2d7ffUL, 0x52db119aUL, 0x3e3a2e3dUL,
1808   0x60000000UL, 0x3fe2cbfeUL, 0xe2ddd4c0UL, 0xbe586469UL, 0x40000000UL,
1809   0x3fe2c000UL, 0x6b01bf10UL, 0x3e352b9dUL, 0x40000000UL, 0x3fe2b405UL,
1810   0xb07a1cdfUL, 0x3e5c5cdaUL, 0x80000000UL, 0x3fe2a80dUL, 0xc7b5f868UL,
1811   0xbe5668b3UL, 0xc0000000UL, 0x3fe29c18UL, 0x185edf62UL, 0xbe563d66UL,
1812   0x00000000UL, 0x3fe29027UL, 0xf729e1ccUL, 0x3e59a9a0UL, 0x80000000UL,
1813   0x3fe28438UL, 0x6433c727UL, 0xbe43cc89UL, 0x00000000UL, 0x3fe2784dUL,
1814   0x41782631UL, 0xbe30750cUL, 0xa0000000UL, 0x3fe26c64UL, 0x914911b7UL,
1815   0xbe58290eUL, 0x40000000UL, 0x3fe2607fUL, 0x3dcc73e1UL, 0xbe4269cdUL,
1816   0x00000000UL, 0x3fe2549dUL, 0x2751bf70UL, 0xbe5a6998UL, 0xc0000000UL,
1817   0x3fe248bdUL, 0x4248b9fbUL, 0xbe4ddb00UL, 0x80000000UL, 0x3fe23ce1UL,
1818   0xf35cf82fUL, 0x3e561b71UL, 0x60000000UL, 0x3fe23108UL, 0x8e481a2dUL,
1819   0x3e518fb9UL, 0x60000000UL, 0x3fe22532UL, 0x5ab96edcUL, 0xbe5fafc5UL,
1820   0x40000000UL, 0x3fe2195fUL, 0x80943911UL, 0xbe07f819UL, 0x40000000UL,
1821   0x3fe20d8fUL, 0x386f2d6cUL, 0xbe54ba8bUL, 0x40000000UL, 0x3fe201c2UL,
1822   0xf29664acUL, 0xbe5eb815UL, 0x20000000UL, 0x3fe1f5f8UL, 0x64f03390UL,
1823   0x3e5e320cUL, 0x20000000UL, 0x3fe1ea31UL, 0x747ff696UL, 0x3e5ef0a5UL,
1824   0x40000000UL, 0x3fe1de6dUL, 0x3e9ceb51UL, 0xbe5f8d27UL, 0x20000000UL,
1825   0x3fe1d2acUL, 0x4ae0b55eUL, 0x3e5faa21UL, 0x20000000UL, 0x3fe1c6eeUL,
1826   0x28569a5eUL, 0x3e598a4fUL, 0x20000000UL, 0x3fe1bb33UL, 0x54b33e07UL,
1827   0x3e46130aUL, 0x20000000UL, 0x3fe1af7bUL, 0x024f1078UL, 0xbe4dbf93UL,
1828   0x00000000UL, 0x3fe1a3c6UL, 0xb0783bfaUL, 0x3e419248UL, 0xe0000000UL,
1829   0x3fe19813UL, 0x2f02b836UL, 0x3e4e02b7UL, 0xc0000000UL, 0x3fe18c64UL,
1830   0x28dec9d4UL, 0x3e09064fUL, 0x80000000UL, 0x3fe180b8UL, 0x45cbf406UL,
1831   0x3e5b1f46UL, 0x40000000UL, 0x3fe1750fUL, 0x03d9964cUL, 0x3e5b0a79UL,
1832   0x00000000UL, 0x3fe16969UL, 0x8b5b882bUL, 0xbe238086UL, 0xa0000000UL,
1833   0x3fe15dc5UL, 0x73bad6f8UL, 0xbdf1fca4UL, 0x20000000UL, 0x3fe15225UL,
1834   0x5385769cUL, 0x3e5e8d76UL, 0xa0000000UL, 0x3fe14687UL, 0x1676dc6bUL,
1835   0x3e571d08UL, 0x20000000UL, 0x3fe13aedUL, 0xa8c41c7fUL, 0xbe598a25UL,
1836   0x60000000UL, 0x3fe12f55UL, 0xc4e1aaf0UL, 0x3e435277UL, 0xa0000000UL,
1837   0x3fe123c0UL, 0x403638e1UL, 0xbe21aa7cUL, 0xc0000000UL, 0x3fe1182eUL,
1838   0x557a092bUL, 0xbdd0116bUL, 0xc0000000UL, 0x3fe10c9fUL, 0x7d779f66UL,
1839   0x3e4a61baUL, 0xc0000000UL, 0x3fe10113UL, 0x2b09c645UL, 0xbe5d586eUL,
1840   0x20000000UL, 0x3fe0ea04UL, 0xea2cad46UL, 0x3e5aa97cUL, 0x20000000UL,
1841   0x3fe0d300UL, 0x23190e54UL, 0x3e50f1a7UL, 0xa0000000UL, 0x3fe0bc07UL,
1842   0x1379a5a6UL, 0xbe51619dUL, 0x60000000UL, 0x3fe0a51aUL, 0x926a3d4aUL,
1843   0x3e5cf019UL, 0xa0000000UL, 0x3fe08e38UL, 0xa8c24358UL, 0x3e35241eUL,
1844   0x20000000UL, 0x3fe07762UL, 0x24317e7aUL, 0x3e512cfaUL, 0x00000000UL,
1845   0x3fe06097UL, 0xfd9cf274UL, 0xbe55bef3UL, 0x00000000UL, 0x3fe049d7UL,
1846   0x3689b49dUL, 0xbe36d26dUL, 0x40000000UL, 0x3fe03322UL, 0xf72ef6c4UL,
1847   0xbe54cd08UL, 0xa0000000UL, 0x3fe01c78UL, 0x23702d2dUL, 0xbe5900bfUL,
1848   0x00000000UL, 0x3fe005daUL, 0x3f59c14cUL, 0x3e57d80bUL, 0x40000000UL,
1849   0x3fdfde8dUL, 0xad67766dUL, 0xbe57fad4UL, 0x40000000UL, 0x3fdfb17cUL,
1850   0x644f4ae7UL, 0x3e1ee43bUL, 0x40000000UL, 0x3fdf8481UL, 0x903234d2UL,
1851   0x3e501a86UL, 0x40000000UL, 0x3fdf579cUL, 0xafe9e509UL, 0xbe267c3eUL,
1852   0x00000000UL, 0x3fdf2acdUL, 0xb7dfda0bUL, 0xbe48149bUL, 0x40000000UL,
1853   0x3fdefe13UL, 0x3b94305eUL, 0x3e5f4ea7UL, 0x80000000UL, 0x3fded16fUL,
1854   0x5d95da61UL, 0xbe55c198UL, 0x00000000UL, 0x3fdea4e1UL, 0x406960c9UL,
1855   0xbdd99a19UL, 0x00000000UL, 0x3fde7868UL, 0xd22f3539UL, 0x3e470c78UL,
1856   0x80000000UL, 0x3fde4c04UL, 0x83eec535UL, 0xbe3e1232UL, 0x40000000UL,
1857   0x3fde1fb6UL, 0x3dfbffcbUL, 0xbe4b7d71UL, 0x40000000UL, 0x3fddf37dUL,
1858   0x7e1be4e0UL, 0xbe5b8f8fUL, 0x40000000UL, 0x3fddc759UL, 0x46dae887UL,
1859   0xbe350458UL, 0x80000000UL, 0x3fdd9b4aUL, 0xed6ecc49UL, 0xbe5f0045UL,
1860   0x80000000UL, 0x3fdd6f50UL, 0x2e9e883cUL, 0x3e2915daUL, 0x80000000UL,
1861   0x3fdd436bUL, 0xf0bccb32UL, 0x3e4a68c9UL, 0x80000000UL, 0x3fdd179bUL,
1862   0x9bbfc779UL, 0xbe54a26aUL, 0x00000000UL, 0x3fdcebe0UL, 0x7cea33abUL,
1863   0x3e43c6b7UL, 0x40000000UL, 0x3fdcc039UL, 0xe740fd06UL, 0x3e5526c2UL,
1864   0x40000000UL, 0x3fdc94a7UL, 0x9eadeb1aUL, 0xbe396d8dUL, 0xc0000000UL,
1865   0x3fdc6929UL, 0xf0a8f95aUL, 0xbe5c0ab2UL, 0x80000000UL, 0x3fdc3dc0UL,
1866   0x6ee2693bUL, 0x3e0992e6UL, 0xc0000000UL, 0x3fdc126bUL, 0x5ac6b581UL,
1867   0xbe2834b6UL, 0x40000000UL, 0x3fdbe72bUL, 0x8cc226ffUL, 0x3e3596a6UL,
1868   0x00000000UL, 0x3fdbbbffUL, 0xf92a74bbUL, 0x3e3c5813UL, 0x00000000UL,
1869   0x3fdb90e7UL, 0x479664c0UL, 0xbe50d644UL, 0x00000000UL, 0x3fdb65e3UL,
1870   0x5004975bUL, 0xbe55258fUL, 0x00000000UL, 0x3fdb3af3UL, 0xe4b23194UL,
1871   0xbe588407UL, 0xc0000000UL, 0x3fdb1016UL, 0xe65d4d0aUL, 0x3e527c26UL,
1872   0x80000000UL, 0x3fdae54eUL, 0x814fddd6UL, 0x3e5962a2UL, 0x40000000UL,
1873   0x3fdaba9aUL, 0xe19d0913UL, 0xbe562f4eUL, 0x80000000UL, 0x3fda8ff9UL,
1874   0x43cfd006UL, 0xbe4cfdebUL, 0x40000000UL, 0x3fda656cUL, 0x686f0a4eUL,
1875   0x3e5e47a8UL, 0xc0000000UL, 0x3fda3af2UL, 0x7200d410UL, 0x3e5e1199UL,
1876   0xc0000000UL, 0x3fda108cUL, 0xabd2266eUL, 0x3e5ee4d1UL, 0x40000000UL,
1877   0x3fd9e63aUL, 0x396f8f2cUL, 0x3e4dbffbUL, 0x00000000UL, 0x3fd9bbfbUL,
1878   0xe32b25ddUL, 0x3e5c3a54UL, 0x40000000UL, 0x3fd991cfUL, 0x431e4035UL,
1879   0xbe457925UL, 0x80000000UL, 0x3fd967b6UL, 0x7bed3dd3UL, 0x3e40c61dUL,
1880   0x00000000UL, 0x3fd93db1UL, 0xd7449365UL, 0x3e306419UL, 0x80000000UL,
1881   0x3fd913beUL, 0x1746e791UL, 0x3e56fcfcUL, 0x40000000UL, 0x3fd8e9dfUL,
1882   0xf3a9028bUL, 0xbe5041b9UL, 0xc0000000UL, 0x3fd8c012UL, 0x56840c50UL,
1883   0xbe26e20aUL, 0x40000000UL, 0x3fd89659UL, 0x19763102UL, 0xbe51f466UL,
1884   0x80000000UL, 0x3fd86cb2UL, 0x7032de7cUL, 0xbe4d298aUL, 0x80000000UL,
1885   0x3fd8431eUL, 0xdeb39fabUL, 0xbe4361ebUL, 0x40000000UL, 0x3fd8199dUL,
1886   0x5d01cbe0UL, 0xbe5425b3UL, 0x80000000UL, 0x3fd7f02eUL, 0x3ce99aa9UL,
1887   0x3e146fa8UL, 0x80000000UL, 0x3fd7c6d2UL, 0xd1a262b9UL, 0xbe5a1a69UL,
1888   0xc0000000UL, 0x3fd79d88UL, 0x8606c236UL, 0x3e423a08UL, 0x80000000UL,
1889   0x3fd77451UL, 0x8fd1e1b7UL, 0x3e5a6a63UL, 0xc0000000UL, 0x3fd74b2cUL,
1890   0xe491456aUL, 0x3e42c1caUL, 0x40000000UL, 0x3fd7221aUL, 0x4499a6d7UL,
1891   0x3e36a69aUL, 0x00000000UL, 0x3fd6f91aUL, 0x5237df94UL, 0xbe0f8f02UL,
1892   0x00000000UL, 0x3fd6d02cUL, 0xb6482c6eUL, 0xbe5abcf7UL, 0x00000000UL,
1893   0x3fd6a750UL, 0x1919fd61UL, 0xbe57ade2UL, 0x00000000UL, 0x3fd67e86UL,
1894   0xaa7a994dUL, 0xbe3f3fbdUL, 0x00000000UL, 0x3fd655ceUL, 0x67db014cUL,
1895   0x3e33c550UL, 0x00000000UL, 0x3fd62d28UL, 0xa82856b7UL, 0xbe1409d1UL,
1896   0xc0000000UL, 0x3fd60493UL, 0x1e6a300dUL, 0x3e55d899UL, 0x80000000UL,
1897   0x3fd5dc11UL, 0x1222bd5cUL, 0xbe35bfc0UL, 0xc0000000UL, 0x3fd5b3a0UL,
1898   0x6e8dc2d3UL, 0x3e5d4d79UL, 0x00000000UL, 0x3fd58b42UL, 0xe0e4ace6UL,
1899   0xbe517303UL, 0x80000000UL, 0x3fd562f4UL, 0xb306e0a8UL, 0x3e5edf0fUL,
1900   0xc0000000UL, 0x3fd53ab8UL, 0x6574bc54UL, 0x3e5ee859UL, 0x80000000UL,
1901   0x3fd5128eUL, 0xea902207UL, 0x3e5f6188UL, 0xc0000000UL, 0x3fd4ea75UL,
1902   0x9f911d79UL, 0x3e511735UL, 0x80000000UL, 0x3fd4c26eUL, 0xf9c77397UL,
1903   0xbe5b1643UL, 0x40000000UL, 0x3fd49a78UL, 0x15fc9258UL, 0x3e479a37UL,
1904   0x80000000UL, 0x3fd47293UL, 0xd5a04dd9UL, 0xbe426e56UL, 0xc0000000UL,
1905   0x3fd44abfUL, 0xe04042f5UL, 0x3e56f7c6UL, 0x40000000UL, 0x3fd422fdUL,
1906   0x1d8bf2c8UL, 0x3e5d8810UL, 0x00000000UL, 0x3fd3fb4cUL, 0x88a8ddeeUL,
1907   0xbe311454UL, 0xc0000000UL, 0x3fd3d3abUL, 0x3e3b5e47UL, 0xbe5d1b72UL,
1908   0x40000000UL, 0x3fd3ac1cUL, 0xc2ab5d59UL, 0x3e31b02bUL, 0xc0000000UL,
1909   0x3fd3849dUL, 0xd4e34b9eUL, 0x3e51cb2fUL, 0x40000000UL, 0x3fd35d30UL,
1910   0x177204fbUL, 0xbe2b8cd7UL, 0x80000000UL, 0x3fd335d3UL, 0xfcd38c82UL,
1911   0xbe4356e1UL, 0x80000000UL, 0x3fd30e87UL, 0x64f54accUL, 0xbe4e6224UL,
1912   0x00000000UL, 0x3fd2e74cUL, 0xaa7975d9UL, 0x3e5dc0feUL, 0x80000000UL,
1913   0x3fd2c021UL, 0x516dab3fUL, 0xbe50ffa3UL, 0x40000000UL, 0x3fd29907UL,
1914   0x2bfb7313UL, 0x3e5674a2UL, 0xc0000000UL, 0x3fd271fdUL, 0x0549fc99UL,
1915   0x3e385d29UL, 0xc0000000UL, 0x3fd24b04UL, 0x55b63073UL, 0xbe500c6dUL,
1916   0x00000000UL, 0x3fd2241cUL, 0x3f91953aUL, 0x3e389977UL, 0xc0000000UL,
1917   0x3fd1fd43UL, 0xa1543f71UL, 0xbe3487abUL, 0xc0000000UL, 0x3fd1d67bUL,
1918   0x4ec8867cUL, 0x3df6a2dcUL, 0x00000000UL, 0x3fd1afc4UL, 0x4328e3bbUL,
1919   0x3e41d9c0UL, 0x80000000UL, 0x3fd1891cUL, 0x2e1cda84UL, 0x3e3bdd87UL,
1920   0x40000000UL, 0x3fd16285UL, 0x4b5331aeUL, 0xbe53128eUL, 0x00000000UL,
1921   0x3fd13bfeUL, 0xb9aec164UL, 0xbe52ac98UL, 0xc0000000UL, 0x3fd11586UL,
1922   0xd91e1316UL, 0xbe350630UL, 0x80000000UL, 0x3fd0ef1fUL, 0x7cacc12cUL,
1923   0x3e3f5219UL, 0x40000000UL, 0x3fd0c8c8UL, 0xbce277b7UL, 0x3e3d30c0UL,
1924   0x00000000UL, 0x3fd0a281UL, 0x2a63447dUL, 0xbe541377UL, 0x80000000UL,
1925   0x3fd07c49UL, 0xfac483b5UL, 0xbe5772ecUL, 0xc0000000UL, 0x3fd05621UL,
1926   0x36b8a570UL, 0xbe4fd4bdUL, 0xc0000000UL, 0x3fd03009UL, 0xbae505f7UL,
1927   0xbe450388UL, 0x80000000UL, 0x3fd00a01UL, 0x3e35aeadUL, 0xbe5430fcUL,
1928   0x80000000UL, 0x3fcfc811UL, 0x707475acUL, 0x3e38806eUL, 0x80000000UL,
1929   0x3fcf7c3fUL, 0xc91817fcUL, 0xbe40cceaUL, 0x80000000UL, 0x3fcf308cUL,
1930   0xae05d5e9UL, 0xbe4919b8UL, 0x80000000UL, 0x3fcee4f8UL, 0xae6cc9e6UL,
1931   0xbe530b94UL, 0x00000000UL, 0x3fce9983UL, 0x1efe3e8eUL, 0x3e57747eUL,
1932   0x00000000UL, 0x3fce4e2dUL, 0xda78d9bfUL, 0xbe59a608UL, 0x00000000UL,
1933   0x3fce02f5UL, 0x8abe2c2eUL, 0x3e4a35adUL, 0x00000000UL, 0x3fcdb7dcUL,
1934   0x1495450dUL, 0xbe0872ccUL, 0x80000000UL, 0x3fcd6ce1UL, 0x86ee0ba0UL,
1935   0xbe4f59a0UL, 0x00000000UL, 0x3fcd2205UL, 0xe81ca888UL, 0x3e5402c3UL,
1936   0x00000000UL, 0x3fccd747UL, 0x3b4424b9UL, 0x3e5dfdc3UL, 0x80000000UL,
1937   0x3fcc8ca7UL, 0xd305b56cUL, 0x3e202da6UL, 0x00000000UL, 0x3fcc4226UL,
1938   0x399a6910UL, 0xbe482a1cUL, 0x80000000UL, 0x3fcbf7c2UL, 0x747f7938UL,
1939   0xbe587372UL, 0x80000000UL, 0x3fcbad7cUL, 0x6fc246a0UL, 0x3e50d83dUL,
1940   0x00000000UL, 0x3fcb6355UL, 0xee9e9be5UL, 0xbe5c35bdUL, 0x80000000UL,
1941   0x3fcb194aUL, 0x8416c0bcUL, 0x3e546d4fUL, 0x00000000UL, 0x3fcacf5eUL,
1942   0x49f7f08fUL, 0x3e56da76UL, 0x00000000UL, 0x3fca858fUL, 0x5dc30de2UL,
1943   0x3e5f390cUL, 0x00000000UL, 0x3fca3bdeUL, 0x950583b6UL, 0xbe5e4169UL,
1944   0x80000000UL, 0x3fc9f249UL, 0x33631553UL, 0x3e52aeb1UL, 0x00000000UL,
1945   0x3fc9a8d3UL, 0xde8795a6UL, 0xbe59a504UL, 0x00000000UL, 0x3fc95f79UL,
1946   0x076bf41eUL, 0x3e5122feUL, 0x80000000UL, 0x3fc9163cUL, 0x2914c8e7UL,
1947   0x3e3dd064UL, 0x00000000UL, 0x3fc8cd1dUL, 0x3a30eca3UL, 0xbe21b4aaUL,
1948   0x80000000UL, 0x3fc8841aUL, 0xb2a96650UL, 0xbe575444UL, 0x80000000UL,
1949   0x3fc83b34UL, 0x2376c0cbUL, 0xbe2a74c7UL, 0x80000000UL, 0x3fc7f26bUL,
1950   0xd8a0b653UL, 0xbe5181b6UL, 0x00000000UL, 0x3fc7a9bfUL, 0x32257882UL,
1951   0xbe4a78b4UL, 0x00000000UL, 0x3fc7612fUL, 0x1eee8bd9UL, 0xbe1bfe9dUL,
1952   0x80000000UL, 0x3fc718bbUL, 0x0c603cc4UL, 0x3e36fdc9UL, 0x80000000UL,
1953   0x3fc6d064UL, 0x3728b8cfUL, 0xbe1e542eUL, 0x80000000UL, 0x3fc68829UL,
1954   0xc79a4067UL, 0x3e5c380fUL, 0x00000000UL, 0x3fc6400bUL, 0xf69eac69UL,
1955   0x3e550a84UL, 0x80000000UL, 0x3fc5f808UL, 0xb7a780a4UL, 0x3e5d9224UL,
1956   0x80000000UL, 0x3fc5b022UL, 0xad9dfb1eUL, 0xbe55242fUL, 0x00000000UL,
1957   0x3fc56858UL, 0x659b18beUL, 0xbe4bfda3UL, 0x80000000UL, 0x3fc520a9UL,
1958   0x66ee3631UL, 0xbe57d769UL, 0x80000000UL, 0x3fc4d916UL, 0x1ec62819UL,
1959   0x3e2427f7UL, 0x80000000UL, 0x3fc4919fUL, 0xdec25369UL, 0xbe435431UL,
1960   0x00000000UL, 0x3fc44a44UL, 0xa8acfc4bUL, 0xbe3c62e8UL, 0x00000000UL,
1961   0x3fc40304UL, 0xcf1d3eabUL, 0xbdfba29fUL, 0x80000000UL, 0x3fc3bbdfUL,
1962   0x79aba3eaUL, 0xbdf1b7c8UL, 0x80000000UL, 0x3fc374d6UL, 0xb8d186daUL,
1963   0xbe5130cfUL, 0x80000000UL, 0x3fc32de8UL, 0x9d74f152UL, 0x3e2285b6UL,
1964   0x00000000UL, 0x3fc2e716UL, 0x50ae7ca9UL, 0xbe503920UL, 0x80000000UL,
1965   0x3fc2a05eUL, 0x6caed92eUL, 0xbe533924UL, 0x00000000UL, 0x3fc259c2UL,
1966   0x9cb5034eUL, 0xbe510e31UL, 0x80000000UL, 0x3fc21340UL, 0x12c4d378UL,
1967   0xbe540b43UL, 0x80000000UL, 0x3fc1ccd9UL, 0xcc418706UL, 0x3e59887aUL,
1968   0x00000000UL, 0x3fc1868eUL, 0x921f4106UL, 0xbe528e67UL, 0x80000000UL,
1969   0x3fc1405cUL, 0x3969441eUL, 0x3e5d8051UL, 0x00000000UL, 0x3fc0fa46UL,
1970   0xd941ef5bUL, 0x3e5f9079UL, 0x80000000UL, 0x3fc0b44aUL, 0x5a3e81b2UL,
1971   0xbe567691UL, 0x00000000UL, 0x3fc06e69UL, 0x9d66afe7UL, 0xbe4d43fbUL,
1972   0x00000000UL, 0x3fc028a2UL, 0x0a92a162UL, 0xbe52f394UL, 0x00000000UL,
1973   0x3fbfc5eaUL, 0x209897e5UL, 0x3e529e37UL, 0x00000000UL, 0x3fbf3ac5UL,
1974   0x8458bd7bUL, 0x3e582831UL, 0x00000000UL, 0x3fbeafd5UL, 0xb8d8b4b8UL,
1975   0xbe486b4aUL, 0x00000000UL, 0x3fbe2518UL, 0xe0a3b7b6UL, 0x3e5bafd2UL,
1976   0x00000000UL, 0x3fbd9a90UL, 0x2bf2710eUL, 0x3e383b2bUL, 0x00000000UL,
1977   0x3fbd103cUL, 0x73eb6ab7UL, 0xbe56d78dUL, 0x00000000UL, 0x3fbc861bUL,
1978   0x32ceaff5UL, 0xbe32dc5aUL, 0x00000000UL, 0x3fbbfc2eUL, 0xbee04cb7UL,
1979   0xbe4a71a4UL, 0x00000000UL, 0x3fbb7274UL, 0x35ae9577UL, 0x3e38142fUL,
1980   0x00000000UL, 0x3fbae8eeUL, 0xcbaddab4UL, 0xbe5490f0UL, 0x00000000UL,
1981   0x3fba5f9aUL, 0x95ce1114UL, 0x3e597c71UL, 0x00000000UL, 0x3fb9d67aUL,
1982   0x6d7c0f78UL, 0x3e3abc2dUL, 0x00000000UL, 0x3fb94d8dUL, 0x2841a782UL,
1983   0xbe566cbcUL, 0x00000000UL, 0x3fb8c4d2UL, 0x6ed429c6UL, 0xbe3cfff9UL,
1984   0x00000000UL, 0x3fb83c4aUL, 0xe4a49fbbUL, 0xbe552964UL, 0x00000000UL,
1985   0x3fb7b3f4UL, 0x2193d81eUL, 0xbe42fa72UL, 0x00000000UL, 0x3fb72bd0UL,
1986   0xdd70c122UL, 0x3e527a8cUL, 0x00000000UL, 0x3fb6a3dfUL, 0x03108a54UL,
1987   0xbe450393UL, 0x00000000UL, 0x3fb61c1fUL, 0x30ff7954UL, 0x3e565840UL,
1988   0x00000000UL, 0x3fb59492UL, 0xdedd460cUL, 0xbe5422b5UL, 0x00000000UL,
1989   0x3fb50d36UL, 0x950f9f45UL, 0xbe5313f6UL, 0x00000000UL, 0x3fb4860bUL,
1990   0x582cdcb1UL, 0x3e506d39UL, 0x00000000UL, 0x3fb3ff12UL, 0x7216d3a6UL,
1991   0x3e4aa719UL, 0x00000000UL, 0x3fb3784aUL, 0x57a423fdUL, 0x3e5a9b9fUL,
1992   0x00000000UL, 0x3fb2f1b4UL, 0x7a138b41UL, 0xbe50b418UL, 0x00000000UL,
1993   0x3fb26b4eUL, 0x2fbfd7eaUL, 0x3e23a53eUL, 0x00000000UL, 0x3fb1e519UL,
1994   0x18913ccbUL, 0x3e465fc1UL, 0x00000000UL, 0x3fb15f15UL, 0x7ea24e21UL,
1995   0x3e042843UL, 0x00000000UL, 0x3fb0d941UL, 0x7c6d9c77UL, 0x3e59f61eUL,
1996   0x00000000UL, 0x3fb0539eUL, 0x114efd44UL, 0x3e4ccab7UL, 0x00000000UL,
1997   0x3faf9c56UL, 0x1777f657UL, 0x3e552f65UL, 0x00000000UL, 0x3fae91d2UL,
1998   0xc317b86aUL, 0xbe5a61e0UL, 0x00000000UL, 0x3fad87acUL, 0xb7664efbUL,
1999   0xbe41f64eUL, 0x00000000UL, 0x3fac7de6UL, 0x5d3d03a9UL, 0x3e0807a0UL,
2000   0x00000000UL, 0x3fab7480UL, 0x743c38ebUL, 0xbe3726e1UL, 0x00000000UL,
2001   0x3faa6b78UL, 0x06a253f1UL, 0x3e5ad636UL, 0x00000000UL, 0x3fa962d0UL,
2002   0xa35f541bUL, 0x3e5a187aUL, 0x00000000UL, 0x3fa85a88UL, 0x4b86e446UL,
2003   0xbe508150UL, 0x00000000UL, 0x3fa7529cUL, 0x2589cacfUL, 0x3e52938aUL,
2004   0x00000000UL, 0x3fa64b10UL, 0xaf6b11f2UL, 0xbe3454cdUL, 0x00000000UL,
2005   0x3fa543e2UL, 0x97506fefUL, 0xbe5fdec5UL, 0x00000000UL, 0x3fa43d10UL,
2006   0xe75f7dd9UL, 0xbe388dd3UL, 0x00000000UL, 0x3fa3369cUL, 0xa4139632UL,
2007   0xbdea5177UL, 0x00000000UL, 0x3fa23086UL, 0x352d6f1eUL, 0xbe565ad6UL,
2008   0x00000000UL, 0x3fa12accUL, 0x77449eb7UL, 0xbe50d5c7UL, 0x00000000UL,
2009   0x3fa0256eUL, 0x7478da78UL, 0x3e404724UL, 0x00000000UL, 0x3f9e40dcUL,
2010   0xf59cef7fUL, 0xbe539d0aUL, 0x00000000UL, 0x3f9c3790UL, 0x1511d43cUL,
2011   0x3e53c2c8UL, 0x00000000UL, 0x3f9a2f00UL, 0x9b8bff3cUL, 0xbe43b3e1UL,
2012   0x00000000UL, 0x3f982724UL, 0xad1e22a5UL, 0x3e46f0bdUL, 0x00000000UL,
2013   0x3f962000UL, 0x130d9356UL, 0x3e475ba0UL, 0x00000000UL, 0x3f941994UL,
2014   0x8f86f883UL, 0xbe513d0bUL, 0x00000000UL, 0x3f9213dcUL, 0x914d0dc8UL,
2015   0xbe534335UL, 0x00000000UL, 0x3f900ed8UL, 0x2d73e5e7UL, 0xbe22ba75UL,
2016   0x00000000UL, 0x3f8c1510UL, 0xc5b7d70eUL, 0x3e599c5dUL, 0x00000000UL,
2017   0x3f880de0UL, 0x8a27857eUL, 0xbe3d28c8UL, 0x00000000UL, 0x3f840810UL,
2018   0xda767328UL, 0x3e531b3dUL, 0x00000000UL, 0x3f8003b0UL, 0x77bacaf3UL,
2019   0xbe5f04e3UL, 0x00000000UL, 0x3f780150UL, 0xdf4b0720UL, 0x3e5a8bffUL,
2020   0x00000000UL, 0x3f6ffc40UL, 0x34c48e71UL, 0xbe3fcd99UL, 0x00000000UL,
2021   0x3f5ff6c0UL, 0x1ad218afUL, 0xbe4c78a7UL, 0x00000000UL, 0x00000000UL,
2022   0x00000000UL, 0x80000000UL
2023 };
2024 
2025 ALIGNED_(8) juint _log2_pow[] =
2026 {
2027   0xfefa39efUL, 0x3fe62e42UL, 0xfefa39efUL, 0xbfe62e42UL
2028 };
2029 
2030 //registers,
2031 // input: xmm0, xmm1
2032 // scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
2033 //          rax, rdx, rcx, r8, r11
2034 
2035 // Code generated by Intel C compiler for LIBM library
2036 
2037 void MacroAssembler::fast_pow(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp1, Register tmp2, Register tmp3, Register tmp4) {
2038   Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
2039   Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
2040   Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, L_2TAG_PACKET_10_0_2, L_2TAG_PACKET_11_0_2;
2041   Label L_2TAG_PACKET_12_0_2, L_2TAG_PACKET_13_0_2, L_2TAG_PACKET_14_0_2, L_2TAG_PACKET_15_0_2;
2042   Label L_2TAG_PACKET_16_0_2, L_2TAG_PACKET_17_0_2, L_2TAG_PACKET_18_0_2, L_2TAG_PACKET_19_0_2;
2043   Label L_2TAG_PACKET_20_0_2, L_2TAG_PACKET_21_0_2, L_2TAG_PACKET_22_0_2, L_2TAG_PACKET_23_0_2;
2044   Label L_2TAG_PACKET_24_0_2, L_2TAG_PACKET_25_0_2, L_2TAG_PACKET_26_0_2, L_2TAG_PACKET_27_0_2;
2045   Label L_2TAG_PACKET_28_0_2, L_2TAG_PACKET_29_0_2, L_2TAG_PACKET_30_0_2, L_2TAG_PACKET_31_0_2;
2046   Label L_2TAG_PACKET_32_0_2, L_2TAG_PACKET_33_0_2, L_2TAG_PACKET_34_0_2, L_2TAG_PACKET_35_0_2;
2047   Label L_2TAG_PACKET_36_0_2, L_2TAG_PACKET_37_0_2, L_2TAG_PACKET_38_0_2, L_2TAG_PACKET_39_0_2;
2048   Label L_2TAG_PACKET_40_0_2, L_2TAG_PACKET_41_0_2, L_2TAG_PACKET_42_0_2, L_2TAG_PACKET_43_0_2;
2049   Label L_2TAG_PACKET_44_0_2, L_2TAG_PACKET_45_0_2, L_2TAG_PACKET_46_0_2, L_2TAG_PACKET_47_0_2;
2050   Label L_2TAG_PACKET_48_0_2, L_2TAG_PACKET_49_0_2, L_2TAG_PACKET_50_0_2, L_2TAG_PACKET_51_0_2;
2051   Label L_2TAG_PACKET_52_0_2, L_2TAG_PACKET_53_0_2, L_2TAG_PACKET_54_0_2, L_2TAG_PACKET_55_0_2;
2052   Label L_2TAG_PACKET_56_0_2;
2053   Label B1_2, B1_3, B1_5, start;
2054 
2055   assert_different_registers(tmp1, tmp2, eax, ecx, edx);
2056   jmp(start);
2057   address HIGHSIGMASK = (address)_HIGHSIGMASK;
2058   address LOG2_E = (address)_LOG2_E;
2059   address coeff = (address)_coeff_pow;
2060   address L_tbl = (address)_L_tbl_pow;
2061   address HIGHMASK_Y = (address)_HIGHMASK_Y;
2062   address T_exp = (address)_T_exp;
2063   address e_coeff = (address)_e_coeff;
2064   address coeff_h = (address)_coeff_h;
2065   address HIGHMASK_LOG_X = (address)_HIGHMASK_LOG_X;
2066   address HALFMASK = (address)_HALFMASK;
2067   address log2 = (address)_log2_pow;
2068 
2069 
2070   bind(start);
2071   subq(rsp, 40);
2072   movsd(Address(rsp, 8), xmm0);
2073   movsd(Address(rsp, 16), xmm1);
2074 
2075   bind(B1_2);
2076   pextrw(eax, xmm0, 3);
2077   xorpd(xmm2, xmm2);
2078   mov64(tmp2, 0x3ff0000000000000);
2079   movdq(xmm2, tmp2);
2080   movl(tmp1, 1069088768);
2081   movdq(xmm7, tmp1);
2082   xorpd(xmm1, xmm1);
2083   mov64(tmp3, 0x77f0000000000000);
2084   movdq(xmm1, tmp3);
2085   movdqu(xmm3, xmm0);
2086   movl(edx, 32752);
2087   andl(edx, eax);
2088   subl(edx, 16368);
2089   movl(ecx, edx);
2090   sarl(edx, 31);
2091   addl(ecx, edx);
2092   xorl(ecx, edx);
2093   por(xmm0, xmm2);
2094   movdqu(xmm6, ExternalAddress(HIGHSIGMASK));    //0x00000000UL, 0xfffff800UL, 0x00000000UL, 0xfffff800UL
2095   psrlq(xmm0, 27);
2096   movq(xmm2, ExternalAddress(LOG2_E));    //0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
2097   psrld(xmm0, 2);
2098   addl(ecx, 16);
2099   bsrl(ecx, ecx);
2100   rcpps(xmm0, xmm0);
2101   psllq(xmm3, 12);
2102   movl(tmp4, 8192);
2103   movdq(xmm4, tmp4);
2104   psrlq(xmm3, 12);
2105   subl(eax, 16);
2106   cmpl(eax, 32736);
2107   jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
2108   movl(tmp1, 0);
2109 
2110   bind(L_2TAG_PACKET_1_0_2);
2111   mulss(xmm0, xmm7);
2112   movl(edx, -1);
2113   subl(ecx, 4);
2114   shll(edx);
2115   shlq(edx, 32);
2116   movdq(xmm5, edx);
2117   por(xmm3, xmm1);
2118   subl(eax, 16351);
2119   cmpl(eax, 1);
2120   jcc(Assembler::belowEqual, L_2TAG_PACKET_2_0_2);
2121   paddd(xmm0, xmm4);
2122   pand(xmm5, xmm3);
2123   movdl(edx, xmm0);
2124   psllq(xmm0, 29);
2125 
2126   bind(L_2TAG_PACKET_3_0_2);
2127   subsd(xmm3, xmm5);
2128   pand(xmm0, xmm6);
2129   subl(eax, 1);
2130   sarl(eax, 4);
2131   cvtsi2sdl(xmm7, eax);
2132   mulpd(xmm5, xmm0);
2133 
2134   bind(L_2TAG_PACKET_4_0_2);
2135   mulsd(xmm3, xmm0);
2136   movdqu(xmm1, ExternalAddress(coeff));    //0x6dc96112UL, 0xbf836578UL, 0xee241472UL, 0xbf9b0301UL
2137   lea(tmp4, ExternalAddress(L_tbl));
2138   subsd(xmm5, xmm2);
2139   movdqu(xmm4, ExternalAddress(16 + coeff));    //0x9f95985aUL, 0xbfb528dbUL, 0xb3841d2aUL, 0xbfd619b6UL
2140   movl(ecx, eax);
2141   sarl(eax, 31);
2142   addl(ecx, eax);
2143   xorl(eax, ecx);
2144   addl(eax, 1);
2145   bsrl(eax, eax);
2146   unpcklpd(xmm5, xmm3);
2147   movdqu(xmm6, ExternalAddress(32 + coeff));    //0x518775e3UL, 0x3f9004f2UL, 0xac8349bbUL, 0x3fa76c9bUL
2148   addsd(xmm3, xmm5);
2149   andl(edx, 16760832);
2150   shrl(edx, 10);
2151   addpd(xmm5, Address(tmp4, edx, Address::times_1, -3648));
2152   movdqu(xmm0, ExternalAddress(48 + coeff));    //0x486ececcUL, 0x3fc4635eUL, 0x161bb241UL, 0xbf5dabe1UL
2153   pshufd(xmm2, xmm3, 68);
2154   mulsd(xmm3, xmm3);
2155   mulpd(xmm1, xmm2);
2156   mulpd(xmm4, xmm2);
2157   addsd(xmm5, xmm7);
2158   mulsd(xmm2, xmm3);
2159   addpd(xmm6, xmm1);
2160   mulsd(xmm3, xmm3);
2161   addpd(xmm0, xmm4);
2162   movq(xmm1, Address(rsp, 16));
2163   movw(ecx, Address(rsp, 22));
2164   pshufd(xmm7, xmm5, 238);
2165   movq(xmm4, ExternalAddress(HIGHMASK_Y));    //0x00000000UL, 0xfffffff8UL, 0x00000000UL, 0xffffffffUL
2166   mulpd(xmm6, xmm2);
2167   pshufd(xmm3, xmm3, 68);
2168   mulpd(xmm0, xmm2);
2169   shll(eax, 4);
2170   subl(eax, 15872);
2171   andl(ecx, 32752);
2172   addl(eax, ecx);
2173   mulpd(xmm3, xmm6);
2174   cmpl(eax, 624);
2175   jcc(Assembler::aboveEqual, L_2TAG_PACKET_5_0_2);
2176   xorpd(xmm6, xmm6);
2177   movl(edx, 17080);
2178   pinsrw(xmm6, edx, 3);
2179   movdqu(xmm2, xmm1);
2180   pand(xmm4, xmm1);
2181   subsd(xmm1, xmm4);
2182   mulsd(xmm4, xmm5);
2183   addsd(xmm0, xmm7);
2184   mulsd(xmm1, xmm5);
2185   movdqu(xmm7, xmm6);
2186   addsd(xmm6, xmm4);
2187   lea(tmp4, ExternalAddress(T_exp));
2188   addpd(xmm3, xmm0);
2189   movdl(edx, xmm6);
2190   subsd(xmm6, xmm7);
2191   pshufd(xmm0, xmm3, 238);
2192   subsd(xmm4, xmm6);
2193   addsd(xmm0, xmm3);
2194   movl(ecx, edx);
2195   andl(edx, 255);
2196   addl(edx, edx);
2197   movdqu(xmm5, Address(tmp4, edx, Address::times_8, 0));
2198   addsd(xmm4, xmm1);
2199   mulsd(xmm2, xmm0);
2200   movdqu(xmm7, ExternalAddress(e_coeff));    //0xe78a6731UL, 0x3f55d87fUL, 0xd704a0c0UL, 0x3fac6b08UL
2201   movdqu(xmm3, ExternalAddress(16 + e_coeff));    //0x6fba4e77UL, 0x3f83b2abUL, 0xff82c58fUL, 0x3fcebfbdUL
2202   shll(ecx, 12);
2203   xorl(ecx, tmp1);
2204   andl(rcx, -1048576);
2205   movdq(xmm6, rcx);
2206   addsd(xmm2, xmm4);
2207   mov64(tmp2, 0x3fe62e42fefa39ef);
2208   movdq(xmm1, tmp2);
2209   pshufd(xmm0, xmm2, 68);
2210   pshufd(xmm4, xmm2, 68);
2211   mulsd(xmm1, xmm2);
2212   pshufd(xmm6, xmm6, 17);
2213   mulpd(xmm0, xmm0);
2214   mulpd(xmm7, xmm4);
2215   paddd(xmm5, xmm6);
2216   mulsd(xmm1, xmm5);
2217   pshufd(xmm6, xmm5, 238);
2218   mulsd(xmm0, xmm0);
2219   addpd(xmm3, xmm7);
2220   addsd(xmm1, xmm6);
2221   mulpd(xmm0, xmm3);
2222   pshufd(xmm3, xmm0, 238);
2223   mulsd(xmm0, xmm5);
2224   mulsd(xmm3, xmm5);
2225   addsd(xmm0, xmm1);
2226   addsd(xmm0, xmm3);
2227   addsd(xmm0, xmm5);
2228   jmp(B1_5);
2229 
2230   bind(L_2TAG_PACKET_0_0_2);
2231   addl(eax, 16);
2232   movl(edx, 32752);
2233   andl(edx, eax);
2234   cmpl(edx, 32752);
2235   jcc(Assembler::equal, L_2TAG_PACKET_6_0_2);
2236   testl(eax, 32768);
2237   jcc(Assembler::notEqual, L_2TAG_PACKET_7_0_2);
2238 
2239   bind(L_2TAG_PACKET_8_0_2);
2240   movq(xmm0, Address(rsp, 8));
2241   movq(xmm3, Address(rsp, 8));
2242   movdl(edx, xmm3);
2243   psrlq(xmm3, 32);
2244   movdl(ecx, xmm3);
2245   orl(edx, ecx);
2246   cmpl(edx, 0);
2247   jcc(Assembler::equal, L_2TAG_PACKET_9_0_2);
2248   xorpd(xmm3, xmm3);
2249   movl(eax, 18416);
2250   pinsrw(xmm3, eax, 3);
2251   mulsd(xmm0, xmm3);
2252   xorpd(xmm2, xmm2);
2253   movl(eax, 16368);
2254   pinsrw(xmm2, eax, 3);
2255   movdqu(xmm3, xmm0);
2256   pextrw(eax, xmm0, 3);
2257   por(xmm0, xmm2);
2258   movl(ecx, 18416);
2259   psrlq(xmm0, 27);
2260   movq(xmm2, ExternalAddress(LOG2_E));    //0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
2261   psrld(xmm0, 2);
2262   rcpps(xmm0, xmm0);
2263   psllq(xmm3, 12);
2264   movdqu(xmm6, ExternalAddress(HIGHSIGMASK));    //0x00000000UL, 0xfffff800UL, 0x00000000UL, 0xfffff800UL
2265   psrlq(xmm3, 12);
2266   mulss(xmm0, xmm7);
2267   movl(edx, -1024);
2268   movdl(xmm5, edx);
2269   por(xmm3, xmm1);
2270   paddd(xmm0, xmm4);
2271   psllq(xmm5, 32);
2272   movdl(edx, xmm0);
2273   psllq(xmm0, 29);
2274   pand(xmm5, xmm3);
2275   movl(tmp1, 0);
2276   pand(xmm0, xmm6);
2277   subsd(xmm3, xmm5);
2278   andl(eax, 32752);
2279   subl(eax, 18416);
2280   sarl(eax, 4);
2281   cvtsi2sdl(xmm7, eax);
2282   mulpd(xmm5, xmm0);
2283   jmp(L_2TAG_PACKET_4_0_2);
2284 
2285   bind(L_2TAG_PACKET_10_0_2);
2286   movq(xmm0, Address(rsp, 8));
2287   movq(xmm3, Address(rsp, 8));
2288   movdl(edx, xmm3);
2289   psrlq(xmm3, 32);
2290   movdl(ecx, xmm3);
2291   orl(edx, ecx);
2292   cmpl(edx, 0);
2293   jcc(Assembler::equal, L_2TAG_PACKET_9_0_2);
2294   xorpd(xmm3, xmm3);
2295   movl(eax, 18416);
2296   pinsrw(xmm3, eax, 3);
2297   mulsd(xmm0, xmm3);
2298   xorpd(xmm2, xmm2);
2299   movl(eax, 16368);
2300   pinsrw(xmm2, eax, 3);
2301   movdqu(xmm3, xmm0);
2302   pextrw(eax, xmm0, 3);
2303   por(xmm0, xmm2);
2304   movl(ecx, 18416);
2305   psrlq(xmm0, 27);
2306   movq(xmm2, ExternalAddress(LOG2_E));    //0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
2307   psrld(xmm0, 2);
2308   rcpps(xmm0, xmm0);
2309   psllq(xmm3, 12);
2310   movdqu(xmm6, ExternalAddress(HIGHSIGMASK));    //0x00000000UL, 0xfffff800UL, 0x00000000UL, 0xfffff800UL
2311   psrlq(xmm3, 12);
2312   mulss(xmm0, xmm7);
2313   movl(edx, -1024);
2314   movdl(xmm5, edx);
2315   por(xmm3, xmm1);
2316   paddd(xmm0, xmm4);
2317   psllq(xmm5, 32);
2318   movdl(edx, xmm0);
2319   psllq(xmm0, 29);
2320   pand(xmm5, xmm3);
2321   movl(tmp1, INT_MIN);
2322   pand(xmm0, xmm6);
2323   subsd(xmm3, xmm5);
2324   andl(eax, 32752);
2325   subl(eax, 18416);
2326   sarl(eax, 4);
2327   cvtsi2sdl(xmm7, eax);
2328   mulpd(xmm5, xmm0);
2329   jmp(L_2TAG_PACKET_4_0_2);
2330 
2331   bind(L_2TAG_PACKET_5_0_2);
2332   cmpl(eax, 0);
2333   jcc(Assembler::less, L_2TAG_PACKET_11_0_2);
2334   cmpl(eax, 752);
2335   jcc(Assembler::aboveEqual, L_2TAG_PACKET_12_0_2);
2336   addsd(xmm0, xmm7);
2337   movq(xmm2, ExternalAddress(HALFMASK));    //0xf8000000UL, 0xffffffffUL, 0xf8000000UL, 0xffffffffUL
2338   addpd(xmm3, xmm0);
2339   xorpd(xmm6, xmm6);
2340   movl(eax, 17080);
2341   pinsrw(xmm6, eax, 3);
2342   pshufd(xmm0, xmm3, 238);
2343   addsd(xmm0, xmm3);
2344   movdqu(xmm3, xmm5);
2345   addsd(xmm5, xmm0);
2346   movdqu(xmm4, xmm2);
2347   subsd(xmm3, xmm5);
2348   movdqu(xmm7, xmm5);
2349   pand(xmm5, xmm2);
2350   movdqu(xmm2, xmm1);
2351   pand(xmm4, xmm1);
2352   subsd(xmm7, xmm5);
2353   addsd(xmm0, xmm3);
2354   subsd(xmm1, xmm4);
2355   mulsd(xmm4, xmm5);
2356   addsd(xmm0, xmm7);
2357   mulsd(xmm2, xmm0);
2358   movdqu(xmm7, xmm6);
2359   mulsd(xmm1, xmm5);
2360   addsd(xmm6, xmm4);
2361   movdl(eax, xmm6);
2362   subsd(xmm6, xmm7);
2363   lea(tmp4, ExternalAddress(T_exp));
2364   addsd(xmm2, xmm1);
2365   movdqu(xmm7, ExternalAddress(e_coeff));    //0xe78a6731UL, 0x3f55d87fUL, 0xd704a0c0UL, 0x3fac6b08UL
2366   movdqu(xmm3, ExternalAddress(16 + e_coeff));    //0x6fba4e77UL, 0x3f83b2abUL, 0xff82c58fUL, 0x3fcebfbdUL
2367   subsd(xmm4, xmm6);
2368   pextrw(edx, xmm6, 3);
2369   movl(ecx, eax);
2370   andl(eax, 255);
2371   addl(eax, eax);
2372   movdqu(xmm5, Address(tmp4, rax, Address::times_8, 0));
2373   addsd(xmm2, xmm4);
2374   sarl(ecx, 8);
2375   movl(eax, ecx);
2376   sarl(ecx, 1);
2377   subl(eax, ecx);
2378   shll(ecx, 20);
2379   xorl(ecx, tmp1);
2380   movdl(xmm6, ecx);
2381   movq(xmm1, ExternalAddress(32 + e_coeff));    //0xfefa39efUL, 0x3fe62e42UL, 0x00000000UL, 0x00000000UL
2382   andl(edx, 32767);
2383   cmpl(edx, 16529);
2384   jcc(Assembler::above, L_2TAG_PACKET_12_0_2);
2385   pshufd(xmm0, xmm2, 68);
2386   pshufd(xmm4, xmm2, 68);
2387   mulpd(xmm0, xmm0);
2388   mulpd(xmm7, xmm4);
2389   pshufd(xmm6, xmm6, 17);
2390   mulsd(xmm1, xmm2);
2391   mulsd(xmm0, xmm0);
2392   paddd(xmm5, xmm6);
2393   addpd(xmm3, xmm7);
2394   mulsd(xmm1, xmm5);
2395   pshufd(xmm6, xmm5, 238);
2396   mulpd(xmm0, xmm3);
2397   addsd(xmm1, xmm6);
2398   pshufd(xmm3, xmm0, 238);
2399   mulsd(xmm0, xmm5);
2400   mulsd(xmm3, xmm5);
2401   shll(eax, 4);
2402   xorpd(xmm4, xmm4);
2403   addl(eax, 16368);
2404   pinsrw(xmm4, eax, 3);
2405   addsd(xmm0, xmm1);
2406   addsd(xmm0, xmm3);
2407   movdqu(xmm1, xmm0);
2408   addsd(xmm0, xmm5);
2409   mulsd(xmm0, xmm4);
2410   pextrw(eax, xmm0, 3);
2411   andl(eax, 32752);
2412   jcc(Assembler::equal, L_2TAG_PACKET_13_0_2);
2413   cmpl(eax, 32752);
2414   jcc(Assembler::equal, L_2TAG_PACKET_14_0_2);
2415   jmp(B1_5);
2416 
2417   bind(L_2TAG_PACKET_6_0_2);
2418   movq(xmm1, Address(rsp, 16));
2419   movq(xmm0, Address(rsp, 8));
2420   movdqu(xmm2, xmm0);
2421   movdl(eax, xmm2);
2422   psrlq(xmm2, 20);
2423   movdl(edx, xmm2);
2424   orl(eax, edx);
2425   jcc(Assembler::equal, L_2TAG_PACKET_15_0_2);
2426   movdl(eax, xmm1);
2427   psrlq(xmm1, 32);
2428   movdl(edx, xmm1);
2429   movl(ecx, edx);
2430   addl(edx, edx);
2431   orl(eax, edx);
2432   jcc(Assembler::equal, L_2TAG_PACKET_16_0_2);
2433   addsd(xmm0, xmm0);
2434   jmp(B1_5);
2435 
2436   bind(L_2TAG_PACKET_16_0_2);
2437   xorpd(xmm0, xmm0);
2438   movl(eax, 16368);
2439   pinsrw(xmm0, eax, 3);
2440   movl(Address(rsp, 0), 29);
2441   jmp(L_2TAG_PACKET_17_0_2);
2442 
2443   bind(L_2TAG_PACKET_18_0_2);
2444   movq(xmm0, Address(rsp, 16));
2445   addpd(xmm0, xmm0);
2446   jmp(B1_5);
2447 
2448   bind(L_2TAG_PACKET_15_0_2);
2449   movdl(eax, xmm1);
2450   movdqu(xmm2, xmm1);
2451   psrlq(xmm1, 32);
2452   movdl(edx, xmm1);
2453   movl(ecx, edx);
2454   addl(edx, edx);
2455   orl(eax, edx);
2456   jcc(Assembler::equal, L_2TAG_PACKET_19_0_2);
2457   pextrw(eax, xmm2, 3);
2458   andl(eax, 32752);
2459   cmpl(eax, 32752);
2460   jcc(Assembler::notEqual, L_2TAG_PACKET_20_0_2);
2461   movdl(eax, xmm2);
2462   psrlq(xmm2, 20);
2463   movdl(edx, xmm2);
2464   orl(eax, edx);
2465   jcc(Assembler::notEqual, L_2TAG_PACKET_18_0_2);
2466 
2467   bind(L_2TAG_PACKET_20_0_2);
2468   pextrw(eax, xmm0, 3);
2469   testl(eax, 32768);
2470   jcc(Assembler::notEqual, L_2TAG_PACKET_21_0_2);
2471   testl(ecx, INT_MIN);
2472   jcc(Assembler::notEqual, L_2TAG_PACKET_22_0_2);
2473   jmp(B1_5);
2474 
2475   bind(L_2TAG_PACKET_23_0_2);
2476   movq(xmm1, Address(rsp, 16));
2477   movdl(eax, xmm1);
2478   testl(eax, 1);
2479   jcc(Assembler::notEqual, L_2TAG_PACKET_24_0_2);
2480   testl(eax, 2);
2481   jcc(Assembler::notEqual, L_2TAG_PACKET_25_0_2);
2482   jmp(L_2TAG_PACKET_24_0_2);
2483 
2484   bind(L_2TAG_PACKET_21_0_2);
2485   shrl(ecx, 20);
2486   andl(ecx, 2047);
2487   cmpl(ecx, 1075);
2488   jcc(Assembler::above, L_2TAG_PACKET_24_0_2);
2489   jcc(Assembler::equal, L_2TAG_PACKET_26_0_2);
2490   cmpl(ecx, 1074);
2491   jcc(Assembler::above, L_2TAG_PACKET_23_0_2);
2492   cmpl(ecx, 1023);
2493   jcc(Assembler::below, L_2TAG_PACKET_24_0_2);
2494   movq(xmm1, Address(rsp, 16));
2495   movl(eax, 17208);
2496   xorpd(xmm3, xmm3);
2497   pinsrw(xmm3, eax, 3);
2498   movdqu(xmm4, xmm3);
2499   addsd(xmm3, xmm1);
2500   subsd(xmm4, xmm3);
2501   addsd(xmm1, xmm4);
2502   pextrw(eax, xmm1, 3);
2503   andl(eax, 32752);
2504   jcc(Assembler::notEqual, L_2TAG_PACKET_24_0_2);
2505   movdl(eax, xmm3);
2506   andl(eax, 1);
2507   jcc(Assembler::equal, L_2TAG_PACKET_24_0_2);
2508 
2509   bind(L_2TAG_PACKET_25_0_2);
2510   movq(xmm1, Address(rsp, 16));
2511   pextrw(eax, xmm1, 3);
2512   andl(eax, 32768);
2513   jcc(Assembler::notEqual, L_2TAG_PACKET_27_0_2);
2514   jmp(B1_5);
2515 
2516   bind(L_2TAG_PACKET_27_0_2);
2517   xorpd(xmm0, xmm0);
2518   movl(eax, 32768);
2519   pinsrw(xmm0, eax, 3);
2520   jmp(B1_5);
2521 
2522   bind(L_2TAG_PACKET_24_0_2);
2523   movq(xmm1, Address(rsp, 16));
2524   pextrw(eax, xmm1, 3);
2525   andl(eax, 32768);
2526   jcc(Assembler::notEqual, L_2TAG_PACKET_22_0_2);
2527   xorpd(xmm0, xmm0);
2528   movl(eax, 32752);
2529   pinsrw(xmm0, eax, 3);
2530   jmp(B1_5);
2531 
2532   bind(L_2TAG_PACKET_26_0_2);
2533   movq(xmm1, Address(rsp, 16));
2534   movdl(eax, xmm1);
2535   andl(eax, 1);
2536   jcc(Assembler::equal, L_2TAG_PACKET_24_0_2);
2537   jmp(L_2TAG_PACKET_25_0_2);
2538 
2539   bind(L_2TAG_PACKET_28_0_2);
2540   movdl(eax, xmm1);
2541   psrlq(xmm1, 20);
2542   movdl(edx, xmm1);
2543   orl(eax, edx);
2544   jcc(Assembler::equal, L_2TAG_PACKET_29_0_2);
2545   movq(xmm0, Address(rsp, 16));
2546   addsd(xmm0, xmm0);
2547   jmp(B1_5);
2548 
2549   bind(L_2TAG_PACKET_29_0_2);
2550   movq(xmm0, Address(rsp, 8));
2551   pextrw(eax, xmm0, 3);
2552   cmpl(eax, 49136);
2553   jcc(Assembler::notEqual, L_2TAG_PACKET_30_0_2);
2554   movdl(ecx, xmm0);
2555   psrlq(xmm0, 20);
2556   movdl(edx, xmm0);
2557   orl(ecx, edx);
2558   jcc(Assembler::notEqual, L_2TAG_PACKET_30_0_2);
2559   xorpd(xmm0, xmm0);
2560   movl(eax, 32760);
2561   pinsrw(xmm0, eax, 3);
2562   jmp(B1_5);
2563 
2564   bind(L_2TAG_PACKET_30_0_2);
2565   movq(xmm1, Address(rsp, 16));
2566   andl(eax, 32752);
2567   subl(eax, 16368);
2568   pextrw(edx, xmm1, 3);
2569   xorpd(xmm0, xmm0);
2570   xorl(eax, edx);
2571   andl(eax, 32768);
2572   jcc(Assembler::equal, L_2TAG_PACKET_31_0_2);
2573   jmp(B1_5);
2574 
2575   bind(L_2TAG_PACKET_31_0_2);
2576   movl(ecx, 32752);
2577   pinsrw(xmm0, ecx, 3);
2578   jmp(B1_5);
2579 
2580   bind(L_2TAG_PACKET_32_0_2);
2581   movdl(eax, xmm1);
2582   cmpl(edx, 17184);
2583   jcc(Assembler::above, L_2TAG_PACKET_33_0_2);
2584   testl(eax, 1);
2585   jcc(Assembler::notEqual, L_2TAG_PACKET_34_0_2);
2586   testl(eax, 2);
2587   jcc(Assembler::equal, L_2TAG_PACKET_35_0_2);
2588   jmp(L_2TAG_PACKET_36_0_2);
2589 
2590   bind(L_2TAG_PACKET_33_0_2);
2591   testl(eax, 1);
2592   jcc(Assembler::equal, L_2TAG_PACKET_35_0_2);
2593   jmp(L_2TAG_PACKET_36_0_2);
2594 
2595   bind(L_2TAG_PACKET_7_0_2);
2596   movq(xmm2, Address(rsp, 8));
2597   movdl(eax, xmm2);
2598   psrlq(xmm2, 31);
2599   movdl(ecx, xmm2);
2600   orl(eax, ecx);
2601   jcc(Assembler::equal, L_2TAG_PACKET_9_0_2);
2602   movq(xmm1, Address(rsp, 16));
2603   pextrw(edx, xmm1, 3);
2604   movdl(eax, xmm1);
2605   movdqu(xmm2, xmm1);
2606   psrlq(xmm2, 32);
2607   movdl(ecx, xmm2);
2608   addl(ecx, ecx);
2609   orl(ecx, eax);
2610   jcc(Assembler::equal, L_2TAG_PACKET_37_0_2);
2611   andl(edx, 32752);
2612   cmpl(edx, 32752);
2613   jcc(Assembler::equal, L_2TAG_PACKET_28_0_2);
2614   cmpl(edx, 17200);
2615   jcc(Assembler::above, L_2TAG_PACKET_35_0_2);
2616   cmpl(edx, 17184);
2617   jcc(Assembler::aboveEqual, L_2TAG_PACKET_32_0_2);
2618   cmpl(edx, 16368);
2619   jcc(Assembler::below, L_2TAG_PACKET_34_0_2);
2620   movl(eax, 17208);
2621   xorpd(xmm2, xmm2);
2622   pinsrw(xmm2, eax, 3);
2623   movdqu(xmm4, xmm2);
2624   addsd(xmm2, xmm1);
2625   subsd(xmm4, xmm2);
2626   addsd(xmm1, xmm4);
2627   pextrw(eax, xmm1, 3);
2628   andl(eax, 32767);
2629   jcc(Assembler::notEqual, L_2TAG_PACKET_34_0_2);
2630   movdl(eax, xmm2);
2631   andl(eax, 1);
2632   jcc(Assembler::equal, L_2TAG_PACKET_35_0_2);
2633 
2634   bind(L_2TAG_PACKET_36_0_2);
2635   xorpd(xmm1, xmm1);
2636   movl(edx, 30704);
2637   pinsrw(xmm1, edx, 3);
2638   movq(xmm2, ExternalAddress(LOG2_E));    //0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
2639   movq(xmm4, Address(rsp, 8));
2640   pextrw(eax, xmm4, 3);
2641   movl(edx, 8192);
2642   movdl(xmm4, edx);
2643   andl(eax, 32767);
2644   subl(eax, 16);
2645   jcc(Assembler::less, L_2TAG_PACKET_10_0_2);
2646   movl(edx, eax);
2647   andl(edx, 32752);
2648   subl(edx, 16368);
2649   movl(ecx, edx);
2650   sarl(edx, 31);
2651   addl(ecx, edx);
2652   xorl(ecx, edx);
2653   addl(ecx, 16);
2654   bsrl(ecx, ecx);
2655   movl(tmp1, INT_MIN);
2656   jmp(L_2TAG_PACKET_1_0_2);
2657 
2658   bind(L_2TAG_PACKET_34_0_2);
2659   xorpd(xmm1, xmm1);
2660   movl(eax, 32752);
2661   pinsrw(xmm1, eax, 3);
2662   xorpd(xmm0, xmm0);
2663   mulsd(xmm0, xmm1);
2664   movl(Address(rsp, 0), 28);
2665   jmp(L_2TAG_PACKET_17_0_2);
2666 
2667   bind(L_2TAG_PACKET_35_0_2);
2668   xorpd(xmm1, xmm1);
2669   movl(edx, 30704);
2670   pinsrw(xmm1, edx, 3);
2671   movq(xmm2, ExternalAddress(LOG2_E));    //0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
2672   movq(xmm4, Address(rsp, 8));
2673   pextrw(eax, xmm4, 3);
2674   movl(edx, 8192);
2675   movdl(xmm4, edx);
2676   andl(eax, 32767);
2677   subl(eax, 16);
2678   jcc(Assembler::less, L_2TAG_PACKET_8_0_2);
2679   movl(edx, eax);
2680   andl(edx, 32752);
2681   subl(edx, 16368);
2682   movl(ecx, edx);
2683   sarl(edx, 31);
2684   addl(ecx, edx);
2685   xorl(ecx, edx);
2686   addl(ecx, 16);
2687   bsrl(ecx, ecx);
2688   movl(tmp1, 0);
2689   jmp(L_2TAG_PACKET_1_0_2);
2690 
2691   bind(L_2TAG_PACKET_19_0_2);
2692   xorpd(xmm0, xmm0);
2693   movl(eax, 16368);
2694   pinsrw(xmm0, eax, 3);
2695   jmp(B1_5);
2696 
2697   bind(L_2TAG_PACKET_22_0_2);
2698   xorpd(xmm0, xmm0);
2699   jmp(B1_5);
2700 
2701   bind(L_2TAG_PACKET_11_0_2);
2702   addl(eax, 384);
2703   cmpl(eax, 0);
2704   jcc(Assembler::less, L_2TAG_PACKET_38_0_2);
2705   mulsd(xmm5, xmm1);
2706   addsd(xmm0, xmm7);
2707   shrl(tmp1, 31);
2708   addpd(xmm3, xmm0);
2709   pshufd(xmm0, xmm3, 238);
2710   addsd(xmm3, xmm0);
2711   lea(tmp4, ExternalAddress(log2));    //0xfefa39efUL, 0x3fe62e42UL, 0xfefa39efUL, 0xbfe62e42UL
2712   movq(xmm4, Address(tmp4, tmp1, Address::times_8, 0));
2713   mulsd(xmm1, xmm3);
2714   xorpd(xmm0, xmm0);
2715   movl(eax, 16368);
2716   shll(tmp1, 15);
2717   orl(eax, tmp1);
2718   pinsrw(xmm0, eax, 3);
2719   addsd(xmm5, xmm1);
2720   mulsd(xmm5, xmm4);
2721   addsd(xmm0, xmm5);
2722   jmp(B1_5);
2723 
2724   bind(L_2TAG_PACKET_38_0_2);
2725 
2726   bind(L_2TAG_PACKET_37_0_2);
2727   xorpd(xmm0, xmm0);
2728   movl(eax, 16368);
2729   pinsrw(xmm0, eax, 3);
2730   jmp(B1_5);
2731 
2732   bind(L_2TAG_PACKET_39_0_2);
2733   xorpd(xmm0, xmm0);
2734   movl(eax, 16368);
2735   pinsrw(xmm0, eax, 3);
2736   movl(Address(rsp, 0), 26);
2737   jmp(L_2TAG_PACKET_17_0_2);
2738 
2739   bind(L_2TAG_PACKET_9_0_2);
2740   movq(xmm1, Address(rsp, 16));
2741   movdqu(xmm2, xmm1);
2742   pextrw(eax, xmm1, 3);
2743   andl(eax, 32752);
2744   cmpl(eax, 32752);
2745   jcc(Assembler::notEqual, L_2TAG_PACKET_40_0_2);
2746   movdl(eax, xmm2);
2747   psrlq(xmm2, 20);
2748   movdl(edx, xmm2);
2749   orl(eax, edx);
2750   jcc(Assembler::notEqual, L_2TAG_PACKET_18_0_2);
2751 
2752   bind(L_2TAG_PACKET_40_0_2);
2753   movdl(eax, xmm1);
2754   psrlq(xmm1, 32);
2755   movdl(edx, xmm1);
2756   movl(ecx, edx);
2757   addl(edx, edx);
2758   orl(eax, edx);
2759   jcc(Assembler::equal, L_2TAG_PACKET_39_0_2);
2760   shrl(edx, 21);
2761   cmpl(edx, 1075);
2762   jcc(Assembler::above, L_2TAG_PACKET_41_0_2);
2763   jcc(Assembler::equal, L_2TAG_PACKET_42_0_2);
2764   cmpl(edx, 1023);
2765   jcc(Assembler::below, L_2TAG_PACKET_41_0_2);
2766   movq(xmm1, Address(rsp, 16));
2767   movl(eax, 17208);
2768   xorpd(xmm3, xmm3);
2769   pinsrw(xmm3, eax, 3);
2770   movdqu(xmm4, xmm3);
2771   addsd(xmm3, xmm1);
2772   subsd(xmm4, xmm3);
2773   addsd(xmm1, xmm4);
2774   pextrw(eax, xmm1, 3);
2775   andl(eax, 32752);
2776   jcc(Assembler::notEqual, L_2TAG_PACKET_41_0_2);
2777   movdl(eax, xmm3);
2778   andl(eax, 1);
2779   jcc(Assembler::equal, L_2TAG_PACKET_41_0_2);
2780 
2781   bind(L_2TAG_PACKET_43_0_2);
2782   movq(xmm0, Address(rsp, 8));
2783   testl(ecx, INT_MIN);
2784   jcc(Assembler::notEqual, L_2TAG_PACKET_44_0_2);
2785   jmp(B1_5);
2786 
2787   bind(L_2TAG_PACKET_42_0_2);
2788   movq(xmm1, Address(rsp, 16));
2789   movdl(eax, xmm1);
2790   testl(eax, 1);
2791   jcc(Assembler::notEqual, L_2TAG_PACKET_43_0_2);
2792 
2793   bind(L_2TAG_PACKET_41_0_2);
2794   testl(ecx, INT_MIN);
2795   jcc(Assembler::equal, L_2TAG_PACKET_22_0_2);
2796   xorpd(xmm0, xmm0);
2797 
2798   bind(L_2TAG_PACKET_44_0_2);
2799   movl(eax, 16368);
2800   xorpd(xmm1, xmm1);
2801   pinsrw(xmm1, eax, 3);
2802   divsd(xmm1, xmm0);
2803   movdqu(xmm0, xmm1);
2804   movl(Address(rsp, 0), 27);
2805   jmp(L_2TAG_PACKET_17_0_2);
2806 
2807   bind(L_2TAG_PACKET_12_0_2);
2808   movq(xmm2, Address(rsp, 8));
2809   movq(xmm6, Address(rsp, 16));
2810   pextrw(eax, xmm2, 3);
2811   pextrw(edx, xmm6, 3);
2812   movl(ecx, 32752);
2813   andl(ecx, edx);
2814   cmpl(ecx, 32752);
2815   jcc(Assembler::equal, L_2TAG_PACKET_45_0_2);
2816   andl(eax, 32752);
2817   subl(eax, 16368);
2818   xorl(edx, eax);
2819   testl(edx, 32768);
2820   jcc(Assembler::notEqual, L_2TAG_PACKET_46_0_2);
2821 
2822   bind(L_2TAG_PACKET_47_0_2);
2823   movl(eax, 32736);
2824   pinsrw(xmm0, eax, 3);
2825   shrl(tmp1, 16);
2826   orl(eax, tmp1);
2827   pinsrw(xmm1, eax, 3);
2828   mulsd(xmm0, xmm1);
2829 
2830   bind(L_2TAG_PACKET_14_0_2);
2831   movl(Address(rsp, 0), 24);
2832   jmp(L_2TAG_PACKET_17_0_2);
2833 
2834   bind(L_2TAG_PACKET_46_0_2);
2835   movl(eax, 16);
2836   pinsrw(xmm0, eax, 3);
2837   mulsd(xmm0, xmm0);
2838   testl(tmp1, INT_MIN);
2839   jcc(Assembler::equal, L_2TAG_PACKET_48_0_2);
2840   mov64(tmp2, 0x8000000000000000);
2841   movdq(xmm2, tmp2);
2842   xorpd(xmm0, xmm2);
2843 
2844   bind(L_2TAG_PACKET_48_0_2);
2845   movl(Address(rsp, 0), 25);
2846   jmp(L_2TAG_PACKET_17_0_2);
2847 
2848   bind(L_2TAG_PACKET_13_0_2);
2849   pextrw(ecx, xmm5, 3);
2850   pextrw(edx, xmm4, 3);
2851   movl(eax, -1);
2852   andl(ecx, 32752);
2853   subl(ecx, 16368);
2854   andl(edx, 32752);
2855   addl(edx, ecx);
2856   movl(ecx, -31);
2857   sarl(edx, 4);
2858   subl(ecx, edx);
2859   jcc(Assembler::lessEqual, L_2TAG_PACKET_49_0_2);
2860   cmpl(ecx, 20);
2861   jcc(Assembler::above, L_2TAG_PACKET_50_0_2);
2862   shll(eax);
2863 
2864   bind(L_2TAG_PACKET_49_0_2);
2865   movdl(xmm0, eax);
2866   psllq(xmm0, 32);
2867   pand(xmm0, xmm5);
2868   subsd(xmm5, xmm0);
2869   addsd(xmm5, xmm1);
2870   mulsd(xmm0, xmm4);
2871   mulsd(xmm5, xmm4);
2872   addsd(xmm0, xmm5);
2873 
2874   bind(L_2TAG_PACKET_50_0_2);
2875   jmp(L_2TAG_PACKET_48_0_2);
2876 
2877   bind(L_2TAG_PACKET_2_0_2);
2878   movw(ecx, Address(rsp, 22));
2879   movl(edx, INT_MIN);
2880   movdl(xmm1, rdx);
2881   xorpd(xmm7, xmm7);
2882   paddd(xmm0, xmm4);
2883   movdl(edx, xmm0);
2884   psllq(xmm0, 29);
2885   paddq(xmm1, xmm3);
2886   pand(xmm5, xmm1);
2887   andl(ecx, 32752);
2888   cmpl(ecx, 16560);
2889   jcc(Assembler::less, L_2TAG_PACKET_3_0_2);
2890   pand(xmm0, xmm6);
2891   subsd(xmm3, xmm5);
2892   addl(eax, 16351);
2893   shrl(eax, 4);
2894   subl(eax, 1022);
2895   cvtsi2sdl(xmm7, eax);
2896   mulpd(xmm5, xmm0);
2897   lea(r11, ExternalAddress(L_tbl));
2898   movq(xmm4, ExternalAddress(coeff_h));    //0x00000000UL, 0xbfd61a00UL, 0x00000000UL, 0xbf5dabe1UL
2899   mulsd(xmm3, xmm0);
2900   movq(xmm6, ExternalAddress(coeff_h));    //0x00000000UL, 0xbfd61a00UL, 0x00000000UL, 0xbf5dabe1UL
2901   subsd(xmm5, xmm2);
2902   movq(xmm1, ExternalAddress(8 + coeff_h));    //0x00000000UL, 0xbf5dabe1UL
2903   pshufd(xmm2, xmm3, 68);
2904   unpcklpd(xmm5, xmm3);
2905   addsd(xmm3, xmm5);
2906   movq(xmm0, ExternalAddress(8 + coeff_h));    //0x00000000UL, 0xbf5dabe1UL
2907   andl(edx, 16760832);
2908   shrl(edx, 10);
2909   addpd(xmm7, Address(tmp4, edx, Address::times_1, -3648));
2910   mulsd(xmm4, xmm5);
2911   mulsd(xmm0, xmm5);
2912   mulsd(xmm6, xmm2);
2913   mulsd(xmm1, xmm2);
2914   movdqu(xmm2, xmm5);
2915   mulsd(xmm4, xmm5);
2916   addsd(xmm5, xmm0);
2917   movdqu(xmm0, xmm7);
2918   addsd(xmm2, xmm3);
2919   addsd(xmm7, xmm5);
2920   mulsd(xmm6, xmm2);
2921   subsd(xmm0, xmm7);
2922   movdqu(xmm2, xmm7);
2923   addsd(xmm7, xmm4);
2924   addsd(xmm0, xmm5);
2925   subsd(xmm2, xmm7);
2926   addsd(xmm4, xmm2);
2927   pshufd(xmm2, xmm5, 238);
2928   movdqu(xmm5, xmm7);
2929   addsd(xmm7, xmm2);
2930   addsd(xmm4, xmm0);
2931   movdqu(xmm0, ExternalAddress(coeff));    //0x6dc96112UL, 0xbf836578UL, 0xee241472UL, 0xbf9b0301UL
2932   subsd(xmm5, xmm7);
2933   addsd(xmm6, xmm4);
2934   movdqu(xmm4, xmm7);
2935   addsd(xmm5, xmm2);
2936   addsd(xmm7, xmm1);
2937   movdqu(xmm2, ExternalAddress(64 + coeff));    //0x486ececcUL, 0x3fc4635eUL, 0x161bb241UL, 0xbf5dabe1UL
2938   subsd(xmm4, xmm7);
2939   addsd(xmm6, xmm5);
2940   addsd(xmm4, xmm1);
2941   pshufd(xmm5, xmm7, 238);
2942   movapd(xmm1, xmm7);
2943   addsd(xmm7, xmm5);
2944   subsd(xmm1, xmm7);
2945   addsd(xmm1, xmm5);
2946   movdqu(xmm5, ExternalAddress(80 + coeff));    //0x9f95985aUL, 0xbfb528dbUL, 0xf8b5787dUL, 0x3ef2531eUL
2947   pshufd(xmm3, xmm3, 68);
2948   addsd(xmm6, xmm4);
2949   addsd(xmm6, xmm1);
2950   movdqu(xmm1, ExternalAddress(32 + coeff));    //0x9f95985aUL, 0xbfb528dbUL, 0xb3841d2aUL, 0xbfd619b6UL
2951   mulpd(xmm0, xmm3);
2952   mulpd(xmm2, xmm3);
2953   pshufd(xmm4, xmm3, 68);
2954   mulpd(xmm3, xmm3);
2955   addpd(xmm0, xmm1);
2956   addpd(xmm5, xmm2);
2957   mulsd(xmm4, xmm3);
2958   movq(xmm2, ExternalAddress(HIGHMASK_LOG_X));    //0xf8000000UL, 0xffffffffUL, 0x00000000UL, 0xfffff800UL
2959   mulpd(xmm3, xmm3);
2960   movq(xmm1, Address(rsp, 16));
2961   movw(ecx, Address(rsp, 22));
2962   mulpd(xmm0, xmm4);
2963   pextrw(eax, xmm7, 3);
2964   mulpd(xmm5, xmm4);
2965   mulpd(xmm0, xmm3);
2966   movq(xmm4, ExternalAddress(8 + HIGHMASK_Y));    //0x00000000UL, 0xffffffffUL
2967   pand(xmm2, xmm7);
2968   addsd(xmm5, xmm6);
2969   subsd(xmm7, xmm2);
2970   addpd(xmm5, xmm0);
2971   andl(eax, 32752);
2972   subl(eax, 16368);
2973   andl(ecx, 32752);
2974   cmpl(ecx, 32752);
2975   jcc(Assembler::equal, L_2TAG_PACKET_45_0_2);
2976   addl(ecx, eax);
2977   cmpl(ecx, 16576);
2978   jcc(Assembler::aboveEqual, L_2TAG_PACKET_51_0_2);
2979   pshufd(xmm0, xmm5, 238);
2980   pand(xmm4, xmm1);
2981   movdqu(xmm3, xmm1);
2982   addsd(xmm5, xmm0);
2983   subsd(xmm1, xmm4);
2984   xorpd(xmm6, xmm6);
2985   movl(edx, 17080);
2986   pinsrw(xmm6, edx, 3);
2987   addsd(xmm7, xmm5);
2988   mulsd(xmm4, xmm2);
2989   mulsd(xmm1, xmm2);
2990   movdqu(xmm5, xmm6);
2991   mulsd(xmm3, xmm7);
2992   addsd(xmm6, xmm4);
2993   addsd(xmm1, xmm3);
2994   movdqu(xmm7, ExternalAddress(e_coeff));    //0xe78a6731UL, 0x3f55d87fUL, 0xd704a0c0UL, 0x3fac6b08UL
2995   movdl(edx, xmm6);
2996   subsd(xmm6, xmm5);
2997   lea(tmp4, ExternalAddress(T_exp));
2998   movdqu(xmm3, ExternalAddress(16 + e_coeff));    //0x6fba4e77UL, 0x3f83b2abUL, 0xff82c58fUL, 0x3fcebfbdUL
2999   movq(xmm2, ExternalAddress(32 + e_coeff));    //0xfefa39efUL, 0x3fe62e42UL, 0x00000000UL, 0x00000000UL
3000   subsd(xmm4, xmm6);
3001   movl(ecx, edx);
3002   andl(edx, 255);
3003   addl(edx, edx);
3004   movdqu(xmm5, Address(tmp4, edx, Address::times_8, 0));
3005   addsd(xmm4, xmm1);
3006   pextrw(edx, xmm6, 3);
3007   shrl(ecx, 8);
3008   movl(eax, ecx);
3009   shrl(ecx, 1);
3010   subl(eax, ecx);
3011   shll(ecx, 20);
3012   movdl(xmm6, ecx);
3013   pshufd(xmm0, xmm4, 68);
3014   pshufd(xmm1, xmm4, 68);
3015   mulpd(xmm0, xmm0);
3016   mulpd(xmm7, xmm1);
3017   pshufd(xmm6, xmm6, 17);
3018   mulsd(xmm2, xmm4);
3019   andl(edx, 32767);
3020   cmpl(edx, 16529);
3021   jcc(Assembler::above, L_2TAG_PACKET_12_0_2);
3022   mulsd(xmm0, xmm0);
3023   paddd(xmm5, xmm6);
3024   addpd(xmm3, xmm7);
3025   mulsd(xmm2, xmm5);
3026   pshufd(xmm6, xmm5, 238);
3027   mulpd(xmm0, xmm3);
3028   addsd(xmm2, xmm6);
3029   pshufd(xmm3, xmm0, 238);
3030   addl(eax, 1023);
3031   shll(eax, 20);
3032   orl(eax, tmp1);
3033   movdl(xmm4, eax);
3034   mulsd(xmm0, xmm5);
3035   mulsd(xmm3, xmm5);
3036   addsd(xmm0, xmm2);
3037   psllq(xmm4, 32);
3038   addsd(xmm0, xmm3);
3039   movdqu(xmm1, xmm0);
3040   addsd(xmm0, xmm5);
3041   mulsd(xmm0, xmm4);
3042   pextrw(eax, xmm0, 3);
3043   andl(eax, 32752);
3044   jcc(Assembler::equal, L_2TAG_PACKET_13_0_2);
3045   cmpl(eax, 32752);
3046   jcc(Assembler::equal, L_2TAG_PACKET_14_0_2);
3047 
3048   bind(L_2TAG_PACKET_52_0_2);
3049   jmp(B1_5);
3050 
3051   bind(L_2TAG_PACKET_45_0_2);
3052   movq(xmm0, Address(rsp, 8));
3053   xorpd(xmm2, xmm2);
3054   movl(eax, 49136);
3055   pinsrw(xmm2, eax, 3);
3056   addsd(xmm2, xmm0);
3057   pextrw(eax, xmm2, 3);
3058   cmpl(eax, 0);
3059   jcc(Assembler::notEqual, L_2TAG_PACKET_53_0_2);
3060   xorpd(xmm0, xmm0);
3061   movl(eax, 32760);
3062   pinsrw(xmm0, eax, 3);
3063   jmp(B1_5);
3064 
3065   bind(L_2TAG_PACKET_53_0_2);
3066   movq(xmm1, Address(rsp, 16));
3067   movdl(edx, xmm1);
3068   movdqu(xmm3, xmm1);
3069   psrlq(xmm3, 20);
3070   movdl(ecx, xmm3);
3071   orl(ecx, edx);
3072   jcc(Assembler::equal, L_2TAG_PACKET_54_0_2);
3073   addsd(xmm1, xmm1);
3074   movdqu(xmm0, xmm1);
3075   jmp(B1_5);
3076 
3077   bind(L_2TAG_PACKET_51_0_2);
3078   pextrw(eax, xmm1, 3);
3079   pextrw(ecx, xmm2, 3);
3080   xorl(eax, ecx);
3081   testl(eax, 32768);
3082   jcc(Assembler::equal, L_2TAG_PACKET_47_0_2);
3083   jmp(L_2TAG_PACKET_46_0_2);
3084 
3085   bind(L_2TAG_PACKET_54_0_2);
3086   pextrw(eax, xmm0, 3);
3087   andl(eax, 32752);
3088   pextrw(edx, xmm1, 3);
3089   xorpd(xmm0, xmm0);
3090   subl(eax, 16368);
3091   xorl(eax, edx);
3092   testl(eax, 32768);
3093   jcc(Assembler::equal, L_2TAG_PACKET_55_0_2);
3094   jmp(B1_5);
3095 
3096   bind(L_2TAG_PACKET_55_0_2);
3097   movl(edx, 32752);
3098   pinsrw(xmm0, edx, 3);
3099   jmp(B1_5);
3100 
3101   bind(L_2TAG_PACKET_17_0_2);
3102   movq(Address(rsp, 24), xmm0);
3103 
3104   bind(B1_3);
3105   movq(xmm0, Address(rsp, 24));
3106 
3107   bind(L_2TAG_PACKET_56_0_2);
3108 
3109   bind(B1_5);
3110   addq(rsp, 40);
3111 }
3112 #endif // _LP64
3113 
3114 #ifndef _LP64
3115 
3116 ALIGNED_(16) juint _static_const_table_pow[] =
3117 {
3118   0x00000000UL, 0xbfd61a00UL, 0x00000000UL, 0xbf5dabe1UL, 0xf8000000UL,
3119   0xffffffffUL, 0x00000000UL, 0xfffff800UL, 0x00000000UL, 0x3ff00000UL,
3120   0x00000000UL, 0x00000000UL, 0x20000000UL, 0x3feff00aUL, 0x96621f95UL,
3121   0x3e5b1856UL, 0xe0000000UL, 0x3fefe019UL, 0xe5916f9eUL, 0xbe325278UL,
3122   0x00000000UL, 0x3fefd02fUL, 0x859a1062UL, 0x3e595fb7UL, 0xc0000000UL,
3123   0x3fefc049UL, 0xb245f18fUL, 0xbe529c38UL, 0xe0000000UL, 0x3fefb069UL,
3124   0xad2880a7UL, 0xbe501230UL, 0x60000000UL, 0x3fefa08fUL, 0xc8e72420UL,
3125   0x3e597bd1UL, 0x80000000UL, 0x3fef90baUL, 0xc30c4500UL, 0xbe5d6c75UL,
3126   0xe0000000UL, 0x3fef80eaUL, 0x02c63f43UL, 0x3e2e1318UL, 0xc0000000UL,
3127   0x3fef7120UL, 0xb3d4ccccUL, 0xbe44c52aUL, 0x00000000UL, 0x3fef615cUL,
3128   0xdbd91397UL, 0xbe4e7d6cUL, 0xa0000000UL, 0x3fef519cUL, 0x65c5cd68UL,
3129   0xbe522dc8UL, 0xa0000000UL, 0x3fef41e2UL, 0x46d1306cUL, 0xbe5a840eUL,
3130   0xe0000000UL, 0x3fef322dUL, 0xd2980e94UL, 0x3e5071afUL, 0xa0000000UL,
3131   0x3fef227eUL, 0x773abadeUL, 0xbe5891e5UL, 0xa0000000UL, 0x3fef12d4UL,
3132   0xdc6bf46bUL, 0xbe5cccbeUL, 0xe0000000UL, 0x3fef032fUL, 0xbc7247faUL,
3133   0xbe2bab83UL, 0x80000000UL, 0x3feef390UL, 0xbcaa1e46UL, 0xbe53bb3bUL,
3134   0x60000000UL, 0x3feee3f6UL, 0x5f6c682dUL, 0xbe54c619UL, 0x80000000UL,
3135   0x3feed461UL, 0x5141e368UL, 0xbe4b6d86UL, 0xe0000000UL, 0x3feec4d1UL,
3136   0xec678f76UL, 0xbe369af6UL, 0x80000000UL, 0x3feeb547UL, 0x41301f55UL,
3137   0xbe2d4312UL, 0x60000000UL, 0x3feea5c2UL, 0x676da6bdUL, 0xbe4d8dd0UL,
3138   0x60000000UL, 0x3fee9642UL, 0x57a891c4UL, 0x3e51f991UL, 0xa0000000UL,
3139   0x3fee86c7UL, 0xe4eb491eUL, 0x3e579bf9UL, 0x20000000UL, 0x3fee7752UL,
3140   0xfddc4a2cUL, 0xbe3356e6UL, 0xc0000000UL, 0x3fee67e1UL, 0xd75b5bf1UL,
3141   0xbe449531UL, 0x80000000UL, 0x3fee5876UL, 0xbd423b8eUL, 0x3df54fe4UL,
3142   0x60000000UL, 0x3fee4910UL, 0x330e51b9UL, 0x3e54289cUL, 0x80000000UL,
3143   0x3fee39afUL, 0x8651a95fUL, 0xbe55aad6UL, 0xa0000000UL, 0x3fee2a53UL,
3144   0x5e98c708UL, 0xbe2fc4a9UL, 0xe0000000UL, 0x3fee1afcUL, 0x0989328dUL,
3145   0x3e23958cUL, 0x40000000UL, 0x3fee0babUL, 0xee642abdUL, 0xbe425dd8UL,
3146   0xa0000000UL, 0x3fedfc5eUL, 0xc394d236UL, 0x3e526362UL, 0x20000000UL,
3147   0x3feded17UL, 0xe104aa8eUL, 0x3e4ce247UL, 0xc0000000UL, 0x3fedddd4UL,
3148   0x265a9be4UL, 0xbe5bb77aUL, 0x40000000UL, 0x3fedce97UL, 0x0ecac52fUL,
3149   0x3e4a7cb1UL, 0xe0000000UL, 0x3fedbf5eUL, 0x124cb3b8UL, 0x3e257024UL,
3150   0x80000000UL, 0x3fedb02bUL, 0xe6d4febeUL, 0xbe2033eeUL, 0x20000000UL,
3151   0x3feda0fdUL, 0x39cca00eUL, 0xbe3ddabcUL, 0xc0000000UL, 0x3fed91d3UL,
3152   0xef8a552aUL, 0xbe543390UL, 0x40000000UL, 0x3fed82afUL, 0xb8e85204UL,
3153   0x3e513850UL, 0xe0000000UL, 0x3fed738fUL, 0x3d59fe08UL, 0xbe5db728UL,
3154   0x40000000UL, 0x3fed6475UL, 0x3aa7ead1UL, 0x3e58804bUL, 0xc0000000UL,
3155   0x3fed555fUL, 0xf8a35ba9UL, 0xbe5298b0UL, 0x00000000UL, 0x3fed464fUL,
3156   0x9a88dd15UL, 0x3e5a8cdbUL, 0x40000000UL, 0x3fed3743UL, 0xb0b0a190UL,
3157   0x3e598635UL, 0x80000000UL, 0x3fed283cUL, 0xe2113295UL, 0xbe5c1119UL,
3158   0x80000000UL, 0x3fed193aUL, 0xafbf1728UL, 0xbe492e9cUL, 0x60000000UL,
3159   0x3fed0a3dUL, 0xe4a4ccf3UL, 0x3e19b90eUL, 0x20000000UL, 0x3fecfb45UL,
3160   0xba3cbeb8UL, 0x3e406b50UL, 0xc0000000UL, 0x3fecec51UL, 0x110f7dddUL,
3161   0x3e0d6806UL, 0x40000000UL, 0x3fecdd63UL, 0x7dd7d508UL, 0xbe5a8943UL,
3162   0x80000000UL, 0x3fecce79UL, 0x9b60f271UL, 0xbe50676aUL, 0x80000000UL,
3163   0x3fecbf94UL, 0x0b9ad660UL, 0x3e59174fUL, 0x60000000UL, 0x3fecb0b4UL,
3164   0x00823d9cUL, 0x3e5bbf72UL, 0x20000000UL, 0x3feca1d9UL, 0x38a6ec89UL,
3165   0xbe4d38f9UL, 0x80000000UL, 0x3fec9302UL, 0x3a0b7d8eUL, 0x3e53dbfdUL,
3166   0xc0000000UL, 0x3fec8430UL, 0xc6826b34UL, 0xbe27c5c9UL, 0xc0000000UL,
3167   0x3fec7563UL, 0x0c706381UL, 0xbe593653UL, 0x60000000UL, 0x3fec669bUL,
3168   0x7df34ec7UL, 0x3e461ab5UL, 0xe0000000UL, 0x3fec57d7UL, 0x40e5e7e8UL,
3169   0xbe5c3daeUL, 0x00000000UL, 0x3fec4919UL, 0x5602770fUL, 0xbe55219dUL,
3170   0xc0000000UL, 0x3fec3a5eUL, 0xec7911ebUL, 0x3e5a5d25UL, 0x60000000UL,
3171   0x3fec2ba9UL, 0xb39ea225UL, 0xbe53c00bUL, 0x80000000UL, 0x3fec1cf8UL,
3172   0x967a212eUL, 0x3e5a8ddfUL, 0x60000000UL, 0x3fec0e4cUL, 0x580798bdUL,
3173   0x3e5f53abUL, 0x00000000UL, 0x3febffa5UL, 0xb8282df6UL, 0xbe46b874UL,
3174   0x20000000UL, 0x3febf102UL, 0xe33a6729UL, 0x3e54963fUL, 0x00000000UL,
3175   0x3febe264UL, 0x3b53e88aUL, 0xbe3adce1UL, 0x60000000UL, 0x3febd3caUL,
3176   0xc2585084UL, 0x3e5cde9fUL, 0x80000000UL, 0x3febc535UL, 0xa335c5eeUL,
3177   0xbe39fd9cUL, 0x20000000UL, 0x3febb6a5UL, 0x7325b04dUL, 0x3e42ba15UL,
3178   0x60000000UL, 0x3feba819UL, 0x1564540fUL, 0x3e3a9f35UL, 0x40000000UL,
3179   0x3feb9992UL, 0x83fff592UL, 0xbe5465ceUL, 0xa0000000UL, 0x3feb8b0fUL,
3180   0xb9da63d3UL, 0xbe4b1a0aUL, 0x80000000UL, 0x3feb7c91UL, 0x6d6f1ea4UL,
3181   0x3e557657UL, 0x00000000UL, 0x3feb6e18UL, 0x5e80a1bfUL, 0x3e4ddbb6UL,
3182   0x00000000UL, 0x3feb5fa3UL, 0x1c9eacb5UL, 0x3e592877UL, 0xa0000000UL,
3183   0x3feb5132UL, 0x6d40beb3UL, 0xbe51858cUL, 0xa0000000UL, 0x3feb42c6UL,
3184   0xd740c67bUL, 0x3e427ad2UL, 0x40000000UL, 0x3feb345fUL, 0xa3e0cceeUL,
3185   0xbe5c2fc4UL, 0x40000000UL, 0x3feb25fcUL, 0x8e752b50UL, 0xbe3da3c2UL,
3186   0xc0000000UL, 0x3feb179dUL, 0xa892e7deUL, 0x3e1fb481UL, 0xc0000000UL,
3187   0x3feb0943UL, 0x21ed71e9UL, 0xbe365206UL, 0x20000000UL, 0x3feafaeeUL,
3188   0x0e1380a3UL, 0x3e5c5b7bUL, 0x20000000UL, 0x3feaec9dUL, 0x3c3d640eUL,
3189   0xbe5dbbd0UL, 0x60000000UL, 0x3feade50UL, 0x8f97a715UL, 0x3e3a8ec5UL,
3190   0x20000000UL, 0x3fead008UL, 0x23ab2839UL, 0x3e2fe98aUL, 0x40000000UL,
3191   0x3feac1c4UL, 0xf4bbd50fUL, 0x3e54d8f6UL, 0xe0000000UL, 0x3feab384UL,
3192   0x14757c4dUL, 0xbe48774cUL, 0xc0000000UL, 0x3feaa549UL, 0x7c7b0eeaUL,
3193   0x3e5b51bbUL, 0x20000000UL, 0x3fea9713UL, 0xf56f7013UL, 0x3e386200UL,
3194   0xe0000000UL, 0x3fea88e0UL, 0xbe428ebeUL, 0xbe514af5UL, 0xe0000000UL,
3195   0x3fea7ab2UL, 0x8d0e4496UL, 0x3e4f9165UL, 0x60000000UL, 0x3fea6c89UL,
3196   0xdbacc5d5UL, 0xbe5c063bUL, 0x20000000UL, 0x3fea5e64UL, 0x3f19d970UL,
3197   0xbe5a0c8cUL, 0x20000000UL, 0x3fea5043UL, 0x09ea3e6bUL, 0x3e5065dcUL,
3198   0x80000000UL, 0x3fea4226UL, 0x78df246cUL, 0x3e5e05f6UL, 0x40000000UL,
3199   0x3fea340eUL, 0x4057d4a0UL, 0x3e431b2bUL, 0x40000000UL, 0x3fea25faUL,
3200   0x82867bb5UL, 0x3e4b76beUL, 0xa0000000UL, 0x3fea17eaUL, 0x9436f40aUL,
3201   0xbe5aad39UL, 0x20000000UL, 0x3fea09dfUL, 0x4b5253b3UL, 0x3e46380bUL,
3202   0x00000000UL, 0x3fe9fbd8UL, 0x8fc52466UL, 0xbe386f9bUL, 0x20000000UL,
3203   0x3fe9edd5UL, 0x22d3f344UL, 0xbe538347UL, 0x60000000UL, 0x3fe9dfd6UL,
3204   0x1ac33522UL, 0x3e5dbc53UL, 0x00000000UL, 0x3fe9d1dcUL, 0xeabdff1dUL,
3205   0x3e40fc0cUL, 0xe0000000UL, 0x3fe9c3e5UL, 0xafd30e73UL, 0xbe585e63UL,
3206   0xe0000000UL, 0x3fe9b5f3UL, 0xa52f226aUL, 0xbe43e8f9UL, 0x20000000UL,
3207   0x3fe9a806UL, 0xecb8698dUL, 0xbe515b36UL, 0x80000000UL, 0x3fe99a1cUL,
3208   0xf2b4e89dUL, 0x3e48b62bUL, 0x20000000UL, 0x3fe98c37UL, 0x7c9a88fbUL,
3209   0x3e44414cUL, 0x00000000UL, 0x3fe97e56UL, 0xda015741UL, 0xbe5d13baUL,
3210   0xe0000000UL, 0x3fe97078UL, 0x5fdace06UL, 0x3e51b947UL, 0x00000000UL,
3211   0x3fe962a0UL, 0x956ca094UL, 0x3e518785UL, 0x40000000UL, 0x3fe954cbUL,
3212   0x01164c1dUL, 0x3e5d5b57UL, 0xc0000000UL, 0x3fe946faUL, 0xe63b3767UL,
3213   0xbe4f84e7UL, 0x40000000UL, 0x3fe9392eUL, 0xe57cc2a9UL, 0x3e34eda3UL,
3214   0xe0000000UL, 0x3fe92b65UL, 0x8c75b544UL, 0x3e5766a0UL, 0xc0000000UL,
3215   0x3fe91da1UL, 0x37d1d087UL, 0xbe5e2ab1UL, 0x80000000UL, 0x3fe90fe1UL,
3216   0xa953dc20UL, 0x3e5fa1f3UL, 0x80000000UL, 0x3fe90225UL, 0xdbd3f369UL,
3217   0x3e47d6dbUL, 0xa0000000UL, 0x3fe8f46dUL, 0x1c9be989UL, 0xbe5e2b0aUL,
3218   0xa0000000UL, 0x3fe8e6b9UL, 0x3c93d76aUL, 0x3e5c8618UL, 0xe0000000UL,
3219   0x3fe8d909UL, 0x2182fc9aUL, 0xbe41aa9eUL, 0x20000000UL, 0x3fe8cb5eUL,
3220   0xe6b3539dUL, 0xbe530d19UL, 0x60000000UL, 0x3fe8bdb6UL, 0x49e58cc3UL,
3221   0xbe3bb374UL, 0xa0000000UL, 0x3fe8b012UL, 0xa7cfeb8fUL, 0x3e56c412UL,
3222   0x00000000UL, 0x3fe8a273UL, 0x8d52bc19UL, 0x3e1429b8UL, 0x60000000UL,
3223   0x3fe894d7UL, 0x4dc32c6cUL, 0xbe48604cUL, 0xc0000000UL, 0x3fe8873fUL,
3224   0x0c868e56UL, 0xbe564ee5UL, 0x00000000UL, 0x3fe879acUL, 0x56aee828UL,
3225   0x3e5e2fd8UL, 0x60000000UL, 0x3fe86c1cUL, 0x7ceab8ecUL, 0x3e493365UL,
3226   0xc0000000UL, 0x3fe85e90UL, 0x78d4dadcUL, 0xbe4f7f25UL, 0x00000000UL,
3227   0x3fe85109UL, 0x0ccd8280UL, 0x3e31e7a2UL, 0x40000000UL, 0x3fe84385UL,
3228   0x34ba4e15UL, 0x3e328077UL, 0x80000000UL, 0x3fe83605UL, 0xa670975aUL,
3229   0xbe53eee5UL, 0xa0000000UL, 0x3fe82889UL, 0xf61b77b2UL, 0xbe43a20aUL,
3230   0xa0000000UL, 0x3fe81b11UL, 0x13e6643bUL, 0x3e5e5fe5UL, 0xc0000000UL,
3231   0x3fe80d9dUL, 0x82cc94e8UL, 0xbe5ff1f9UL, 0xa0000000UL, 0x3fe8002dUL,
3232   0x8a0c9c5dUL, 0xbe42b0e7UL, 0x60000000UL, 0x3fe7f2c1UL, 0x22a16f01UL,
3233   0x3e5d9ea0UL, 0x20000000UL, 0x3fe7e559UL, 0xc38cd451UL, 0x3e506963UL,
3234   0xc0000000UL, 0x3fe7d7f4UL, 0x9902bc71UL, 0x3e4503d7UL, 0x40000000UL,
3235   0x3fe7ca94UL, 0xdef2a3c0UL, 0x3e3d98edUL, 0xa0000000UL, 0x3fe7bd37UL,
3236   0xed49abb0UL, 0x3e24c1ffUL, 0xe0000000UL, 0x3fe7afdeUL, 0xe3b0be70UL,
3237   0xbe40c467UL, 0x00000000UL, 0x3fe7a28aUL, 0xaf9f193cUL, 0xbe5dff6cUL,
3238   0xe0000000UL, 0x3fe79538UL, 0xb74cf6b6UL, 0xbe258ed0UL, 0xa0000000UL,
3239   0x3fe787ebUL, 0x1d9127c7UL, 0x3e345fb0UL, 0x40000000UL, 0x3fe77aa2UL,
3240   0x1028c21dUL, 0xbe4619bdUL, 0xa0000000UL, 0x3fe76d5cUL, 0x7cb0b5e4UL,
3241   0x3e40f1a2UL, 0xe0000000UL, 0x3fe7601aUL, 0x2b1bc4adUL, 0xbe32e8bbUL,
3242   0xe0000000UL, 0x3fe752dcUL, 0x6839f64eUL, 0x3e41f57bUL, 0xc0000000UL,
3243   0x3fe745a2UL, 0xc4121f7eUL, 0xbe52c40aUL, 0x60000000UL, 0x3fe7386cUL,
3244   0xd6852d72UL, 0xbe5c4e6bUL, 0xc0000000UL, 0x3fe72b39UL, 0x91d690f7UL,
3245   0xbe57f88fUL, 0xe0000000UL, 0x3fe71e0aUL, 0x627a2159UL, 0xbe4425d5UL,
3246   0xc0000000UL, 0x3fe710dfUL, 0x50a54033UL, 0x3e422b7eUL, 0x60000000UL,
3247   0x3fe703b8UL, 0x3b0b5f91UL, 0x3e5d3857UL, 0xe0000000UL, 0x3fe6f694UL,
3248   0x84d628a2UL, 0xbe51f090UL, 0x00000000UL, 0x3fe6e975UL, 0x306d8894UL,
3249   0xbe414d83UL, 0xe0000000UL, 0x3fe6dc58UL, 0x30bf24aaUL, 0xbe4650caUL,
3250   0x80000000UL, 0x3fe6cf40UL, 0xd4628d69UL, 0xbe5db007UL, 0xc0000000UL,
3251   0x3fe6c22bUL, 0xa2aae57bUL, 0xbe31d279UL, 0xc0000000UL, 0x3fe6b51aUL,
3252   0x860edf7eUL, 0xbe2d4c4aUL, 0x80000000UL, 0x3fe6a80dUL, 0xf3559341UL,
3253   0xbe5f7e98UL, 0xe0000000UL, 0x3fe69b03UL, 0xa885899eUL, 0xbe5c2011UL,
3254   0xe0000000UL, 0x3fe68dfdUL, 0x2bdc6d37UL, 0x3e224a82UL, 0xa0000000UL,
3255   0x3fe680fbUL, 0xc12ad1b9UL, 0xbe40cf56UL, 0x00000000UL, 0x3fe673fdUL,
3256   0x1bcdf659UL, 0xbdf52f2dUL, 0x00000000UL, 0x3fe66702UL, 0x5df10408UL,
3257   0x3e5663e0UL, 0xc0000000UL, 0x3fe65a0aUL, 0xa4070568UL, 0xbe40b12fUL,
3258   0x00000000UL, 0x3fe64d17UL, 0x71c54c47UL, 0x3e5f5e8bUL, 0x00000000UL,
3259   0x3fe64027UL, 0xbd4b7e83UL, 0x3e42ead6UL, 0xa0000000UL, 0x3fe6333aUL,
3260   0x61598bd2UL, 0xbe4c48d4UL, 0xc0000000UL, 0x3fe62651UL, 0x6f538d61UL,
3261   0x3e548401UL, 0xa0000000UL, 0x3fe6196cUL, 0x14344120UL, 0xbe529af6UL,
3262   0x00000000UL, 0x3fe60c8bUL, 0x5982c587UL, 0xbe3e1e4fUL, 0x00000000UL,
3263   0x3fe5ffadUL, 0xfe51d4eaUL, 0xbe4c897aUL, 0x80000000UL, 0x3fe5f2d2UL,
3264   0xfd46ebe1UL, 0x3e552e00UL, 0xa0000000UL, 0x3fe5e5fbUL, 0xa4695699UL,
3265   0x3e5ed471UL, 0x60000000UL, 0x3fe5d928UL, 0x80d118aeUL, 0x3e456b61UL,
3266   0xa0000000UL, 0x3fe5cc58UL, 0x304c330bUL, 0x3e54dc29UL, 0x80000000UL,
3267   0x3fe5bf8cUL, 0x0af2dedfUL, 0xbe3aa9bdUL, 0xe0000000UL, 0x3fe5b2c3UL,
3268   0x15fc9258UL, 0xbe479a37UL, 0xc0000000UL, 0x3fe5a5feUL, 0x9292c7eaUL,
3269   0x3e188650UL, 0x20000000UL, 0x3fe5993dUL, 0x33b4d380UL, 0x3e5d6d93UL,
3270   0x20000000UL, 0x3fe58c7fUL, 0x02fd16c7UL, 0x3e2fe961UL, 0xa0000000UL,
3271   0x3fe57fc4UL, 0x4a05edb6UL, 0xbe4d55b4UL, 0xa0000000UL, 0x3fe5730dUL,
3272   0x3d443abbUL, 0xbe5e6954UL, 0x00000000UL, 0x3fe5665aUL, 0x024acfeaUL,
3273   0x3e50e61bUL, 0x00000000UL, 0x3fe559aaUL, 0xcc9edd09UL, 0xbe325403UL,
3274   0x60000000UL, 0x3fe54cfdUL, 0x1fe26950UL, 0x3e5d500eUL, 0x60000000UL,
3275   0x3fe54054UL, 0x6c5ae164UL, 0xbe4a79b4UL, 0xc0000000UL, 0x3fe533aeUL,
3276   0x154b0287UL, 0xbe401571UL, 0xa0000000UL, 0x3fe5270cUL, 0x0673f401UL,
3277   0xbe56e56bUL, 0xe0000000UL, 0x3fe51a6dUL, 0x751b639cUL, 0x3e235269UL,
3278   0xa0000000UL, 0x3fe50dd2UL, 0x7c7b2bedUL, 0x3ddec887UL, 0xc0000000UL,
3279   0x3fe5013aUL, 0xafab4e17UL, 0x3e5e7575UL, 0x60000000UL, 0x3fe4f4a6UL,
3280   0x2e308668UL, 0x3e59aed6UL, 0x80000000UL, 0x3fe4e815UL, 0xf33e2a76UL,
3281   0xbe51f184UL, 0xe0000000UL, 0x3fe4db87UL, 0x839f3e3eUL, 0x3e57db01UL,
3282   0xc0000000UL, 0x3fe4cefdUL, 0xa9eda7bbUL, 0x3e535e0fUL, 0x00000000UL,
3283   0x3fe4c277UL, 0x2a8f66a5UL, 0x3e5ce451UL, 0xc0000000UL, 0x3fe4b5f3UL,
3284   0x05192456UL, 0xbe4e8518UL, 0xc0000000UL, 0x3fe4a973UL, 0x4aa7cd1dUL,
3285   0x3e46784aUL, 0x40000000UL, 0x3fe49cf7UL, 0x8e23025eUL, 0xbe5749f2UL,
3286   0x00000000UL, 0x3fe4907eUL, 0x18d30215UL, 0x3e360f39UL, 0x20000000UL,
3287   0x3fe48408UL, 0x63dcf2f3UL, 0x3e5e00feUL, 0xc0000000UL, 0x3fe47795UL,
3288   0x46182d09UL, 0xbe5173d9UL, 0xa0000000UL, 0x3fe46b26UL, 0x8f0e62aaUL,
3289   0xbe48f281UL, 0xe0000000UL, 0x3fe45ebaUL, 0x5775c40cUL, 0xbe56aad4UL,
3290   0x60000000UL, 0x3fe45252UL, 0x0fe25f69UL, 0x3e48bd71UL, 0x40000000UL,
3291   0x3fe445edUL, 0xe9989ec5UL, 0x3e590d97UL, 0x80000000UL, 0x3fe4398bUL,
3292   0xb3d9ffe3UL, 0x3e479dbcUL, 0x20000000UL, 0x3fe42d2dUL, 0x388e4d2eUL,
3293   0xbe5eed80UL, 0xe0000000UL, 0x3fe420d1UL, 0x6f797c18UL, 0x3e554b4cUL,
3294   0x20000000UL, 0x3fe4147aUL, 0x31048bb4UL, 0xbe5b1112UL, 0x80000000UL,
3295   0x3fe40825UL, 0x2efba4f9UL, 0x3e48ebc7UL, 0x40000000UL, 0x3fe3fbd4UL,
3296   0x50201119UL, 0x3e40b701UL, 0x40000000UL, 0x3fe3ef86UL, 0x0a4db32cUL,
3297   0x3e551de8UL, 0xa0000000UL, 0x3fe3e33bUL, 0x0c9c148bUL, 0xbe50c1f6UL,
3298   0x20000000UL, 0x3fe3d6f4UL, 0xc9129447UL, 0x3e533fa0UL, 0x00000000UL,
3299   0x3fe3cab0UL, 0xaae5b5a0UL, 0xbe22b68eUL, 0x20000000UL, 0x3fe3be6fUL,
3300   0x02305e8aUL, 0xbe54fc08UL, 0x60000000UL, 0x3fe3b231UL, 0x7f908258UL,
3301   0x3e57dc05UL, 0x00000000UL, 0x3fe3a5f7UL, 0x1a09af78UL, 0x3e08038bUL,
3302   0xe0000000UL, 0x3fe399bfUL, 0x490643c1UL, 0xbe5dbe42UL, 0xe0000000UL,
3303   0x3fe38d8bUL, 0x5e8ad724UL, 0xbe3c2b72UL, 0x20000000UL, 0x3fe3815bUL,
3304   0xc67196b6UL, 0x3e1713cfUL, 0xa0000000UL, 0x3fe3752dUL, 0x6182e429UL,
3305   0xbe3ec14cUL, 0x40000000UL, 0x3fe36903UL, 0xab6eb1aeUL, 0x3e5a2cc5UL,
3306   0x40000000UL, 0x3fe35cdcUL, 0xfe5dc064UL, 0xbe5c5878UL, 0x40000000UL,
3307   0x3fe350b8UL, 0x0ba6b9e4UL, 0x3e51619bUL, 0x80000000UL, 0x3fe34497UL,
3308   0x857761aaUL, 0x3e5fff53UL, 0x00000000UL, 0x3fe3387aUL, 0xf872d68cUL,
3309   0x3e484f4dUL, 0xa0000000UL, 0x3fe32c5fUL, 0x087e97c2UL, 0x3e52842eUL,
3310   0x80000000UL, 0x3fe32048UL, 0x73d6d0c0UL, 0xbe503edfUL, 0x80000000UL,
3311   0x3fe31434UL, 0x0c1456a1UL, 0xbe5f72adUL, 0xa0000000UL, 0x3fe30823UL,
3312   0x83a1a4d5UL, 0xbe5e65ccUL, 0xe0000000UL, 0x3fe2fc15UL, 0x855a7390UL,
3313   0xbe506438UL, 0x40000000UL, 0x3fe2f00bUL, 0xa2898287UL, 0x3e3d22a2UL,
3314   0xe0000000UL, 0x3fe2e403UL, 0x8b56f66fUL, 0xbe5aa5fdUL, 0x80000000UL,
3315   0x3fe2d7ffUL, 0x52db119aUL, 0x3e3a2e3dUL, 0x60000000UL, 0x3fe2cbfeUL,
3316   0xe2ddd4c0UL, 0xbe586469UL, 0x40000000UL, 0x3fe2c000UL, 0x6b01bf10UL,
3317   0x3e352b9dUL, 0x40000000UL, 0x3fe2b405UL, 0xb07a1cdfUL, 0x3e5c5cdaUL,
3318   0x80000000UL, 0x3fe2a80dUL, 0xc7b5f868UL, 0xbe5668b3UL, 0xc0000000UL,
3319   0x3fe29c18UL, 0x185edf62UL, 0xbe563d66UL, 0x00000000UL, 0x3fe29027UL,
3320   0xf729e1ccUL, 0x3e59a9a0UL, 0x80000000UL, 0x3fe28438UL, 0x6433c727UL,
3321   0xbe43cc89UL, 0x00000000UL, 0x3fe2784dUL, 0x41782631UL, 0xbe30750cUL,
3322   0xa0000000UL, 0x3fe26c64UL, 0x914911b7UL, 0xbe58290eUL, 0x40000000UL,
3323   0x3fe2607fUL, 0x3dcc73e1UL, 0xbe4269cdUL, 0x00000000UL, 0x3fe2549dUL,
3324   0x2751bf70UL, 0xbe5a6998UL, 0xc0000000UL, 0x3fe248bdUL, 0x4248b9fbUL,
3325   0xbe4ddb00UL, 0x80000000UL, 0x3fe23ce1UL, 0xf35cf82fUL, 0x3e561b71UL,
3326   0x60000000UL, 0x3fe23108UL, 0x8e481a2dUL, 0x3e518fb9UL, 0x60000000UL,
3327   0x3fe22532UL, 0x5ab96edcUL, 0xbe5fafc5UL, 0x40000000UL, 0x3fe2195fUL,
3328   0x80943911UL, 0xbe07f819UL, 0x40000000UL, 0x3fe20d8fUL, 0x386f2d6cUL,
3329   0xbe54ba8bUL, 0x40000000UL, 0x3fe201c2UL, 0xf29664acUL, 0xbe5eb815UL,
3330   0x20000000UL, 0x3fe1f5f8UL, 0x64f03390UL, 0x3e5e320cUL, 0x20000000UL,
3331   0x3fe1ea31UL, 0x747ff696UL, 0x3e5ef0a5UL, 0x40000000UL, 0x3fe1de6dUL,
3332   0x3e9ceb51UL, 0xbe5f8d27UL, 0x20000000UL, 0x3fe1d2acUL, 0x4ae0b55eUL,
3333   0x3e5faa21UL, 0x20000000UL, 0x3fe1c6eeUL, 0x28569a5eUL, 0x3e598a4fUL,
3334   0x20000000UL, 0x3fe1bb33UL, 0x54b33e07UL, 0x3e46130aUL, 0x20000000UL,
3335   0x3fe1af7bUL, 0x024f1078UL, 0xbe4dbf93UL, 0x00000000UL, 0x3fe1a3c6UL,
3336   0xb0783bfaUL, 0x3e419248UL, 0xe0000000UL, 0x3fe19813UL, 0x2f02b836UL,
3337   0x3e4e02b7UL, 0xc0000000UL, 0x3fe18c64UL, 0x28dec9d4UL, 0x3e09064fUL,
3338   0x80000000UL, 0x3fe180b8UL, 0x45cbf406UL, 0x3e5b1f46UL, 0x40000000UL,
3339   0x3fe1750fUL, 0x03d9964cUL, 0x3e5b0a79UL, 0x00000000UL, 0x3fe16969UL,
3340   0x8b5b882bUL, 0xbe238086UL, 0xa0000000UL, 0x3fe15dc5UL, 0x73bad6f8UL,
3341   0xbdf1fca4UL, 0x20000000UL, 0x3fe15225UL, 0x5385769cUL, 0x3e5e8d76UL,
3342   0xa0000000UL, 0x3fe14687UL, 0x1676dc6bUL, 0x3e571d08UL, 0x20000000UL,
3343   0x3fe13aedUL, 0xa8c41c7fUL, 0xbe598a25UL, 0x60000000UL, 0x3fe12f55UL,
3344   0xc4e1aaf0UL, 0x3e435277UL, 0xa0000000UL, 0x3fe123c0UL, 0x403638e1UL,
3345   0xbe21aa7cUL, 0xc0000000UL, 0x3fe1182eUL, 0x557a092bUL, 0xbdd0116bUL,
3346   0xc0000000UL, 0x3fe10c9fUL, 0x7d779f66UL, 0x3e4a61baUL, 0xc0000000UL,
3347   0x3fe10113UL, 0x2b09c645UL, 0xbe5d586eUL, 0x20000000UL, 0x3fe0ea04UL,
3348   0xea2cad46UL, 0x3e5aa97cUL, 0x20000000UL, 0x3fe0d300UL, 0x23190e54UL,
3349   0x3e50f1a7UL, 0xa0000000UL, 0x3fe0bc07UL, 0x1379a5a6UL, 0xbe51619dUL,
3350   0x60000000UL, 0x3fe0a51aUL, 0x926a3d4aUL, 0x3e5cf019UL, 0xa0000000UL,
3351   0x3fe08e38UL, 0xa8c24358UL, 0x3e35241eUL, 0x20000000UL, 0x3fe07762UL,
3352   0x24317e7aUL, 0x3e512cfaUL, 0x00000000UL, 0x3fe06097UL, 0xfd9cf274UL,
3353   0xbe55bef3UL, 0x00000000UL, 0x3fe049d7UL, 0x3689b49dUL, 0xbe36d26dUL,
3354   0x40000000UL, 0x3fe03322UL, 0xf72ef6c4UL, 0xbe54cd08UL, 0xa0000000UL,
3355   0x3fe01c78UL, 0x23702d2dUL, 0xbe5900bfUL, 0x00000000UL, 0x3fe005daUL,
3356   0x3f59c14cUL, 0x3e57d80bUL, 0x40000000UL, 0x3fdfde8dUL, 0xad67766dUL,
3357   0xbe57fad4UL, 0x40000000UL, 0x3fdfb17cUL, 0x644f4ae7UL, 0x3e1ee43bUL,
3358   0x40000000UL, 0x3fdf8481UL, 0x903234d2UL, 0x3e501a86UL, 0x40000000UL,
3359   0x3fdf579cUL, 0xafe9e509UL, 0xbe267c3eUL, 0x00000000UL, 0x3fdf2acdUL,
3360   0xb7dfda0bUL, 0xbe48149bUL, 0x40000000UL, 0x3fdefe13UL, 0x3b94305eUL,
3361   0x3e5f4ea7UL, 0x80000000UL, 0x3fded16fUL, 0x5d95da61UL, 0xbe55c198UL,
3362   0x00000000UL, 0x3fdea4e1UL, 0x406960c9UL, 0xbdd99a19UL, 0x00000000UL,
3363   0x3fde7868UL, 0xd22f3539UL, 0x3e470c78UL, 0x80000000UL, 0x3fde4c04UL,
3364   0x83eec535UL, 0xbe3e1232UL, 0x40000000UL, 0x3fde1fb6UL, 0x3dfbffcbUL,
3365   0xbe4b7d71UL, 0x40000000UL, 0x3fddf37dUL, 0x7e1be4e0UL, 0xbe5b8f8fUL,
3366   0x40000000UL, 0x3fddc759UL, 0x46dae887UL, 0xbe350458UL, 0x80000000UL,
3367   0x3fdd9b4aUL, 0xed6ecc49UL, 0xbe5f0045UL, 0x80000000UL, 0x3fdd6f50UL,
3368   0x2e9e883cUL, 0x3e2915daUL, 0x80000000UL, 0x3fdd436bUL, 0xf0bccb32UL,
3369   0x3e4a68c9UL, 0x80000000UL, 0x3fdd179bUL, 0x9bbfc779UL, 0xbe54a26aUL,
3370   0x00000000UL, 0x3fdcebe0UL, 0x7cea33abUL, 0x3e43c6b7UL, 0x40000000UL,
3371   0x3fdcc039UL, 0xe740fd06UL, 0x3e5526c2UL, 0x40000000UL, 0x3fdc94a7UL,
3372   0x9eadeb1aUL, 0xbe396d8dUL, 0xc0000000UL, 0x3fdc6929UL, 0xf0a8f95aUL,
3373   0xbe5c0ab2UL, 0x80000000UL, 0x3fdc3dc0UL, 0x6ee2693bUL, 0x3e0992e6UL,
3374   0xc0000000UL, 0x3fdc126bUL, 0x5ac6b581UL, 0xbe2834b6UL, 0x40000000UL,
3375   0x3fdbe72bUL, 0x8cc226ffUL, 0x3e3596a6UL, 0x00000000UL, 0x3fdbbbffUL,
3376   0xf92a74bbUL, 0x3e3c5813UL, 0x00000000UL, 0x3fdb90e7UL, 0x479664c0UL,
3377   0xbe50d644UL, 0x00000000UL, 0x3fdb65e3UL, 0x5004975bUL, 0xbe55258fUL,
3378   0x00000000UL, 0x3fdb3af3UL, 0xe4b23194UL, 0xbe588407UL, 0xc0000000UL,
3379   0x3fdb1016UL, 0xe65d4d0aUL, 0x3e527c26UL, 0x80000000UL, 0x3fdae54eUL,
3380   0x814fddd6UL, 0x3e5962a2UL, 0x40000000UL, 0x3fdaba9aUL, 0xe19d0913UL,
3381   0xbe562f4eUL, 0x80000000UL, 0x3fda8ff9UL, 0x43cfd006UL, 0xbe4cfdebUL,
3382   0x40000000UL, 0x3fda656cUL, 0x686f0a4eUL, 0x3e5e47a8UL, 0xc0000000UL,
3383   0x3fda3af2UL, 0x7200d410UL, 0x3e5e1199UL, 0xc0000000UL, 0x3fda108cUL,
3384   0xabd2266eUL, 0x3e5ee4d1UL, 0x40000000UL, 0x3fd9e63aUL, 0x396f8f2cUL,
3385   0x3e4dbffbUL, 0x00000000UL, 0x3fd9bbfbUL, 0xe32b25ddUL, 0x3e5c3a54UL,
3386   0x40000000UL, 0x3fd991cfUL, 0x431e4035UL, 0xbe457925UL, 0x80000000UL,
3387   0x3fd967b6UL, 0x7bed3dd3UL, 0x3e40c61dUL, 0x00000000UL, 0x3fd93db1UL,
3388   0xd7449365UL, 0x3e306419UL, 0x80000000UL, 0x3fd913beUL, 0x1746e791UL,
3389   0x3e56fcfcUL, 0x40000000UL, 0x3fd8e9dfUL, 0xf3a9028bUL, 0xbe5041b9UL,
3390   0xc0000000UL, 0x3fd8c012UL, 0x56840c50UL, 0xbe26e20aUL, 0x40000000UL,
3391   0x3fd89659UL, 0x19763102UL, 0xbe51f466UL, 0x80000000UL, 0x3fd86cb2UL,
3392   0x7032de7cUL, 0xbe4d298aUL, 0x80000000UL, 0x3fd8431eUL, 0xdeb39fabUL,
3393   0xbe4361ebUL, 0x40000000UL, 0x3fd8199dUL, 0x5d01cbe0UL, 0xbe5425b3UL,
3394   0x80000000UL, 0x3fd7f02eUL, 0x3ce99aa9UL, 0x3e146fa8UL, 0x80000000UL,
3395   0x3fd7c6d2UL, 0xd1a262b9UL, 0xbe5a1a69UL, 0xc0000000UL, 0x3fd79d88UL,
3396   0x8606c236UL, 0x3e423a08UL, 0x80000000UL, 0x3fd77451UL, 0x8fd1e1b7UL,
3397   0x3e5a6a63UL, 0xc0000000UL, 0x3fd74b2cUL, 0xe491456aUL, 0x3e42c1caUL,
3398   0x40000000UL, 0x3fd7221aUL, 0x4499a6d7UL, 0x3e36a69aUL, 0x00000000UL,
3399   0x3fd6f91aUL, 0x5237df94UL, 0xbe0f8f02UL, 0x00000000UL, 0x3fd6d02cUL,
3400   0xb6482c6eUL, 0xbe5abcf7UL, 0x00000000UL, 0x3fd6a750UL, 0x1919fd61UL,
3401   0xbe57ade2UL, 0x00000000UL, 0x3fd67e86UL, 0xaa7a994dUL, 0xbe3f3fbdUL,
3402   0x00000000UL, 0x3fd655ceUL, 0x67db014cUL, 0x3e33c550UL, 0x00000000UL,
3403   0x3fd62d28UL, 0xa82856b7UL, 0xbe1409d1UL, 0xc0000000UL, 0x3fd60493UL,
3404   0x1e6a300dUL, 0x3e55d899UL, 0x80000000UL, 0x3fd5dc11UL, 0x1222bd5cUL,
3405   0xbe35bfc0UL, 0xc0000000UL, 0x3fd5b3a0UL, 0x6e8dc2d3UL, 0x3e5d4d79UL,
3406   0x00000000UL, 0x3fd58b42UL, 0xe0e4ace6UL, 0xbe517303UL, 0x80000000UL,
3407   0x3fd562f4UL, 0xb306e0a8UL, 0x3e5edf0fUL, 0xc0000000UL, 0x3fd53ab8UL,
3408   0x6574bc54UL, 0x3e5ee859UL, 0x80000000UL, 0x3fd5128eUL, 0xea902207UL,
3409   0x3e5f6188UL, 0xc0000000UL, 0x3fd4ea75UL, 0x9f911d79UL, 0x3e511735UL,
3410   0x80000000UL, 0x3fd4c26eUL, 0xf9c77397UL, 0xbe5b1643UL, 0x40000000UL,
3411   0x3fd49a78UL, 0x15fc9258UL, 0x3e479a37UL, 0x80000000UL, 0x3fd47293UL,
3412   0xd5a04dd9UL, 0xbe426e56UL, 0xc0000000UL, 0x3fd44abfUL, 0xe04042f5UL,
3413   0x3e56f7c6UL, 0x40000000UL, 0x3fd422fdUL, 0x1d8bf2c8UL, 0x3e5d8810UL,
3414   0x00000000UL, 0x3fd3fb4cUL, 0x88a8ddeeUL, 0xbe311454UL, 0xc0000000UL,
3415   0x3fd3d3abUL, 0x3e3b5e47UL, 0xbe5d1b72UL, 0x40000000UL, 0x3fd3ac1cUL,
3416   0xc2ab5d59UL, 0x3e31b02bUL, 0xc0000000UL, 0x3fd3849dUL, 0xd4e34b9eUL,
3417   0x3e51cb2fUL, 0x40000000UL, 0x3fd35d30UL, 0x177204fbUL, 0xbe2b8cd7UL,
3418   0x80000000UL, 0x3fd335d3UL, 0xfcd38c82UL, 0xbe4356e1UL, 0x80000000UL,
3419   0x3fd30e87UL, 0x64f54accUL, 0xbe4e6224UL, 0x00000000UL, 0x3fd2e74cUL,
3420   0xaa7975d9UL, 0x3e5dc0feUL, 0x80000000UL, 0x3fd2c021UL, 0x516dab3fUL,
3421   0xbe50ffa3UL, 0x40000000UL, 0x3fd29907UL, 0x2bfb7313UL, 0x3e5674a2UL,
3422   0xc0000000UL, 0x3fd271fdUL, 0x0549fc99UL, 0x3e385d29UL, 0xc0000000UL,
3423   0x3fd24b04UL, 0x55b63073UL, 0xbe500c6dUL, 0x00000000UL, 0x3fd2241cUL,
3424   0x3f91953aUL, 0x3e389977UL, 0xc0000000UL, 0x3fd1fd43UL, 0xa1543f71UL,
3425   0xbe3487abUL, 0xc0000000UL, 0x3fd1d67bUL, 0x4ec8867cUL, 0x3df6a2dcUL,
3426   0x00000000UL, 0x3fd1afc4UL, 0x4328e3bbUL, 0x3e41d9c0UL, 0x80000000UL,
3427   0x3fd1891cUL, 0x2e1cda84UL, 0x3e3bdd87UL, 0x40000000UL, 0x3fd16285UL,
3428   0x4b5331aeUL, 0xbe53128eUL, 0x00000000UL, 0x3fd13bfeUL, 0xb9aec164UL,
3429   0xbe52ac98UL, 0xc0000000UL, 0x3fd11586UL, 0xd91e1316UL, 0xbe350630UL,
3430   0x80000000UL, 0x3fd0ef1fUL, 0x7cacc12cUL, 0x3e3f5219UL, 0x40000000UL,
3431   0x3fd0c8c8UL, 0xbce277b7UL, 0x3e3d30c0UL, 0x00000000UL, 0x3fd0a281UL,
3432   0x2a63447dUL, 0xbe541377UL, 0x80000000UL, 0x3fd07c49UL, 0xfac483b5UL,
3433   0xbe5772ecUL, 0xc0000000UL, 0x3fd05621UL, 0x36b8a570UL, 0xbe4fd4bdUL,
3434   0xc0000000UL, 0x3fd03009UL, 0xbae505f7UL, 0xbe450388UL, 0x80000000UL,
3435   0x3fd00a01UL, 0x3e35aeadUL, 0xbe5430fcUL, 0x80000000UL, 0x3fcfc811UL,
3436   0x707475acUL, 0x3e38806eUL, 0x80000000UL, 0x3fcf7c3fUL, 0xc91817fcUL,
3437   0xbe40cceaUL, 0x80000000UL, 0x3fcf308cUL, 0xae05d5e9UL, 0xbe4919b8UL,
3438   0x80000000UL, 0x3fcee4f8UL, 0xae6cc9e6UL, 0xbe530b94UL, 0x00000000UL,
3439   0x3fce9983UL, 0x1efe3e8eUL, 0x3e57747eUL, 0x00000000UL, 0x3fce4e2dUL,
3440   0xda78d9bfUL, 0xbe59a608UL, 0x00000000UL, 0x3fce02f5UL, 0x8abe2c2eUL,
3441   0x3e4a35adUL, 0x00000000UL, 0x3fcdb7dcUL, 0x1495450dUL, 0xbe0872ccUL,
3442   0x80000000UL, 0x3fcd6ce1UL, 0x86ee0ba0UL, 0xbe4f59a0UL, 0x00000000UL,
3443   0x3fcd2205UL, 0xe81ca888UL, 0x3e5402c3UL, 0x00000000UL, 0x3fccd747UL,
3444   0x3b4424b9UL, 0x3e5dfdc3UL, 0x80000000UL, 0x3fcc8ca7UL, 0xd305b56cUL,
3445   0x3e202da6UL, 0x00000000UL, 0x3fcc4226UL, 0x399a6910UL, 0xbe482a1cUL,
3446   0x80000000UL, 0x3fcbf7c2UL, 0x747f7938UL, 0xbe587372UL, 0x80000000UL,
3447   0x3fcbad7cUL, 0x6fc246a0UL, 0x3e50d83dUL, 0x00000000UL, 0x3fcb6355UL,
3448   0xee9e9be5UL, 0xbe5c35bdUL, 0x80000000UL, 0x3fcb194aUL, 0x8416c0bcUL,
3449   0x3e546d4fUL, 0x00000000UL, 0x3fcacf5eUL, 0x49f7f08fUL, 0x3e56da76UL,
3450   0x00000000UL, 0x3fca858fUL, 0x5dc30de2UL, 0x3e5f390cUL, 0x00000000UL,
3451   0x3fca3bdeUL, 0x950583b6UL, 0xbe5e4169UL, 0x80000000UL, 0x3fc9f249UL,
3452   0x33631553UL, 0x3e52aeb1UL, 0x00000000UL, 0x3fc9a8d3UL, 0xde8795a6UL,
3453   0xbe59a504UL, 0x00000000UL, 0x3fc95f79UL, 0x076bf41eUL, 0x3e5122feUL,
3454   0x80000000UL, 0x3fc9163cUL, 0x2914c8e7UL, 0x3e3dd064UL, 0x00000000UL,
3455   0x3fc8cd1dUL, 0x3a30eca3UL, 0xbe21b4aaUL, 0x80000000UL, 0x3fc8841aUL,
3456   0xb2a96650UL, 0xbe575444UL, 0x80000000UL, 0x3fc83b34UL, 0x2376c0cbUL,
3457   0xbe2a74c7UL, 0x80000000UL, 0x3fc7f26bUL, 0xd8a0b653UL, 0xbe5181b6UL,
3458   0x00000000UL, 0x3fc7a9bfUL, 0x32257882UL, 0xbe4a78b4UL, 0x00000000UL,
3459   0x3fc7612fUL, 0x1eee8bd9UL, 0xbe1bfe9dUL, 0x80000000UL, 0x3fc718bbUL,
3460   0x0c603cc4UL, 0x3e36fdc9UL, 0x80000000UL, 0x3fc6d064UL, 0x3728b8cfUL,
3461   0xbe1e542eUL, 0x80000000UL, 0x3fc68829UL, 0xc79a4067UL, 0x3e5c380fUL,
3462   0x00000000UL, 0x3fc6400bUL, 0xf69eac69UL, 0x3e550a84UL, 0x80000000UL,
3463   0x3fc5f808UL, 0xb7a780a4UL, 0x3e5d9224UL, 0x80000000UL, 0x3fc5b022UL,
3464   0xad9dfb1eUL, 0xbe55242fUL, 0x00000000UL, 0x3fc56858UL, 0x659b18beUL,
3465   0xbe4bfda3UL, 0x80000000UL, 0x3fc520a9UL, 0x66ee3631UL, 0xbe57d769UL,
3466   0x80000000UL, 0x3fc4d916UL, 0x1ec62819UL, 0x3e2427f7UL, 0x80000000UL,
3467   0x3fc4919fUL, 0xdec25369UL, 0xbe435431UL, 0x00000000UL, 0x3fc44a44UL,
3468   0xa8acfc4bUL, 0xbe3c62e8UL, 0x00000000UL, 0x3fc40304UL, 0xcf1d3eabUL,
3469   0xbdfba29fUL, 0x80000000UL, 0x3fc3bbdfUL, 0x79aba3eaUL, 0xbdf1b7c8UL,
3470   0x80000000UL, 0x3fc374d6UL, 0xb8d186daUL, 0xbe5130cfUL, 0x80000000UL,
3471   0x3fc32de8UL, 0x9d74f152UL, 0x3e2285b6UL, 0x00000000UL, 0x3fc2e716UL,
3472   0x50ae7ca9UL, 0xbe503920UL, 0x80000000UL, 0x3fc2a05eUL, 0x6caed92eUL,
3473   0xbe533924UL, 0x00000000UL, 0x3fc259c2UL, 0x9cb5034eUL, 0xbe510e31UL,
3474   0x80000000UL, 0x3fc21340UL, 0x12c4d378UL, 0xbe540b43UL, 0x80000000UL,
3475   0x3fc1ccd9UL, 0xcc418706UL, 0x3e59887aUL, 0x00000000UL, 0x3fc1868eUL,
3476   0x921f4106UL, 0xbe528e67UL, 0x80000000UL, 0x3fc1405cUL, 0x3969441eUL,
3477   0x3e5d8051UL, 0x00000000UL, 0x3fc0fa46UL, 0xd941ef5bUL, 0x3e5f9079UL,
3478   0x80000000UL, 0x3fc0b44aUL, 0x5a3e81b2UL, 0xbe567691UL, 0x00000000UL,
3479   0x3fc06e69UL, 0x9d66afe7UL, 0xbe4d43fbUL, 0x00000000UL, 0x3fc028a2UL,
3480   0x0a92a162UL, 0xbe52f394UL, 0x00000000UL, 0x3fbfc5eaUL, 0x209897e5UL,
3481   0x3e529e37UL, 0x00000000UL, 0x3fbf3ac5UL, 0x8458bd7bUL, 0x3e582831UL,
3482   0x00000000UL, 0x3fbeafd5UL, 0xb8d8b4b8UL, 0xbe486b4aUL, 0x00000000UL,
3483   0x3fbe2518UL, 0xe0a3b7b6UL, 0x3e5bafd2UL, 0x00000000UL, 0x3fbd9a90UL,
3484   0x2bf2710eUL, 0x3e383b2bUL, 0x00000000UL, 0x3fbd103cUL, 0x73eb6ab7UL,
3485   0xbe56d78dUL, 0x00000000UL, 0x3fbc861bUL, 0x32ceaff5UL, 0xbe32dc5aUL,
3486   0x00000000UL, 0x3fbbfc2eUL, 0xbee04cb7UL, 0xbe4a71a4UL, 0x00000000UL,
3487   0x3fbb7274UL, 0x35ae9577UL, 0x3e38142fUL, 0x00000000UL, 0x3fbae8eeUL,
3488   0xcbaddab4UL, 0xbe5490f0UL, 0x00000000UL, 0x3fba5f9aUL, 0x95ce1114UL,
3489   0x3e597c71UL, 0x00000000UL, 0x3fb9d67aUL, 0x6d7c0f78UL, 0x3e3abc2dUL,
3490   0x00000000UL, 0x3fb94d8dUL, 0x2841a782UL, 0xbe566cbcUL, 0x00000000UL,
3491   0x3fb8c4d2UL, 0x6ed429c6UL, 0xbe3cfff9UL, 0x00000000UL, 0x3fb83c4aUL,
3492   0xe4a49fbbUL, 0xbe552964UL, 0x00000000UL, 0x3fb7b3f4UL, 0x2193d81eUL,
3493   0xbe42fa72UL, 0x00000000UL, 0x3fb72bd0UL, 0xdd70c122UL, 0x3e527a8cUL,
3494   0x00000000UL, 0x3fb6a3dfUL, 0x03108a54UL, 0xbe450393UL, 0x00000000UL,
3495   0x3fb61c1fUL, 0x30ff7954UL, 0x3e565840UL, 0x00000000UL, 0x3fb59492UL,
3496   0xdedd460cUL, 0xbe5422b5UL, 0x00000000UL, 0x3fb50d36UL, 0x950f9f45UL,
3497   0xbe5313f6UL, 0x00000000UL, 0x3fb4860bUL, 0x582cdcb1UL, 0x3e506d39UL,
3498   0x00000000UL, 0x3fb3ff12UL, 0x7216d3a6UL, 0x3e4aa719UL, 0x00000000UL,
3499   0x3fb3784aUL, 0x57a423fdUL, 0x3e5a9b9fUL, 0x00000000UL, 0x3fb2f1b4UL,
3500   0x7a138b41UL, 0xbe50b418UL, 0x00000000UL, 0x3fb26b4eUL, 0x2fbfd7eaUL,
3501   0x3e23a53eUL, 0x00000000UL, 0x3fb1e519UL, 0x18913ccbUL, 0x3e465fc1UL,
3502   0x00000000UL, 0x3fb15f15UL, 0x7ea24e21UL, 0x3e042843UL, 0x00000000UL,
3503   0x3fb0d941UL, 0x7c6d9c77UL, 0x3e59f61eUL, 0x00000000UL, 0x3fb0539eUL,
3504   0x114efd44UL, 0x3e4ccab7UL, 0x00000000UL, 0x3faf9c56UL, 0x1777f657UL,
3505   0x3e552f65UL, 0x00000000UL, 0x3fae91d2UL, 0xc317b86aUL, 0xbe5a61e0UL,
3506   0x00000000UL, 0x3fad87acUL, 0xb7664efbUL, 0xbe41f64eUL, 0x00000000UL,
3507   0x3fac7de6UL, 0x5d3d03a9UL, 0x3e0807a0UL, 0x00000000UL, 0x3fab7480UL,
3508   0x743c38ebUL, 0xbe3726e1UL, 0x00000000UL, 0x3faa6b78UL, 0x06a253f1UL,
3509   0x3e5ad636UL, 0x00000000UL, 0x3fa962d0UL, 0xa35f541bUL, 0x3e5a187aUL,
3510   0x00000000UL, 0x3fa85a88UL, 0x4b86e446UL, 0xbe508150UL, 0x00000000UL,
3511   0x3fa7529cUL, 0x2589cacfUL, 0x3e52938aUL, 0x00000000UL, 0x3fa64b10UL,
3512   0xaf6b11f2UL, 0xbe3454cdUL, 0x00000000UL, 0x3fa543e2UL, 0x97506fefUL,
3513   0xbe5fdec5UL, 0x00000000UL, 0x3fa43d10UL, 0xe75f7dd9UL, 0xbe388dd3UL,
3514   0x00000000UL, 0x3fa3369cUL, 0xa4139632UL, 0xbdea5177UL, 0x00000000UL,
3515   0x3fa23086UL, 0x352d6f1eUL, 0xbe565ad6UL, 0x00000000UL, 0x3fa12accUL,
3516   0x77449eb7UL, 0xbe50d5c7UL, 0x00000000UL, 0x3fa0256eUL, 0x7478da78UL,
3517   0x3e404724UL, 0x00000000UL, 0x3f9e40dcUL, 0xf59cef7fUL, 0xbe539d0aUL,
3518   0x00000000UL, 0x3f9c3790UL, 0x1511d43cUL, 0x3e53c2c8UL, 0x00000000UL,
3519   0x3f9a2f00UL, 0x9b8bff3cUL, 0xbe43b3e1UL, 0x00000000UL, 0x3f982724UL,
3520   0xad1e22a5UL, 0x3e46f0bdUL, 0x00000000UL, 0x3f962000UL, 0x130d9356UL,
3521   0x3e475ba0UL, 0x00000000UL, 0x3f941994UL, 0x8f86f883UL, 0xbe513d0bUL,
3522   0x00000000UL, 0x3f9213dcUL, 0x914d0dc8UL, 0xbe534335UL, 0x00000000UL,
3523   0x3f900ed8UL, 0x2d73e5e7UL, 0xbe22ba75UL, 0x00000000UL, 0x3f8c1510UL,
3524   0xc5b7d70eUL, 0x3e599c5dUL, 0x00000000UL, 0x3f880de0UL, 0x8a27857eUL,
3525   0xbe3d28c8UL, 0x00000000UL, 0x3f840810UL, 0xda767328UL, 0x3e531b3dUL,
3526   0x00000000UL, 0x3f8003b0UL, 0x77bacaf3UL, 0xbe5f04e3UL, 0x00000000UL,
3527   0x3f780150UL, 0xdf4b0720UL, 0x3e5a8bffUL, 0x00000000UL, 0x3f6ffc40UL,
3528   0x34c48e71UL, 0xbe3fcd99UL, 0x00000000UL, 0x3f5ff6c0UL, 0x1ad218afUL,
3529   0xbe4c78a7UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x80000000UL,
3530   0x00000000UL, 0xfffff800UL, 0x00000000UL, 0xfffff800UL, 0x00000000UL,
3531   0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL, 0x6dc96112UL, 0xbf836578UL,
3532   0xee241472UL, 0xbf9b0301UL, 0x9f95985aUL, 0xbfb528dbUL, 0xb3841d2aUL,
3533   0xbfd619b6UL, 0x518775e3UL, 0x3f9004f2UL, 0xac8349bbUL, 0x3fa76c9bUL,
3534   0x486ececcUL, 0x3fc4635eUL, 0x161bb241UL, 0xbf5dabe1UL, 0x9f95985aUL,
3535   0xbfb528dbUL, 0xf8b5787dUL, 0x3ef2531eUL, 0x486ececbUL, 0x3fc4635eUL,
3536   0x412055ccUL, 0xbdd61bb2UL, 0x00000000UL, 0xfffffff8UL, 0x00000000UL,
3537   0xffffffffUL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x3b700000UL,
3538   0xfa5abcbfUL, 0x3ff00b1aUL, 0xa7609f71UL, 0xbc84f6b2UL, 0xa9fb3335UL,
3539   0x3ff0163dUL, 0x9ab8cdb7UL, 0x3c9b6129UL, 0x143b0281UL, 0x3ff02168UL,
3540   0x0fc54eb6UL, 0xbc82bf31UL, 0x3e778061UL, 0x3ff02c9aUL, 0x535b085dUL,
3541   0xbc719083UL, 0x2e11bbccUL, 0x3ff037d4UL, 0xeeade11aUL, 0x3c656811UL,
3542   0xe86e7f85UL, 0x3ff04315UL, 0x1977c96eUL, 0xbc90a31cUL, 0x72f654b1UL,
3543   0x3ff04e5fUL, 0x3aa0d08cUL, 0x3c84c379UL, 0xd3158574UL, 0x3ff059b0UL,
3544   0xa475b465UL, 0x3c8d73e2UL, 0x0e3c1f89UL, 0x3ff0650aUL, 0x5799c397UL,
3545   0xbc95cb7bUL, 0x29ddf6deUL, 0x3ff0706bUL, 0xe2b13c27UL, 0xbc8c91dfUL,
3546   0x2b72a836UL, 0x3ff07bd4UL, 0x54458700UL, 0x3c832334UL, 0x18759bc8UL,
3547   0x3ff08745UL, 0x4bb284ffUL, 0x3c6186beUL, 0xf66607e0UL, 0x3ff092bdUL,
3548   0x800a3fd1UL, 0xbc968063UL, 0xcac6f383UL, 0x3ff09e3eUL, 0x18316136UL,
3549   0x3c914878UL, 0x9b1f3919UL, 0x3ff0a9c7UL, 0x873d1d38UL, 0x3c85d16cUL,
3550   0x6cf9890fUL, 0x3ff0b558UL, 0x4adc610bUL, 0x3c98a62eUL, 0x45e46c85UL,
3551   0x3ff0c0f1UL, 0x06d21cefUL, 0x3c94f989UL, 0x2b7247f7UL, 0x3ff0cc92UL,
3552   0x16e24f71UL, 0x3c901edcUL, 0x23395decUL, 0x3ff0d83bUL, 0xe43f316aUL,
3553   0xbc9bc14dUL, 0x32d3d1a2UL, 0x3ff0e3ecUL, 0x27c57b52UL, 0x3c403a17UL,
3554   0x5fdfa9c5UL, 0x3ff0efa5UL, 0xbc54021bUL, 0xbc949db9UL, 0xaffed31bUL,
3555   0x3ff0fb66UL, 0xc44ebd7bUL, 0xbc6b9bedUL, 0x28d7233eUL, 0x3ff10730UL,
3556   0x1692fdd5UL, 0x3c8d46ebUL, 0xd0125b51UL, 0x3ff11301UL, 0x39449b3aUL,
3557   0xbc96c510UL, 0xab5e2ab6UL, 0x3ff11edbUL, 0xf703fb72UL, 0xbc9ca454UL,
3558   0xc06c31ccUL, 0x3ff12abdUL, 0xb36ca5c7UL, 0xbc51b514UL, 0x14f204abUL,
3559   0x3ff136a8UL, 0xba48dcf0UL, 0xbc67108fUL, 0xaea92de0UL, 0x3ff1429aUL,
3560   0x9af1369eUL, 0xbc932fbfUL, 0x934f312eUL, 0x3ff14e95UL, 0x39bf44abUL,
3561   0xbc8b91e8UL, 0xc8a58e51UL, 0x3ff15a98UL, 0xb9eeab0aUL, 0x3c82406aUL,
3562   0x5471c3c2UL, 0x3ff166a4UL, 0x82ea1a32UL, 0x3c58f23bUL, 0x3c7d517bUL,
3563   0x3ff172b8UL, 0xb9d78a76UL, 0xbc819041UL, 0x8695bbc0UL, 0x3ff17ed4UL,
3564   0xe2ac5a64UL, 0x3c709e3fUL, 0x388c8deaUL, 0x3ff18af9UL, 0xd1970f6cUL,
3565   0xbc911023UL, 0x58375d2fUL, 0x3ff19726UL, 0x85f17e08UL, 0x3c94aaddUL,
3566   0xeb6fcb75UL, 0x3ff1a35bUL, 0x7b4968e4UL, 0x3c8e5b4cUL, 0xf8138a1cUL,
3567   0x3ff1af99UL, 0xa4b69280UL, 0x3c97bf85UL, 0x84045cd4UL, 0x3ff1bbe0UL,
3568   0x352ef607UL, 0xbc995386UL, 0x95281c6bUL, 0x3ff1c82fUL, 0x8010f8c9UL,
3569   0x3c900977UL, 0x3168b9aaUL, 0x3ff1d487UL, 0x00a2643cUL, 0x3c9e016eUL,
3570   0x5eb44027UL, 0x3ff1e0e7UL, 0x088cb6deUL, 0xbc96fdd8UL, 0x22fcd91dUL,
3571   0x3ff1ed50UL, 0x027bb78cUL, 0xbc91df98UL, 0x8438ce4dUL, 0x3ff1f9c1UL,
3572   0xa097af5cUL, 0xbc9bf524UL, 0x88628cd6UL, 0x3ff2063bUL, 0x814a8495UL,
3573   0x3c8dc775UL, 0x3578a819UL, 0x3ff212beUL, 0x2cfcaac9UL, 0x3c93592dUL,
3574   0x917ddc96UL, 0x3ff21f49UL, 0x9494a5eeUL, 0x3c82a97eUL, 0xa27912d1UL,
3575   0x3ff22bddUL, 0x5577d69fUL, 0x3c8d34fbUL, 0x6e756238UL, 0x3ff2387aUL,
3576   0xb6c70573UL, 0x3c99b07eUL, 0xfb82140aUL, 0x3ff2451fUL, 0x911ca996UL,
3577   0x3c8acfccUL, 0x4fb2a63fUL, 0x3ff251ceUL, 0xbef4f4a4UL, 0x3c8ac155UL,
3578   0x711ece75UL, 0x3ff25e85UL, 0x4ac31b2cUL, 0x3c93e1a2UL, 0x65e27cddUL,
3579   0x3ff26b45UL, 0x9940e9d9UL, 0x3c82bd33UL, 0x341ddf29UL, 0x3ff2780eUL,
3580   0x05f9e76cUL, 0x3c9e067cUL, 0xe1f56381UL, 0x3ff284dfUL, 0x8c3f0d7eUL,
3581   0xbc9a4c3aUL, 0x7591bb70UL, 0x3ff291baUL, 0x28401cbdUL, 0xbc82cc72UL,
3582   0xf51fdee1UL, 0x3ff29e9dUL, 0xafad1255UL, 0x3c8612e8UL, 0x66d10f13UL,
3583   0x3ff2ab8aUL, 0x191690a7UL, 0xbc995743UL, 0xd0dad990UL, 0x3ff2b87fUL,
3584   0xd6381aa4UL, 0xbc410adcUL, 0x39771b2fUL, 0x3ff2c57eUL, 0xa6eb5124UL,
3585   0xbc950145UL, 0xa6e4030bUL, 0x3ff2d285UL, 0x54db41d5UL, 0x3c900247UL,
3586   0x1f641589UL, 0x3ff2df96UL, 0xfbbce198UL, 0x3c9d16cfUL, 0xa93e2f56UL,
3587   0x3ff2ecafUL, 0x45d52383UL, 0x3c71ca0fUL, 0x4abd886bUL, 0x3ff2f9d2UL,
3588   0x532bda93UL, 0xbc653c55UL, 0x0a31b715UL, 0x3ff306feUL, 0xd23182e4UL,
3589   0x3c86f46aUL, 0xedeeb2fdUL, 0x3ff31432UL, 0xf3f3fcd1UL, 0x3c8959a3UL,
3590   0xfc4cd831UL, 0x3ff32170UL, 0x8e18047cUL, 0x3c8a9ce7UL, 0x3ba8ea32UL,
3591   0x3ff32eb8UL, 0x3cb4f318UL, 0xbc9c45e8UL, 0xb26416ffUL, 0x3ff33c08UL,
3592   0x843659a6UL, 0x3c932721UL, 0x66e3fa2dUL, 0x3ff34962UL, 0x930881a4UL,
3593   0xbc835a75UL, 0x5f929ff1UL, 0x3ff356c5UL, 0x5c4e4628UL, 0xbc8b5ceeUL,
3594   0xa2de883bUL, 0x3ff36431UL, 0xa06cb85eUL, 0xbc8c3144UL, 0x373aa9cbUL,
3595   0x3ff371a7UL, 0xbf42eae2UL, 0xbc963aeaUL, 0x231e754aUL, 0x3ff37f26UL,
3596   0x9eceb23cUL, 0xbc99f5caUL, 0x6d05d866UL, 0x3ff38caeUL, 0x3c9904bdUL,
3597   0xbc9e958dUL, 0x1b7140efUL, 0x3ff39a40UL, 0xfc8e2934UL, 0xbc99a9a5UL,
3598   0x34e59ff7UL, 0x3ff3a7dbUL, 0xd661f5e3UL, 0xbc75e436UL, 0xbfec6cf4UL,
3599   0x3ff3b57fUL, 0xe26fff18UL, 0x3c954c66UL, 0xc313a8e5UL, 0x3ff3c32dUL,
3600   0x375d29c3UL, 0xbc9efff8UL, 0x44ede173UL, 0x3ff3d0e5UL, 0x8c284c71UL,
3601   0x3c7fe8d0UL, 0x4c123422UL, 0x3ff3dea6UL, 0x11f09ebcUL, 0x3c8ada09UL,
3602   0xdf1c5175UL, 0x3ff3ec70UL, 0x7b8c9bcaUL, 0xbc8af663UL, 0x04ac801cUL,
3603   0x3ff3fa45UL, 0xf956f9f3UL, 0xbc97d023UL, 0xc367a024UL, 0x3ff40822UL,
3604   0xb6f4d048UL, 0x3c8bddf8UL, 0x21f72e2aUL, 0x3ff4160aUL, 0x1c309278UL,
3605   0xbc5ef369UL, 0x2709468aUL, 0x3ff423fbUL, 0xc0b314ddUL, 0xbc98462dUL,
3606   0xd950a897UL, 0x3ff431f5UL, 0xe35f7999UL, 0xbc81c7ddUL, 0x3f84b9d4UL,
3607   0x3ff43ffaUL, 0x9704c003UL, 0x3c8880beUL, 0x6061892dUL, 0x3ff44e08UL,
3608   0x04ef80d0UL, 0x3c489b7aUL, 0x42a7d232UL, 0x3ff45c20UL, 0x82fb1f8eUL,
3609   0xbc686419UL, 0xed1d0057UL, 0x3ff46a41UL, 0xd1648a76UL, 0x3c9c944bUL,
3610   0x668b3237UL, 0x3ff4786dUL, 0xed445733UL, 0xbc9c20f0UL, 0xb5c13cd0UL,
3611   0x3ff486a2UL, 0xb69062f0UL, 0x3c73c1a3UL, 0xe192aed2UL, 0x3ff494e1UL,
3612   0x5e499ea0UL, 0xbc83b289UL, 0xf0d7d3deUL, 0x3ff4a32aUL, 0xf3d1be56UL,
3613   0x3c99cb62UL, 0xea6db7d7UL, 0x3ff4b17dUL, 0x7f2897f0UL, 0xbc8125b8UL,
3614   0xd5362a27UL, 0x3ff4bfdaUL, 0xafec42e2UL, 0x3c7d4397UL, 0xb817c114UL,
3615   0x3ff4ce41UL, 0x690abd5dUL, 0x3c905e29UL, 0x99fddd0dUL, 0x3ff4dcb2UL,
3616   0xbc6a7833UL, 0x3c98ecdbUL, 0x81d8abffUL, 0x3ff4eb2dUL, 0x2e5d7a52UL,
3617   0xbc95257dUL, 0x769d2ca7UL, 0x3ff4f9b2UL, 0xd25957e3UL, 0xbc94b309UL,
3618   0x7f4531eeUL, 0x3ff50841UL, 0x49b7465fUL, 0x3c7a249bUL, 0xa2cf6642UL,
3619   0x3ff516daUL, 0x69bd93efUL, 0xbc8f7685UL, 0xe83f4eefUL, 0x3ff5257dUL,
3620   0x43efef71UL, 0xbc7c998dUL, 0x569d4f82UL, 0x3ff5342bUL, 0x1db13cadUL,
3621   0xbc807abeUL, 0xf4f6ad27UL, 0x3ff542e2UL, 0x192d5f7eUL, 0x3c87926dUL,
3622   0xca5d920fUL, 0x3ff551a4UL, 0xefede59bUL, 0xbc8d689cUL, 0xdde910d2UL,
3623   0x3ff56070UL, 0x168eebf0UL, 0xbc90fb6eUL, 0x36b527daUL, 0x3ff56f47UL,
3624   0x011d93adUL, 0x3c99bb2cUL, 0xdbe2c4cfUL, 0x3ff57e27UL, 0x8a57b9c4UL,
3625   0xbc90b98cUL, 0xd497c7fdUL, 0x3ff58d12UL, 0x5b9a1de8UL, 0x3c8295e1UL,
3626   0x27ff07ccUL, 0x3ff59c08UL, 0xe467e60fUL, 0xbc97e2ceUL, 0xdd485429UL,
3627   0x3ff5ab07UL, 0x054647adUL, 0x3c96324cUL, 0xfba87a03UL, 0x3ff5ba11UL,
3628   0x4c233e1aUL, 0xbc9b77a1UL, 0x8a5946b7UL, 0x3ff5c926UL, 0x816986a2UL,
3629   0x3c3c4b1bUL, 0x90998b93UL, 0x3ff5d845UL, 0xa8b45643UL, 0xbc9cd6a7UL,
3630   0x15ad2148UL, 0x3ff5e76fUL, 0x3080e65eUL, 0x3c9ba6f9UL, 0x20dceb71UL,
3631   0x3ff5f6a3UL, 0xe3cdcf92UL, 0xbc89eaddUL, 0xb976dc09UL, 0x3ff605e1UL,
3632   0x9b56de47UL, 0xbc93e242UL, 0xe6cdf6f4UL, 0x3ff6152aUL, 0x4ab84c27UL,
3633   0x3c9e4b3eUL, 0xb03a5585UL, 0x3ff6247eUL, 0x7e40b497UL, 0xbc9383c1UL,
3634   0x1d1929fdUL, 0x3ff633ddUL, 0xbeb964e5UL, 0x3c984710UL, 0x34ccc320UL,
3635   0x3ff64346UL, 0x759d8933UL, 0xbc8c483cUL, 0xfebc8fb7UL, 0x3ff652b9UL,
3636   0xc9a73e09UL, 0xbc9ae3d5UL, 0x82552225UL, 0x3ff66238UL, 0x87591c34UL,
3637   0xbc9bb609UL, 0xc70833f6UL, 0x3ff671c1UL, 0x586c6134UL, 0xbc8e8732UL,
3638   0xd44ca973UL, 0x3ff68155UL, 0x44f73e65UL, 0x3c6038aeUL, 0xb19e9538UL,
3639   0x3ff690f4UL, 0x9aeb445dUL, 0x3c8804bdUL, 0x667f3bcdUL, 0x3ff6a09eUL,
3640   0x13b26456UL, 0xbc9bdd34UL, 0xfa75173eUL, 0x3ff6b052UL, 0x2c9a9d0eUL,
3641   0x3c7a38f5UL, 0x750bdabfUL, 0x3ff6c012UL, 0x67ff0b0dUL, 0xbc728956UL,
3642   0xddd47645UL, 0x3ff6cfdcUL, 0xb6f17309UL, 0x3c9c7aa9UL, 0x3c651a2fUL,
3643   0x3ff6dfb2UL, 0x683c88abUL, 0xbc6bbe3aUL, 0x98593ae5UL, 0x3ff6ef92UL,
3644   0x9e1ac8b2UL, 0xbc90b974UL, 0xf9519484UL, 0x3ff6ff7dUL, 0x25860ef6UL,
3645   0xbc883c0fUL, 0x66f42e87UL, 0x3ff70f74UL, 0xd45aa65fUL, 0x3c59d644UL,
3646   0xe8ec5f74UL, 0x3ff71f75UL, 0x86887a99UL, 0xbc816e47UL, 0x86ead08aUL,
3647   0x3ff72f82UL, 0x2cd62c72UL, 0xbc920aa0UL, 0x48a58174UL, 0x3ff73f9aUL,
3648   0x6c65d53cUL, 0xbc90a8d9UL, 0x35d7cbfdUL, 0x3ff74fbdUL, 0x618a6e1cUL,
3649   0x3c9047fdUL, 0x564267c9UL, 0x3ff75febUL, 0x57316dd3UL, 0xbc902459UL,
3650   0xb1ab6e09UL, 0x3ff77024UL, 0x169147f8UL, 0x3c9b7877UL, 0x4fde5d3fUL,
3651   0x3ff78069UL, 0x0a02162dUL, 0x3c9866b8UL, 0x38ac1cf6UL, 0x3ff790b9UL,
3652   0x62aadd3eUL, 0x3c9349a8UL, 0x73eb0187UL, 0x3ff7a114UL, 0xee04992fUL,
3653   0xbc841577UL, 0x0976cfdbUL, 0x3ff7b17bUL, 0x8468dc88UL, 0xbc9bebb5UL,
3654   0x0130c132UL, 0x3ff7c1edUL, 0xd1164dd6UL, 0x3c9f124cUL, 0x62ff86f0UL,
3655   0x3ff7d26aUL, 0xfb72b8b4UL, 0x3c91bddbUL, 0x36cf4e62UL, 0x3ff7e2f3UL,
3656   0xba15797eUL, 0x3c705d02UL, 0x8491c491UL, 0x3ff7f387UL, 0xcf9311aeUL,
3657   0xbc807f11UL, 0x543e1a12UL, 0x3ff80427UL, 0x626d972bUL, 0xbc927c86UL,
3658   0xadd106d9UL, 0x3ff814d2UL, 0x0d151d4dUL, 0x3c946437UL, 0x994cce13UL,
3659   0x3ff82589UL, 0xd41532d8UL, 0xbc9d4c1dUL, 0x1eb941f7UL, 0x3ff8364cUL,
3660   0x31df2bd5UL, 0x3c999b9aUL, 0x4623c7adUL, 0x3ff8471aUL, 0xa341cdfbUL,
3661   0xbc88d684UL, 0x179f5b21UL, 0x3ff857f4UL, 0xf8b216d0UL, 0xbc5ba748UL,
3662   0x9b4492edUL, 0x3ff868d9UL, 0x9bd4f6baUL, 0xbc9fc6f8UL, 0xd931a436UL,
3663   0x3ff879caUL, 0xd2db47bdUL, 0x3c85d2d7UL, 0xd98a6699UL, 0x3ff88ac7UL,
3664   0xf37cb53aUL, 0x3c9994c2UL, 0xa478580fUL, 0x3ff89bd0UL, 0x4475202aUL,
3665   0x3c9d5395UL, 0x422aa0dbUL, 0x3ff8ace5UL, 0x56864b27UL, 0x3c96e9f1UL,
3666   0xbad61778UL, 0x3ff8be05UL, 0xfc43446eUL, 0x3c9ecb5eUL, 0x16b5448cUL,
3667   0x3ff8cf32UL, 0x32e9e3aaUL, 0xbc70d55eUL, 0x5e0866d9UL, 0x3ff8e06aUL,
3668   0x6fc9b2e6UL, 0xbc97114aUL, 0x99157736UL, 0x3ff8f1aeUL, 0xa2e3976cUL,
3669   0x3c85cc13UL, 0xd0282c8aUL, 0x3ff902feUL, 0x85fe3fd2UL, 0x3c9592caUL,
3670   0x0b91ffc6UL, 0x3ff9145bUL, 0x2e582524UL, 0xbc9dd679UL, 0x53aa2fe2UL,
3671   0x3ff925c3UL, 0xa639db7fUL, 0xbc83455fUL, 0xb0cdc5e5UL, 0x3ff93737UL,
3672   0x81b57ebcUL, 0xbc675fc7UL, 0x2b5f98e5UL, 0x3ff948b8UL, 0x797d2d99UL,
3673   0xbc8dc3d6UL, 0xcbc8520fUL, 0x3ff95a44UL, 0x96a5f039UL, 0xbc764b7cUL,
3674   0x9a7670b3UL, 0x3ff96bddUL, 0x7f19c896UL, 0xbc5ba596UL, 0x9fde4e50UL,
3675   0x3ff97d82UL, 0x7c1b85d1UL, 0xbc9d185bUL, 0xe47a22a2UL, 0x3ff98f33UL,
3676   0xa24c78ecUL, 0x3c7cabdaUL, 0x70ca07baUL, 0x3ff9a0f1UL, 0x91cee632UL,
3677   0xbc9173bdUL, 0x4d53fe0dUL, 0x3ff9b2bbUL, 0x4df6d518UL, 0xbc9dd84eUL,
3678   0x82a3f090UL, 0x3ff9c491UL, 0xb071f2beUL, 0x3c7c7c46UL, 0x194bb8d5UL,
3679   0x3ff9d674UL, 0xa3dd8233UL, 0xbc9516beUL, 0x19e32323UL, 0x3ff9e863UL,
3680   0x78e64c6eUL, 0x3c7824caUL, 0x8d07f29eUL, 0x3ff9fa5eUL, 0xaaf1faceUL,
3681   0xbc84a9ceUL, 0x7b5de565UL, 0x3ffa0c66UL, 0x5d1cd533UL, 0xbc935949UL,
3682   0xed8eb8bbUL, 0x3ffa1e7aUL, 0xee8be70eUL, 0x3c9c6618UL, 0xec4a2d33UL,
3683   0x3ffa309bUL, 0x7ddc36abUL, 0x3c96305cUL, 0x80460ad8UL, 0x3ffa42c9UL,
3684   0x589fb120UL, 0xbc9aa780UL, 0xb23e255dUL, 0x3ffa5503UL, 0xdb8d41e1UL,
3685   0xbc9d2f6eUL, 0x8af46052UL, 0x3ffa674aUL, 0x30670366UL, 0x3c650f56UL,
3686   0x1330b358UL, 0x3ffa799eUL, 0xcac563c7UL, 0x3c9bcb7eUL, 0x53c12e59UL,
3687   0x3ffa8bfeUL, 0xb2ba15a9UL, 0xbc94f867UL, 0x5579fdbfUL, 0x3ffa9e6bUL,
3688   0x0ef7fd31UL, 0x3c90fac9UL, 0x21356ebaUL, 0x3ffab0e5UL, 0xdae94545UL,
3689   0x3c889c31UL, 0xbfd3f37aUL, 0x3ffac36bUL, 0xcae76cd0UL, 0xbc8f9234UL,
3690   0x3a3c2774UL, 0x3ffad5ffUL, 0xb6b1b8e5UL, 0x3c97ef3bUL, 0x995ad3adUL,
3691   0x3ffae89fUL, 0x345dcc81UL, 0x3c97a1cdUL, 0xe622f2ffUL, 0x3ffafb4cUL,
3692   0x0f315ecdUL, 0xbc94b2fcUL, 0x298db666UL, 0x3ffb0e07UL, 0x4c80e425UL,
3693   0xbc9bdef5UL, 0x6c9a8952UL, 0x3ffb20ceUL, 0x4a0756ccUL, 0x3c94dd02UL,
3694   0xb84f15fbUL, 0x3ffb33a2UL, 0x3084d708UL, 0xbc62805eUL, 0x15b749b1UL,
3695   0x3ffb4684UL, 0xe9df7c90UL, 0xbc7f763dUL, 0x8de5593aUL, 0x3ffb5972UL,
3696   0xbbba6de3UL, 0xbc9c71dfUL, 0x29f1c52aUL, 0x3ffb6c6eUL, 0x52883f6eUL,
3697   0x3c92a8f3UL, 0xf2fb5e47UL, 0x3ffb7f76UL, 0x7e54ac3bUL, 0xbc75584fUL,
3698   0xf22749e4UL, 0x3ffb928cUL, 0x54cb65c6UL, 0xbc9b7216UL, 0x30a1064aUL,
3699   0x3ffba5b0UL, 0x0e54292eUL, 0xbc9efcd3UL, 0xb79a6f1fUL, 0x3ffbb8e0UL,
3700   0xc9696205UL, 0xbc3f52d1UL, 0x904bc1d2UL, 0x3ffbcc1eUL, 0x7a2d9e84UL,
3701   0x3c823dd0UL, 0xc3f3a207UL, 0x3ffbdf69UL, 0x60ea5b53UL, 0xbc3c2623UL,
3702   0x5bd71e09UL, 0x3ffbf2c2UL, 0x3f6b9c73UL, 0xbc9efdcaUL, 0x6141b33dUL,
3703   0x3ffc0628UL, 0xa1fbca34UL, 0xbc8d8a5aUL, 0xdd85529cUL, 0x3ffc199bUL,
3704   0x895048ddUL, 0x3c811065UL, 0xd9fa652cUL, 0x3ffc2d1cUL, 0x17c8a5d7UL,
3705   0xbc96e516UL, 0x5fffd07aUL, 0x3ffc40abUL, 0xe083c60aUL, 0x3c9b4537UL,
3706   0x78fafb22UL, 0x3ffc5447UL, 0x2493b5afUL, 0x3c912f07UL, 0x2e57d14bUL,
3707   0x3ffc67f1UL, 0xff483cadUL, 0x3c92884dUL, 0x8988c933UL, 0x3ffc7ba8UL,
3708   0xbe255559UL, 0xbc8e76bbUL, 0x9406e7b5UL, 0x3ffc8f6dUL, 0x48805c44UL,
3709   0x3c71acbcUL, 0x5751c4dbUL, 0x3ffca340UL, 0xd10d08f5UL, 0xbc87f2beUL,
3710   0xdcef9069UL, 0x3ffcb720UL, 0xd1e949dbUL, 0x3c7503cbUL, 0x2e6d1675UL,
3711   0x3ffccb0fUL, 0x86009092UL, 0xbc7d220fUL, 0x555dc3faUL, 0x3ffcdf0bUL,
3712   0x53829d72UL, 0xbc8dd83bUL, 0x5b5bab74UL, 0x3ffcf315UL, 0xb86dff57UL,
3713   0xbc9a08e9UL, 0x4a07897cUL, 0x3ffd072dUL, 0x43797a9cUL, 0xbc9cbc37UL,
3714   0x2b08c968UL, 0x3ffd1b53UL, 0x219a36eeUL, 0x3c955636UL, 0x080d89f2UL,
3715   0x3ffd2f87UL, 0x719d8578UL, 0xbc9d487bUL, 0xeacaa1d6UL, 0x3ffd43c8UL,
3716   0xbf5a1614UL, 0x3c93db53UL, 0xdcfba487UL, 0x3ffd5818UL, 0xd75b3707UL,
3717   0x3c82ed02UL, 0xe862e6d3UL, 0x3ffd6c76UL, 0x4a8165a0UL, 0x3c5fe87aUL,
3718   0x16c98398UL, 0x3ffd80e3UL, 0x8beddfe8UL, 0xbc911ec1UL, 0x71ff6075UL,
3719   0x3ffd955dUL, 0xbb9af6beUL, 0x3c9a052dUL, 0x03db3285UL, 0x3ffda9e6UL,
3720   0x696db532UL, 0x3c9c2300UL, 0xd63a8315UL, 0x3ffdbe7cUL, 0x926b8be4UL,
3721   0xbc9b76f1UL, 0xf301b460UL, 0x3ffdd321UL, 0x78f018c3UL, 0x3c92da57UL,
3722   0x641c0658UL, 0x3ffde7d5UL, 0x8e79ba8fUL, 0xbc9ca552UL, 0x337b9b5fUL,
3723   0x3ffdfc97UL, 0x4f184b5cUL, 0xbc91a5cdUL, 0x6b197d17UL, 0x3ffe1167UL,
3724   0xbd5c7f44UL, 0xbc72b529UL, 0x14f5a129UL, 0x3ffe2646UL, 0x817a1496UL,
3725   0xbc97b627UL, 0x3b16ee12UL, 0x3ffe3b33UL, 0x31fdc68bUL, 0xbc99f4a4UL,
3726   0xe78b3ff6UL, 0x3ffe502eUL, 0x80a9cc8fUL, 0x3c839e89UL, 0x24676d76UL,
3727   0x3ffe6539UL, 0x7522b735UL, 0xbc863ff8UL, 0xfbc74c83UL, 0x3ffe7a51UL,
3728   0xca0c8de2UL, 0x3c92d522UL, 0x77cdb740UL, 0x3ffe8f79UL, 0x80b054b1UL,
3729   0xbc910894UL, 0xa2a490daUL, 0x3ffea4afUL, 0x179c2893UL, 0xbc9e9c23UL,
3730   0x867cca6eUL, 0x3ffeb9f4UL, 0x2293e4f2UL, 0x3c94832fUL, 0x2d8e67f1UL,
3731   0x3ffecf48UL, 0xb411ad8cUL, 0xbc9c93f3UL, 0xa2188510UL, 0x3ffee4aaUL,
3732   0xa487568dUL, 0x3c91c68dUL, 0xee615a27UL, 0x3ffefa1bUL, 0x86a4b6b0UL,
3733   0x3c9dc7f4UL, 0x1cb6412aUL, 0x3fff0f9cUL, 0x65181d45UL, 0xbc932200UL,
3734   0x376bba97UL, 0x3fff252bUL, 0xbf0d8e43UL, 0x3c93a1a5UL, 0x48dd7274UL,
3735   0x3fff3ac9UL, 0x3ed837deUL, 0xbc795a5aUL, 0x5b6e4540UL, 0x3fff5076UL,
3736   0x2dd8a18bUL, 0x3c99d3e1UL, 0x798844f8UL, 0x3fff6632UL, 0x3539343eUL,
3737   0x3c9fa37bUL, 0xad9cbe14UL, 0x3fff7bfdUL, 0xd006350aUL, 0xbc9dbb12UL,
3738   0x02243c89UL, 0x3fff91d8UL, 0xa779f689UL, 0xbc612ea8UL, 0x819e90d8UL,
3739   0x3fffa7c1UL, 0xf3a5931eUL, 0x3c874853UL, 0x3692d514UL, 0x3fffbdbaUL,
3740   0x15098eb6UL, 0xbc796773UL, 0x2b8f71f1UL, 0x3fffd3c2UL, 0x966579e7UL,
3741   0x3c62eb74UL, 0x6b2a23d9UL, 0x3fffe9d9UL, 0x7442fde3UL, 0x3c74a603UL,
3742   0xe78a6731UL, 0x3f55d87fUL, 0xd704a0c0UL, 0x3fac6b08UL, 0x6fba4e77UL,
3743   0x3f83b2abUL, 0xff82c58fUL, 0x3fcebfbdUL, 0xfefa39efUL, 0x3fe62e42UL,
3744   0x00000000UL, 0x00000000UL, 0xfefa39efUL, 0x3fe62e42UL, 0xfefa39efUL,
3745   0xbfe62e42UL, 0xf8000000UL, 0xffffffffUL, 0xf8000000UL, 0xffffffffUL,
3746   0x00000000UL, 0x80000000UL, 0x00000000UL, 0x00000000UL
3747 
3748 };
3749 
3750 //registers,
3751 // input: xmm0, xmm1
3752 // scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
3753 //          eax, edx, ecx, ebx
3754 
3755 // Code generated by Intel C compiler for LIBM library
3756 
3757 void MacroAssembler::fast_pow(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp) {
3758   Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
3759   Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
3760   Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, L_2TAG_PACKET_10_0_2, L_2TAG_PACKET_11_0_2;
3761   Label L_2TAG_PACKET_12_0_2, L_2TAG_PACKET_13_0_2, L_2TAG_PACKET_14_0_2, L_2TAG_PACKET_15_0_2;
3762   Label L_2TAG_PACKET_16_0_2, L_2TAG_PACKET_17_0_2, L_2TAG_PACKET_18_0_2, L_2TAG_PACKET_19_0_2;
3763   Label L_2TAG_PACKET_20_0_2, L_2TAG_PACKET_21_0_2, L_2TAG_PACKET_22_0_2, L_2TAG_PACKET_23_0_2;
3764   Label L_2TAG_PACKET_24_0_2, L_2TAG_PACKET_25_0_2, L_2TAG_PACKET_26_0_2, L_2TAG_PACKET_27_0_2;
3765   Label L_2TAG_PACKET_28_0_2, L_2TAG_PACKET_29_0_2, L_2TAG_PACKET_30_0_2, L_2TAG_PACKET_31_0_2;
3766   Label L_2TAG_PACKET_32_0_2, L_2TAG_PACKET_33_0_2, L_2TAG_PACKET_34_0_2, L_2TAG_PACKET_35_0_2;
3767   Label L_2TAG_PACKET_36_0_2, L_2TAG_PACKET_37_0_2, L_2TAG_PACKET_38_0_2, L_2TAG_PACKET_39_0_2;
3768   Label L_2TAG_PACKET_40_0_2, L_2TAG_PACKET_41_0_2, L_2TAG_PACKET_42_0_2, L_2TAG_PACKET_43_0_2;
3769   Label L_2TAG_PACKET_44_0_2, L_2TAG_PACKET_45_0_2, L_2TAG_PACKET_46_0_2, L_2TAG_PACKET_47_0_2;
3770   Label L_2TAG_PACKET_48_0_2, L_2TAG_PACKET_49_0_2, L_2TAG_PACKET_50_0_2, L_2TAG_PACKET_51_0_2;
3771   Label L_2TAG_PACKET_52_0_2, L_2TAG_PACKET_53_0_2, L_2TAG_PACKET_54_0_2, L_2TAG_PACKET_55_0_2;
3772   Label L_2TAG_PACKET_56_0_2, L_2TAG_PACKET_57_0_2, L_2TAG_PACKET_58_0_2, start;
3773 
3774   assert_different_registers(tmp, eax, ecx, edx);
3775 
3776   address static_const_table_pow = (address)_static_const_table_pow;
3777 
3778   bind(start);
3779   subl(rsp, 120);
3780   movl(Address(rsp, 64), tmp);
3781   lea(tmp, ExternalAddress(static_const_table_pow));
3782   movsd(xmm0, Address(rsp, 128));
3783   movsd(xmm1, Address(rsp, 136));
3784   xorpd(xmm2, xmm2);
3785   movl(eax, 16368);
3786   pinsrw(xmm2, eax, 3);
3787   movl(ecx, 1069088768);
3788   movdl(xmm7, ecx);
3789   movsd(Address(rsp, 16), xmm1);
3790   xorpd(xmm1, xmm1);
3791   movl(edx, 30704);
3792   pinsrw(xmm1, edx, 3);
3793   movsd(Address(rsp, 8), xmm0);
3794   movdqu(xmm3, xmm0);
3795   movl(edx, 8192);
3796   movdl(xmm4, edx);
3797   movdqu(xmm6, Address(tmp, 8240));
3798   pextrw(eax, xmm0, 3);
3799   por(xmm0, xmm2);
3800   psllq(xmm0, 5);
3801   movsd(xmm2, Address(tmp, 8256));
3802   psrlq(xmm0, 34);
3803   movl(edx, eax);
3804   andl(edx, 32752);
3805   subl(edx, 16368);
3806   movl(ecx, edx);
3807   sarl(edx, 31);
3808   addl(ecx, edx);
3809   xorl(ecx, edx);
3810   rcpss(xmm0, xmm0);
3811   psllq(xmm3, 12);
3812   addl(ecx, 16);
3813   bsrl(ecx, ecx);
3814   psrlq(xmm3, 12);
3815   movl(Address(rsp, 24), rsi);
3816   subl(eax, 16);
3817   cmpl(eax, 32736);
3818   jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
3819   movl(rsi, 0);
3820 
3821   bind(L_2TAG_PACKET_1_0_2);
3822   mulss(xmm0, xmm7);
3823   movl(edx, -1);
3824   subl(ecx, 4);
3825   shll(edx);
3826   movdl(xmm5, edx);
3827   por(xmm3, xmm1);
3828   subl(eax, 16351);
3829   cmpl(eax, 1);
3830   jcc(Assembler::belowEqual, L_2TAG_PACKET_2_0_2);
3831   paddd(xmm0, xmm4);
3832   psllq(xmm5, 32);
3833   movdl(edx, xmm0);
3834   psllq(xmm0, 29);
3835   pand(xmm5, xmm3);
3836 
3837   bind(L_2TAG_PACKET_3_0_2);
3838   pand(xmm0, xmm6);
3839   subsd(xmm3, xmm5);
3840   subl(eax, 1);
3841   sarl(eax, 4);
3842   cvtsi2sdl(xmm7, eax);
3843   mulpd(xmm5, xmm0);
3844 
3845   bind(L_2TAG_PACKET_4_0_2);
3846   mulsd(xmm3, xmm0);
3847   movdqu(xmm1, Address(tmp, 8272));
3848   subsd(xmm5, xmm2);
3849   movdqu(xmm4, Address(tmp, 8288));
3850   movl(ecx, eax);
3851   sarl(eax, 31);
3852   addl(ecx, eax);
3853   xorl(eax, ecx);
3854   addl(eax, 1);
3855   bsrl(eax, eax);
3856   unpcklpd(xmm5, xmm3);
3857   movdqu(xmm6, Address(tmp, 8304));
3858   addsd(xmm3, xmm5);
3859   andl(edx, 16760832);
3860   shrl(edx, 10);
3861   addpd(xmm5, Address(tmp, edx, Address::times_1, -3616));
3862   movdqu(xmm0, Address(tmp, 8320));
3863   pshufd(xmm2, xmm3, 68);
3864   mulsd(xmm3, xmm3);
3865   mulpd(xmm1, xmm2);
3866   mulpd(xmm4, xmm2);
3867   addsd(xmm5, xmm7);
3868   mulsd(xmm2, xmm3);
3869   addpd(xmm6, xmm1);
3870   mulsd(xmm3, xmm3);
3871   addpd(xmm0, xmm4);
3872   movsd(xmm1, Address(rsp, 16));
3873   movzwl(ecx, Address(rsp, 22));
3874   pshufd(xmm7, xmm5, 238);
3875   movsd(xmm4, Address(tmp, 8368));
3876   mulpd(xmm6, xmm2);
3877   pshufd(xmm3, xmm3, 68);
3878   mulpd(xmm0, xmm2);
3879   shll(eax, 4);
3880   subl(eax, 15872);
3881   andl(ecx, 32752);
3882   addl(eax, ecx);
3883   mulpd(xmm3, xmm6);
3884   cmpl(eax, 624);
3885   jcc(Assembler::aboveEqual, L_2TAG_PACKET_5_0_2);
3886   xorpd(xmm6, xmm6);
3887   movl(edx, 17080);
3888   pinsrw(xmm6, edx, 3);
3889   movdqu(xmm2, xmm1);
3890   pand(xmm4, xmm1);
3891   subsd(xmm1, xmm4);
3892   mulsd(xmm4, xmm5);
3893   addsd(xmm0, xmm7);
3894   mulsd(xmm1, xmm5);
3895   movdqu(xmm7, xmm6);
3896   addsd(xmm6, xmm4);
3897   addpd(xmm3, xmm0);
3898   movdl(edx, xmm6);
3899   subsd(xmm6, xmm7);
3900   pshufd(xmm0, xmm3, 238);
3901   subsd(xmm4, xmm6);
3902   addsd(xmm0, xmm3);
3903   movl(ecx, edx);
3904   andl(edx, 255);
3905   addl(edx, edx);
3906   movdqu(xmm5, Address(tmp, edx, Address::times_8, 8384));
3907   addsd(xmm4, xmm1);
3908   mulsd(xmm2, xmm0);
3909   movdqu(xmm7, Address(tmp, 12480));
3910   movdqu(xmm3, Address(tmp, 12496));
3911   shll(ecx, 12);
3912   xorl(ecx, rsi);
3913   andl(ecx, -1048576);
3914   movdl(xmm6, ecx);
3915   addsd(xmm2, xmm4);
3916   movsd(xmm1, Address(tmp, 12512));
3917   pshufd(xmm0, xmm2, 68);
3918   pshufd(xmm4, xmm2, 68);
3919   mulpd(xmm0, xmm0);
3920   movl(rsi, Address(rsp, 24));
3921   mulpd(xmm7, xmm4);
3922   pshufd(xmm6, xmm6, 17);
3923   mulsd(xmm1, xmm2);
3924   mulsd(xmm0, xmm0);
3925   paddd(xmm5, xmm6);
3926   addpd(xmm3, xmm7);
3927   mulsd(xmm1, xmm5);
3928   pshufd(xmm6, xmm5, 238);
3929   mulpd(xmm0, xmm3);
3930   addsd(xmm1, xmm6);
3931   pshufd(xmm3, xmm0, 238);
3932   mulsd(xmm0, xmm5);
3933   mulsd(xmm3, xmm5);
3934   addsd(xmm0, xmm1);
3935   addsd(xmm0, xmm3);
3936   addsd(xmm0, xmm5);
3937   movsd(Address(rsp, 0), xmm0);
3938   fld_d(Address(rsp, 0));
3939   jmp(L_2TAG_PACKET_6_0_2);
3940 
3941   bind(L_2TAG_PACKET_7_0_2);
3942   movsd(xmm0, Address(rsp, 128));
3943   movsd(xmm1, Address(rsp, 136));
3944   mulsd(xmm0, xmm1);
3945   movsd(Address(rsp, 0), xmm0);
3946   fld_d(Address(rsp, 0));
3947   jmp(L_2TAG_PACKET_6_0_2);
3948 
3949   bind(L_2TAG_PACKET_0_0_2);
3950   addl(eax, 16);
3951   movl(edx, 32752);
3952   andl(edx, eax);
3953   cmpl(edx, 32752);
3954   jcc(Assembler::equal, L_2TAG_PACKET_8_0_2);
3955   testl(eax, 32768);
3956   jcc(Assembler::notEqual, L_2TAG_PACKET_9_0_2);
3957 
3958   bind(L_2TAG_PACKET_10_0_2);
3959   movl(ecx, Address(rsp, 16));
3960   xorl(edx, edx);
3961   testl(ecx, ecx);
3962   movl(ecx, 1);
3963   cmovl(Assembler::notEqual, edx, ecx);
3964   orl(edx, Address(rsp, 20));
3965   cmpl(edx, 1072693248);
3966   jcc(Assembler::equal, L_2TAG_PACKET_7_0_2);
3967   movsd(xmm0, Address(rsp, 8));
3968   movsd(xmm3, Address(rsp, 8));
3969   movdl(edx, xmm3);
3970   psrlq(xmm3, 32);
3971   movdl(ecx, xmm3);
3972   orl(edx, ecx);
3973   cmpl(edx, 0);
3974   jcc(Assembler::equal, L_2TAG_PACKET_11_0_2);
3975   xorpd(xmm3, xmm3);
3976   movl(eax, 18416);
3977   pinsrw(xmm3, eax, 3);
3978   mulsd(xmm0, xmm3);
3979   xorpd(xmm2, xmm2);
3980   movl(eax, 16368);
3981   pinsrw(xmm2, eax, 3);
3982   movdqu(xmm3, xmm0);
3983   pextrw(eax, xmm0, 3);
3984   por(xmm0, xmm2);
3985   movl(ecx, 18416);
3986   psllq(xmm0, 5);
3987   movsd(xmm2, Address(tmp, 8256));
3988   psrlq(xmm0, 34);
3989   rcpss(xmm0, xmm0);
3990   psllq(xmm3, 12);
3991   movdqu(xmm6, Address(tmp, 8240));
3992   psrlq(xmm3, 12);
3993   mulss(xmm0, xmm7);
3994   movl(edx, -1024);
3995   movdl(xmm5, edx);
3996   por(xmm3, xmm1);
3997   paddd(xmm0, xmm4);
3998   psllq(xmm5, 32);
3999   movdl(edx, xmm0);
4000   psllq(xmm0, 29);
4001   pand(xmm5, xmm3);
4002   movl(rsi, 0);
4003   pand(xmm0, xmm6);
4004   subsd(xmm3, xmm5);
4005   andl(eax, 32752);
4006   subl(eax, 18416);
4007   sarl(eax, 4);
4008   cvtsi2sdl(xmm7, eax);
4009   mulpd(xmm5, xmm0);
4010   jmp(L_2TAG_PACKET_4_0_2);
4011 
4012   bind(L_2TAG_PACKET_12_0_2);
4013   movl(ecx, Address(rsp, 16));
4014   xorl(edx, edx);
4015   testl(ecx, ecx);
4016   movl(ecx, 1);
4017   cmovl(Assembler::notEqual, edx, ecx);
4018   orl(edx, Address(rsp, 20));
4019   cmpl(edx, 1072693248);
4020   jcc(Assembler::equal, L_2TAG_PACKET_7_0_2);
4021   movsd(xmm0, Address(rsp, 8));
4022   movsd(xmm3, Address(rsp, 8));
4023   movdl(edx, xmm3);
4024   psrlq(xmm3, 32);
4025   movdl(ecx, xmm3);
4026   orl(edx, ecx);
4027   cmpl(edx, 0);
4028   jcc(Assembler::equal, L_2TAG_PACKET_11_0_2);
4029   xorpd(xmm3, xmm3);
4030   movl(eax, 18416);
4031   pinsrw(xmm3, eax, 3);
4032   mulsd(xmm0, xmm3);
4033   xorpd(xmm2, xmm2);
4034   movl(eax, 16368);
4035   pinsrw(xmm2, eax, 3);
4036   movdqu(xmm3, xmm0);
4037   pextrw(eax, xmm0, 3);
4038   por(xmm0, xmm2);
4039   movl(ecx, 18416);
4040   psllq(xmm0, 5);
4041   movsd(xmm2, Address(tmp, 8256));
4042   psrlq(xmm0, 34);
4043   rcpss(xmm0, xmm0);
4044   psllq(xmm3, 12);
4045   movdqu(xmm6, Address(tmp, 8240));
4046   psrlq(xmm3, 12);
4047   mulss(xmm0, xmm7);
4048   movl(edx, -1024);
4049   movdl(xmm5, edx);
4050   por(xmm3, xmm1);
4051   paddd(xmm0, xmm4);
4052   psllq(xmm5, 32);
4053   movdl(edx, xmm0);
4054   psllq(xmm0, 29);
4055   pand(xmm5, xmm3);
4056   movl(rsi, INT_MIN);
4057   pand(xmm0, xmm6);
4058   subsd(xmm3, xmm5);
4059   andl(eax, 32752);
4060   subl(eax, 18416);
4061   sarl(eax, 4);
4062   cvtsi2sdl(xmm7, eax);
4063   mulpd(xmm5, xmm0);
4064   jmp(L_2TAG_PACKET_4_0_2);
4065 
4066   bind(L_2TAG_PACKET_5_0_2);
4067   cmpl(eax, 0);
4068   jcc(Assembler::less, L_2TAG_PACKET_13_0_2);
4069   cmpl(eax, 752);
4070   jcc(Assembler::aboveEqual, L_2TAG_PACKET_14_0_2);
4071 
4072   bind(L_2TAG_PACKET_15_0_2);
4073   addsd(xmm0, xmm7);
4074   movsd(xmm2, Address(tmp, 12544));
4075   addpd(xmm3, xmm0);
4076   xorpd(xmm6, xmm6);
4077   movl(eax, 17080);
4078   pinsrw(xmm6, eax, 3);
4079   pshufd(xmm0, xmm3, 238);
4080   addsd(xmm0, xmm3);
4081   movdqu(xmm3, xmm5);
4082   addsd(xmm5, xmm0);
4083   movdqu(xmm4, xmm2);
4084   subsd(xmm3, xmm5);
4085   movdqu(xmm7, xmm5);
4086   pand(xmm5, xmm2);
4087   movdqu(xmm2, xmm1);
4088   pand(xmm4, xmm1);
4089   subsd(xmm7, xmm5);
4090   addsd(xmm0, xmm3);
4091   subsd(xmm1, xmm4);
4092   mulsd(xmm4, xmm5);
4093   addsd(xmm0, xmm7);
4094   mulsd(xmm2, xmm0);
4095   movdqu(xmm7, xmm6);
4096   mulsd(xmm1, xmm5);
4097   addsd(xmm6, xmm4);
4098   movdl(eax, xmm6);
4099   subsd(xmm6, xmm7);
4100   addsd(xmm2, xmm1);
4101   movdqu(xmm7, Address(tmp, 12480));
4102   movdqu(xmm3, Address(tmp, 12496));
4103   subsd(xmm4, xmm6);
4104   pextrw(edx, xmm6, 3);
4105   movl(ecx, eax);
4106   andl(eax, 255);
4107   addl(eax, eax);
4108   movdqu(xmm5, Address(tmp, eax, Address::times_8, 8384));
4109   addsd(xmm2, xmm4);
4110   sarl(ecx, 8);
4111   movl(eax, ecx);
4112   sarl(ecx, 1);
4113   subl(eax, ecx);
4114   shll(ecx, 20);
4115   xorl(ecx, rsi);
4116   movdl(xmm6, ecx);
4117   movsd(xmm1, Address(tmp, 12512));
4118   andl(edx, 32767);
4119   cmpl(edx, 16529);
4120   jcc(Assembler::above, L_2TAG_PACKET_14_0_2);
4121   pshufd(xmm0, xmm2, 68);
4122   pshufd(xmm4, xmm2, 68);
4123   mulpd(xmm0, xmm0);
4124   mulpd(xmm7, xmm4);
4125   pshufd(xmm6, xmm6, 17);
4126   mulsd(xmm1, xmm2);
4127   mulsd(xmm0, xmm0);
4128   paddd(xmm5, xmm6);
4129   addpd(xmm3, xmm7);
4130   mulsd(xmm1, xmm5);
4131   pshufd(xmm6, xmm5, 238);
4132   mulpd(xmm0, xmm3);
4133   addsd(xmm1, xmm6);
4134   pshufd(xmm3, xmm0, 238);
4135   mulsd(xmm0, xmm5);
4136   mulsd(xmm3, xmm5);
4137   shll(eax, 4);
4138   xorpd(xmm4, xmm4);
4139   addl(eax, 16368);
4140   pinsrw(xmm4, eax, 3);
4141   addsd(xmm0, xmm1);
4142   movl(rsi, Address(rsp, 24));
4143   addsd(xmm0, xmm3);
4144   movdqu(xmm1, xmm0);
4145   addsd(xmm0, xmm5);
4146   mulsd(xmm0, xmm4);
4147   pextrw(eax, xmm0, 3);
4148   andl(eax, 32752);
4149   jcc(Assembler::equal, L_2TAG_PACKET_16_0_2);
4150   cmpl(eax, 32752);
4151   jcc(Assembler::equal, L_2TAG_PACKET_17_0_2);
4152 
4153   bind(L_2TAG_PACKET_18_0_2);
4154   movsd(Address(rsp, 0), xmm0);
4155   fld_d(Address(rsp, 0));
4156   jmp(L_2TAG_PACKET_6_0_2);
4157 
4158   bind(L_2TAG_PACKET_8_0_2);
4159   movsd(xmm1, Address(rsp, 16));
4160   movsd(xmm0, Address(rsp, 8));
4161   movdqu(xmm2, xmm0);
4162   movdl(eax, xmm2);
4163   psrlq(xmm2, 20);
4164   movdl(edx, xmm2);
4165   orl(eax, edx);
4166   jcc(Assembler::equal, L_2TAG_PACKET_19_0_2);
4167   addsd(xmm0, xmm0);
4168   movdl(eax, xmm1);
4169   psrlq(xmm1, 32);
4170   movdl(edx, xmm1);
4171   movl(ecx, edx);
4172   addl(edx, edx);
4173   orl(eax, edx);
4174   jcc(Assembler::equal, L_2TAG_PACKET_20_0_2);
4175   jmp(L_2TAG_PACKET_18_0_2);
4176 
4177   bind(L_2TAG_PACKET_20_0_2);
4178   xorpd(xmm0, xmm0);
4179   movl(eax, 16368);
4180   pinsrw(xmm0, eax, 3);
4181   movl(edx, 29);
4182   jmp(L_2TAG_PACKET_21_0_2);
4183 
4184   bind(L_2TAG_PACKET_22_0_2);
4185   movsd(xmm0, Address(rsp, 16));
4186   addpd(xmm0, xmm0);
4187   jmp(L_2TAG_PACKET_18_0_2);
4188 
4189   bind(L_2TAG_PACKET_19_0_2);
4190   movdl(eax, xmm1);
4191   movdqu(xmm2, xmm1);
4192   psrlq(xmm1, 32);
4193   movdl(edx, xmm1);
4194   movl(ecx, edx);
4195   addl(edx, edx);
4196   orl(eax, edx);
4197   jcc(Assembler::equal, L_2TAG_PACKET_23_0_2);
4198   pextrw(eax, xmm2, 3);
4199   andl(eax, 32752);
4200   cmpl(eax, 32752);
4201   jcc(Assembler::notEqual, L_2TAG_PACKET_24_0_2);
4202   movdl(eax, xmm2);
4203   psrlq(xmm2, 20);
4204   movdl(edx, xmm2);
4205   orl(eax, edx);
4206   jcc(Assembler::notEqual, L_2TAG_PACKET_22_0_2);
4207 
4208   bind(L_2TAG_PACKET_24_0_2);
4209   pextrw(eax, xmm0, 3);
4210   testl(eax, 32768);
4211   jcc(Assembler::notEqual, L_2TAG_PACKET_25_0_2);
4212   testl(ecx, INT_MIN);
4213   jcc(Assembler::notEqual, L_2TAG_PACKET_26_0_2);
4214   jmp(L_2TAG_PACKET_18_0_2);
4215 
4216   bind(L_2TAG_PACKET_27_0_2);
4217   movsd(xmm1, Address(rsp, 16));
4218   movdl(eax, xmm1);
4219   testl(eax, 1);
4220   jcc(Assembler::notEqual, L_2TAG_PACKET_28_0_2);
4221   testl(eax, 2);
4222   jcc(Assembler::notEqual, L_2TAG_PACKET_29_0_2);
4223   jmp(L_2TAG_PACKET_28_0_2);
4224 
4225   bind(L_2TAG_PACKET_25_0_2);
4226   shrl(ecx, 20);
4227   andl(ecx, 2047);
4228   cmpl(ecx, 1075);
4229   jcc(Assembler::above, L_2TAG_PACKET_28_0_2);
4230   jcc(Assembler::equal, L_2TAG_PACKET_30_0_2);
4231   cmpl(ecx, 1074);
4232   jcc(Assembler::above, L_2TAG_PACKET_27_0_2);
4233   cmpl(ecx, 1023);
4234   jcc(Assembler::below, L_2TAG_PACKET_28_0_2);
4235   movsd(xmm1, Address(rsp, 16));
4236   movl(eax, 17208);
4237   xorpd(xmm3, xmm3);
4238   pinsrw(xmm3, eax, 3);
4239   movdqu(xmm4, xmm3);
4240   addsd(xmm3, xmm1);
4241   subsd(xmm4, xmm3);
4242   addsd(xmm1, xmm4);
4243   pextrw(eax, xmm1, 3);
4244   andl(eax, 32752);
4245   jcc(Assembler::notEqual, L_2TAG_PACKET_28_0_2);
4246   movdl(eax, xmm3);
4247   andl(eax, 1);
4248   jcc(Assembler::equal, L_2TAG_PACKET_28_0_2);
4249 
4250   bind(L_2TAG_PACKET_29_0_2);
4251   movsd(xmm1, Address(rsp, 16));
4252   pextrw(eax, xmm1, 3);
4253   andl(eax, 32768);
4254   jcc(Assembler::equal, L_2TAG_PACKET_18_0_2);
4255   xorpd(xmm0, xmm0);
4256   movl(eax, 32768);
4257   pinsrw(xmm0, eax, 3);
4258   jmp(L_2TAG_PACKET_18_0_2);
4259 
4260   bind(L_2TAG_PACKET_28_0_2);
4261   movsd(xmm1, Address(rsp, 16));
4262   pextrw(eax, xmm1, 3);
4263   andl(eax, 32768);
4264   jcc(Assembler::notEqual, L_2TAG_PACKET_26_0_2);
4265 
4266   bind(L_2TAG_PACKET_31_0_2);
4267   xorpd(xmm0, xmm0);
4268   movl(eax, 32752);
4269   pinsrw(xmm0, eax, 3);
4270   jmp(L_2TAG_PACKET_18_0_2);
4271 
4272   bind(L_2TAG_PACKET_30_0_2);
4273   movsd(xmm1, Address(rsp, 16));
4274   movdl(eax, xmm1);
4275   andl(eax, 1);
4276   jcc(Assembler::equal, L_2TAG_PACKET_28_0_2);
4277   jmp(L_2TAG_PACKET_29_0_2);
4278 
4279   bind(L_2TAG_PACKET_32_0_2);
4280   movdl(eax, xmm1);
4281   psrlq(xmm1, 20);
4282   movdl(edx, xmm1);
4283   orl(eax, edx);
4284   jcc(Assembler::equal, L_2TAG_PACKET_33_0_2);
4285   movsd(xmm0, Address(rsp, 16));
4286   addsd(xmm0, xmm0);
4287   jmp(L_2TAG_PACKET_18_0_2);
4288 
4289   bind(L_2TAG_PACKET_33_0_2);
4290   movsd(xmm0, Address(rsp, 8));
4291   pextrw(eax, xmm0, 3);
4292   cmpl(eax, 49136);
4293   jcc(Assembler::notEqual, L_2TAG_PACKET_34_0_2);
4294   movdl(ecx, xmm0);
4295   psrlq(xmm0, 20);
4296   movdl(edx, xmm0);
4297   orl(ecx, edx);
4298   jcc(Assembler::notEqual, L_2TAG_PACKET_34_0_2);
4299   xorpd(xmm0, xmm0);
4300   movl(eax, 32760);
4301   pinsrw(xmm0, eax, 3);
4302   jmp(L_2TAG_PACKET_18_0_2);
4303 
4304   bind(L_2TAG_PACKET_34_0_2);
4305   movsd(xmm1, Address(rsp, 16));
4306   andl(eax, 32752);
4307   subl(eax, 16368);
4308   pextrw(edx, xmm1, 3);
4309   xorpd(xmm0, xmm0);
4310   xorl(eax, edx);
4311   andl(eax, 32768);
4312   jcc(Assembler::notEqual, L_2TAG_PACKET_18_0_2);
4313   movl(ecx, 32752);
4314   pinsrw(xmm0, ecx, 3);
4315   jmp(L_2TAG_PACKET_18_0_2);
4316 
4317   bind(L_2TAG_PACKET_35_0_2);
4318   movdl(eax, xmm1);
4319   cmpl(edx, 17184);
4320   jcc(Assembler::above, L_2TAG_PACKET_36_0_2);
4321   testl(eax, 1);
4322   jcc(Assembler::notEqual, L_2TAG_PACKET_37_0_2);
4323   testl(eax, 2);
4324   jcc(Assembler::equal, L_2TAG_PACKET_38_0_2);
4325   jmp(L_2TAG_PACKET_39_0_2);
4326 
4327   bind(L_2TAG_PACKET_36_0_2);
4328   testl(eax, 1);
4329   jcc(Assembler::equal, L_2TAG_PACKET_38_0_2);
4330   jmp(L_2TAG_PACKET_39_0_2);
4331 
4332   bind(L_2TAG_PACKET_9_0_2);
4333   movsd(xmm2, Address(rsp, 8));
4334   movdl(eax, xmm2);
4335   psrlq(xmm2, 31);
4336   movdl(ecx, xmm2);
4337   orl(eax, ecx);
4338   jcc(Assembler::equal, L_2TAG_PACKET_11_0_2);
4339   movsd(xmm1, Address(rsp, 16));
4340   pextrw(edx, xmm1, 3);
4341   movdl(eax, xmm1);
4342   movdqu(xmm2, xmm1);
4343   psrlq(xmm2, 32);
4344   movdl(ecx, xmm2);
4345   addl(ecx, ecx);
4346   orl(ecx, eax);
4347   jcc(Assembler::equal, L_2TAG_PACKET_40_0_2);
4348   andl(edx, 32752);
4349   cmpl(edx, 32752);
4350   jcc(Assembler::equal, L_2TAG_PACKET_32_0_2);
4351   cmpl(edx, 17200);
4352   jcc(Assembler::above, L_2TAG_PACKET_38_0_2);
4353   cmpl(edx, 17184);
4354   jcc(Assembler::aboveEqual, L_2TAG_PACKET_35_0_2);
4355   cmpl(edx, 16368);
4356   jcc(Assembler::below, L_2TAG_PACKET_37_0_2);
4357   movl(eax, 17208);
4358   xorpd(xmm2, xmm2);
4359   pinsrw(xmm2, eax, 3);
4360   movdqu(xmm4, xmm2);
4361   addsd(xmm2, xmm1);
4362   subsd(xmm4, xmm2);
4363   addsd(xmm1, xmm4);
4364   pextrw(eax, xmm1, 3);
4365   andl(eax, 32767);
4366   jcc(Assembler::notEqual, L_2TAG_PACKET_37_0_2);
4367   movdl(eax, xmm2);
4368   andl(eax, 1);
4369   jcc(Assembler::equal, L_2TAG_PACKET_38_0_2);
4370 
4371   bind(L_2TAG_PACKET_39_0_2);
4372   xorpd(xmm1, xmm1);
4373   movl(edx, 30704);
4374   pinsrw(xmm1, edx, 3);
4375   movsd(xmm2, Address(tmp, 8256));
4376   movsd(xmm4, Address(rsp, 8));
4377   pextrw(eax, xmm4, 3);
4378   movl(edx, 8192);
4379   movdl(xmm4, edx);
4380   andl(eax, 32767);
4381   subl(eax, 16);
4382   jcc(Assembler::less, L_2TAG_PACKET_12_0_2);
4383   movl(edx, eax);
4384   andl(edx, 32752);
4385   subl(edx, 16368);
4386   movl(ecx, edx);
4387   sarl(edx, 31);
4388   addl(ecx, edx);
4389   xorl(ecx, edx);
4390   addl(ecx, 16);
4391   bsrl(ecx, ecx);
4392   movl(rsi, INT_MIN);
4393   jmp(L_2TAG_PACKET_1_0_2);
4394 
4395   bind(L_2TAG_PACKET_37_0_2);
4396   xorpd(xmm1, xmm1);
4397   movl(eax, 32752);
4398   pinsrw(xmm1, eax, 3);
4399   xorpd(xmm0, xmm0);
4400   mulsd(xmm0, xmm1);
4401   movl(edx, 28);
4402   jmp(L_2TAG_PACKET_21_0_2);
4403 
4404   bind(L_2TAG_PACKET_38_0_2);
4405   xorpd(xmm1, xmm1);
4406   movl(edx, 30704);
4407   pinsrw(xmm1, edx, 3);
4408   movsd(xmm2, Address(tmp, 8256));
4409   movsd(xmm4, Address(rsp, 8));
4410   pextrw(eax, xmm4, 3);
4411   movl(edx, 8192);
4412   movdl(xmm4, edx);
4413   andl(eax, 32767);
4414   subl(eax, 16);
4415   jcc(Assembler::less, L_2TAG_PACKET_10_0_2);
4416   movl(edx, eax);
4417   andl(edx, 32752);
4418   subl(edx, 16368);
4419   movl(ecx, edx);
4420   sarl(edx, 31);
4421   addl(ecx, edx);
4422   xorl(ecx, edx);
4423   addl(ecx, 16);
4424   bsrl(ecx, ecx);
4425   movl(rsi, 0);
4426   jmp(L_2TAG_PACKET_1_0_2);
4427 
4428   bind(L_2TAG_PACKET_23_0_2);
4429   xorpd(xmm0, xmm0);
4430   movl(eax, 16368);
4431   pinsrw(xmm0, eax, 3);
4432   jmp(L_2TAG_PACKET_18_0_2);
4433 
4434   bind(L_2TAG_PACKET_26_0_2);
4435   xorpd(xmm0, xmm0);
4436   jmp(L_2TAG_PACKET_18_0_2);
4437 
4438   bind(L_2TAG_PACKET_13_0_2);
4439   addl(eax, 384);
4440   cmpl(eax, 0);
4441   jcc(Assembler::less, L_2TAG_PACKET_41_0_2);
4442   mulsd(xmm5, xmm1);
4443   addsd(xmm0, xmm7);
4444   shrl(rsi, 31);
4445   addpd(xmm3, xmm0);
4446   pshufd(xmm0, xmm3, 238);
4447   addsd(xmm3, xmm0);
4448   movsd(xmm4, Address(tmp, rsi, Address::times_8, 12528));
4449   mulsd(xmm1, xmm3);
4450   xorpd(xmm0, xmm0);
4451   movl(eax, 16368);
4452   shll(rsi, 15);
4453   orl(eax, rsi);
4454   pinsrw(xmm0, eax, 3);
4455   addsd(xmm5, xmm1);
4456   movl(rsi, Address(rsp, 24));
4457   mulsd(xmm5, xmm4);
4458   addsd(xmm0, xmm5);
4459   jmp(L_2TAG_PACKET_18_0_2);
4460 
4461   bind(L_2TAG_PACKET_41_0_2);
4462   movl(rsi, Address(rsp, 24));
4463   xorpd(xmm0, xmm0);
4464   movl(eax, 16368);
4465   pinsrw(xmm0, eax, 3);
4466   jmp(L_2TAG_PACKET_18_0_2);
4467 
4468   bind(L_2TAG_PACKET_40_0_2);
4469   xorpd(xmm0, xmm0);
4470   movl(eax, 16368);
4471   pinsrw(xmm0, eax, 3);
4472   jmp(L_2TAG_PACKET_18_0_2);
4473 
4474   bind(L_2TAG_PACKET_42_0_2);
4475   xorpd(xmm0, xmm0);
4476   movl(eax, 16368);
4477   pinsrw(xmm0, eax, 3);
4478   movl(edx, 26);
4479   jmp(L_2TAG_PACKET_21_0_2);
4480 
4481   bind(L_2TAG_PACKET_11_0_2);
4482   movsd(xmm1, Address(rsp, 16));
4483   movdqu(xmm2, xmm1);
4484   pextrw(eax, xmm1, 3);
4485   andl(eax, 32752);
4486   cmpl(eax, 32752);
4487   jcc(Assembler::notEqual, L_2TAG_PACKET_43_0_2);
4488   movdl(eax, xmm2);
4489   psrlq(xmm2, 20);
4490   movdl(edx, xmm2);
4491   orl(eax, edx);
4492   jcc(Assembler::notEqual, L_2TAG_PACKET_22_0_2);
4493 
4494   bind(L_2TAG_PACKET_43_0_2);
4495   movdl(eax, xmm1);
4496   psrlq(xmm1, 32);
4497   movdl(edx, xmm1);
4498   movl(ecx, edx);
4499   addl(edx, edx);
4500   orl(eax, edx);
4501   jcc(Assembler::equal, L_2TAG_PACKET_42_0_2);
4502   shrl(edx, 21);
4503   cmpl(edx, 1075);
4504   jcc(Assembler::above, L_2TAG_PACKET_44_0_2);
4505   jcc(Assembler::equal, L_2TAG_PACKET_45_0_2);
4506   cmpl(edx, 1023);
4507   jcc(Assembler::below, L_2TAG_PACKET_44_0_2);
4508   movsd(xmm1, Address(rsp, 16));
4509   movl(eax, 17208);
4510   xorpd(xmm3, xmm3);
4511   pinsrw(xmm3, eax, 3);
4512   movdqu(xmm4, xmm3);
4513   addsd(xmm3, xmm1);
4514   subsd(xmm4, xmm3);
4515   addsd(xmm1, xmm4);
4516   pextrw(eax, xmm1, 3);
4517   andl(eax, 32752);
4518   jcc(Assembler::notEqual, L_2TAG_PACKET_44_0_2);
4519   movdl(eax, xmm3);
4520   andl(eax, 1);
4521   jcc(Assembler::equal, L_2TAG_PACKET_44_0_2);
4522 
4523   bind(L_2TAG_PACKET_46_0_2);
4524   movsd(xmm0, Address(rsp, 8));
4525   testl(ecx, INT_MIN);
4526   jcc(Assembler::notEqual, L_2TAG_PACKET_47_0_2);
4527   jmp(L_2TAG_PACKET_18_0_2);
4528 
4529   bind(L_2TAG_PACKET_45_0_2);
4530   movsd(xmm1, Address(rsp, 16));
4531   movdl(eax, xmm1);
4532   testl(eax, 1);
4533   jcc(Assembler::notEqual, L_2TAG_PACKET_46_0_2);
4534 
4535   bind(L_2TAG_PACKET_44_0_2);
4536   testl(ecx, INT_MIN);
4537   jcc(Assembler::equal, L_2TAG_PACKET_26_0_2);
4538   xorpd(xmm0, xmm0);
4539 
4540   bind(L_2TAG_PACKET_47_0_2);
4541   movl(eax, 16368);
4542   xorpd(xmm1, xmm1);
4543   pinsrw(xmm1, eax, 3);
4544   divsd(xmm1, xmm0);
4545   movdqu(xmm0, xmm1);
4546   movl(edx, 27);
4547   jmp(L_2TAG_PACKET_21_0_2);
4548 
4549   bind(L_2TAG_PACKET_14_0_2);
4550   movsd(xmm2, Address(rsp, 8));
4551   movsd(xmm6, Address(rsp, 16));
4552   pextrw(eax, xmm2, 3);
4553   pextrw(edx, xmm6, 3);
4554   movl(ecx, 32752);
4555   andl(ecx, edx);
4556   cmpl(ecx, 32752);
4557   jcc(Assembler::equal, L_2TAG_PACKET_48_0_2);
4558   andl(eax, 32752);
4559   subl(eax, 16368);
4560   xorl(edx, eax);
4561   testl(edx, 32768);
4562   jcc(Assembler::notEqual, L_2TAG_PACKET_49_0_2);
4563 
4564   bind(L_2TAG_PACKET_50_0_2);
4565   movl(eax, 32736);
4566   pinsrw(xmm0, eax, 3);
4567   shrl(rsi, 16);
4568   orl(eax, rsi);
4569   pinsrw(xmm1, eax, 3);
4570   movl(rsi, Address(rsp, 24));
4571   mulsd(xmm0, xmm1);
4572 
4573   bind(L_2TAG_PACKET_17_0_2);
4574   movl(edx, 24);
4575 
4576   bind(L_2TAG_PACKET_21_0_2);
4577   movsd(Address(rsp, 0), xmm0);
4578   fld_d(Address(rsp, 0));
4579   jmp(L_2TAG_PACKET_6_0_2);
4580 
4581   bind(L_2TAG_PACKET_49_0_2);
4582   movl(eax, 16);
4583   pinsrw(xmm0, eax, 3);
4584   mulsd(xmm0, xmm0);
4585   testl(rsi, INT_MIN);
4586   jcc(Assembler::equal, L_2TAG_PACKET_51_0_2);
4587   movsd(xmm2, Address(tmp, 12560));
4588   xorpd(xmm0, xmm2);
4589 
4590   bind(L_2TAG_PACKET_51_0_2);
4591   movl(rsi, Address(rsp, 24));
4592   movl(edx, 25);
4593   jmp(L_2TAG_PACKET_21_0_2);
4594 
4595   bind(L_2TAG_PACKET_16_0_2);
4596   pextrw(ecx, xmm5, 3);
4597   pextrw(edx, xmm4, 3);
4598   movl(eax, -1);
4599   andl(ecx, 32752);
4600   subl(ecx, 16368);
4601   andl(edx, 32752);
4602   addl(edx, ecx);
4603   movl(ecx, -31);
4604   sarl(edx, 4);
4605   subl(ecx, edx);
4606   jcc(Assembler::lessEqual, L_2TAG_PACKET_52_0_2);
4607   cmpl(ecx, 20);
4608   jcc(Assembler::above, L_2TAG_PACKET_53_0_2);
4609   shll(eax);
4610 
4611   bind(L_2TAG_PACKET_52_0_2);
4612   movdl(xmm0, eax);
4613   psllq(xmm0, 32);
4614   pand(xmm0, xmm5);
4615   subsd(xmm5, xmm0);
4616   addsd(xmm5, xmm1);
4617   mulsd(xmm0, xmm4);
4618   mulsd(xmm5, xmm4);
4619   addsd(xmm0, xmm5);
4620 
4621   bind(L_2TAG_PACKET_53_0_2);
4622   movl(edx, 25);
4623   jmp(L_2TAG_PACKET_21_0_2);
4624 
4625   bind(L_2TAG_PACKET_2_0_2);
4626   movzwl(ecx, Address(rsp, 22));
4627   movl(edx, INT_MIN);
4628   movdl(xmm1, edx);
4629   xorpd(xmm7, xmm7);
4630   paddd(xmm0, xmm4);
4631   psllq(xmm5, 32);
4632   movdl(edx, xmm0);
4633   psllq(xmm0, 29);
4634   paddq(xmm1, xmm3);
4635   pand(xmm5, xmm1);
4636   andl(ecx, 32752);
4637   cmpl(ecx, 16560);
4638   jcc(Assembler::below, L_2TAG_PACKET_3_0_2);
4639   pand(xmm0, xmm6);
4640   subsd(xmm3, xmm5);
4641   addl(eax, 16351);
4642   shrl(eax, 4);
4643   subl(eax, 1022);
4644   cvtsi2sdl(xmm7, eax);
4645   mulpd(xmm5, xmm0);
4646   movsd(xmm4, Address(tmp, 0));
4647   mulsd(xmm3, xmm0);
4648   movsd(xmm6, Address(tmp, 0));
4649   subsd(xmm5, xmm2);
4650   movsd(xmm1, Address(tmp, 8));
4651   pshufd(xmm2, xmm3, 68);
4652   unpcklpd(xmm5, xmm3);
4653   addsd(xmm3, xmm5);
4654   movsd(xmm0, Address(tmp, 8));
4655   andl(edx, 16760832);
4656   shrl(edx, 10);
4657   addpd(xmm7, Address(tmp, edx, Address::times_1, -3616));
4658   mulsd(xmm4, xmm5);
4659   mulsd(xmm0, xmm5);
4660   mulsd(xmm6, xmm2);
4661   mulsd(xmm1, xmm2);
4662   movdqu(xmm2, xmm5);
4663   mulsd(xmm4, xmm5);
4664   addsd(xmm5, xmm0);
4665   movdqu(xmm0, xmm7);
4666   addsd(xmm2, xmm3);
4667   addsd(xmm7, xmm5);
4668   mulsd(xmm6, xmm2);
4669   subsd(xmm0, xmm7);
4670   movdqu(xmm2, xmm7);
4671   addsd(xmm7, xmm4);
4672   addsd(xmm0, xmm5);
4673   subsd(xmm2, xmm7);
4674   addsd(xmm4, xmm2);
4675   pshufd(xmm2, xmm5, 238);
4676   movdqu(xmm5, xmm7);
4677   addsd(xmm7, xmm2);
4678   addsd(xmm4, xmm0);
4679   movdqu(xmm0, Address(tmp, 8272));
4680   subsd(xmm5, xmm7);
4681   addsd(xmm6, xmm4);
4682   movdqu(xmm4, xmm7);
4683   addsd(xmm5, xmm2);
4684   addsd(xmm7, xmm1);
4685   movdqu(xmm2, Address(tmp, 8336));
4686   subsd(xmm4, xmm7);
4687   addsd(xmm6, xmm5);
4688   addsd(xmm4, xmm1);
4689   pshufd(xmm5, xmm7, 238);
4690   movdqu(xmm1, xmm7);
4691   addsd(xmm7, xmm5);
4692   subsd(xmm1, xmm7);
4693   addsd(xmm1, xmm5);
4694   movdqu(xmm5, Address(tmp, 8352));
4695   pshufd(xmm3, xmm3, 68);
4696   addsd(xmm6, xmm4);
4697   addsd(xmm6, xmm1);
4698   movdqu(xmm1, Address(tmp, 8304));
4699   mulpd(xmm0, xmm3);
4700   mulpd(xmm2, xmm3);
4701   pshufd(xmm4, xmm3, 68);
4702   mulpd(xmm3, xmm3);
4703   addpd(xmm0, xmm1);
4704   addpd(xmm5, xmm2);
4705   mulsd(xmm4, xmm3);
4706   movsd(xmm2, Address(tmp, 16));
4707   mulpd(xmm3, xmm3);
4708   movsd(xmm1, Address(rsp, 16));
4709   movzwl(ecx, Address(rsp, 22));
4710   mulpd(xmm0, xmm4);
4711   pextrw(eax, xmm7, 3);
4712   mulpd(xmm5, xmm4);
4713   mulpd(xmm0, xmm3);
4714   movsd(xmm4, Address(tmp, 8376));
4715   pand(xmm2, xmm7);
4716   addsd(xmm5, xmm6);
4717   subsd(xmm7, xmm2);
4718   addpd(xmm5, xmm0);
4719   andl(eax, 32752);
4720   subl(eax, 16368);
4721   andl(ecx, 32752);
4722   cmpl(ecx, 32752);
4723   jcc(Assembler::equal, L_2TAG_PACKET_48_0_2);
4724   addl(ecx, eax);
4725   cmpl(ecx, 16576);
4726   jcc(Assembler::aboveEqual, L_2TAG_PACKET_54_0_2);
4727   pshufd(xmm0, xmm5, 238);
4728   pand(xmm4, xmm1);
4729   movdqu(xmm3, xmm1);
4730   addsd(xmm5, xmm0);
4731   subsd(xmm1, xmm4);
4732   xorpd(xmm6, xmm6);
4733   movl(edx, 17080);
4734   pinsrw(xmm6, edx, 3);
4735   addsd(xmm7, xmm5);
4736   mulsd(xmm4, xmm2);
4737   mulsd(xmm1, xmm2);
4738   movdqu(xmm5, xmm6);
4739   mulsd(xmm3, xmm7);
4740   addsd(xmm6, xmm4);
4741   addsd(xmm1, xmm3);
4742   movdqu(xmm7, Address(tmp, 12480));
4743   movdl(edx, xmm6);
4744   subsd(xmm6, xmm5);
4745   movdqu(xmm3, Address(tmp, 12496));
4746   movsd(xmm2, Address(tmp, 12512));
4747   subsd(xmm4, xmm6);
4748   movl(ecx, edx);
4749   andl(edx, 255);
4750   addl(edx, edx);
4751   movdqu(xmm5, Address(tmp, edx, Address::times_8, 8384));
4752   addsd(xmm4, xmm1);
4753   pextrw(edx, xmm6, 3);
4754   shrl(ecx, 8);
4755   movl(eax, ecx);
4756   shrl(ecx, 1);
4757   subl(eax, ecx);
4758   shll(ecx, 20);
4759   movdl(xmm6, ecx);
4760   pshufd(xmm0, xmm4, 68);
4761   pshufd(xmm1, xmm4, 68);
4762   mulpd(xmm0, xmm0);
4763   mulpd(xmm7, xmm1);
4764   pshufd(xmm6, xmm6, 17);
4765   mulsd(xmm2, xmm4);
4766   andl(edx, 32767);
4767   cmpl(edx, 16529);
4768   jcc(Assembler::above, L_2TAG_PACKET_14_0_2);
4769   mulsd(xmm0, xmm0);
4770   paddd(xmm5, xmm6);
4771   addpd(xmm3, xmm7);
4772   mulsd(xmm2, xmm5);
4773   pshufd(xmm6, xmm5, 238);
4774   mulpd(xmm0, xmm3);
4775   addsd(xmm2, xmm6);
4776   pshufd(xmm3, xmm0, 238);
4777   addl(eax, 1023);
4778   shll(eax, 20);
4779   orl(eax, rsi);
4780   movdl(xmm4, eax);
4781   mulsd(xmm0, xmm5);
4782   mulsd(xmm3, xmm5);
4783   addsd(xmm0, xmm2);
4784   psllq(xmm4, 32);
4785   addsd(xmm0, xmm3);
4786   movdqu(xmm1, xmm0);
4787   addsd(xmm0, xmm5);
4788   movl(rsi, Address(rsp, 24));
4789   mulsd(xmm0, xmm4);
4790   pextrw(eax, xmm0, 3);
4791   andl(eax, 32752);
4792   jcc(Assembler::equal, L_2TAG_PACKET_16_0_2);
4793   cmpl(eax, 32752);
4794   jcc(Assembler::equal, L_2TAG_PACKET_17_0_2);
4795 
4796   bind(L_2TAG_PACKET_55_0_2);
4797   movsd(Address(rsp, 0), xmm0);
4798   fld_d(Address(rsp, 0));
4799   jmp(L_2TAG_PACKET_6_0_2);
4800 
4801   bind(L_2TAG_PACKET_48_0_2);
4802   movl(rsi, Address(rsp, 24));
4803 
4804   bind(L_2TAG_PACKET_56_0_2);
4805   movsd(xmm0, Address(rsp, 8));
4806   movsd(xmm1, Address(rsp, 16));
4807   addsd(xmm1, xmm1);
4808   xorpd(xmm2, xmm2);
4809   movl(eax, 49136);
4810   pinsrw(xmm2, eax, 3);
4811   addsd(xmm2, xmm0);
4812   pextrw(eax, xmm2, 3);
4813   cmpl(eax, 0);
4814   jcc(Assembler::notEqual, L_2TAG_PACKET_57_0_2);
4815   xorpd(xmm0, xmm0);
4816   movl(eax, 32760);
4817   pinsrw(xmm0, eax, 3);
4818   jmp(L_2TAG_PACKET_18_0_2);
4819 
4820   bind(L_2TAG_PACKET_57_0_2);
4821   movdl(edx, xmm1);
4822   movdqu(xmm3, xmm1);
4823   psrlq(xmm3, 20);
4824   movdl(ecx, xmm3);
4825   orl(ecx, edx);
4826   jcc(Assembler::equal, L_2TAG_PACKET_58_0_2);
4827   addsd(xmm1, xmm1);
4828   movdqu(xmm0, xmm1);
4829   jmp(L_2TAG_PACKET_18_0_2);
4830 
4831   bind(L_2TAG_PACKET_58_0_2);
4832   pextrw(eax, xmm0, 3);
4833   andl(eax, 32752);
4834   pextrw(edx, xmm1, 3);
4835   xorpd(xmm0, xmm0);
4836   subl(eax, 16368);
4837   xorl(eax, edx);
4838   testl(eax, 32768);
4839   jcc(Assembler::notEqual, L_2TAG_PACKET_18_0_2);
4840   movl(edx, 32752);
4841   pinsrw(xmm0, edx, 3);
4842   jmp(L_2TAG_PACKET_18_0_2);
4843 
4844   bind(L_2TAG_PACKET_54_0_2);
4845   pextrw(eax, xmm1, 3);
4846   pextrw(ecx, xmm2, 3);
4847   xorl(eax, ecx);
4848   testl(eax, 32768);
4849   jcc(Assembler::equal, L_2TAG_PACKET_50_0_2);
4850   jmp(L_2TAG_PACKET_49_0_2);
4851 
4852   bind(L_2TAG_PACKET_6_0_2);
4853   movl(tmp, Address(rsp, 64));
4854 
4855 }
4856 
4857 #endif // !_LP64