root/usr/src/lib/libmvec/common/vis/__vsqrt.S
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License (the "License").
 * You may not use this file except in compliance with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */
/*
 * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
 */
/*
 * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

        .file   "__vsqrt.S"

#include "libm.h"

        RO_DATA
        .align  64

.CONST_TBL:
        .word   0x3fe00000, 0x00000000  ! A1  =  5.00000000000000001789e-01
        .word   0xbfbfffff, 0xfffd0bfd  ! A2  = -1.24999999997314110667e-01
        .word   0x3fafffff, 0xfffb5bfb  ! A3  =  6.24999999978896565817e-02
        .word   0xbfa4000f, 0xc00b4fc8  ! A4  = -3.90629693917215481458e-02
        .word   0x3f9c0018, 0xc012da4e  ! A5  =  2.73441188080261677282e-02
        .word   0x000fffff, 0xffffffff  ! DC0 =  0x000fffffffffffff
        .word   0x00001000, 0x00000000  ! DC2 =  0x0000100000000000
        .word   0x7fffe000, 0x00000000  ! DC3 =  0x7fffe00000000000

! i = [0,128]
! TBL[8*i+0] = 1.0 / (*(double*)&(0x3fe0000000000000LL + (i << 45)));
! TBL[8*i+1] = (double)(2.0 * sqrtl(*(double*)&(0x3fe0000000000000LL + (i << 45))));
! TBL[8*i+2] = (double)(2.0 * sqrtl(*(double*)&(0x3fe0000000000000LL + (i << 45))) - TBL[8*i+1]);
! TBL[8*i+3] = 0
! TBL[8*i+4] = 1.0 / (*(double*)&(0x3fe0000000000000LL + (i << 45)));
! TBL[8*i+5] = (double)(2.0 * sqrtl(2.0) * sqrtl(*(double*)&(0x3fe0000000000000LL + (i << 45))));
! TBL[8*i+6] = (double)(2.0 * sqrtl(2.0) * sqrtl(*(double*)&(0x3fe0000000000000LL + (i << 45))) - TBL[8*i+5]);
! TBL[8*i+7] = 0

        .word   0x40000000, 0x00000000, 0x3ff6a09e, 0x667f3bcd
        .word   0xbc9bdd34, 0x13b26456, 0x00000000, 0x00000000
        .word   0x40000000, 0x00000000, 0x40000000, 0x00000000
        .word   0xb8f00000, 0x00000000, 0x00000000, 0x00000000
        .word   0x3fffc07f, 0x01fc07f0, 0x3ff6b733, 0xbfd8c648
        .word   0x3c53b629, 0x05629048, 0x00000000, 0x00000000
        .word   0x3fffc07f, 0x01fc07f0, 0x40000ff8, 0x07f60deb
        .word   0x3c90655c, 0x648a53f1, 0x00000000, 0x00000000
        .word   0x3fff81f8, 0x1f81f820, 0x3ff6cdb2, 0xbbb212eb
        .word   0x3c960332, 0xcdbaba2d, 0x00000000, 0x00000000
        .word   0x3fff81f8, 0x1f81f820, 0x40001fe0, 0x3f61bad0
        .word   0x3ca2c41a, 0x15cbfaf2, 0x00000000, 0x00000000
        .word   0x3fff4465, 0x9e4a4271, 0x3ff6e41b, 0x9bfb3b75
        .word   0xbc925d8c, 0xfd6d5c87, 0x00000000, 0x00000000
        .word   0x3fff4465, 0x9e4a4271, 0x40002fb8, 0xd4e30f48
        .word   0xbca64203, 0xab1ba910, 0x00000000, 0x00000000
        .word   0x3fff07c1, 0xf07c1f08, 0x3ff6fa6e, 0xa162d0f0
        .word   0x3c691a24, 0x3d6297e9, 0x00000000, 0x00000000
        .word   0x3fff07c1, 0xf07c1f08, 0x40003f81, 0xf636b80c
        .word   0xbca0efc8, 0xba812a8c, 0x00000000, 0x00000000
        .word   0x3ffecc07, 0xb301ecc0, 0x3ff710ac, 0x0b5e5e32
        .word   0xbc991218, 0xb8d2850d, 0x00000000, 0x00000000
        .word   0x3ffecc07, 0xb301ecc0, 0x40004f3b, 0xd03c0a64
        .word   0x3c9ee2cf, 0x2d8ae22b, 0x00000000, 0x00000000
        .word   0x3ffe9131, 0xabf0b767, 0x3ff726d4, 0x1832a0be
        .word   0xbc2d9b1a, 0xa8ecb058, 0x00000000, 0x00000000
        .word   0x3ffe9131, 0xabf0b767, 0x40005ee6, 0x8efad48b
        .word   0xbc9c35f4, 0x8f4b89f7, 0x00000000, 0x00000000
        .word   0x3ffe573a, 0xc901e574, 0x3ff73ce7, 0x04fb7b23
        .word   0x3c91470b, 0x816b17a6, 0x00000000, 0x00000000
        .word   0x3ffe573a, 0xc901e574, 0x40006e82, 0x5da8fc2b
        .word   0x3c9a315a, 0x8bd8a03b, 0x00000000, 0x00000000
        .word   0x3ffe1e1e, 0x1e1e1e1e, 0x3ff752e5, 0x0db3a3a2
        .word   0xbc939331, 0x3eea4381, 0x00000000, 0x00000000
        .word   0x3ffe1e1e, 0x1e1e1e1e, 0x40007e0f, 0x66afed07
        .word   0xbc74a6e1, 0xdcd59eaf, 0x00000000, 0x00000000
        .word   0x3ffde5d6, 0xe3f8868a, 0x3ff768ce, 0x6d3c11e0
        .word   0xbc9478b8, 0xab33074d, 0x00000000, 0x00000000
        .word   0x3ffde5d6, 0xe3f8868a, 0x40008d8d, 0xd3b1d9aa
        .word   0x3c81d533, 0x85fe2b96, 0x00000000, 0x00000000
        .word   0x3ffdae60, 0x76b981db, 0x3ff77ea3, 0x5d632e43
        .word   0x3c92f714, 0x9a22fa4f, 0x00000000, 0x00000000
        .word   0x3ffdae60, 0x76b981db, 0x40009cfd, 0xcd8ed009
        .word   0xbc4862a9, 0xbcf7f372, 0x00000000, 0x00000000
        .word   0x3ffd77b6, 0x54b82c34, 0x3ff79464, 0x16ebc56c
        .word   0x3c9a7cd5, 0x224c7375, 0x00000000, 0x00000000
        .word   0x3ffd77b6, 0x54b82c34, 0x4000ac5f, 0x7c69a3c8
        .word   0x3ca94dff, 0x7bfa2757, 0x00000000, 0x00000000
        .word   0x3ffd41d4, 0x1d41d41d, 0x3ff7aa10, 0xd193c22d
        .word   0xbc790ed9, 0x403afe85, 0x00000000, 0x00000000
        .word   0x3ffd41d4, 0x1d41d41d, 0x4000bbb3, 0x07acafdb
        .word   0xbc852a97, 0x686f9d2e, 0x00000000, 0x00000000
        .word   0x3ffd0cb5, 0x8f6ec074, 0x3ff7bfa9, 0xc41ab040
        .word   0x3c8d6bc3, 0x02ae758f, 0x00000000, 0x00000000
        .word   0x3ffd0cb5, 0x8f6ec074, 0x4000caf8, 0x960e710d
        .word   0x3c9caa6b, 0xe2366171, 0x00000000, 0x00000000
        .word   0x3ffcd856, 0x89039b0b, 0x3ff7d52f, 0x244809e9
        .word   0x3c9081f6, 0xf3b99d5f, 0x00000000, 0x00000000
        .word   0x3ffcd856, 0x89039b0b, 0x4000da30, 0x4d95fb06
        .word   0xbc9e1269, 0x76855586, 0x00000000, 0x00000000
        .word   0x3ffca4b3, 0x055ee191, 0x3ff7eaa1, 0x26f15284
        .word   0xbc846ce4, 0x68c1882b, 0x00000000, 0x00000000
        .word   0x3ffca4b3, 0x055ee191, 0x4000e95a, 0x539f492c
        .word   0xbc80c73f, 0xc38a2184, 0x00000000, 0x00000000
        .word   0x3ffc71c7, 0x1c71c71c, 0x3ff80000, 0x00000000
        .word   0x00000000, 0x00000000, 0x00000000, 0x00000000
        .word   0x3ffc71c7, 0x1c71c71c, 0x4000f876, 0xccdf6cd9
        .word   0x3cab1a18, 0xf13a34c0, 0x00000000, 0x00000000
        .word   0x3ffc3f8f, 0x01c3f8f0, 0x3ff8154b, 0xe2773526
        .word   0xbc857147, 0xe067d0ee, 0x00000000, 0x00000000
        .word   0x3ffc3f8f, 0x01c3f8f0, 0x40010785, 0xdd689a29
        .word   0xbcaaabbe, 0x9e4d810a, 0x00000000, 0x00000000
        .word   0x3ffc0e07, 0x0381c0e0, 0x3ff82a85, 0x00794e6c
        .word   0xbc82edaa, 0x75e6ac5f, 0x00000000, 0x00000000
        .word   0x3ffc0e07, 0x0381c0e0, 0x40011687, 0xa8ae14a3
        .word   0x3cac9b43, 0xbcf06106, 0x00000000, 0x00000000
        .word   0x3ffbdd2b, 0x899406f7, 0x3ff83fab, 0x8b4d4315
        .word   0x3c829e06, 0x2d3e134d, 0x00000000, 0x00000000
        .word   0x3ffbdd2b, 0x899406f7, 0x4001257c, 0x5187fd09
        .word   0xbca4a750, 0xa83950a4, 0x00000000, 0x00000000
        .word   0x3ffbacf9, 0x14c1bad0, 0x3ff854bf, 0xb363dc39
        .word   0x3c99399f, 0xca38787e, 0x00000000, 0x00000000
        .word   0x3ffbacf9, 0x14c1bad0, 0x40013463, 0xfa37014e
        .word   0x3c7b295b, 0xaa698cd3, 0x00000000, 0x00000000
        .word   0x3ffb7d6c, 0x3dda338b, 0x3ff869c1, 0xa85cc346
        .word   0x3c9fcc99, 0xde11b1d1, 0x00000000, 0x00000000
        .word   0x3ffb7d6c, 0x3dda338b, 0x4001433e, 0xc467effb
        .word   0x3c92c031, 0x3b7278c8, 0x00000000, 0x00000000
        .word   0x3ffb4e81, 0xb4e81b4f, 0x3ff87eb1, 0x990b697a
        .word   0x3c7c43e9, 0xf593ea0f, 0x00000000, 0x00000000
        .word   0x3ffb4e81, 0xb4e81b4f, 0x4001520c, 0xd1372feb
        .word   0xbcadec22, 0x5d8e66d2, 0x00000000, 0x00000000
        .word   0x3ffb2036, 0x406c80d9, 0x3ff8938f, 0xb37bc9c1
        .word   0xbc7c115f, 0x9f5c8d6f, 0x00000000, 0x00000000
        .word   0x3ffb2036, 0x406c80d9, 0x400160ce, 0x41341d74
        .word   0x3c967036, 0x863a1bb2, 0x00000000, 0x00000000
        .word   0x3ffaf286, 0xbca1af28, 0x3ff8a85c, 0x24f70659
        .word   0x3c9f6e07, 0x6b588a50, 0x00000000, 0x00000000
        .word   0x3ffaf286, 0xbca1af28, 0x40016f83, 0x34644df9
        .word   0xbcae8679, 0x80a1c48e, 0x00000000, 0x00000000
        .word   0x3ffac570, 0x1ac5701b, 0x3ff8bd17, 0x1a07e38a
        .word   0x3c9c20b5, 0xa697f23f, 0x00000000, 0x00000000
        .word   0x3ffac570, 0x1ac5701b, 0x40017e2b, 0xca46bab9
        .word   0x3ca1519b, 0x10d04d5f, 0x00000000, 0x00000000
        .word   0x3ffa98ef, 0x606a63be, 0x3ff8d1c0, 0xbe7f20ac
        .word   0xbc8bdb8a, 0x6df021f3, 0x00000000, 0x00000000
        .word   0x3ffa98ef, 0x606a63be, 0x40018cc8, 0x21d6d3e3
        .word   0xbca30af1, 0xd725cc5b, 0x00000000, 0x00000000
        .word   0x3ffa6d01, 0xa6d01a6d, 0x3ff8e659, 0x3d77b0b8
        .word   0xbc7d99d7, 0x64769954, 0x00000000, 0x00000000
        .word   0x3ffa6d01, 0xa6d01a6d, 0x40019b58, 0x598f7c9f
        .word   0xbc72e0d8, 0x51c0e011, 0x00000000, 0x00000000
        .word   0x3ffa41a4, 0x1a41a41a, 0x3ff8fae0, 0xc15ad38a
        .word   0xbc7db7ad, 0xb6817f6d, 0x00000000, 0x00000000
        .word   0x3ffa41a4, 0x1a41a41a, 0x4001a9dc, 0x8f6df104
        .word   0xbcafc519, 0xc18dc1d5, 0x00000000, 0x00000000
        .word   0x3ffa16d3, 0xf97a4b02, 0x3ff90f57, 0x73e410e4
        .word   0x3c6fb605, 0xcee75482, 0x00000000, 0x00000000
        .word   0x3ffa16d3, 0xf97a4b02, 0x4001b854, 0xe0f496a0
        .word   0x3ca27006, 0x899b7c3a, 0x00000000, 0x00000000
        .word   0x3ff9ec8e, 0x951033d9, 0x3ff923bd, 0x7e25164d
        .word   0xbc9278d1, 0x901d3b40, 0x00000000, 0x00000000
        .word   0x3ff9ec8e, 0x951033d9, 0x4001c6c1, 0x6b2db870
        .word   0x3c887e1d, 0x8335fb28, 0x00000000, 0x00000000
        .word   0x3ff9c2d1, 0x4ee4a102, 0x3ff93813, 0x088978c5
        .word   0xbc54312c, 0x627e5c52, 0x00000000, 0x00000000
        .word   0x3ff9c2d1, 0x4ee4a102, 0x4001d522, 0x4aae2ee1
        .word   0x3ca91222, 0xf6aebdc9, 0x00000000, 0x00000000
        .word   0x3ff99999, 0x9999999a, 0x3ff94c58, 0x3ada5b53
        .word   0xbc9b7ed7, 0x50df3cca, 0x00000000, 0x00000000
        .word   0x3ff99999, 0x9999999a, 0x4001e377, 0x9b97f4a8
        .word   0xbc9f5063, 0x19fcfd19, 0x00000000, 0x00000000
        .word   0x3ff970e4, 0xf80cb872, 0x3ff9608d, 0x3c41fb4b
        .word   0x3c73df32, 0xeaa86b83, 0x00000000, 0x00000000
        .word   0x3ff970e4, 0xf80cb872, 0x4001f1c1, 0x799ca8ff
        .word   0xbca28b52, 0xeb725e0a, 0x00000000, 0x00000000
        .word   0x3ff948b0, 0xfcd6e9e0, 0x3ff974b2, 0x334f2346
        .word   0x3c814e4a, 0xd3ae9e3f, 0x00000000, 0x00000000
        .word   0x3ff948b0, 0xfcd6e9e0, 0x40020000, 0x00000000
        .word   0xb9000000, 0x00000000, 0x00000000, 0x00000000
        .word   0x3ff920fb, 0x49d0e229, 0x3ff988c7, 0x45f88592
        .word   0x3c95af70, 0x1a56047b, 0x00000000, 0x00000000
        .word   0x3ff920fb, 0x49d0e229, 0x40020e33, 0x499a21a9
        .word   0xbc924ba2, 0x74fea9a1, 0x00000000, 0x00000000
        .word   0x3ff8f9c1, 0x8f9c18fa, 0x3ff99ccc, 0x999fff00
        .word   0x3c866234, 0x063b88ee, 0x00000000, 0x00000000
        .word   0x3ff8f9c1, 0x8f9c18fa, 0x40021c5b, 0x70d9f824
        .word   0xbca844f9, 0x9eee6fc3, 0x00000000, 0x00000000
        .word   0x3ff8d301, 0x8d3018d3, 0x3ff9b0c2, 0x5315c2ce
        .word   0xbc87f64a, 0x65cc6887, 0x00000000, 0x00000000
        .word   0x3ff8d301, 0x8d3018d3, 0x40022a78, 0x8fc76de5
        .word   0x3c931e32, 0xd4e07a48, 0x00000000, 0x00000000
        .word   0x3ff8acb9, 0x0f6bf3aa, 0x3ff9c4a8, 0x969b7077
        .word   0xbc96ca9e, 0x5cd4517a, 0x00000000, 0x00000000
        .word   0x3ff8acb9, 0x0f6bf3aa, 0x4002388a, 0xc0059c28
        .word   0xbc96072f, 0xbe0e5da3, 0x00000000, 0x00000000
        .word   0x3ff886e5, 0xf0abb04a, 0x3ff9d87f, 0x87e71422
        .word   0xbc85fdd8, 0xb11b7b1d, 0x00000000, 0x00000000
        .word   0x3ff886e5, 0xf0abb04a, 0x40024692, 0x1ad4ea49
        .word   0xbcaa6d9b, 0x268ef62d, 0x00000000, 0x00000000
        .word   0x3ff86186, 0x18618618, 0x3ff9ec47, 0x4a261264
        .word   0xbc8540c4, 0x89ba5074, 0x00000000, 0x00000000
        .word   0x3ff86186, 0x18618618, 0x4002548e, 0xb9151e85
        .word   0x3c999820, 0x0a774879, 0x00000000, 0x00000000
        .word   0x3ff83c97, 0x7ab2bedd, 0x3ffa0000, 0x00000000
        .word   0x00000000, 0x00000000, 0x00000000, 0x00000000
        .word   0x3ff83c97, 0x7ab2bedd, 0x40026280, 0xb3476096
        .word   0x3c9ab88b, 0x5ffe1cf5, 0x00000000, 0x00000000
        .word   0x3ff81818, 0x18181818, 0x3ffa13a9, 0xcb996651
        .word   0xbc9f9ab9, 0x0e4e85c3, 0x00000000, 0x00000000
        .word   0x3ff81818, 0x18181818, 0x40027068, 0x21902e9a
        .word   0x3c90ff4c, 0x20f541f6, 0x00000000, 0x00000000
        .word   0x3ff7f405, 0xfd017f40, 0x3ffa2744, 0xce9674f5
        .word   0xbc8b936c, 0x81e54daa, 0x00000000, 0x00000000
        .word   0x3ff7f405, 0xfd017f40, 0x40027e45, 0x1bb944c3
        .word   0x3c8e4a16, 0x42099ef0, 0x00000000, 0x00000000
        .word   0x3ff7d05f, 0x417d05f4, 0x3ffa3ad1, 0x2a1da160
        .word   0x3c951168, 0xf4be5984, 0x00000000, 0x00000000
        .word   0x3ff7d05f, 0x417d05f4, 0x40028c17, 0xb9337834
        .word   0xbc8af150, 0xa0e88972, 0x00000000, 0x00000000
        .word   0x3ff7ad22, 0x08e0ecc3, 0x3ffa4e4e, 0xfeda34de
        .word   0x3c6afbb4, 0xdbdadd0d, 0x00000000, 0x00000000
        .word   0x3ff7ad22, 0x08e0ecc3, 0x400299e0, 0x11188575
        .word   0xbc9a6169, 0x3fb250e5, 0x00000000, 0x00000000
        .word   0x3ff78a4c, 0x8178a4c8, 0x3ffa61be, 0x6cfec997
        .word   0xbc8c37ea, 0xb2bb5ca0, 0x00000000, 0x00000000
        .word   0x3ff78a4c, 0x8178a4c8, 0x4002a79e, 0x3a2cd2e6
        .word   0xbca5ddd4, 0x9cc9ad59, 0x00000000, 0x00000000
        .word   0x3ff767dc, 0xe434a9b1, 0x3ffa751f, 0x9447b724
        .word   0x3c82b909, 0x477e9ed1, 0x00000000, 0x00000000
        .word   0x3ff767dc, 0xe434a9b1, 0x4002b552, 0x4ae1278e
        .word   0xbca2f2a9, 0x8841b934, 0x00000000, 0x00000000
        .word   0x3ff745d1, 0x745d1746, 0x3ffa8872, 0x93fd6f34
        .word   0x3c768ef2, 0x4f198721, 0x00000000, 0x00000000
        .word   0x3ff745d1, 0x745d1746, 0x4002c2fc, 0x595456a7
        .word   0xbc996f60, 0xb0fc7e96, 0x00000000, 0x00000000
        .word   0x3ff72428, 0x7f46debc, 0x3ffa9bb7, 0x8af6cabc
        .word   0x3c8ba60d, 0xc999aba7, 0x00000000, 0x00000000
        .word   0x3ff72428, 0x7f46debc, 0x4002d09c, 0x7b54e03e
        .word   0x3c98c747, 0xfdeda6de, 0x00000000, 0x00000000
        .word   0x3ff702e0, 0x5c0b8170, 0x3ffaaeee, 0x979b4838
        .word   0xbc91f08a, 0xef9ef6c0, 0x00000000, 0x00000000
        .word   0x3ff702e0, 0x5c0b8170, 0x4002de32, 0xc6628741
        .word   0x3ca78746, 0xc499a4f7, 0x00000000, 0x00000000
        .word   0x3ff6e1f7, 0x6b4337c7, 0x3ffac217, 0xd7e53b66
        .word   0xbc64282a, 0xaa967e4f, 0x00000000, 0x00000000
        .word   0x3ff6e1f7, 0x6b4337c7, 0x4002ebbf, 0x4fafdd4b
        .word   0xbca78a73, 0xb72d5c41, 0x00000000, 0x00000000
        .word   0x3ff6c16c, 0x16c16c17, 0x3ffad533, 0x6963eefc
        .word   0xbc977c4a, 0x537dbdd2, 0x00000000, 0x00000000
        .word   0x3ff6c16c, 0x16c16c17, 0x4002f942, 0x2c23c47e
        .word   0xbc827c85, 0xf29db65d, 0x00000000, 0x00000000
        .word   0x3ff6a13c, 0xd1537290, 0x3ffae841, 0x693db8b4
        .word   0x3c90f773, 0xcd7a0713, 0x00000000, 0x00000000
        .word   0x3ff6a13c, 0xd1537290, 0x400306bb, 0x705ae7c3
        .word   0x3caf4933, 0x907af47a, 0x00000000, 0x00000000
        .word   0x3ff68168, 0x16816817, 0x3ffafb41, 0xf432002e
        .word   0xbc7ac94a, 0xfdfe8c5b, 0x00000000, 0x00000000
        .word   0x3ff68168, 0x16816817, 0x4003142b, 0x30a929ab
        .word   0x3c98dc01, 0x081a6c5c, 0x00000000, 0x00000000
        .word   0x3ff661ec, 0x6a5122f9, 0x3ffb0e35, 0x269b38f5
        .word   0xbc4f69a8, 0x05c3271a, 0x00000000, 0x00000000
        .word   0x3ff661ec, 0x6a5122f9, 0x40032191, 0x811b0a41
        .word   0xbc9ce3f0, 0xb38c0bf7, 0x00000000, 0x00000000
        .word   0x3ff642c8, 0x590b2164, 0x3ffb211b, 0x1c70d023
        .word   0x3c2e4c5e, 0x66eae2f0, 0x00000000, 0x00000000
        .word   0x3ff642c8, 0x590b2164, 0x40032eee, 0x75770416
        .word   0x3caed8e7, 0x730eaff2, 0x00000000, 0x00000000
        .word   0x3ff623fa, 0x77016240, 0x3ffb33f3, 0xf1490def
        .word   0xbc95894b, 0xcb02373b, 0x00000000, 0x00000000
        .word   0x3ff623fa, 0x77016240, 0x40033c42, 0x213ee0c9
        .word   0x3ca84c24, 0x4ba98124, 0x00000000, 0x00000000
        .word   0x3ff60581, 0x60581606, 0x3ffb46bf, 0xc05aeb89
        .word   0x3c9b1c7c, 0xc39adc9f, 0x00000000, 0x00000000
        .word   0x3ff60581, 0x60581606, 0x4003498c, 0x97b10540
        .word   0x3c734193, 0xbc8543b4, 0x00000000, 0x00000000
        .word   0x3ff5e75b, 0xb8d015e7, 0x3ffb597e, 0xa47fdda3
        .word   0xbc923cc8, 0x9d1e4635, 0x00000000, 0x00000000
        .word   0x3ff5e75b, 0xb8d015e7, 0x400356cd, 0xebc9b5e2
        .word   0x3c96dee1, 0x46bb1571, 0x00000000, 0x00000000
        .word   0x3ff5c988, 0x2b931057, 0x3ffb6c30, 0xb83593e6
        .word   0x3c8f4e3f, 0xd28d84bc, 0x00000000, 0x00000000
        .word   0x3ff5c988, 0x2b931057, 0x40036406, 0x30445306
        .word   0xbca78d86, 0x2327430a, 0x00000000, 0x00000000
        .word   0x3ff5ac05, 0x6b015ac0, 0x3ffb7ed6, 0x159fadc8
        .word   0xbc899bcf, 0xf04d134b, 0x00000000, 0x00000000
        .word   0x3ff5ac05, 0x6b015ac0, 0x40037135, 0x779c8dcb
        .word   0xbc8fe126, 0xce9778ae, 0x00000000, 0x00000000
        .word   0x3ff58ed2, 0x308158ed, 0x3ffb916e, 0xd68964ec
        .word   0x3c826a5d, 0x5dbaae29, 0x00000000, 0x00000000
        .word   0x3ff58ed2, 0x308158ed, 0x40037e5b, 0xd40f95a1
        .word   0x3cac6ff5, 0xeca5d122, 0x00000000, 0x00000000
        .word   0x3ff571ed, 0x3c506b3a, 0x3ffba3fb, 0x14672d7c
        .word   0xbc8117d3, 0x97dcefc9, 0x00000000, 0x00000000
        .word   0x3ff571ed, 0x3c506b3a, 0x40038b79, 0x579d3eab
        .word   0xbcac254f, 0xc0db598e, 0x00000000, 0x00000000
        .word   0x3ff55555, 0x55555555, 0x3ffbb67a, 0xe8584caa
        .word   0x3c9cec95, 0xd0b5c1e3, 0x00000000, 0x00000000
        .word   0x3ff55555, 0x55555555, 0x4003988e, 0x1409212e
        .word   0x3caf40c8, 0x6450c869, 0x00000000, 0x00000000
        .word   0x3ff53909, 0x48f40feb, 0x3ffbc8ee, 0x6b2865b9
        .word   0x3c9394eb, 0x90f645c8, 0x00000000, 0x00000000
        .word   0x3ff53909, 0x48f40feb, 0x4003a59a, 0x1adbb257
        .word   0x3ca6adce, 0x020a308d, 0x00000000, 0x00000000
        .word   0x3ff51d07, 0xeae2f815, 0x3ffbdb55, 0xb550fdbc
        .word   0x3c7365e9, 0x6aa5fae3, 0x00000000, 0x00000000
        .word   0x3ff51d07, 0xeae2f815, 0x4003b29d, 0x7d635662
        .word   0x3cac99b0, 0x5e282129, 0x00000000, 0x00000000
        .word   0x3ff50150, 0x15015015, 0x3ffbedb0, 0xdefaf661
        .word   0x3c91a627, 0xb279170d, 0x00000000, 0x00000000
        .word   0x3ff50150, 0x15015015, 0x4003bf98, 0x4cb56c77
        .word   0x3ca8f653, 0xbcc0c4a1, 0x00000000, 0x00000000
        .word   0x3ff4e5e0, 0xa72f0539, 0x3ffc0000, 0x00000000
        .word   0x00000000, 0x00000000, 0x00000000, 0x00000000
        .word   0x3ff4e5e0, 0xa72f0539, 0x4003cc8a, 0x99af5453
        .word   0xbc486364, 0x4f05f2be, 0x00000000, 0x00000000
        .word   0x3ff4cab8, 0x8725af6e, 0x3ffc1243, 0x2fec0329
        .word   0x3c96e0d7, 0x8dd23a7d, 0x00000000, 0x00000000
        .word   0x3ff4cab8, 0x8725af6e, 0x4003d974, 0x74f76df2
        .word   0x3c82e3c9, 0xfdbbbdc2, 0x00000000, 0x00000000
        .word   0x3ff4afd6, 0xa052bf5b, 0x3ffc247a, 0x85fe81fa
        .word   0x3c89d8ee, 0xf6854220, 0x00000000, 0x00000000
        .word   0x3ff4afd6, 0xa052bf5b, 0x4003e655, 0xeefe1367
        .word   0x3c80eb35, 0xbb532559, 0x00000000, 0x00000000
        .word   0x3ff49539, 0xe3b2d067, 0x3ffc36a6, 0x192bf168
        .word   0xbc9083d8, 0x1a423b11, 0x00000000, 0x00000000
        .word   0x3ff49539, 0xe3b2d067, 0x4003f32f, 0x17fe8d04
        .word   0xbc905d6c, 0x1c437de0, 0x00000000, 0x00000000
        .word   0x3ff47ae1, 0x47ae147b, 0x3ffc48c6, 0x001f0ac0
        .word   0xbc92d481, 0x189efd6b, 0x00000000, 0x00000000
        .word   0x3ff47ae1, 0x47ae147b, 0x40040000, 0x00000000
        .word   0x00000000, 0x00000000, 0x00000000, 0x00000000
        .word   0x3ff460cb, 0xc7f5cf9a, 0x3ffc5ada, 0x513a1593
        .word   0xbc7aaedd, 0x014f5f03, 0x00000000, 0x00000000
        .word   0x3ff460cb, 0xc7f5cf9a, 0x40040cc8, 0xb6d657c2
        .word   0xbc9c05ab, 0xf480ce19, 0x00000000, 0x00000000
        .word   0x3ff446f8, 0x6562d9fb, 0x3ffc6ce3, 0x22982a3f
        .word   0x3c891b2d, 0xf3e15f29, 0x00000000, 0x00000000
        .word   0x3ff446f8, 0x6562d9fb, 0x40041989, 0x4c2329f0
        .word   0x3c976037, 0x46da0ea6, 0x00000000, 0x00000000
        .word   0x3ff42d66, 0x25d51f87, 0x3ffc7ee0, 0x8a0e6d4c
        .word   0x3c991c54, 0xc53e75c8, 0x00000000, 0x00000000
        .word   0x3ff42d66, 0x25d51f87, 0x40042641, 0xcf569572
        .word   0xbcadf80b, 0x1442c029, 0x00000000, 0x00000000
        .word   0x3ff41414, 0x14141414, 0x3ffc90d2, 0x9d2d43ce
        .word   0xbc9edadb, 0x07f1137a, 0x00000000, 0x00000000
        .word   0x3ff41414, 0x14141414, 0x400432f2, 0x4fb01c7a
        .word   0x3ca38bfe, 0x0e012c1c, 0x00000000, 0x00000000
        .word   0x3ff3fb01, 0x3fb013fb, 0x3ffca2b9, 0x714180f7
        .word   0xbc81a63d, 0x6750c57c, 0x00000000, 0x00000000
        .word   0x3ff3fb01, 0x3fb013fb, 0x40043f9a, 0xdc3f79ce
        .word   0x3c66d2b1, 0x767ae30a, 0x00000000, 0x00000000
        .word   0x3ff3e22c, 0xbce4a902, 0x3ffcb495, 0x1b558d17
        .word   0x3c8fcbcb, 0x357f2308, 0x00000000, 0x00000000
        .word   0x3ff3e22c, 0xbce4a902, 0x40044c3b, 0x83e57153
        .word   0x3c98c853, 0xc6be5ee1, 0x00000000, 0x00000000
        .word   0x3ff3c995, 0xa47babe7, 0x3ffcc665, 0xb0328622
        .word   0xbc91baa4, 0xd369f814, 0x00000000, 0x00000000
        .word   0x3ff3c995, 0xa47babe7, 0x400458d4, 0x55549c1a
        .word   0x3ca02d72, 0x8d9a6054, 0x00000000, 0x00000000
        .word   0x3ff3b13b, 0x13b13b14, 0x3ffcd82b, 0x446159f3
        .word   0x3c983fb7, 0xb33cdfe8, 0x00000000, 0x00000000
        .word   0x3ff3b13b, 0x13b13b14, 0x40046565, 0x5f122ff6
        .word   0x3ca862c5, 0xd2f0ca4c, 0x00000000, 0x00000000
        .word   0x3ff3991c, 0x2c187f63, 0x3ffce9e5, 0xec2bda80
        .word   0xbc94ccf3, 0xd8e249ab, 0x00000000, 0x00000000
        .word   0x3ff3991c, 0x2c187f63, 0x400471ee, 0xaf76c2c6
        .word   0x3c975c62, 0xeff26e8e, 0x00000000, 0x00000000
        .word   0x3ff38138, 0x13813814, 0x3ffcfb95, 0xbb9dcc0c
        .word   0x3c92cea2, 0x0857ae03, 0x00000000, 0x00000000
        .word   0x3ff38138, 0x13813814, 0x40047e70, 0x54af0989
        .word   0x3c9d8c33, 0xc0054830, 0x00000000, 0x00000000
        .word   0x3ff3698d, 0xf3de0748, 0x3ffd0d3a, 0xc685eda4
        .word   0x3c94115a, 0x0ff4cf9e, 0x00000000, 0x00000000
        .word   0x3ff3698d, 0xf3de0748, 0x40048aea, 0x5cbc935f
        .word   0xbca8cb00, 0x12d14ff5, 0x00000000, 0x00000000
        .word   0x3ff3521c, 0xfb2b78c1, 0x3ffd1ed5, 0x2076fbe9
        .word   0x3c8f48a8, 0x6b72875f, 0x00000000, 0x00000000
        .word   0x3ff3521c, 0xfb2b78c1, 0x4004975c, 0xd5768088
        .word   0xbca1731e, 0xbc02f748, 0x00000000, 0x00000000
        .word   0x3ff33ae4, 0x5b57bcb2, 0x3ffd3064, 0xdcc8ae67
        .word   0x3c93480e, 0x805158ba, 0x00000000, 0x00000000
        .word   0x3ff33ae4, 0x5b57bcb2, 0x4004a3c7, 0xcc8a358a
        .word   0xbc9d8f7f, 0xd2726ffa, 0x00000000, 0x00000000
        .word   0x3ff323e3, 0x4a2b10bf, 0x3ffd41ea, 0x0e98af91
        .word   0x3c824640, 0x0309962f, 0x00000000, 0x00000000
        .word   0x3ff323e3, 0x4a2b10bf, 0x4004b02b, 0x4f7c0a88
        .word   0xbcaf71e1, 0xf6cafde2, 0x00000000, 0x00000000
        .word   0x3ff30d19, 0x0130d190, 0x3ffd5364, 0xc8cb8f86
        .word   0x3c8ad003, 0xc00630e1, 0x00000000, 0x00000000
        .word   0x3ff30d19, 0x0130d190, 0x4004bc87, 0x6ba7f6ec
        .word   0x3c9c1edb, 0x2be943b8, 0x00000000, 0x00000000
        .word   0x3ff2f684, 0xbda12f68, 0x3ffd64d5, 0x1e0db1c6
        .word   0xbc911ed3, 0x6986d362, 0x00000000, 0x00000000
        .word   0x3ff2f684, 0xbda12f68, 0x4004c8dc, 0x2e423980
        .word   0xbc949d1f, 0x46ef5d2c, 0x00000000, 0x00000000
        .word   0x3ff2e025, 0xc04b8097, 0x3ffd763b, 0x20d435ef
        .word   0x3c9d6780, 0xf76cb258, 0x00000000, 0x00000000
        .word   0x3ff2e025, 0xc04b8097, 0x4004d529, 0xa457fcfc
        .word   0xbca1404a, 0x46484e3d, 0x00000000, 0x00000000
        .word   0x3ff2c9fb, 0x4d812ca0, 0x3ffd8796, 0xe35ddbb2
        .word   0x3c83fdd9, 0x1aeb637a, 0x00000000, 0x00000000
        .word   0x3ff2c9fb, 0x4d812ca0, 0x4004e16f, 0xdacff937
        .word   0xbca1deb9, 0xd3815ad2, 0x00000000, 0x00000000
        .word   0x3ff2b404, 0xad012b40, 0x3ffd98e8, 0x77b3e207
        .word   0xbc48c301, 0xee02dee8, 0x00000000, 0x00000000
        .word   0x3ff2b404, 0xad012b40, 0x4004edae, 0xde6b10fe
        .word   0x3ca99709, 0x4a91a780, 0x00000000, 0x00000000
        .word   0x3ff29e41, 0x29e4129e, 0x3ffdaa2f, 0xefaae1d8
        .word   0xbc63fe0e, 0x03f44594, 0x00000000, 0x00000000
        .word   0x3ff29e41, 0x29e4129e, 0x4004f9e6, 0xbbc4ecb3
        .word   0x3c6ce5a6, 0x018493f1, 0x00000000, 0x00000000
        .word   0x3ff288b0, 0x1288b013, 0x3ffdbb6d, 0x5ce3a42f
        .word   0xbc922c27, 0xf71c8337, 0x00000000, 0x00000000
        .word   0x3ff288b0, 0x1288b013, 0x40050617, 0x7f5491bb
        .word   0xbc9e591e, 0x7b2a6d1a, 0x00000000, 0x00000000
        .word   0x3ff27350, 0xb8812735, 0x3ffdcca0, 0xd0cbf408
        .word   0x3c7a6d16, 0x2310db57, 0x00000000, 0x00000000
        .word   0x3ff27350, 0xb8812735, 0x40051241, 0x356cf6e0
        .word   0x3ca37dc2, 0x60e8bc2d, 0x00000000, 0x00000000
        .word   0x3ff25e22, 0x708092f1, 0x3ffdddca, 0x5c9f6be8
        .word   0x3c818520, 0xf0a3f809, 0x00000000, 0x00000000
        .word   0x3ff25e22, 0x708092f1, 0x40051e63, 0xea3d95b0
        .word   0x3caecf78, 0x2e88d5ce, 0x00000000, 0x00000000
        .word   0x3ff24924, 0x92492492, 0x3ffdeeea, 0x11683f49
        .word   0x3c802aae, 0x4bfa7c27, 0x00000000, 0x00000000
        .word   0x3ff24924, 0x92492492, 0x40052a7f, 0xa9d2f8ea
        .word   0xbca21c62, 0xb033c079, 0x00000000, 0x00000000
        .word   0x3ff23456, 0x789abcdf, 0x3ffe0000, 0x00000000
        .word   0x00000000, 0x00000000, 0x00000000, 0x00000000
        .word   0x3ff23456, 0x789abcdf, 0x40053694, 0x80174810
        .word   0xbc9c3ec1, 0xa4ee7c21, 0x00000000, 0x00000000
        .word   0x3ff21fb7, 0x8121fb78, 0x3ffe110c, 0x39105faf
        .word   0x3c776161, 0x4c513964, 0x00000000, 0x00000000
        .word   0x3ff21fb7, 0x8121fb78, 0x400542a2, 0x78d2d036
        .word   0xbca495c2, 0x45254df4, 0x00000000, 0x00000000
        .word   0x3ff20b47, 0x0c67c0d9, 0x3ffe220e, 0xcd13ed60
        .word   0xbc729f01, 0xf18c9dc9, 0x00000000, 0x00000000
        .word   0x3ff20b47, 0x0c67c0d9, 0x40054ea9, 0x9fac8a0f
        .word   0x3c80cfbb, 0x19353b3d, 0x00000000, 0x00000000
        .word   0x3ff1f704, 0x7dc11f70, 0x3ffe3307, 0xcc56cf5c
        .word   0xbc81f04e, 0xc3189131, 0x00000000, 0x00000000
        .word   0x3ff1f704, 0x7dc11f70, 0x40055aaa, 0x002a9d5a
        .word   0xbc4bf504, 0x76241f94, 0x00000000, 0x00000000
        .word   0x3ff1e2ef, 0x3b3fb874, 0x3ffe43f7, 0x46f7795b
        .word   0xbc931e7f, 0x8af68f8c, 0x00000000, 0x00000000
        .word   0x3ff1e2ef, 0x3b3fb874, 0x400566a3, 0xa5b2e1b1
        .word   0x3caa1fd2, 0x8cc92e33, 0x00000000, 0x00000000
        .word   0x3ff1cf06, 0xada2811d, 0x3ffe54dd, 0x4ce75f1e
        .word   0xbc811b19, 0x5dfc62e5, 0x00000000, 0x00000000
        .word   0x3ff1cf06, 0xada2811d, 0x40057296, 0x9b8b5cd8
        .word   0x3ca30cbf, 0x1c53312e, 0x00000000, 0x00000000
        .word   0x3ff1bb4a, 0x4046ed29, 0x3ffe65b9, 0xedeba38e
        .word   0xbc7bb732, 0x51e8c364, 0x00000000, 0x00000000
        .word   0x3ff1bb4a, 0x4046ed29, 0x40057e82, 0xecdabe8d
        .word   0xbc7c2aed, 0xf3c4c4bd, 0x00000000, 0x00000000
        .word   0x3ff1a7b9, 0x611a7b96, 0x3ffe768d, 0x399dc470
        .word   0xbc9a8c81, 0x3405c01c, 0x00000000, 0x00000000
        .word   0x3ff1a7b9, 0x611a7b96, 0x40058a68, 0xa4a8d9f3
        .word   0x3ca50798, 0xe67012d9, 0x00000000, 0x00000000
        .word   0x3ff19453, 0x808ca29c, 0x3ffe8757, 0x3f6c42c5
        .word   0x3c9dbf9c, 0xf7bbcda3, 0x00000000, 0x00000000
        .word   0x3ff19453, 0x808ca29c, 0x40059647, 0xcddf1ca5
        .word   0x3ca14a95, 0xf35dea0b, 0x00000000, 0x00000000
        .word   0x3ff18118, 0x11811812, 0x3ffe9818, 0x0e9b47f2
        .word   0xbc9b6bd7, 0x4396d08e, 0x00000000, 0x00000000
        .word   0x3ff18118, 0x11811812, 0x4005a220, 0x73490377
        .word   0xbcadd036, 0x39925812, 0x00000000, 0x00000000
        .word   0x3ff16e06, 0x89427379, 0x3ffea8cf, 0xb64547ab
        .word   0x3c8721b2, 0x6374e19f, 0x00000000, 0x00000000
        .word   0x3ff16e06, 0x89427379, 0x4005adf2, 0x9f948cfb
        .word   0xbca42520, 0xf7716fa6, 0x00000000, 0x00000000
        .word   0x3ff15b1e, 0x5f75270d, 0x3ffeb97e, 0x455b9edb
        .word   0x3c999b45, 0x40857883, 0x00000000, 0x00000000
        .word   0x3ff15b1e, 0x5f75270d, 0x4005b9be, 0x5d52a9da
        .word   0x3c9098cd, 0x1b3af777, 0x00000000, 0x00000000
        .word   0x3ff1485f, 0x0e0acd3b, 0x3ffeca23, 0xcaa72f73
        .word   0x3c7e3ed5, 0x29679959, 0x00000000, 0x00000000
        .word   0x3ff1485f, 0x0e0acd3b, 0x4005c583, 0xb6f7ab03
        .word   0x3ca963bc, 0x9d795b51, 0x00000000, 0x00000000
        .word   0x3ff135c8, 0x1135c811, 0x3ffedac0, 0x54c8f94c
        .word   0x3c90b5c1, 0x15a56207, 0x00000000, 0x00000000
        .word   0x3ff135c8, 0x1135c811, 0x4005d142, 0xb6dbadc5
        .word   0x3ca6f1f5, 0x5323d116, 0x00000000, 0x00000000
        .word   0x3ff12358, 0xe75d3033, 0x3ffeeb53, 0xf23ab028
        .word   0xbc8617e4, 0xb5384f5d, 0x00000000, 0x00000000
        .word   0x3ff12358, 0xe75d3033, 0x4005dcfb, 0x673b05df
        .word   0xbca099df, 0xc321634f, 0x00000000, 0x00000000
        .word   0x3ff11111, 0x11111111, 0x3ffefbde, 0xb14f4eda
        .word   0xbc93a145, 0xfe1be078, 0x00000000, 0x00000000
        .word   0x3ff11111, 0x11111111, 0x4005e8ad, 0xd236a58f
        .word   0xbc7ef8c7, 0xc0d1fec6, 0x00000000, 0x00000000
        .word   0x3ff0fef0, 0x10fef011, 0x3fff0c60, 0xa033a7b3
        .word   0xbc91b0fc, 0x15cd89c6, 0x00000000, 0x00000000
        .word   0x3ff0fef0, 0x10fef011, 0x4005f45a, 0x01d483b4
        .word   0xbc94a237, 0xdc0fa105, 0x00000000, 0x00000000
        .word   0x3ff0ecf5, 0x6be69c90, 0x3fff1cd9, 0xcceef239
        .word   0x3c91afd8, 0x64eab60a, 0x00000000, 0x00000000
        .word   0x3ff0ecf5, 0x6be69c90, 0x40060000, 0x00000000
        .word   0x00000000, 0x00000000, 0x00000000, 0x00000000
        .word   0x3ff0db20, 0xa88f4696, 0x3fff2d4a, 0x45635640
        .word   0xbc8eebae, 0xea670bc2, 0x00000000, 0x00000000
        .word   0x3ff0db20, 0xa88f4696, 0x40060b9f, 0xd68a4554
        .word   0x3ca328e1, 0x70dae176, 0x00000000, 0x00000000
        .word   0x3ff0c971, 0x4fbcda3b, 0x3fff3db2, 0x174e7468
        .word   0x3c9e1513, 0x2d6ac52a, 0x00000000, 0x00000000
        .word   0x3ff0c971, 0x4fbcda3b, 0x40061739, 0x8f2aaa48
        .word   0xbc9b672b, 0xba260735, 0x00000000, 0x00000000
        .word   0x3ff0b7e6, 0xec259dc8, 0x3fff4e11, 0x5049ec26
        .word   0xbc9b6656, 0xb6bd5d76, 0x00000000, 0x00000000
        .word   0x3ff0b7e6, 0xec259dc8, 0x400622cd, 0x337f0fe8
        .word   0x3c9fe207, 0x3279559f, 0x00000000, 0x00000000
        .word   0x3ff0a681, 0x0a6810a7, 0x3fff5e67, 0xfdcbdf44
        .word   0xbc98af06, 0x1849d6fc, 0x00000000, 0x00000000
        .word   0x3ff0a681, 0x0a6810a7, 0x40062e5a, 0xcd0c3ebe
        .word   0xbca2c50e, 0x2092203a, 0x00000000, 0x00000000
        .word   0x3ff0953f, 0x39010954, 0x3fff6eb6, 0x2d27730d
        .word   0xbc9401d9, 0x5ca1ce34, 0x00000000, 0x00000000
        .word   0x3ff0953f, 0x39010954, 0x400639e2, 0x653e421b
        .word   0xbc9f75e0, 0x5835e4b9, 0x00000000, 0x00000000
        .word   0x3ff08421, 0x08421084, 0x3fff7efb, 0xeb8d4f12
        .word   0xbc7e84e8, 0xa6ff3256, 0x00000000, 0x00000000
        .word   0x3ff08421, 0x08421084, 0x40064564, 0x0568c1c3
        .word   0x3cad1778, 0x7e4c8970, 0x00000000, 0x00000000
        .word   0x3ff07326, 0x0a47f7c6, 0x3fff8f39, 0x460c19a8
        .word   0x3c989b4e, 0x16ee9aaf, 0x00000000, 0x00000000
        .word   0x3ff07326, 0x0a47f7c6, 0x400650df, 0xb6c759f4
        .word   0x3c99063c, 0x91db4c77, 0x00000000, 0x00000000
        .word   0x3ff0624d, 0xd2f1a9fc, 0x3fff9f6e, 0x4990f227
        .word   0x3c8b42e5, 0xb5d1e808, 0x00000000, 0x00000000
        .word   0x3ff0624d, 0xd2f1a9fc, 0x40065c55, 0x827df1d2
        .word   0xbca3923d, 0xf03e1e2f, 0x00000000, 0x00000000
        .word   0x3ff05197, 0xf7d73404, 0x3fffaf9b, 0x02e7e8f2
        .word   0x3c897a76, 0x8f34e1c2, 0x00000000, 0x00000000
        .word   0x3ff05197, 0xf7d73404, 0x400667c5, 0x7199104b
        .word   0x3c875b89, 0x6f332e70, 0x00000000, 0x00000000
        .word   0x3ff04104, 0x10410410, 0x3fffbfbf, 0x7ebc755f
        .word   0xbc9b2a94, 0x084da0b6, 0x00000000, 0x00000000
        .word   0x3ff04104, 0x10410410, 0x4006732f, 0x8d0e2f77
        .word   0xbc93dffd, 0x470422e3, 0x00000000, 0x00000000
        .word   0x3ff03091, 0xb51f5e1a, 0x3fffcfdb, 0xc999e97d
        .word   0x3c82be17, 0xecdd3bbc, 0x00000000, 0x00000000
        .word   0x3ff03091, 0xb51f5e1a, 0x40067e93, 0xddbc0e73
        .word   0xbc86eb9f, 0x32ac1a5c, 0x00000000, 0x00000000
        .word   0x3ff02040, 0x81020408, 0x3fffdfef, 0xefebe3d6
        .word   0xbc909afc, 0xfc7c1f3b, 0x00000000, 0x00000000
        .word   0x3ff02040, 0x81020408, 0x400689f2, 0x6c6b01d0
        .word   0x3cae816f, 0x9d2a1032, 0x00000000, 0x00000000
        .word   0x3ff01010, 0x10101010, 0x3fffeffb, 0xfdfebf1f
        .word   0x3c95dee5, 0x1994f18b, 0x00000000, 0x00000000
        .word   0x3ff01010, 0x10101010, 0x4006954b, 0x41cd4293
        .word   0x3ca3d5bc, 0xcc443076, 0x00000000, 0x00000000
        .word   0x3ff00000, 0x00000000, 0x40000000, 0x00000000
        .word   0x00000000, 0x00000000, 0x00000000, 0x00000000
        .word   0x3ff00000, 0x00000000, 0x4006a09e, 0x667f3bcd
        .word   0xbcabdd34, 0x13b26456, 0x00000000, 0x00000000

#define A5              %f32
#define A4              %f30
#define A3              %f28
#define A2              %f26
#define A1              %f56

#define DC0             %f8
#define DC2             %f6
#define DC3             %f4

#define counter         %l3
#define TBL             %l5
#define stridex         %l6
#define stridey         %l7

#define _0x00001ff8     %i0
#define _0x7ff00000     %o0
#define _0x00100000     %o2

#define tmp_counter     STACK_BIAS-0x40
#define tmp_px          STACK_BIAS-0x38
#define tmp0            STACK_BIAS-0x30
#define tmp1            STACK_BIAS-0x28
#define tmp2            STACK_BIAS-0x20
#define tmp3            STACK_BIAS-0x18
#define tmp4            STACK_BIAS-0x10
#define tmp5            STACK_BIAS-0x08

! sizeof temp storage - must be a multiple of 16 for V9
#define tmps            0x40

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!      !!!!!   algorithm   !!!!!
!  ((float*)&res)[0] = ((float*)px)[0];
!  ((float*)&res)[1] = ((float*)px)[1];
!  hx = *(int*)px;
!  px += stridex;
!
!  if ( hx >= 0x7ff00000 )
!  {
!    res = sqrt(res);
!    ((float*)py)[0] = ((float*)&res)[0];
!    ((float*)py)[1] = ((float*)&res)[1];
!    py += stridey;
!    goto next;
!  }
!  if ( hx < 0x00100000 )
!  {
!    res = sqrt(res);
!    ((float*)py)[0] = ((float*)&res)[0];
!    ((float*)py)[1] = ((float*)&res)[1];
!    py += stridey;
!    goto next;
!  }
!
!  sqrt_exp = hx >> 21;
!  sqrt_exp -= 512;
!  sqrt_exp <<= 52;
!  dsqrt_exp = *(double*)&sqrt_exp;
!  bit = hx >> 15;
!  bit &= 32;
!  ind0 = hx >> 7;
!  ind0 &= 0x1ff8;
!  ind0 += 32;
!  ind0 &= -64;
!  ind1 = ind0;
!  ind1 += bit;
!
!  res = vis_fand(res,DC0);      /* DC0 = vis_to_double(0x000fffff, 0xffffffff); */
!  res = vis_for(res,A1);        /* A1  = vis_to_double(0x3fe00000, 0x00000000); */
!  res_c = vis_fpadd32(res,DC2); /* DC2 = vis_to_double(0x00001000, 0x00000000); */
!  res_c = vis_fand(res_c,DC3);  /* DC3 = vis_to_double(0x7fffe000, 0x00000000); */
!
!  pind = (char*)TBL + ind1;
!  dexp_hi = ((double*)pind)[1];
!  dexp_lo = ((double*)pind)[2];
!
!  dtmp0 = ((double*)pind)[0];
!  xx = (res - res_c);
!  xx *= dtmp0;
!
!  res = A5 * xx;
!  res += A4;
!  res *= xx;
!  res += A3;
!  res *= xx;
!  res += A2;
!  res *= xx;
!  res += A1;
!  res *= xx;
!
!  res = dexp_hi * res;
!  res += dexp_lo;
!  res += dexp_hi;
!
!  dtmp0 = vis_fpadd32(dsqrt_exp,res);
!  ((float*)py)[0] = ((float*)&dtmp0)[0];
!  ((float*)py)[1] = ((float*)&dtmp0)[1];
!  py += stridey;
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

        ENTRY(__vsqrt)
        save    %sp,-SA(MINFRAME)-tmps,%sp
        PIC_SETUP(l7)
        PIC_SET(l7,.CONST_TBL,l5)
        wr      %g0,0x82,%asi

        ldd     [TBL],A1
        sll     %i2,3,stridex
        or      %g0,%i3,%o4

        ldd     [TBL+8],A2
        sll     %i4,3,stridey
        or      %g0,0x7ff,%o0

        ldd     [TBL+16],A3
        sll     %o0,20,_0x7ff00000
        or      %g0,0x001,%o2

        ldd     [TBL+24],A4
        sll     %o2,20,_0x00100000

        ldd     [TBL+32],A5
        ldd     [TBL+40],DC0
        ldd     [TBL+48],DC2
        ldd     [TBL+56],DC3

        add     TBL,64,TBL
        add     %g0,1023,%o5
        st      %i0,[%fp+tmp_counter]

        sll     %o5,3,_0x00001ff8
        stx     %i1,[%fp+tmp_px]

.begin:
        ld      [%fp+tmp_counter],counter
        ldx     [%fp+tmp_px],%l2
        st      %g0,[%fp+tmp_counter]
.begin1:
        cmp     counter,0
        ble,pn  %icc,.exit
        lda     [%l2]%asi,%o5           ! (5_1) hx = *(int*)px;

        lda     [%l2]%asi,%f10          ! (5_0) ((float*)&res)[0] = ((float*)px)[0];

        lda     [%l2+4]%asi,%f11        ! (5_0) ((float*)&res)[1] = ((float*)px)[1];

        cmp     %o5,_0x7ff00000         ! (5_1) hx ? 0x7ff00000
        bge,pn  %icc,.spec              ! (5_1) if ( hx >= 0x7ff00000 )
        nop

        cmp     %o5,_0x00100000         ! (5_1) hx ? 0x00100000
        bl,pn   %icc,.spec              ! (5_1) if ( hx < 0x00100000 )
        nop

        add     %l2,stridex,%l2         ! px += stridex
        fand    %f10,DC0,%f50           ! (5_1) res = vis_fand(res,DC0);

        for     %f50,A1,%f40            ! (5_1) res = vis_for(res,A1);
        sra     %o5,21,%l1              ! (5_1) sqrt_exp = hx >> 21;
        sra     %o5,15,%i1              ! (5_1) bit = hx >> 15;

        sra     %o5,7,%o1               ! (5_1) ind0 = hx >> 7;
        sub     %l1,512,%o3             ! (5_1) sqrt_exp -= 512;

        and     %o1,_0x00001ff8,%o1     ! (5_1) ind0 &= 0x1ff8;
        lda     [%l2]%asi,%f10          ! (0_0) ((float*)&res)[0] = ((float*)px)[0];

        add     %o1,32,%o1              ! (5_1) ind0 += 32;
        lda     [%l2+4]%asi,%f11        ! (0_0) ((float*)&res)[1] = ((float*)px)[1];

        and     %i1,32,%i4              ! (5_1) bit &= 32;
        and     %o1,-64,%o1             ! (5_1) ind0 &= -8;

        sll     %o1,0,%o7               ! (5_1) ind1 = ind0;

        sllx    %o3,52,%o3              ! (5_1) sqrt_exp <<= 52;
        add     %o7,%i4,%l0             ! (5_1) ind1 += bit;
        lda     [%l2]%asi,%o5           ! (0_0) hx = *(int*)px;

        stx     %o3,[%fp+tmp0]          ! (5_1) dsqrt_exp = *(double*)&sqrt_exp;
        fand    %f10,DC0,%f50           ! (0_0) res = vis_fand(res,DC0);

        add     %l2,stridex,%l2         ! px += stridex
        fpadd32 %f40,DC2,%f54           ! (5_1) res_c = vis_fpadd32(res,DC2);

        add     %l0,TBL,%o1             ! (5_1) pind = (char*)TBL + ind1

        cmp     %o5,_0x7ff00000         ! (0_0) hx ? 0x7ff00000
        bge,pn  %icc,.update0           ! (0_0) if ( hx >= 0x7ff00000 )
        for     %f50,A1,%f42            ! (0_0) res = vis_for(res,A1);
.cont0:
        sra     %o5,21,%l1              ! (0_0) sqrt_exp = hx >> 21;
        sra     %o5,15,%i2              ! (0_0) bit = hx >> 15;
        ldd     [%o1],%f50              ! (5_1) dtmp0 = ((double*)pind)[0];

        sra     %o5,7,%o1               ! (0_0) ind0 = hx >> 7;
        sub     %l1,512,%o3             ! (0_0) sqrt_exp -= 512;
        fand    %f54,DC3,%f54           ! (5_1) res_c = vis_fand(res_c,DC3);

        and     %o1,_0x00001ff8,%o1     ! (0_0) ind0 &= 0x1ff8;
        lda     [%l2]%asi,%f10          ! (1_0) ((float*)&res)[0] = ((float*)px)[0];

        add     %o1,32,%o1              ! (0_0) ind0 += 32;
        lda     [%l2+4]%asi,%f11        ! (1_0) ((float*)&res)[1] = ((float*)px)[1];

        and     %i2,32,%i4              ! (0_0) bit &= 32;
        and     %o1,-64,%o1             ! (0_0) ind0 &= -8;
        fsubd   %f40,%f54,%f40          ! (5_1) xx = (res - res_c);

        sll     %o1,0,%o7               ! (0_0) ind1 = ind0;

        cmp     %o5,_0x00100000         ! (0_0) hx ? 0x00100000
        bl,pn   %icc,.update1           ! (0_0) if ( hx < 0x00100000 )
        lda     [%l2]%asi,%o5           ! (1_0) hx = *(int*)px;
.cont1:
        sllx    %o3,52,%o3              ! (0_0) sqrt_exp <<= 52;
        add     %o7,%i4,%i1             ! (0_0) ind1 += bit;

        fmuld   %f40,%f50,%f40          ! (5_1) xx *= dtmp0;
        stx     %o3,[%fp+tmp1]          ! (0_0) dsqrt_exp = *(double*)&sqrt_exp;
        fand    %f10,DC0,%f50           ! (1_0) res = vis_fand(res,DC0);

        add     %l2,stridex,%l2         ! px += stridex
        fpadd32 %f42,DC2,%f54           ! (0_0) res_c = vis_fpadd32(res,DC2);

        add     %i1,TBL,%o1             ! (0_0) pind = (char*)TBL + ind1

        cmp     %o5,_0x7ff00000         ! (1_0) hx ? 0x7ff00000
        bge,pn  %icc,.update2           ! (1_0) if ( hx >= 0x7ff00000 )
        for     %f50,A1,%f14            ! (1_0) res = vis_for(res,A1);
.cont2:
        sra     %o5,21,%l1              ! (1_0) sqrt_exp = hx >> 21;
        sra     %o5,15,%g5              ! (1_0) bit = hx >> 15;
        ldd     [%o1],%f50              ! (0_0) dtmp0 = ((double*)pind)[0];

        fmuld   A5,%f40,%f52            ! (5_1) res = A5 * xx;
        sra     %o5,7,%o1               ! (1_0) ind0 = hx >> 7;
        sub     %l1,512,%o3             ! (1_0) sqrt_exp -= 512;
        fand    %f54,DC3,%f54           ! (0_0) res_c = vis_fand(res_c,DC3);

        and     %o1,_0x00001ff8,%o1     ! (1_0) ind0 &= 0x1ff8;
        lda     [%l2]%asi,%f10          ! (2_0) ((float*)&res)[0] = ((float*)px)[0];

        add     %o1,32,%o1              ! (1_0) ind0 += 32;
        lda     [%l2+4]%asi,%f11        ! (2_0) ((float*)&res)[1] = ((float*)px)[1];

        and     %g5,32,%i4              ! (1_0) bit &= 32;
        and     %o1,-64,%o1             ! (1_0) ind0 &= -8;
        fsubd   %f42,%f54,%f42          ! (0_0) xx = (res - res_c);

        sll     %o1,0,%o7               ! (1_0) ind1 = ind0;
        faddd   %f52,A4,%f54            ! (5_1) res += A4;

        cmp     %o5,_0x00100000         ! (1_0) hx ? 0x00100000
        bl,pn   %icc,.update3           ! (1_0) if ( hx < 0x00100000 )
        lda     [%l2]%asi,%o5           ! (2_0) hx = *(int*)px;
.cont3:
        sllx    %o3,52,%o3              ! (1_0) sqrt_exp <<= 52;
        add     %o7,%i4,%i2             ! (1_0) ind1 += bit;

        fmuld   %f42,%f50,%f42          ! (0_0) xx *= dtmp0;
        stx     %o3,[%fp+tmp2]          ! (1_0) dsqrt_exp = *(double*)&sqrt_exp;
        fand    %f10,DC0,%f50           ! (2_0) res = vis_fand(res,DC0);

        fmuld   %f54,%f40,%f34          ! (5_1) res *= xx;
        fpadd32 %f14,DC2,%f54           ! (1_0) res_c = vis_fpadd32(res,DC2);
        add     %l2,stridex,%l2         ! px += stridex

        add     %i2,TBL,%o1             ! (1_0) pind = (char*)TBL + ind1

        cmp     %o5,_0x7ff00000         ! (2_0) hx ? 0x7ff00000
        bge,pn  %icc,.update4           ! (2_0) if ( hx >= 0x7ff00000 )
        for     %f50,A1,%f18            ! (2_0) res = vis_for(res,A1);
.cont4:
        sra     %o5,21,%l1              ! (2_0) sqrt_exp = hx >> 21;
        sra     %o5,15,%g1              ! (2_0) bit = hx >> 15;
        ldd     [%o1],%f50              ! (1_0) dtmp0 = ((double*)pind)[0];

        fmuld   A5,%f42,%f52            ! (0_0) res = A5 * xx;
        sra     %o5,7,%o1               ! (2_0) ind0 = hx >> 7;
        sub     %l1,512,%o3             ! (2_0) sqrt_exp -= 512;
        fand    %f54,DC3,%f54           ! (1_0) res_c = vis_fand(res_c,DC3);

        and     %o1,_0x00001ff8,%o1     ! (2_0) ind0 &= 0x1ff8;
        lda     [%l2]%asi,%f10          ! (3_0) ((float*)&res)[0] = ((float*)px)[0];
        faddd   %f34,A3,%f62            ! (5_1) res += A3;

        add     %o1,32,%o1              ! (2_0) ind0 += 32;
        lda     [%l2+4]%asi,%f11        ! (3_0) ((float*)&res)[1] = ((float*)px)[1];

        and     %g1,32,%i4              ! (2_0) bit &= 32;
        and     %o1,-64,%o1             ! (2_0) ind0 &= -8;
        fsubd   %f14,%f54,%f14          ! (1_0) xx = (res - res_c);

        sll     %o1,0,%o7               ! (2_0) ind1 = ind0;
        faddd   %f52,A4,%f54            ! (0_0) res += A4;

        fmuld   %f62,%f40,%f52          ! (5_1) res *= xx;
        cmp     %o5,_0x00100000         ! (2_0) hx ? 0x00100000
        bl,pn   %icc,.update5           ! (2_0) if ( hx < 0x00100000 )
        lda     [%l2]%asi,%o5           ! (3_0) hx = *(int*)px;
.cont5:
        sllx    %o3,52,%o3              ! (2_0) sqrt_exp <<= 52;
        add     %o7,%i4,%g5             ! (2_0) ind1 += bit;

        fmuld   %f14,%f50,%f14          ! (1_0) xx *= dtmp0;
        stx     %o3,[%fp+tmp3]          ! (2_0) dsqrt_exp = *(double*)&sqrt_exp;
        fand    %f10,DC0,%f50           ! (3_0) res = vis_fand(res,DC0);

        fmuld   %f54,%f42,%f34          ! (0_0) res *= xx;
        fpadd32 %f18,DC2,%f54           ! (2_0) res_c = vis_fpadd32(res,DC2);
        add     %l2,stridex,%l2         ! px += stridex

        add     %g5,TBL,%o1             ! (2_0) pind = (char*)TBL + ind1
        faddd   %f52,A2,%f20            ! (5_1) res += A2;

        cmp     %o5,_0x7ff00000         ! (3_0) hx ? 0x7ff00000
        bge,pn  %icc,.update6           ! (3_0) if ( hx >= 0x7ff00000 )
        for     %f50,A1,%f44            ! (3_0) res = vis_for(res,A1);
.cont6:
        sra     %o5,21,%l1              ! (3_0) sqrt_exp = hx >> 21;
        sra     %o5,15,%i3              ! (3_0) bit = hx >> 15;
        ldd     [%o1],%f50              ! (2_0) dtmp0 = ((double*)pind)[0];

        fmuld   A5,%f14,%f52            ! (1_0) res = A5 * xx;
        sra     %o5,7,%o1               ! (3_0) ind0 = hx >> 7;
        sub     %l1,512,%o3             ! (3_0) sqrt_exp -= 512;
        fand    %f54,DC3,%f54           ! (2_0) res_c = vis_fand(res_c,DC3);

        fmuld   %f20,%f40,%f20          ! (5_1) res *= xx;
        and     %o1,_0x00001ff8,%o1     ! (3_0) ind0 &= 0x1ff8;
        lda     [%l2]%asi,%f10          ! (4_0) ((float*)&res)[0] = ((float*)px)[0];
        faddd   %f34,A3,%f62            ! (0_0) res += A3;

        add     %o1,32,%o1              ! (3_0) ind0 += 32;
        lda     [%l2+4]%asi,%f11        ! (4_0) ((float*)&res)[1] = ((float*)px)[1];

        and     %i3,32,%i4              ! (3_0) bit &= 32;
        and     %o1,-64,%o1             ! (3_0) ind0 &= -8;
        fsubd   %f18,%f54,%f18          ! (2_0) xx = (res - res_c);

        sll     %o1,0,%o7               ! (3_0) ind1 = ind0;
        faddd   %f52,A4,%f54            ! (1_0) res += A4;

        fmuld   %f62,%f42,%f52          ! (0_0) res *= xx;
        cmp     %o5,_0x00100000         ! (3_0) hx ? 0x00100000
        bl,pn   %icc,.update7           ! (3_0) if ( hx < 0x00100000 )
        faddd   %f20,A1,%f12            ! (5_1) res += A1;
.cont7:
        lda     [%l2]%asi,%o5           ! (4_0) hx = *(int*)px;
        sllx    %o3,52,%o3              ! (3_0) sqrt_exp <<= 52;
        add     %o7,%i4,%g1             ! (3_0) ind1 += bit;

        fmuld   %f18,%f50,%f18          ! (2_0) xx *= dtmp0;
        add     %l0,TBL,%l0             ! (5_1) pind = (char*)TBL + ind1;
        stx     %o3,[%fp+tmp4]          ! (3_0) dsqrt_exp = *(double*)&sqrt_exp;
        fand    %f10,DC0,%f50           ! (4_0) res = vis_fand(res,DC0);

        fmuld   %f54,%f14,%f34          ! (1_0) res *= xx;
        add     %l2,stridex,%l2         ! px += stridex
        ldd     [%l0+16],%f36           ! (5_1) dexp_lo = ((double*)pind)[2];
        fpadd32 %f44,DC2,%f54           ! (3_0) res_c = vis_fpadd32(res,DC2);

        fmuld   %f12,%f40,%f12          ! (5_1) res *= xx;
        add     %g1,TBL,%o1             ! (3_0) (char*)div_arr+ind0
        ldd     [%l0+8],%f40            ! (5_1) dexp_hi = ((double*)pind)[1];
        faddd   %f52,A2,%f20            ! (0_0) res += A2;

        cmp     %o5,_0x7ff00000         ! (4_0) hx ? 0x7ff00000
        bge,pn  %icc,.update8           ! (4_0) if ( hx >= 0x7ff00000 )
        for     %f50,A1,%f24            ! (4_0) res = vis_for(res,A1);
.cont8:
        sra     %o5,21,%l1              ! (4_0) sqrt_exp = hx >> 21;
        sra     %o5,15,%l0              ! (4_0) bit = hx >> 15;
        ldd     [%o1],%f22              ! (3_0) dtmp0 = ((double*)pind)[0];

        fmuld   A5,%f18,%f52            ! (2_0) res = A5 * xx;
        sra     %o5,7,%o1               ! (4_0) ind0 = hx >> 7;
        sub     %l1,512,%o3             ! (4_0) sqrt_exp -= 512;
        fand    %f54,DC3,%f54           ! (3_0) res_c = vis_fand(res_c,DC3);

        fmuld   %f20,%f42,%f20          ! (0_0) res *= xx;
        and     %o1,_0x00001ff8,%o1     ! (4_0) ind0 &= 0x1ff8;
        lda     [%l2]%asi,%f10          ! (5_0) ((float*)&res)[0] = ((float*)px)[0];
        faddd   %f34,A3,%f62            ! (1_0) res += A3;

        fmuld   %f40,%f12,%f34          ! (5_1) res = dexp_hi * res;
        add     %o1,32,%o1              ! (4_0) ind0 += 32;
        lda     [%l2+4]%asi,%f11        ! (5_0) ((float*)&res)[1] = ((float*)px)[1];

        and     %l0,32,%i4              ! (4_0) bit &= 32;
        cmp     %o5,_0x00100000         ! (4_0) hx ? 0x00100000
        bl,pn   %icc,.update9           ! (4_0) if ( hx < 0x00100000 )
        fsubd   %f44,%f54,%f44          ! (3_0) xx = (res - res_c);
.cont9:
        and     %o1,-64,%o1             ! (4_0) ind0 &= -8;
        faddd   %f52,A4,%f54            ! (2_0) res += A4;

        cmp     counter,6
        bl,pn   %icc,.tail
        or      %g0,%o4,%l0

        ba      .main_loop
        nop

        .align  16
.main_loop:
        fmuld   %f62,%f14,%f52          ! (1_1) res *= xx;
        sll     %o1,0,%i3               ! (4_1) ind1 = ind0;
        add     %i1,TBL,%i1             ! (0_1) pind = (char*)TBL + ind1;
        faddd   %f20,A1,%f12            ! (0_1) res += A1;

        lda     [%l2]%asi,%o5           ! (5_1) hx = *(int*)px;
        sllx    %o3,52,%o3              ! (4_1) sqrt_exp <<= 52;
        add     %i3,%i4,%i3             ! (4_1) ind1 += bit;
        faddd   %f34,%f36,%f60          ! (5_2) res += dexp_lo;

        fmuld   %f44,%f22,%f44          ! (3_1) xx *= dtmp0;
        add     %l2,stridex,%l2         ! px += stridex
        stx     %o3,[%fp+tmp5]          ! (4_1) dsqrt_exp = *(double*)&sqrt_exp;
        fand    %f10,DC0,%f50           ! (5_1) res = vis_fand(res,DC0);

        fmuld   %f54,%f18,%f34          ! (2_1) res *= xx;
        nop
        ldd     [%i1+16],%f36           ! (0_1) dexp_lo = ((double*)pind)[2];
        fpadd32 %f24,DC2,%f54           ! (4_1) res_c = vis_fpadd32(res,DC2);

        fmuld   %f12,%f42,%f16          ! (0_1) res *= xx;
        sra     %o5,21,%l1              ! (5_1) sqrt_exp = hx >> 21;
        ldd     [%i1+8],%f42            ! (0_1) dexp_hi = ((double*)pind)[1];
        faddd   %f52,A2,%f20            ! (1_1) res += A2;

        ldd     [%fp+tmp0],%f48         ! (5_2) dsqrt_exp = *(double*)&sqrt_exp;
        cmp     %o5,_0x7ff00000         ! (5_1) hx ? 0x7ff00000
        bge,pn  %icc,.update10          ! (5_1) if ( hx >= 0x7ff00000 )
        faddd   %f60,%f40,%f60          ! (5_2) res += dexp_hi;
.cont10:
        lda     [%l2]%asi,%f10          ! (0_0) ((float*)&res)[0] = ((float*)px)[0];
        sra     %o5,15,%i1              ! (5_1) bit = hx >> 15;
        add     %i3,TBL,%o7             ! (4_1) pind = (char*)TBL + ind1
        for     %f50,A1,%f40            ! (5_1) res = vis_for(res,A1);

        fmuld   A5,%f44,%f52            ! (3_1) res = A5 * xx;
        sra     %o5,7,%o1               ! (5_1) ind0 = hx >> 7;
        ldd     [%o7],%f22              ! (4_1) dtmp0 = ((double*)pind)[0];
        fand    %f54,DC3,%f54           ! (4_1) res_c = vis_fand(res_c,DC3);

        fmuld   %f20,%f14,%f20          ! (1_1) res *= xx;
        and     %o1,_0x00001ff8,%o1     ! (5_1) ind0 &= 0x1ff8;
        sub     %l1,512,%o3             ! (5_1) sqrt_exp -= 512;
        faddd   %f34,A3,%f62            ! (2_1) res += A3;

        fpadd32 %f48,%f60,%f12          ! (5_2) dtmp0 = vis_fpadd32(dsqrt_exp,res);
        add     %o1,32,%o1              ! (5_1) ind0 += 32;
        st      %f12,[%l0]              ! (5_2) ((float*)py)[0] = ((float*)&dtmp0)[0];
        fmuld   %f42,%f16,%f34          ! (0_1) res = dexp_hi * res;

        lda     [%l2+4]%asi,%f11        ! (0_0) ((float*)&res)[1] = ((float*)px)[1];
        and     %i1,32,%i4              ! (5_1) bit &= 32;
        and     %o1,-64,%o1             ! (5_1) ind0 &= -8;
        fsubd   %f24,%f54,%f24          ! (4_1) xx = (res - res_c);

        sll     %o1,0,%o7               ! (5_1) ind1 = ind0;
        add     %l0,stridey,%i1         ! py += stridey
        st      %f13,[%l0+4]            ! (5_2) ((float*)py)[1] = ((float*)&dtmp0)[1];
        faddd   %f52,A4,%f54            ! (3_1) res += A4;

        fmuld   %f62,%f18,%f52          ! (2_1) res *= xx;
        cmp     %o5,_0x00100000         ! (5_1) hx ? 0x00100000
        bl,pn   %icc,.update11          ! (5_1) if ( hx < 0x00100000 )
        faddd   %f20,A1,%f12            ! (1_1) res += A1;
.cont11:
        sllx    %o3,52,%o3              ! (5_1) sqrt_exp <<= 52;
        add     %o7,%i4,%l0             ! (5_1) ind1 += bit;
        lda     [%l2]%asi,%o5           ! (0_0) hx = *(int*)px;
        faddd   %f34,%f36,%f60          ! (0_1) res += dexp_lo;

        fmuld   %f24,%f22,%f24          ! (4_1) xx *= dtmp0;
        add     %i2,TBL,%i2             ! (1_1) pind = (char*)TBL + ind1;
        stx     %o3,[%fp+tmp0]          ! (5_1) dsqrt_exp = *(double*)&sqrt_exp;
        fand    %f10,DC0,%f50           ! (0_0) res = vis_fand(res,DC0);

        fmuld   %f54,%f44,%f34          ! (3_1) res *= xx;
        add     %l2,stridex,%l2         ! px += stridex
        ldd     [%i2+16],%f36           ! (1_1) dexp_lo = ((double*)pind)[2];
        fpadd32 %f40,DC2,%f54           ! (5_1) res_c = vis_fpadd32(res,DC2);

        fmuld   %f12,%f14,%f16          ! (1_1) res *= xx;
        sra     %o5,21,%l1              ! (0_0) sqrt_exp = hx >> 21;
        ldd     [%i2+8],%f14            ! (1_1) dexp_hi = ((double*)pind)[1];
        faddd   %f52,A2,%f20            ! (2_1) res += A2;

        ldd     [%fp+tmp1],%f48         ! (0_1) dsqrt_exp = *(double*)&sqrt_exp;
        cmp     %o5,_0x7ff00000         ! (0_0) hx ? 0x7ff00000
        bge,pn  %icc,.update12          ! (0_0) if ( hx >= 0x7ff00000 )
        faddd   %f60,%f42,%f60          ! (0_1) res += dexp_hi;
.cont12:
        lda     [%l2]%asi,%f10          ! (1_0) ((float*)&res)[0] = ((float*)px)[0];
        sra     %o5,15,%i2              ! (0_0) bit = hx >> 15;
        add     %l0,TBL,%o7             ! (5_1) pind = (char*)TBL + ind1
        for     %f50,A1,%f42            ! (0_0) res = vis_for(res,A1);

        fmuld   A5,%f24,%f52            ! (4_1) res = A5 * xx;
        sra     %o5,7,%o1               ! (0_0) ind0 = hx >> 7;
        ldd     [%o7],%f22              ! (5_1) dtmp0 = ((double*)pind)[0];
        fand    %f54,DC3,%f54           ! (5_1) res_c = vis_fand(res_c,DC3);

        fmuld   %f20,%f18,%f20          ! (2_1) res *= xx;
        and     %o1,_0x00001ff8,%o1     ! (0_0) ind0 &= 0x1ff8;
        sub     %l1,512,%o3             ! (0_0) sqrt_exp -= 512;
        faddd   %f34,A3,%f62            ! (3_1) res += A3;

        fpadd32 %f48,%f60,%f12          ! (0_1) dtmp0 = vis_fpadd32(dsqrt_exp,res);
        add     %o1,32,%o1              ! (0_0) ind0 += 32;
        st      %f12,[%i1]              ! (0_1) ((float*)py)[0] = ((float*)&dtmp0)[0];
        fmuld   %f14,%f16,%f34          ! (1_1) res = dexp_hi * res;

        lda     [%l2+4]%asi,%f11        ! (1_0) ((float*)&res)[1] = ((float*)px)[1];
        and     %i2,32,%i4              ! (0_0) bit &= 32;
        and     %o1,-64,%o1             ! (0_0) ind0 &= -8;
        fsubd   %f40,%f54,%f40          ! (5_1) xx = (res - res_c);

        sll     %o1,0,%o7               ! (0_0) ind1 = ind0;
        add     %i1,stridey,%i2         ! py += stridey
        st      %f13,[%i1+4]            ! (0_1) ((float*)py)[1] = ((float*)&dtmp0)[1];
        faddd   %f52,A4,%f54            ! (4_1) res += A4;

        fmuld   %f62,%f44,%f52          ! (3_1) res *= xx;
        cmp     %o5,_0x00100000         ! (0_0) hx ? 0x00100000
        bl,pn   %icc,.update13          ! (0_0) if ( hx < 0x00100000 )
        faddd   %f20,A1,%f12            ! (2_1) res += A1;
.cont13:
        lda     [%l2]%asi,%o5           ! (1_0) hx = *(int*)px;
        sllx    %o3,52,%o3              ! (0_0) sqrt_exp <<= 52;
        add     %o7,%i4,%i1             ! (0_0) ind1 += bit;
        faddd   %f34,%f36,%f60          ! (1_1) res += dexp_lo;

        fmuld   %f40,%f22,%f40          ! (5_1) xx *= dtmp0;
        add     %g5,TBL,%g5             ! (2_1) pind = (char*)TBL + ind1;
        stx     %o3,[%fp+tmp1]          ! (0_0) dsqrt_exp = *(double*)&sqrt_exp;
        fand    %f10,DC0,%f50           ! (1_0) res = vis_fand(res,DC0);

        fmuld   %f54,%f24,%f34          ! (4_1) res *= xx;
        add     %l2,stridex,%l2         ! px += stridex
        ldd     [%g5+16],%f36           ! (2_1) dexp_lo = ((double*)pind)[2];
        fpadd32 %f42,DC2,%f54           ! (0_0) res_c = vis_fpadd32(res,DC2);

        fmuld   %f12,%f18,%f16          ! (2_1) res *= xx;
        sra     %o5,21,%l1              ! (1_0) sqrt_exp = hx >> 21;
        ldd     [%g5+8],%f18            ! (2_1) dexp_hi = ((double*)pind)[1];
        faddd   %f52,A2,%f20            ! (3_1) res += A2;

        ldd     [%fp+tmp2],%f48         ! (1_1) dsqrt_exp = *(double*)&sqrt_exp;
        cmp     %o5,_0x7ff00000         ! (1_0) hx ? 0x7ff00000
        bge,pn  %icc,.update14          ! (1_0) if ( hx >= 0x7ff00000 )
        faddd   %f60,%f14,%f60          ! (1_1) res += dexp_hi;
.cont14:
        lda     [%l2]%asi,%f10          ! (2_0) ((float*)&res)[0] = ((float*)px)[0];
        sra     %o5,15,%g5              ! (1_0) bit = hx >> 15;
        add     %i1,TBL,%o7             ! (0_0) pind = (char*)TBL + ind1
        for     %f50,A1,%f14            ! (1_0) res = vis_for(res,A1);

        fmuld   A5,%f40,%f52            ! (5_1) res = A5 * xx;
        sra     %o5,7,%o1               ! (1_0) ind0 = hx >> 7;
        ldd     [%o7],%f22              ! (0_0) dtmp0 = ((double*)pind)[0];
        fand    %f54,DC3,%f54           ! (0_0) res_c = vis_fand(res_c,DC3);

        fmuld   %f20,%f44,%f20          ! (3_1) res *= xx;
        and     %o1,_0x00001ff8,%o1     ! (1_0) ind0 &= 0x1ff8;
        sub     %l1,512,%o3             ! (1_0) sqrt_exp -= 512;
        faddd   %f34,A3,%f62            ! (4_1) res += A3;

        fpadd32 %f48,%f60,%f12          ! (1_1) dtmp0 = vis_fpadd32(dsqrt_exp,res);
        add     %o1,32,%o1              ! (1_0) ind0 += 32;
        st      %f12,[%i2]              ! (1_1) ((float*)py)[0] = ((float*)&dtmp0)[0];
        fmuld   %f18,%f16,%f34          ! (2_1) res = dexp_hi * res;

        lda     [%l2+4]%asi,%f11        ! (2_0) ((float*)&res)[1] = ((float*)px)[1];
        and     %g5,32,%i4              ! (1_0) bit &= 32;
        and     %o1,-64,%o1             ! (1_0) ind0 &= -8;
        fsubd   %f42,%f54,%f42          ! (0_0) xx = (res - res_c);

        sll     %o1,0,%o7               ! (1_0) ind1 = ind0;
        add     %i2,stridey,%g5         ! py += stridey
        st      %f13,[%i2+4]            ! (1_1) ((float*)py)[1] = ((float*)&dtmp0)[1];
        faddd   %f52,A4,%f54            ! (5_1) res += A4;

        fmuld   %f62,%f24,%f52          ! (4_1) res *= xx;
        cmp     %o5,_0x00100000         ! (1_0) hx ? 0x00100000
        bl,pn   %icc,.update15          ! (1_0) if ( hx < 0x00100000 )
        faddd   %f20,A1,%f12            ! (3_1) res += A1;
.cont15:
        lda     [%l2]%asi,%o5           ! (2_0) hx = *(int*)px;
        sllx    %o3,52,%o3              ! (1_0) sqrt_exp <<= 52;
        add     %o7,%i4,%i2             ! (1_0) ind1 += bit;
        faddd   %f34,%f36,%f60          ! (2_1) res += dexp_lo;

        fmuld   %f42,%f22,%f42          ! (0_0) xx *= dtmp0;
        add     %g1,TBL,%g1             ! (3_1) pind = (char*)TBL + ind1;
        stx     %o3,[%fp+tmp2]          ! (1_0) dsqrt_exp = *(double*)&sqrt_exp;
        fand    %f10,DC0,%f50           ! (2_0) res = vis_fand(res,DC0);

        fmuld   %f54,%f40,%f34          ! (5_1) res *= xx;
        fpadd32 %f14,DC2,%f54           ! (1_0) res_c = vis_fpadd32(res,DC2);
        add     %l2,stridex,%l2         ! px += stridex
        ldd     [%g1+16],%f36           ! (3_1) dexp_lo = ((double*)pind)[2];

        fmuld   %f12,%f44,%f16          ! (3_1) res *= xx;
        sra     %o5,21,%l1              ! (2_0) sqrt_exp = hx >> 21;
        ldd     [%g1+8],%f44            ! (3_1) dexp_hi = ((double*)pind)[1];
        faddd   %f52,A2,%f20            ! (4_1) res += A2;

        ldd     [%fp+tmp3],%f48         ! (2_1) dsqrt_exp = *(double*)&sqrt_exp;
        cmp     %o5,_0x7ff00000         ! (2_0) hx ? 0x7ff00000
        bge,pn  %icc,.update16          ! (2_0) if ( hx >= 0x7ff00000 )
        faddd   %f60,%f18,%f60          ! (2_1) res += dexp_hi;
.cont16:
        lda     [%l2]%asi,%f10          ! (3_0) ((float*)&res)[0] = ((float*)px)[0];
        sra     %o5,15,%g1              ! (2_0) bit = hx >> 15;
        add     %i2,TBL,%o7             ! (1_0) pind = (char*)TBL + ind1
        for     %f50,A1,%f18            ! (2_0) res = vis_for(res,A1);

        fmuld   A5,%f42,%f52            ! (0_0) res = A5 * xx;
        sra     %o5,7,%o1               ! (2_0) ind0 = hx >> 7;
        ldd     [%o7],%f22              ! (1_0) dtmp0 = ((double*)pind)[0];
        fand    %f54,DC3,%f54           ! (1_0) res_c = vis_fand(res_c,DC3);

        fmuld   %f20,%f24,%f20          ! (4_1) res *= xx;
        and     %o1,_0x00001ff8,%o1     ! (2_0) ind0 &= 0x1ff8;
        sub     %l1,512,%o3             ! (2_0) sqrt_exp -= 512;
        faddd   %f34,A3,%f62            ! (5_1) res += A3;

        fpadd32 %f48,%f60,%f12          ! (2_1) dtmp0 = vis_fpadd32(dsqrt_exp,res);
        add     %o1,32,%o1              ! (2_0) ind0 += 32;
        st      %f12,[%g5]              ! (2_1) ((float*)py)[0] = ((float*)&dtmp0)[0];
        fmuld   %f44,%f16,%f34          ! (3_1) res = dexp_hi * res;

        lda     [%l2+4]%asi,%f11        ! (3_0) ((float*)&res)[1] = ((float*)px)[1];
        and     %g1,32,%i4              ! (2_0) bit &= 32;
        and     %o1,-64,%o1             ! (2_0) ind0 &= -8;
        fsubd   %f14,%f54,%f14          ! (1_0) xx = (res - res_c);

        sll     %o1,0,%o7               ! (2_0) ind1 = ind0;
        add     %g5,stridey,%g1         ! py += stridey
        st      %f13,[%g5+4]            ! (2_1) ((float*)py)[1] = ((float*)&dtmp0)[1];
        faddd   %f52,A4,%f54            ! (0_0) res += A4;

        fmuld   %f62,%f40,%f52          ! (5_1) res *= xx;
        cmp     %o5,_0x00100000         ! (2_0) hx ? 0x00100000
        bl,pn   %icc,.update17          ! (2_0) if ( hx < 0x00100000 )
        faddd   %f20,A1,%f12            ! (4_1) res += A1;
.cont17:
        lda     [%l2]%asi,%o5           ! (3_0) hx = *(int*)px;
        sllx    %o3,52,%o3              ! (2_0) sqrt_exp <<= 52;
        add     %o7,%i4,%g5             ! (2_0) ind1 += bit;
        faddd   %f34,%f36,%f60          ! (3_1) res += dexp_lo;

        fmuld   %f14,%f22,%f14          ! (1_0) xx *= dtmp0;
        add     %i3,TBL,%i3             ! (4_1) pind = (char*)TBL + ind1;
        stx     %o3,[%fp+tmp3]          ! (2_0) dsqrt_exp = *(double*)&sqrt_exp;
        fand    %f10,DC0,%f50           ! (3_0) res = vis_fand(res,DC0);

        fmuld   %f54,%f42,%f34          ! (0_0) res *= xx;
        fpadd32 %f18,DC2,%f54           ! (2_0) res_c = vis_fpadd32(res,DC2);
        add     %l2,stridex,%l2         ! px += stridex
        ldd     [%i3+16],%f36           ! (4_1) dexp_lo = ((double*)pind)[2];

        fmuld   %f12,%f24,%f16          ! (4_1) res *= xx;
        sra     %o5,21,%l1              ! (3_0) sqrt_exp = hx >> 21;
        ldd     [%i3+8],%f24            ! (4_1) dexp_hi = ((double*)pind)[1];
        faddd   %f52,A2,%f20            ! (5_1) res += A2;

        ldd     [%fp+tmp4],%f48         ! (3_1) dsqrt_exp = *(double*)&sqrt_exp;
        cmp     %o5,_0x7ff00000         ! (3_0) hx ? 0x7ff00000
        bge,pn  %icc,.update18          ! (3_0) if ( hx >= 0x7ff00000 )
        faddd   %f60,%f44,%f60          ! (3_1) res += dexp_hi;
.cont18:
        lda     [%l2]%asi,%f10          ! (4_0) ((float*)&res)[0] = ((float*)px)[0];
        sra     %o5,15,%i3              ! (3_0) bit = hx >> 15;
        add     %g5,TBL,%o7             ! (2_0) pind = (char*)TBL + ind1
        for     %f50,A1,%f44            ! (3_0) res = vis_for(res,A1);

        fmuld   A5,%f14,%f52            ! (1_0) res = A5 * xx;
        sra     %o5,7,%o1               ! (3_0) ind0 = hx >> 7;
        ldd     [%o7],%f22              ! (2_0) dtmp0 = ((double*)pind)[0];
        fand    %f54,DC3,%f54           ! (2_0) res_c = vis_fand(res_c,DC3);

        fmuld   %f20,%f40,%f20          ! (5_1) res *= xx;
        and     %o1,_0x00001ff8,%o1     ! (3_0) ind0 &= 0x1ff8;
        sub     %l1,512,%o3             ! (3_0) sqrt_exp -= 512;
        faddd   %f34,A3,%f62            ! (0_0) res += A3;

        fpadd32 %f48,%f60,%f12          ! (3_1) dtmp0 = vis_fpadd32(dsqrt_exp,res);
        add     %o1,32,%o1              ! (3_0) ind0 += 32;
        st      %f12,[%g1]              ! (3_1) ((float*)py)[0] = ((float*)&dtmp0)[0];
        fmuld   %f24,%f16,%f34          ! (4_1) res = dexp_hi * res;

        lda     [%l2+4]%asi,%f11        ! (4_0) ((float*)&res)[1] = ((float*)px)[1];
        and     %i3,32,%i4              ! (3_0) bit &= 32;
        and     %o1,-64,%o1             ! (3_0) ind0 &= -8;
        fsubd   %f18,%f54,%f18          ! (2_0) xx = (res - res_c);

        or      %g0,%o1,%o7             ! (3_0) ind1 = ind0;
        add     %g1,stridey,%i3         ! py += stridey
        st      %f13,[%g1+4]            ! (3_1) ((float*)py)[1] = ((float*)&dtmp0)[1];
        faddd   %f52,A4,%f54            ! (1_0) res += A4;

        fmuld   %f62,%f42,%f52          ! (0_0) res *= xx;
        cmp     %o5,_0x00100000         ! (3_0) hx ? 0x00100000
        bl,pn   %icc,.update19          ! (3_0) if ( hx < 0x00100000 )
        faddd   %f20,A1,%f12            ! (5_1) res += A1;
.cont19:
        lda     [%l2]%asi,%o5           ! (4_0) hx = *(int*)px;
        sllx    %o3,52,%o3              ! (3_0) sqrt_exp <<= 52;
        add     %o7,%i4,%g1             ! (3_0) ind1 += bit;
        faddd   %f34,%f36,%f60          ! (4_1) res += dexp_lo;

        fmuld   %f18,%f22,%f18          ! (2_0) xx *= dtmp0;
        add     %l0,TBL,%l0             ! (5_1) pind = (char*)TBL + ind1;
        stx     %o3,[%fp+tmp4]          ! (3_0) dsqrt_exp = *(double*)&sqrt_exp;
        fand    %f10,DC0,%f50           ! (4_0) res = vis_fand(res,DC0);

        fmuld   %f54,%f14,%f34          ! (1_0) res *= xx;
        add     %l2,stridex,%l2         ! px += stridex
        ldd     [%l0+16],%f36           ! (5_1) dexp_lo = ((double*)pind)[2];
        fpadd32 %f44,DC2,%f54           ! (3_0) res_c = vis_fpadd32(res,DC2);

        fmuld   %f12,%f40,%f16          ! (5_1) res *= xx;
        sra     %o5,21,%l1              ! (4_0) sqrt_exp = hx >> 21;
        ldd     [%l0+8],%f40            ! (5_1) dexp_hi = ((double*)pind)[1];
        faddd   %f52,A2,%f20            ! (0_0) res += A2;

        ldd     [%fp+tmp5],%f48         ! (4_1) dsqrt_exp = *(double*)&sqrt_exp;
        cmp     %o5,_0x7ff00000         ! (4_0) hx ? 0x7ff00000
        bge,pn  %icc,.update20          ! (4_0) if ( hx >= 0x7ff00000 )
        faddd   %f60,%f24,%f60          ! (4_1) res += dexp_hi;
.cont20:
        lda     [%l2]%asi,%f10          ! (5_0) ((float*)&res)[0] = ((float*)px)[0];
        sra     %o5,15,%l0              ! (4_0) bit = hx >> 15;
        add     %g1,TBL,%o7             ! (3_0) (char*)div_arr+ind0
        for     %f50,A1,%f24            ! (4_0) res = vis_for(res,A1);

        fmuld   A5,%f18,%f52            ! (2_0) res = A5 * xx;
        sra     %o5,7,%o1               ! (4_0) ind0 = hx >> 7;
        ldd     [%o7],%f22              ! (3_0) dtmp0 = ((double*)pind)[0];
        fand    %f54,DC3,%f54           ! (3_0) res_c = vis_fand(res_c,DC3);

        fmuld   %f20,%f42,%f20          ! (0_0) res *= xx;
        and     %o1,_0x00001ff8,%o1     ! (4_0) ind0 &= 0x1ff8;
        sub     %l1,512,%o3             ! (4_0) sqrt_exp -= 512;
        faddd   %f34,A3,%f62            ! (1_0) res += A3;

        lda     [%l2+4]%asi,%f11        ! (5_0) ((float*)&res)[1] = ((float*)px)[1];
        add     %o1,32,%o1              ! (4_0) ind0 += 32;
        fpadd32 %f48,%f60,%f12          ! (4_1) dtmp0 = vis_fpadd32(dsqrt_exp,res);
        fmuld   %f40,%f16,%f34          ! (5_1) res = dexp_hi * res;

        and     %l0,32,%i4              ! (4_0) bit &= 32;
        cmp     %o5,_0x00100000         ! (4_0) hx ? 0x00100000
        bl,pn   %icc,.update21          ! (4_0) if ( hx < 0x00100000 )
        fsubd   %f44,%f54,%f44          ! (3_0) xx = (res - res_c);
.cont21:
        and     %o1,-64,%o1             ! (4_0) ind0 &= -8;
        sub     counter,6,counter       ! counter
        st      %f12,[%i3]              ! (4_1) ((float*)py)[0] = ((float*)&dtmp0)[0];
        faddd   %f52,A4,%f54            ! (2_0) res += A4;

        st      %f13,[%i3+4]            ! (4_1) ((float*)py)[1] = ((float*)&dtmp0)[1];
        cmp     counter,6
        bge,pt  %icc,.main_loop
        add     %i3,stridey,%l0         ! py += stridey

.tail:
        subcc   counter,1,counter
        bneg    .begin
        or      %g0,%l0,%o4

        fmuld   %f62,%f14,%f52          ! (1_1) res *= xx;
        add     %i1,TBL,%i1             ! (0_1) pind = (char*)TBL + ind1;
        faddd   %f20,A1,%f12            ! (0_1) res += A1;

        faddd   %f34,%f36,%f60          ! (5_2) res += dexp_lo;

        fmuld   %f44,%f22,%f44          ! (3_1) xx *= dtmp0;
        add     %l2,stridex,%l2         ! px += stridex

        fmuld   %f54,%f18,%f34          ! (2_1) res *= xx;
        ldd     [%i1+16],%f36           ! (0_1) dexp_lo = ((double*)pind)[2];

        fmuld   %f12,%f42,%f12          ! (0_1) res *= xx;
        ldd     [%i1+8],%f42            ! (0_1) dexp_hi = ((double*)pind)[1];
        faddd   %f52,A2,%f20            ! (1_1) res += A2;

        ldd     [%fp+tmp0],%f48         ! (5_2) dsqrt_exp = *(double*)&sqrt_exp;
        faddd   %f60,%f40,%f60          ! (5_2) res += dexp_hi;

        fmuld   A5,%f44,%f52            ! (3_1) res = A5 * xx;

        fmuld   %f20,%f14,%f20          ! (1_1) res *= xx;
        faddd   %f34,A3,%f62            ! (2_1) res += A3;

        fmuld   %f42,%f12,%f34          ! (0_1) res = dexp_hi * res;
        fpadd32 %f48,%f60,%f12          ! (5_2) dtmp0 = vis_fpadd32(dsqrt_exp,res);

        st      %f12,[%l0]              ! (5_2) ((float*)py)[0] = ((float*)&dtmp0)[0];

        add     %l0,stridey,%i1         ! py += stridey
        st      %f13,[%l0+4]            ! (5_2) ((float*)py)[1] = ((float*)&dtmp0)[1];
        faddd   %f52,A4,%f54            ! (3_1) res += A4;

        subcc   counter,1,counter
        bneg    .begin
        or      %g0,%i1,%o4

        fmuld   %f62,%f18,%f52          ! (2_1) res *= xx;
        faddd   %f20,A1,%f12            ! (1_1) res += A1;

        faddd   %f34,%f36,%f60          ! (0_1) res += dexp_lo;

        add     %i2,TBL,%i2             ! (1_1) pind = (char*)TBL + ind1;

        fmuld   %f54,%f44,%f34          ! (3_1) res *= xx;
        add     %l2,stridex,%l2         ! px += stridex
        ldd     [%i2+16],%f36           ! (1_1) dexp_lo = ((double*)pind)[2];

        fmuld   %f12,%f14,%f12          ! (1_1) res *= xx;
        ldd     [%i2+8],%f14            ! (1_1) dexp_hi = ((double*)pind)[1];
        faddd   %f52,A2,%f20            ! (2_1) res += A2;

        ldd     [%fp+tmp1],%f48         ! (0_1) dsqrt_exp = *(double*)&sqrt_exp;
        faddd   %f60,%f42,%f60          ! (0_1) res += dexp_hi;

        fmuld   %f20,%f18,%f20          ! (2_1) res *= xx;
        faddd   %f34,A3,%f62            ! (3_1) res += A3;

        fmuld   %f14,%f12,%f34          ! (1_1) res = dexp_hi * res;
        fpadd32 %f48,%f60,%f12          ! (0_1) dtmp0 = vis_fpadd32(dsqrt_exp,res);

        st      %f12,[%i1]              ! (0_1) ((float*)py)[0] = ((float*)&dtmp0)[0];

        add     %i1,stridey,%i2         ! py += stridey
        st      %f13,[%i1+4]            ! (0_1) ((float*)py)[1] = ((float*)&dtmp0)[1];

        subcc   counter,1,counter
        bneg    .begin
        or      %g0,%i2,%o4

        fmuld   %f62,%f44,%f52          ! (3_1) res *= xx;
        faddd   %f20,A1,%f12            ! (2_1) res += A1;

        faddd   %f34,%f36,%f60          ! (1_1) res += dexp_lo;

        add     %g5,TBL,%g5             ! (2_1) pind = (char*)TBL + ind1;

        add     %l2,stridex,%l2         ! px += stridex
        ldd     [%g5+16],%f36           ! (2_1) dexp_lo = ((double*)pind)[2];

        fmuld   %f12,%f18,%f12          ! (2_1) res *= xx;
        ldd     [%g5+8],%f18            ! (2_1) dexp_hi = ((double*)pind)[1];
        faddd   %f52,A2,%f20            ! (3_1) res += A2;

        ldd     [%fp+tmp2],%f48         ! (1_1) dsqrt_exp = *(double*)&sqrt_exp;
        faddd   %f60,%f14,%f60          ! (1_1) res += dexp_hi;

        fmuld   %f20,%f44,%f20          ! (3_1) res *= xx;

        fmuld   %f18,%f12,%f34          ! (2_1) res = dexp_hi * res;
        fpadd32 %f48,%f60,%f12          ! (1_1) dtmp0 = vis_fpadd32(dsqrt_exp,res);

        st      %f12,[%i2]              ! (1_1) ((float*)py)[0] = ((float*)&dtmp0)[0];

        add     %i2,stridey,%g5         ! py += stridey
        st      %f13,[%i2+4]            ! (1_1) ((float*)py)[1] = ((float*)&dtmp0)[1];

        subcc   counter,1,counter
        bneg    .begin
        or      %g0,%g5,%o4

        faddd   %f20,A1,%f12            ! (3_1) res += A1;

        faddd   %f34,%f36,%f60          ! (2_1) res += dexp_lo;

        add     %g1,TBL,%g1             ! (3_1) pind = (char*)TBL + ind1;

        add     %l2,stridex,%l2         ! px += stridex
        ldd     [%g1+16],%f36           ! (3_1) dexp_lo = ((double*)pind)[2];

        fmuld   %f12,%f44,%f12          ! (3_1) res *= xx;
        ldd     [%g1+8],%f44            ! (3_1) dexp_hi = ((double*)pind)[1];

        ldd     [%fp+tmp3],%f48         ! (2_1) dsqrt_exp = *(double*)&sqrt_exp;
        faddd   %f60,%f18,%f60          ! (2_1) res += dexp_hi;

        fmuld   %f44,%f12,%f34          ! (3_1) res = dexp_hi * res;
        fpadd32 %f48,%f60,%f12          ! (2_1) dtmp0 = vis_fpadd32(dsqrt_exp,res);

        st      %f12,[%g5]              ! (2_1) ((float*)py)[0] = ((float*)&dtmp0)[0];

        add     %g5,stridey,%g1         ! py += stridey
        st      %f13,[%g5+4]            ! (2_1) ((float*)py)[1] = ((float*)&dtmp0)[1];

        subcc   counter,1,counter
        bneg    .begin
        or      %g0,%g1,%o4

        faddd   %f34,%f36,%f60          ! (3_1) res += dexp_lo;

        add     %l2,stridex,%l2         ! px += stridex

        ldd     [%fp+tmp4],%f48         ! (3_1) dsqrt_exp = *(double*)&sqrt_exp;
        faddd   %f60,%f44,%f60          ! (3_1) res += dexp_hi;

        fpadd32 %f48,%f60,%f12          ! (3_1) dtmp0 = vis_fpadd32(dsqrt_exp,res);

        st      %f12,[%g1]              ! (3_1) ((float*)py)[0] = ((float*)&dtmp0)[0];

        add     %g1,stridey,%i3         ! py += stridey
        st      %f13,[%g1+4]            ! (3_1) ((float*)py)[1] = ((float*)&dtmp0)[1];

        ba      .begin
        or      %g0,%i3,%o4

        .align  16
.spec:
        fsqrtd  %f10,%f10
        add     %l2,stridex,%l2

        st      %f10,[%o4]
        st      %f11,[%o4+4]

        add     %o4,stridey,%o4
        ba      .begin1
        sub     counter,1,counter

        .align  16
.update0:
        cmp     counter,1
        ble     .cont0
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,1,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont0
        or      %g0,1,counter

        .align  16
.update1:
        cmp     counter,1
        ble     .cont1
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,1,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont1
        or      %g0,1,counter

        .align  16
.update2:
        cmp     counter,2
        ble     .cont2
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,2,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont2
        or      %g0,2,counter

        .align  16
.update3:
        cmp     counter,2
        ble     .cont3
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,2,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont3
        or      %g0,2,counter

        .align  16
.update4:
        cmp     counter,3
        ble     .cont4
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,3,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont4
        or      %g0,3,counter

        .align  16
.update5:
        cmp     counter,3
        ble     .cont5
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,3,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont5
        or      %g0,3,counter

        .align  16
.update6:
        cmp     counter,4
        ble     .cont6
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,4,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont6
        or      %g0,4,counter

        .align  16
.update7:
        cmp     counter,4
        ble     .cont7
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,4,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont7
        or      %g0,4,counter

        .align  16
.update8:
        cmp     counter,5
        ble     .cont8
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,5,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont8
        or      %g0,5,counter

        .align  16
.update9:
        cmp     counter,5
        ble     .cont9
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,5,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont9
        or      %g0,5,counter

        .align  16
.update10:
        cmp     counter,6
        ble     .cont10
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,6,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont10
        or      %g0,6,counter

        .align  16
.update11:
        cmp     counter,6
        ble     .cont11
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,6,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont11
        or      %g0,6,counter

        .align  16
.update12:
        cmp     counter,7
        ble     .cont12
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,7,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont12
        or      %g0,7,counter

        .align  16
.update13:
        cmp     counter,7
        ble     .cont13
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,7,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont13
        or      %g0,7,counter

        .align  16
.update14:
        cmp     counter,8
        ble     .cont14
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,8,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont14
        or      %g0,8,counter

        .align  16
.update15:
        cmp     counter,8
        ble     .cont15
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,8,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont15
        or      %g0,8,counter

        .align  16
.update16:
        cmp     counter,9
        ble     .cont16
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,9,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont16
        or      %g0,9,counter

        .align  16
.update17:
        cmp     counter,9
        ble     .cont17
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,9,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont17
        or      %g0,9,counter

        .align  16
.update18:
        cmp     counter,10
        ble     .cont18
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,10,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont18
        or      %g0,10,counter

        .align  16
.update19:
        cmp     counter,10
        ble     .cont19
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,10,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont19
        or      %g0,10,counter

        .align  16
.update20:
        cmp     counter,11
        ble     .cont20
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,11,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont20
        or      %g0,11,counter

        .align  16
.update21:
        cmp     counter,11
        ble     .cont21
        nop

        sub     %l2,stridex,%i5
        stx     %i5,[%fp+tmp_px]

        sub     counter,11,counter
        st      counter,[%fp+tmp_counter]

        ba      .cont21
        or      %g0,11,counter

.exit:
        ret
        restore

        SET_SIZE(__vsqrt)