--- /dev/null	Sat May 10 12:10:03 2014
+++ new/usr/src/lib/libmvec/common/vis/__vsqrt.S	Sat May 10 12:10:03 2014
@@ -0,0 +1,1844 @@
+/*
+ * 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)
+
