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