--- /dev/null	Sat May 10 12:09:59 2014
+++ new/usr/src/lib/libmvec/common/vis/__vpowf.S	Sat May 10 12:09:59 2014
@@ -0,0 +1,3139 @@
+/*
+ * 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	"__vpowf.S"
+
+#include "libm.h"
+
+	RO_DATA
+	.align	64
+
+! __mt_constexp2fa:
+	.word	0x3ff00000, 0x00000000, 0x3ff00b1a, 0xfa5abcbf
+	.word	0x3ff0163d, 0xa9fb3335, 0x3ff02168, 0x143b0281
+	.word	0x3ff02c9a, 0x3e778061, 0x3ff037d4, 0x2e11bbcc
+	.word	0x3ff04315, 0xe86e7f85, 0x3ff04e5f, 0x72f654b1
+	.word	0x3ff059b0, 0xd3158574, 0x3ff0650a, 0x0e3c1f89
+	.word	0x3ff0706b, 0x29ddf6de, 0x3ff07bd4, 0x2b72a836
+	.word	0x3ff08745, 0x18759bc8, 0x3ff092bd, 0xf66607e0
+	.word	0x3ff09e3e, 0xcac6f383, 0x3ff0a9c7, 0x9b1f3919
+	.word	0x3ff0b558, 0x6cf9890f, 0x3ff0c0f1, 0x45e46c85
+	.word	0x3ff0cc92, 0x2b7247f7, 0x3ff0d83b, 0x23395dec
+	.word	0x3ff0e3ec, 0x32d3d1a2, 0x3ff0efa5, 0x5fdfa9c5
+	.word	0x3ff0fb66, 0xaffed31b, 0x3ff10730, 0x28d7233e
+	.word	0x3ff11301, 0xd0125b51, 0x3ff11edb, 0xab5e2ab6
+	.word	0x3ff12abd, 0xc06c31cc, 0x3ff136a8, 0x14f204ab
+	.word	0x3ff1429a, 0xaea92de0, 0x3ff14e95, 0x934f312e
+	.word	0x3ff15a98, 0xc8a58e51, 0x3ff166a4, 0x5471c3c2
+	.word	0x3ff172b8, 0x3c7d517b, 0x3ff17ed4, 0x8695bbc0
+	.word	0x3ff18af9, 0x388c8dea, 0x3ff19726, 0x58375d2f
+	.word	0x3ff1a35b, 0xeb6fcb75, 0x3ff1af99, 0xf8138a1c
+	.word	0x3ff1bbe0, 0x84045cd4, 0x3ff1c82f, 0x95281c6b
+	.word	0x3ff1d487, 0x3168b9aa, 0x3ff1e0e7, 0x5eb44027
+	.word	0x3ff1ed50, 0x22fcd91d, 0x3ff1f9c1, 0x8438ce4d
+	.word	0x3ff2063b, 0x88628cd6, 0x3ff212be, 0x3578a819
+	.word	0x3ff21f49, 0x917ddc96, 0x3ff22bdd, 0xa27912d1
+	.word	0x3ff2387a, 0x6e756238, 0x3ff2451f, 0xfb82140a
+	.word	0x3ff251ce, 0x4fb2a63f, 0x3ff25e85, 0x711ece75
+	.word	0x3ff26b45, 0x65e27cdd, 0x3ff2780e, 0x341ddf29
+	.word	0x3ff284df, 0xe1f56381, 0x3ff291ba, 0x7591bb70
+	.word	0x3ff29e9d, 0xf51fdee1, 0x3ff2ab8a, 0x66d10f13
+	.word	0x3ff2b87f, 0xd0dad990, 0x3ff2c57e, 0x39771b2f
+	.word	0x3ff2d285, 0xa6e4030b, 0x3ff2df96, 0x1f641589
+	.word	0x3ff2ecaf, 0xa93e2f56, 0x3ff2f9d2, 0x4abd886b
+	.word	0x3ff306fe, 0x0a31b715, 0x3ff31432, 0xedeeb2fd
+	.word	0x3ff32170, 0xfc4cd831, 0x3ff32eb8, 0x3ba8ea32
+	.word	0x3ff33c08, 0xb26416ff, 0x3ff34962, 0x66e3fa2d
+	.word	0x3ff356c5, 0x5f929ff1, 0x3ff36431, 0xa2de883b
+	.word	0x3ff371a7, 0x373aa9cb, 0x3ff37f26, 0x231e754a
+	.word	0x3ff38cae, 0x6d05d866, 0x3ff39a40, 0x1b7140ef
+	.word	0x3ff3a7db, 0x34e59ff7, 0x3ff3b57f, 0xbfec6cf4
+	.word	0x3ff3c32d, 0xc313a8e5, 0x3ff3d0e5, 0x44ede173
+	.word	0x3ff3dea6, 0x4c123422, 0x3ff3ec70, 0xdf1c5175
+	.word	0x3ff3fa45, 0x04ac801c, 0x3ff40822, 0xc367a024
+	.word	0x3ff4160a, 0x21f72e2a, 0x3ff423fb, 0x2709468a
+	.word	0x3ff431f5, 0xd950a897, 0x3ff43ffa, 0x3f84b9d4
+	.word	0x3ff44e08, 0x6061892d, 0x3ff45c20, 0x42a7d232
+	.word	0x3ff46a41, 0xed1d0057, 0x3ff4786d, 0x668b3237
+	.word	0x3ff486a2, 0xb5c13cd0, 0x3ff494e1, 0xe192aed2
+	.word	0x3ff4a32a, 0xf0d7d3de, 0x3ff4b17d, 0xea6db7d7
+	.word	0x3ff4bfda, 0xd5362a27, 0x3ff4ce41, 0xb817c114
+	.word	0x3ff4dcb2, 0x99fddd0d, 0x3ff4eb2d, 0x81d8abff
+	.word	0x3ff4f9b2, 0x769d2ca7, 0x3ff50841, 0x7f4531ee
+	.word	0x3ff516da, 0xa2cf6642, 0x3ff5257d, 0xe83f4eef
+	.word	0x3ff5342b, 0x569d4f82, 0x3ff542e2, 0xf4f6ad27
+	.word	0x3ff551a4, 0xca5d920f, 0x3ff56070, 0xdde910d2
+	.word	0x3ff56f47, 0x36b527da, 0x3ff57e27, 0xdbe2c4cf
+	.word	0x3ff58d12, 0xd497c7fd, 0x3ff59c08, 0x27ff07cc
+	.word	0x3ff5ab07, 0xdd485429, 0x3ff5ba11, 0xfba87a03
+	.word	0x3ff5c926, 0x8a5946b7, 0x3ff5d845, 0x90998b93
+	.word	0x3ff5e76f, 0x15ad2148, 0x3ff5f6a3, 0x20dceb71
+	.word	0x3ff605e1, 0xb976dc09, 0x3ff6152a, 0xe6cdf6f4
+	.word	0x3ff6247e, 0xb03a5585, 0x3ff633dd, 0x1d1929fd
+	.word	0x3ff64346, 0x34ccc320, 0x3ff652b9, 0xfebc8fb7
+	.word	0x3ff66238, 0x82552225, 0x3ff671c1, 0xc70833f6
+	.word	0x3ff68155, 0xd44ca973, 0x3ff690f4, 0xb19e9538
+	.word	0x3ff6a09e, 0x667f3bcd, 0x3ff6b052, 0xfa75173e
+	.word	0x3ff6c012, 0x750bdabf, 0x3ff6cfdc, 0xddd47645
+	.word	0x3ff6dfb2, 0x3c651a2f, 0x3ff6ef92, 0x98593ae5
+	.word	0x3ff6ff7d, 0xf9519484, 0x3ff70f74, 0x66f42e87
+	.word	0x3ff71f75, 0xe8ec5f74, 0x3ff72f82, 0x86ead08a
+	.word	0x3ff73f9a, 0x48a58174, 0x3ff74fbd, 0x35d7cbfd
+	.word	0x3ff75feb, 0x564267c9, 0x3ff77024, 0xb1ab6e09
+	.word	0x3ff78069, 0x4fde5d3f, 0x3ff790b9, 0x38ac1cf6
+	.word	0x3ff7a114, 0x73eb0187, 0x3ff7b17b, 0x0976cfdb
+	.word	0x3ff7c1ed, 0x0130c132, 0x3ff7d26a, 0x62ff86f0
+	.word	0x3ff7e2f3, 0x36cf4e62, 0x3ff7f387, 0x8491c491
+	.word	0x3ff80427, 0x543e1a12, 0x3ff814d2, 0xadd106d9
+	.word	0x3ff82589, 0x994cce13, 0x3ff8364c, 0x1eb941f7
+	.word	0x3ff8471a, 0x4623c7ad, 0x3ff857f4, 0x179f5b21
+	.word	0x3ff868d9, 0x9b4492ed, 0x3ff879ca, 0xd931a436
+	.word	0x3ff88ac7, 0xd98a6699, 0x3ff89bd0, 0xa478580f
+	.word	0x3ff8ace5, 0x422aa0db, 0x3ff8be05, 0xbad61778
+	.word	0x3ff8cf32, 0x16b5448c, 0x3ff8e06a, 0x5e0866d9
+	.word	0x3ff8f1ae, 0x99157736, 0x3ff902fe, 0xd0282c8a
+	.word	0x3ff9145b, 0x0b91ffc6, 0x3ff925c3, 0x53aa2fe2
+	.word	0x3ff93737, 0xb0cdc5e5, 0x3ff948b8, 0x2b5f98e5
+	.word	0x3ff95a44, 0xcbc8520f, 0x3ff96bdd, 0x9a7670b3
+	.word	0x3ff97d82, 0x9fde4e50, 0x3ff98f33, 0xe47a22a2
+	.word	0x3ff9a0f1, 0x70ca07ba, 0x3ff9b2bb, 0x4d53fe0d
+	.word	0x3ff9c491, 0x82a3f090, 0x3ff9d674, 0x194bb8d5
+	.word	0x3ff9e863, 0x19e32323, 0x3ff9fa5e, 0x8d07f29e
+	.word	0x3ffa0c66, 0x7b5de565, 0x3ffa1e7a, 0xed8eb8bb
+	.word	0x3ffa309b, 0xec4a2d33, 0x3ffa42c9, 0x80460ad8
+	.word	0x3ffa5503, 0xb23e255d, 0x3ffa674a, 0x8af46052
+	.word	0x3ffa799e, 0x1330b358, 0x3ffa8bfe, 0x53c12e59
+	.word	0x3ffa9e6b, 0x5579fdbf, 0x3ffab0e5, 0x21356eba
+	.word	0x3ffac36b, 0xbfd3f37a, 0x3ffad5ff, 0x3a3c2774
+	.word	0x3ffae89f, 0x995ad3ad, 0x3ffafb4c, 0xe622f2ff
+	.word	0x3ffb0e07, 0x298db666, 0x3ffb20ce, 0x6c9a8952
+	.word	0x3ffb33a2, 0xb84f15fb, 0x3ffb4684, 0x15b749b1
+	.word	0x3ffb5972, 0x8de5593a, 0x3ffb6c6e, 0x29f1c52a
+	.word	0x3ffb7f76, 0xf2fb5e47, 0x3ffb928c, 0xf22749e4
+	.word	0x3ffba5b0, 0x30a1064a, 0x3ffbb8e0, 0xb79a6f1f
+	.word	0x3ffbcc1e, 0x904bc1d2, 0x3ffbdf69, 0xc3f3a207
+	.word	0x3ffbf2c2, 0x5bd71e09, 0x3ffc0628, 0x6141b33d
+	.word	0x3ffc199b, 0xdd85529c, 0x3ffc2d1c, 0xd9fa652c
+	.word	0x3ffc40ab, 0x5fffd07a, 0x3ffc5447, 0x78fafb22
+	.word	0x3ffc67f1, 0x2e57d14b, 0x3ffc7ba8, 0x8988c933
+	.word	0x3ffc8f6d, 0x9406e7b5, 0x3ffca340, 0x5751c4db
+	.word	0x3ffcb720, 0xdcef9069, 0x3ffccb0f, 0x2e6d1675
+	.word	0x3ffcdf0b, 0x555dc3fa, 0x3ffcf315, 0x5b5bab74
+	.word	0x3ffd072d, 0x4a07897c, 0x3ffd1b53, 0x2b08c968
+	.word	0x3ffd2f87, 0x080d89f2, 0x3ffd43c8, 0xeacaa1d6
+	.word	0x3ffd5818, 0xdcfba487, 0x3ffd6c76, 0xe862e6d3
+	.word	0x3ffd80e3, 0x16c98398, 0x3ffd955d, 0x71ff6075
+	.word	0x3ffda9e6, 0x03db3285, 0x3ffdbe7c, 0xd63a8315
+	.word	0x3ffdd321, 0xf301b460, 0x3ffde7d5, 0x641c0658
+	.word	0x3ffdfc97, 0x337b9b5f, 0x3ffe1167, 0x6b197d17
+	.word	0x3ffe2646, 0x14f5a129, 0x3ffe3b33, 0x3b16ee12
+	.word	0x3ffe502e, 0xe78b3ff6, 0x3ffe6539, 0x24676d76
+	.word	0x3ffe7a51, 0xfbc74c83, 0x3ffe8f79, 0x77cdb740
+	.word	0x3ffea4af, 0xa2a490da, 0x3ffeb9f4, 0x867cca6e
+	.word	0x3ffecf48, 0x2d8e67f1, 0x3ffee4aa, 0xa2188510
+	.word	0x3ffefa1b, 0xee615a27, 0x3fff0f9c, 0x1cb6412a
+	.word	0x3fff252b, 0x376bba97, 0x3fff3ac9, 0x48dd7274
+	.word	0x3fff5076, 0x5b6e4540, 0x3fff6632, 0x798844f8
+	.word	0x3fff7bfd, 0xad9cbe14, 0x3fff91d8, 0x02243c89
+	.word	0x3fffa7c1, 0x819e90d8, 0x3fffbdba, 0x3692d514
+	.word	0x3fffd3c2, 0x2b8f71f1, 0x3fffe9d9, 0x6b2a23d9
+
+! __mt_constexp2fb:
+	.word	0x36900000, 0x36a00000, 0x36b00000, 0x36c00000
+	.word	0x36d00000, 0x36e00000, 0x36f00000, 0x37000000
+	.word	0x37100000, 0x37200000, 0x37300000, 0x37400000
+	.word	0x37500000, 0x37600000, 0x37700000, 0x37800000
+	.word	0x37900000, 0x37a00000, 0x37b00000, 0x37c00000
+	.word	0x37d00000, 0x37e00000, 0x37f00000, 0x38000000
+	.word	0x38100000, 0x38200000, 0x38300000, 0x38400000
+	.word	0x38500000, 0x38600000, 0x38700000, 0x38800000
+	.word	0x38900000, 0x38a00000, 0x38b00000, 0x38c00000
+	.word	0x38d00000, 0x38e00000, 0x38f00000, 0x39000000
+	.word	0x39100000, 0x39200000, 0x39300000, 0x39400000
+	.word	0x39500000, 0x39600000, 0x39700000, 0x39800000
+	.word	0x39900000, 0x39a00000, 0x39b00000, 0x39c00000
+	.word	0x39d00000, 0x39e00000, 0x39f00000, 0x3a000000
+	.word	0x3a100000, 0x3a200000, 0x3a300000, 0x3a400000
+	.word	0x3a500000, 0x3a600000, 0x3a700000, 0x3a800000
+	.word	0x3a900000, 0x3aa00000, 0x3ab00000, 0x3ac00000
+	.word	0x3ad00000, 0x3ae00000, 0x3af00000, 0x3b000000
+	.word	0x3b100000, 0x3b200000, 0x3b300000, 0x3b400000
+	.word	0x3b500000, 0x3b600000, 0x3b700000, 0x3b800000
+	.word	0x3b900000, 0x3ba00000, 0x3bb00000, 0x3bc00000
+	.word	0x3bd00000, 0x3be00000, 0x3bf00000, 0x3c000000
+	.word	0x3c100000, 0x3c200000, 0x3c300000, 0x3c400000
+	.word	0x3c500000, 0x3c600000, 0x3c700000, 0x3c800000
+	.word	0x3c900000, 0x3ca00000, 0x3cb00000, 0x3cc00000
+	.word	0x3cd00000, 0x3ce00000, 0x3cf00000, 0x3d000000
+	.word	0x3d100000, 0x3d200000, 0x3d300000, 0x3d400000
+	.word	0x3d500000, 0x3d600000, 0x3d700000, 0x3d800000
+	.word	0x3d900000, 0x3da00000, 0x3db00000, 0x3dc00000
+	.word	0x3dd00000, 0x3de00000, 0x3df00000, 0x3e000000
+	.word	0x3e100000, 0x3e200000, 0x3e300000, 0x3e400000
+	.word	0x3e500000, 0x3e600000, 0x3e700000, 0x3e800000
+	.word	0x3e900000, 0x3ea00000, 0x3eb00000, 0x3ec00000
+	.word	0x3ed00000, 0x3ee00000, 0x3ef00000, 0x3f000000
+	.word	0x3f100000, 0x3f200000, 0x3f300000, 0x3f400000
+	.word	0x3f500000, 0x3f600000, 0x3f700000, 0x3f800000
+	.word	0x3f900000, 0x3fa00000, 0x3fb00000, 0x3fc00000
+	.word	0x3fd00000, 0x3fe00000, 0x3ff00000, 0x40000000
+	.word	0x40100000, 0x40200000, 0x40300000, 0x40400000
+	.word	0x40500000, 0x40600000, 0x40700000, 0x40800000
+	.word	0x40900000, 0x40a00000, 0x40b00000, 0x40c00000
+	.word	0x40d00000, 0x40e00000, 0x40f00000, 0x41000000
+	.word	0x41100000, 0x41200000, 0x41300000, 0x41400000
+	.word	0x41500000, 0x41600000, 0x41700000, 0x41800000
+	.word	0x41900000, 0x41a00000, 0x41b00000, 0x41c00000
+	.word	0x41d00000, 0x41e00000, 0x41f00000, 0x42000000
+	.word	0x42100000, 0x42200000, 0x42300000, 0x42400000
+	.word	0x42500000, 0x42600000, 0x42700000, 0x42800000
+	.word	0x42900000, 0x42a00000, 0x42b00000, 0x42c00000
+	.word	0x42d00000, 0x42e00000, 0x42f00000, 0x43000000
+	.word	0x43100000, 0x43200000, 0x43300000, 0x43400000
+	.word	0x43500000, 0x43600000, 0x43700000, 0x43800000
+	.word	0x43900000, 0x43a00000, 0x43b00000, 0x43c00000
+	.word	0x43d00000, 0x43e00000, 0x43f00000, 0x44000000
+	.word	0x44100000, 0x44200000, 0x44300000, 0x44400000
+	.word	0x44500000, 0x44600000, 0x44700000, 0x44800000
+	.word	0x44900000, 0x44a00000, 0x44b00000, 0x44c00000
+	.word	0x44d00000, 0x44e00000, 0x44f00000, 0x45000000
+	.word	0x45100000, 0x45200000, 0x45300000, 0x45400000
+	.word	0x45500000, 0x45600000, 0x45700000, 0x45800000
+	.word	0x45900000, 0x45a00000, 0x45b00000, 0x45c00000
+	.word	0x45d00000, 0x45e00000, 0x45f00000, 0x46000000
+	.word	0x46100000, 0x46200000, 0x46300000, 0x46400000
+	.word	0x46500000, 0x46600000, 0x46700000, 0x46800000
+	.word	0x46900000, 0x46a00000, 0x46b00000, 0x46c00000
+	.word	0x46d00000, 0x46e00000, 0x46f00000, 0x47000000
+	.word	0x47100000, 0x47200000, 0x47300000, 0x47400000
+	.word	0x47500000, 0x47600000, 0x47700000, 0x47800000
+	.word	0x47900000, 0x47a00000, 0x47b00000, 0x47c00000
+	.word	0x47d00000, 0x47e00000, 0x47f00000, 0x00000000
+
+	.word	0,0,0,0
+	.word	0,0,0,0
+
+.CONST_TBL:
+! __mt_constlog4f:
+	.word	0x00000000, 0x00000000, 0x3e800000, 0x00000000
+	.word	0x4006fe50, 0xb6ef0851, 0x3e7fc07f, 0x01fc07f0
+	.word	0x4016e796, 0x85c2d22a, 0x3e7f81f8, 0x1f81f820
+	.word	0x40211cd1, 0xd5133413, 0x3e7f4465, 0x9e4a4271
+	.word	0x4026bad3, 0x758efd87, 0x3e7f07c1, 0xf07c1f08
+	.word	0x402c4dfa, 0xb90aab5f, 0x3e7ecc07, 0xb301ecc0
+	.word	0x4030eb38, 0x9fa29f9b, 0x3e7e9131, 0xabf0b767
+	.word	0x4033aa2f, 0xdd27f1c3, 0x3e7e573a, 0xc901e574
+	.word	0x403663f6, 0xfac91316, 0x3e7e1e1e, 0x1e1e1e1e
+	.word	0x403918a1, 0x6e46335b, 0x3e7de5d6, 0xe3f8868a
+	.word	0x403bc842, 0x40adabba, 0x3e7dae60, 0x76b981db
+	.word	0x403e72ec, 0x117fa5b2, 0x3e7d77b6, 0x54b82c34
+	.word	0x40408c58, 0x8cda79e4, 0x3e7d41d4, 0x1d41d41d
+	.word	0x4041dcd1, 0x97552b7b, 0x3e7d0cb5, 0x8f6ec074
+	.word	0x40432ae9, 0xe278ae1a, 0x3e7cd856, 0x89039b0b
+	.word	0x404476a9, 0xf983f74d, 0x3e7ca4b3, 0x055ee191
+	.word	0x4045c01a, 0x39fbd688, 0x3e7c71c7, 0x1c71c71c
+	.word	0x40470742, 0xd4ef027f, 0x3e7c3f8f, 0x01c3f8f0
+	.word	0x40484c2b, 0xd02f03b3, 0x3e7c0e07, 0x0381c0e0
+	.word	0x40498edd, 0x077e70df, 0x3e7bdd2b, 0x899406f7
+	.word	0x404acf5e, 0x2db4ec94, 0x3e7bacf9, 0x14c1bad0
+	.word	0x404c0db6, 0xcdd94dee, 0x3e7b7d6c, 0x3dda338b
+	.word	0x404d49ee, 0x4c325970, 0x3e7b4e81, 0xb4e81b4f
+	.word	0x404e840b, 0xe74e6a4d, 0x3e7b2036, 0x406c80d9
+	.word	0x404fbc16, 0xb902680a, 0x3e7af286, 0xbca1af28
+	.word	0x4050790a, 0xdbb03009, 0x3e7ac570, 0x1ac5701b
+	.word	0x40511307, 0xdad30b76, 0x3e7a98ef, 0x606a63be
+	.word	0x4051ac05, 0xb291f070, 0x3e7a6d01, 0xa6d01a6d
+	.word	0x40524407, 0xab0e073a, 0x3e7a41a4, 0x1a41a41a
+	.word	0x4052db10, 0xfc4d9aaf, 0x3e7a16d3, 0xf97a4b02
+	.word	0x40537124, 0xcea4cded, 0x3e79ec8e, 0x951033d9
+	.word	0x40540646, 0x3b1b0449, 0x3e79c2d1, 0x4ee4a102
+	.word	0x40549a78, 0x4bcd1b8b, 0x3e799999, 0x9999999a
+	.word	0x40552dbd, 0xfc4c96b3, 0x3e7970e4, 0xf80cb872
+	.word	0x4055c01a, 0x39fbd688, 0x3e7948b0, 0xfcd6e9e0
+	.word	0x4056518f, 0xe4677ba7, 0x3e7920fb, 0x49d0e229
+	.word	0x4056e221, 0xcd9d0cde, 0x3e78f9c1, 0x8f9c18fa
+	.word	0x405771d2, 0xba7efb3c, 0x3e78d301, 0x8d3018d3
+	.word	0x405800a5, 0x63161c54, 0x3e78acb9, 0x0f6bf3aa
+	.word	0x40588e9c, 0x72e0b226, 0x3e7886e5, 0xf0abb04a
+	.word	0x40591bba, 0x891f1709, 0x3e786186, 0x18618618
+	.word	0x4059a802, 0x391e232f, 0x3e783c97, 0x7ab2bedd
+	.word	0x405a3376, 0x0a7f6051, 0x3e781818, 0x18181818
+	.word	0x405abe18, 0x797f1f49, 0x3e77f405, 0xfd017f40
+	.word	0x405b47eb, 0xf73882a1, 0x3e77d05f, 0x417d05f4
+	.word	0x405bd0f2, 0xe9e79031, 0x3e77ad22, 0x08e0ecc3
+	.word	0x405c592f, 0xad295b56, 0x3e778a4c, 0x8178a4c8
+	.word	0x405ce0a4, 0x923a587d, 0x3e7767dc, 0xe434a9b1
+	.word	0x405d6753, 0xe032ea0f, 0x3e7745d1, 0x745d1746
+	.word	0x405ded3f, 0xd442364c, 0x3e772428, 0x7f46debc
+	.word	0x405e726a, 0xa1e754d2, 0x3e7702e0, 0x5c0b8170
+	.word	0x405ef6d6, 0x7328e220, 0x3e76e1f7, 0x6b4337c7
+	.word	0x405f7a85, 0x68cb06cf, 0x3e76c16c, 0x16c16c17
+	.word	0x405ffd79, 0x9a83ff9b, 0x3e76a13c, 0xd1537290
+	.word	0x40603fda, 0x8b97997f, 0x3e768168, 0x16816817
+	.word	0x4060809c, 0xf27f703d, 0x3e7661ec, 0x6a5122f9
+	.word	0x4060c105, 0x00d63aa6, 0x3e7642c8, 0x590b2164
+	.word	0x40610113, 0xb153c8ea, 0x3e7623fa, 0x77016240
+	.word	0x406140c9, 0xfaa1e544, 0x3e760581, 0x60581606
+	.word	0x40618028, 0xcf72976a, 0x3e75e75b, 0xb8d015e7
+	.word	0x4061bf31, 0x1e95d00e, 0x3e75c988, 0x2b931057
+	.word	0x4061fde3, 0xd30e8126, 0x3e75ac05, 0x6b015ac0
+	.word	0x40623c41, 0xd42727c8, 0x3e758ed2, 0x308158ed
+	.word	0x40627a4c, 0x0585cbf8, 0x3e7571ed, 0x3c506b3a
+	.word	0x4062b803, 0x473f7ad1, 0x3e755555, 0x55555555
+	.word	0x4062f568, 0x75eb3f26, 0x3e753909, 0x48f40feb
+	.word	0x4063327c, 0x6ab49ca7, 0x3e751d07, 0xeae2f815
+	.word	0x40636f3f, 0xfb6d9162, 0x3e750150, 0x15015015
+	.word	0x4063abb3, 0xfaa02167, 0x3e74e5e0, 0xa72f0539
+	.word	0x4063e7d9, 0x379f7016, 0x3e74cab8, 0x8725af6e
+	.word	0x406423b0, 0x7e986aa9, 0x3e74afd6, 0xa052bf5b
+	.word	0x40645f3a, 0x98a20739, 0x3e749539, 0xe3b2d067
+	.word	0x40649a78, 0x4bcd1b8b, 0x3e747ae1, 0x47ae147b
+	.word	0x4064d56a, 0x5b33cec4, 0x3e7460cb, 0xc7f5cf9a
+	.word	0x40651011, 0x8708a8f9, 0x3e7446f8, 0x6562d9fb
+	.word	0x40654a6e, 0x8ca5438e, 0x3e742d66, 0x25d51f87
+	.word	0x40658482, 0x26989d34, 0x3e741414, 0x14141414
+	.word	0x4065be4d, 0x0cb51435, 0x3e73fb01, 0x3fb013fb
+	.word	0x4065f7cf, 0xf41e09af, 0x3e73e22c, 0xbce4a902
+	.word	0x4066310b, 0x8f553048, 0x3e73c995, 0xa47babe7
+	.word	0x40666a00, 0x8e4788cc, 0x3e73b13b, 0x13b13b14
+	.word	0x4066a2af, 0x9e5a0f0a, 0x3e73991c, 0x2c187f63
+	.word	0x4066db19, 0x6a76194a, 0x3e738138, 0x13813814
+	.word	0x4067133e, 0x9b156c7c, 0x3e73698d, 0xf3de0748
+	.word	0x40674b1f, 0xd64e0754, 0x3e73521c, 0xfb2b78c1
+	.word	0x406782bd, 0xbfdda657, 0x3e733ae4, 0x5b57bcb2
+	.word	0x4067ba18, 0xf93502e4, 0x3e7323e3, 0x4a2b10bf
+	.word	0x4067f132, 0x2182cf16, 0x3e730d19, 0x0130d190
+	.word	0x40682809, 0xd5be7073, 0x3e72f684, 0xbda12f68
+	.word	0x40685ea0, 0xb0b27b26, 0x3e72e025, 0xc04b8097
+	.word	0x406894f7, 0x4b06ef8b, 0x3e72c9fb, 0x4d812ca0
+	.word	0x4068cb0e, 0x3b4b3bbe, 0x3e72b404, 0xad012b40
+	.word	0x406900e6, 0x160002cd, 0x3e729e41, 0x29e4129e
+	.word	0x4069367f, 0x6da0ab2f, 0x3e7288b0, 0x1288b013
+	.word	0x40696bda, 0xd2acb5f6, 0x3e727350, 0xb8812735
+	.word	0x4069a0f8, 0xd3b0e050, 0x3e725e22, 0x708092f1
+	.word	0x4069d5d9, 0xfd5010b3, 0x3e724924, 0x92492492
+	.word	0x406a0a7e, 0xda4c112d, 0x3e723456, 0x789abcdf
+	.word	0x406a3ee7, 0xf38e181f, 0x3e721fb7, 0x8121fb78
+	.word	0x406a7315, 0xd02f20c8, 0x3e720b47, 0x0c67c0d9
+	.word	0x406aa708, 0xf58014d3, 0x3e71f704, 0x7dc11f70
+	.word	0x406adac1, 0xe711c833, 0x3e71e2ef, 0x3b3fb874
+	.word	0x406b0e41, 0x26bcc86c, 0x3e71cf06, 0xada2811d
+	.word	0x406b4187, 0x34a9008c, 0x3e71bb4a, 0x4046ed29
+	.word	0x406b7494, 0x8f5532da, 0x3e71a7b9, 0x611a7b96
+	.word	0x406ba769, 0xb39e4964, 0x3e719453, 0x808ca29c
+	.word	0x406bda07, 0x1cc67e6e, 0x3e718118, 0x11811812
+	.word	0x406c0c6d, 0x447c5dd3, 0x3e716e06, 0x89427379
+	.word	0x406c3e9c, 0xa2e1a055, 0x3e715b1e, 0x5f75270d
+	.word	0x406c7095, 0xae91e1c7, 0x3e71485f, 0x0e0acd3b
+	.word	0x406ca258, 0xdca93316, 0x3e7135c8, 0x1135c811
+	.word	0x406cd3e6, 0xa0ca8907, 0x3e712358, 0xe75d3033
+	.word	0x406d053f, 0x6d260896, 0x3e711111, 0x11111111
+	.word	0x406d3663, 0xb27f31d5, 0x3e70fef0, 0x10fef011
+	.word	0x406d6753, 0xe032ea0f, 0x3e70ecf5, 0x6be69c90
+	.word	0x406d9810, 0x643d6615, 0x3e70db20, 0xa88f4696
+	.word	0x406dc899, 0xab3ff56c, 0x3e70c971, 0x4fbcda3b
+	.word	0x406df8f0, 0x2086af2c, 0x3e70b7e6, 0xec259dc8
+	.word	0x406e2914, 0x2e0e0140, 0x3e70a681, 0x0a6810a7
+	.word	0x406e5906, 0x3c8822ce, 0x3e70953f, 0x39010954
+	.word	0x406e88c6, 0xb3626a73, 0x3e708421, 0x08421084
+	.word	0x406eb855, 0xf8ca88fb, 0x3e707326, 0x0a47f7c6
+	.word	0x406ee7b4, 0x71b3a950, 0x3e70624d, 0xd2f1a9fc
+	.word	0x406f16e2, 0x81db7630, 0x3e705197, 0xf7d73404
+	.word	0x406f45e0, 0x8bcf0655, 0x3e704104, 0x10410410
+	.word	0x406f74ae, 0xf0efafae, 0x3e703091, 0xb51f5e1a
+	.word	0x406fa34e, 0x1177c233, 0x3e702040, 0x81020408
+	.word	0x406fd1be, 0x4c7f2af9, 0x3e701010, 0x10101010
+	.word	0x40700000, 0x00000000, 0x3e700000, 0x00000000
+
+! __mt_constexp2f:
+	.word	0x3ff00000, 0x00000000, 0x3ff00b1a, 0xfa5abcbf
+	.word	0x3ff0163d, 0xa9fb3335, 0x3ff02168, 0x143b0281
+	.word	0x3ff02c9a, 0x3e778061, 0x3ff037d4, 0x2e11bbcc
+	.word	0x3ff04315, 0xe86e7f85, 0x3ff04e5f, 0x72f654b1
+	.word	0x3ff059b0, 0xd3158574, 0x3ff0650a, 0x0e3c1f89
+	.word	0x3ff0706b, 0x29ddf6de, 0x3ff07bd4, 0x2b72a836
+	.word	0x3ff08745, 0x18759bc8, 0x3ff092bd, 0xf66607e0
+	.word	0x3ff09e3e, 0xcac6f383, 0x3ff0a9c7, 0x9b1f3919
+	.word	0x3fefb558, 0x6cf9890f, 0x3fefc0f1, 0x45e46c85
+	.word	0x3fefcc92, 0x2b7247f7, 0x3fefd83b, 0x23395dec
+	.word	0x3fefe3ec, 0x32d3d1a2, 0x3fefefa5, 0x5fdfa9c5
+	.word	0x3feffb66, 0xaffed31b, 0x3ff00730, 0x28d7233e
+	.word	0x3ff01301, 0xd0125b51, 0x3ff01edb, 0xab5e2ab6
+	.word	0x3ff02abd, 0xc06c31cc, 0x3ff036a8, 0x14f204ab
+	.word	0x3ff0429a, 0xaea92de0, 0x3ff04e95, 0x934f312e
+	.word	0x3ff05a98, 0xc8a58e51, 0x3ff066a4, 0x5471c3c2
+	.word	0x3fef72b8, 0x3c7d517b, 0x3fef7ed4, 0x8695bbc0
+	.word	0x3fef8af9, 0x388c8dea, 0x3fef9726, 0x58375d2f
+	.word	0x3fefa35b, 0xeb6fcb75, 0x3fefaf99, 0xf8138a1c
+	.word	0x3fefbbe0, 0x84045cd4, 0x3fefc82f, 0x95281c6b
+	.word	0x3fefd487, 0x3168b9aa, 0x3fefe0e7, 0x5eb44027
+	.word	0x3fefed50, 0x22fcd91d, 0x3feff9c1, 0x8438ce4d
+	.word	0x3ff0063b, 0x88628cd6, 0x3ff012be, 0x3578a819
+	.word	0x3ff01f49, 0x917ddc96, 0x3ff02bdd, 0xa27912d1
+	.word	0x3fef387a, 0x6e756238, 0x3fef451f, 0xfb82140a
+	.word	0x3fef51ce, 0x4fb2a63f, 0x3fef5e85, 0x711ece75
+	.word	0x3fef6b45, 0x65e27cdd, 0x3fef780e, 0x341ddf29
+	.word	0x3fef84df, 0xe1f56381, 0x3fef91ba, 0x7591bb70
+	.word	0x3fef9e9d, 0xf51fdee1, 0x3fefab8a, 0x66d10f13
+	.word	0x3fefb87f, 0xd0dad990, 0x3fefc57e, 0x39771b2f
+	.word	0x3fefd285, 0xa6e4030b, 0x3fefdf96, 0x1f641589
+	.word	0x3fefecaf, 0xa93e2f56, 0x3feff9d2, 0x4abd886b
+	.word	0x3fef06fe, 0x0a31b715, 0x3fef1432, 0xedeeb2fd
+	.word	0x3fef2170, 0xfc4cd831, 0x3fef2eb8, 0x3ba8ea32
+	.word	0x3fef3c08, 0xb26416ff, 0x3fef4962, 0x66e3fa2d
+	.word	0x3fef56c5, 0x5f929ff1, 0x3fef6431, 0xa2de883b
+	.word	0x3fef71a7, 0x373aa9cb, 0x3fef7f26, 0x231e754a
+	.word	0x3fef8cae, 0x6d05d866, 0x3fef9a40, 0x1b7140ef
+	.word	0x3fefa7db, 0x34e59ff7, 0x3fefb57f, 0xbfec6cf4
+	.word	0x3fefc32d, 0xc313a8e5, 0x3fefd0e5, 0x44ede173
+	.word	0x3feedea6, 0x4c123422, 0x3feeec70, 0xdf1c5175
+	.word	0x3feefa45, 0x04ac801c, 0x3fef0822, 0xc367a024
+	.word	0x3fef160a, 0x21f72e2a, 0x3fef23fb, 0x2709468a
+	.word	0x3fef31f5, 0xd950a897, 0x3fef3ffa, 0x3f84b9d4
+	.word	0x3fef4e08, 0x6061892d, 0x3fef5c20, 0x42a7d232
+	.word	0x3fef6a41, 0xed1d0057, 0x3fef786d, 0x668b3237
+	.word	0x3fef86a2, 0xb5c13cd0, 0x3fef94e1, 0xe192aed2
+	.word	0x3fefa32a, 0xf0d7d3de, 0x3fefb17d, 0xea6db7d7
+	.word	0x3feebfda, 0xd5362a27, 0x3feece41, 0xb817c114
+	.word	0x3feedcb2, 0x99fddd0d, 0x3feeeb2d, 0x81d8abff
+	.word	0x3feef9b2, 0x769d2ca7, 0x3fef0841, 0x7f4531ee
+	.word	0x3fef16da, 0xa2cf6642, 0x3fef257d, 0xe83f4eef
+	.word	0x3fef342b, 0x569d4f82, 0x3fef42e2, 0xf4f6ad27
+	.word	0x3fef51a4, 0xca5d920f, 0x3fef6070, 0xdde910d2
+	.word	0x3fef6f47, 0x36b527da, 0x3fef7e27, 0xdbe2c4cf
+	.word	0x3fef8d12, 0xd497c7fd, 0x3fef9c08, 0x27ff07cc
+	.word	0x3feeab07, 0xdd485429, 0x3feeba11, 0xfba87a03
+	.word	0x3feec926, 0x8a5946b7, 0x3feed845, 0x90998b93
+	.word	0x3feee76f, 0x15ad2148, 0x3feef6a3, 0x20dceb71
+	.word	0x3fef05e1, 0xb976dc09, 0x3fef152a, 0xe6cdf6f4
+	.word	0x3fef247e, 0xb03a5585, 0x3fef33dd, 0x1d1929fd
+	.word	0x3fef4346, 0x34ccc320, 0x3fef52b9, 0xfebc8fb7
+	.word	0x3fef6238, 0x82552225, 0x3fef71c1, 0xc70833f6
+	.word	0x3fef8155, 0xd44ca973, 0x3fef90f4, 0xb19e9538
+	.word	0x3feea09e, 0x667f3bcd, 0x3feeb052, 0xfa75173e
+	.word	0x3feec012, 0x750bdabf, 0x3feecfdc, 0xddd47645
+	.word	0x3feedfb2, 0x3c651a2f, 0x3feeef92, 0x98593ae5
+	.word	0x3feeff7d, 0xf9519484, 0x3fef0f74, 0x66f42e87
+	.word	0x3fef1f75, 0xe8ec5f74, 0x3fef2f82, 0x86ead08a
+	.word	0x3fef3f9a, 0x48a58174, 0x3fef4fbd, 0x35d7cbfd
+	.word	0x3fef5feb, 0x564267c9, 0x3fef7024, 0xb1ab6e09
+	.word	0x3fef8069, 0x4fde5d3f, 0x3fef90b9, 0x38ac1cf6
+	.word	0x3feea114, 0x73eb0187, 0x3feeb17b, 0x0976cfdb
+	.word	0x3feec1ed, 0x0130c132, 0x3feed26a, 0x62ff86f0
+	.word	0x3feee2f3, 0x36cf4e62, 0x3feef387, 0x8491c491
+	.word	0x3fef0427, 0x543e1a12, 0x3fef14d2, 0xadd106d9
+	.word	0x3fef2589, 0x994cce13, 0x3fef364c, 0x1eb941f7
+	.word	0x3fef471a, 0x4623c7ad, 0x3fef57f4, 0x179f5b21
+	.word	0x3fef68d9, 0x9b4492ed, 0x3fef79ca, 0xd931a436
+	.word	0x3fef8ac7, 0xd98a6699, 0x3fef9bd0, 0xa478580f
+	.word	0x3feeace5, 0x422aa0db, 0x3feebe05, 0xbad61778
+	.word	0x3feecf32, 0x16b5448c, 0x3feee06a, 0x5e0866d9
+	.word	0x3feef1ae, 0x99157736, 0x3fef02fe, 0xd0282c8a
+	.word	0x3fef145b, 0x0b91ffc6, 0x3fef25c3, 0x53aa2fe2
+	.word	0x3fef3737, 0xb0cdc5e5, 0x3fef48b8, 0x2b5f98e5
+	.word	0x3fef5a44, 0xcbc8520f, 0x3fef6bdd, 0x9a7670b3
+	.word	0x3fef7d82, 0x9fde4e50, 0x3fef8f33, 0xe47a22a2
+	.word	0x3fefa0f1, 0x70ca07ba, 0x3fefb2bb, 0x4d53fe0d
+	.word	0x3feec491, 0x82a3f090, 0x3feed674, 0x194bb8d5
+	.word	0x3feee863, 0x19e32323, 0x3feefa5e, 0x8d07f29e
+	.word	0x3fef0c66, 0x7b5de565, 0x3fef1e7a, 0xed8eb8bb
+	.word	0x3fef309b, 0xec4a2d33, 0x3fef42c9, 0x80460ad8
+	.word	0x3fef5503, 0xb23e255d, 0x3fef674a, 0x8af46052
+	.word	0x3fef799e, 0x1330b358, 0x3fef8bfe, 0x53c12e59
+	.word	0x3fef9e6b, 0x5579fdbf, 0x3fefb0e5, 0x21356eba
+	.word	0x3fefc36b, 0xbfd3f37a, 0x3fefd5ff, 0x3a3c2774
+	.word	0x3feee89f, 0x995ad3ad, 0x3feefb4c, 0xe622f2ff
+	.word	0x3fef0e07, 0x298db666, 0x3fef20ce, 0x6c9a8952
+	.word	0x3fef33a2, 0xb84f15fb, 0x3fef4684, 0x15b749b1
+	.word	0x3fef5972, 0x8de5593a, 0x3fef6c6e, 0x29f1c52a
+	.word	0x3fef7f76, 0xf2fb5e47, 0x3fef928c, 0xf22749e4
+	.word	0x3fefa5b0, 0x30a1064a, 0x3fefb8e0, 0xb79a6f1f
+	.word	0x3fefcc1e, 0x904bc1d2, 0x3fefdf69, 0xc3f3a207
+	.word	0x3feff2c2, 0x5bd71e09, 0x3ff00628, 0x6141b33d
+	.word	0x3fef199b, 0xdd85529c, 0x3fef2d1c, 0xd9fa652c
+	.word	0x3fef40ab, 0x5fffd07a, 0x3fef5447, 0x78fafb22
+	.word	0x3fef67f1, 0x2e57d14b, 0x3fef7ba8, 0x8988c933
+	.word	0x3fef8f6d, 0x9406e7b5, 0x3fefa340, 0x5751c4db
+	.word	0x3fefb720, 0xdcef9069, 0x3fefcb0f, 0x2e6d1675
+	.word	0x3fefdf0b, 0x555dc3fa, 0x3feff315, 0x5b5bab74
+	.word	0x3ff0072d, 0x4a07897c, 0x3ff01b53, 0x2b08c968
+	.word	0x3ff02f87, 0x080d89f2, 0x3ff043c8, 0xeacaa1d6
+	.word	0x3fef5818, 0xdcfba487, 0x3fef6c76, 0xe862e6d3
+	.word	0x3fef80e3, 0x16c98398, 0x3fef955d, 0x71ff6075
+	.word	0x3fefa9e6, 0x03db3285, 0x3fefbe7c, 0xd63a8315
+	.word	0x3fefd321, 0xf301b460, 0x3fefe7d5, 0x641c0658
+	.word	0x3feffc97, 0x337b9b5f, 0x3ff01167, 0x6b197d17
+	.word	0x3ff02646, 0x14f5a129, 0x3ff03b33, 0x3b16ee12
+	.word	0x3ff0502e, 0xe78b3ff6, 0x3ff06539, 0x24676d76
+	.word	0x3ff07a51, 0xfbc74c83, 0x3ff08f79, 0x77cdb740
+	.word	0x3fefa4af, 0xa2a490da, 0x3fefb9f4, 0x867cca6e
+	.word	0x3fefcf48, 0x2d8e67f1, 0x3fefe4aa, 0xa2188510
+	.word	0x3feffa1b, 0xee615a27, 0x3ff00f9c, 0x1cb6412a
+	.word	0x3ff0252b, 0x376bba97, 0x3ff03ac9, 0x48dd7274
+	.word	0x3ff05076, 0x5b6e4540, 0x3ff06632, 0x798844f8
+	.word	0x3ff07bfd, 0xad9cbe14, 0x3ff091d8, 0x02243c89
+	.word	0x3ff0a7c1, 0x819e90d8, 0x3ff0bdba, 0x3692d514
+	.word	0x3ff0d3c2, 0x2b8f71f1, 0x3ff0e9d9, 0x6b2a23d9
+
+	.word	0xc057150d, 0x5f6e1c54	! KA3 = -3.60659926599003171364e-01*256.0
+	.word	0x405ec71c, 0x2e92efda	! KA2 =  4.80902715189356683026e-01*256.0
+	.word	0xc0671547, 0x653cbec4	! KA1 = -7.21347520569871841065e-01*256.0
+	.word	0x40771547, 0x652af190	! KA0 =  1.44269504088069658645e+00*256.0
+	.word	0x3ecebfbe, 0x9d182250	! KB2 = 3.66556671660783833261e-06
+	.word	0x3f662e43, 0xe2528362	! KB1 = 2.70760782821392980564e-03
+	.word	0x40e00000, 0x00000000	! HTHRESH = 32768.0
+	.word	0xc0e2c000, 0x00000000	! LTHRESH = -38400.0 ; 0.0f
+	.word	0x3f800000, 0x00000000 	! 1.0f               ; free
+
+#define tmp_px		STACK_BIAS-48
+#define tmp_py		STACK_BIAS-40
+#define tmp_counter	STACK_BIAS-32
+#define tmp0		STACK_BIAS-28
+#define tmp1		STACK_BIAS-24
+#define tmp2		STACK_BIAS-20
+#define tmp3		STACK_BIAS-16
+#define tmp4		STACK_BIAS-12
+#define tmp5		STACK_BIAS-8
+#define tmp6		STACK_BIAS-4
+
+
+#define KA3		%f34
+#define KA2		%f36
+#define KA1		%f38
+#define KA0		%f40
+#define KB2		%f42
+#define KB1		%f44
+#define HTHRESHOLD	%f30
+#define LTHRESHOLD	%f32
+
+#define counter		%o7
+#define stridex		%i0
+#define stridey		%i4
+#define stridez		%l3
+
+#define CONST_0x8000	%l1
+#define MASK_0x007fffff	%l4
+#define MASK_0x7fffffff	%l5
+
+! sizeof temp storage - must be a multiple of 16 for V9
+#define tmps		0x30
+
+!--------------------------------------------------------------------
+!		!!!!!	vpowf algorithm	!!!!!
+!  uy = *(unsigned int*)py;
+!  ux = *(unsigned int*)px;
+!  ay = uy & 0x7fffffff;
+!  ax0 = ux & 0x7fffffff;
+!  sx = ux >> 31;
+!  yisint0 = 0;                /* Y - non-integer */
+!  if (ax0 >= 0x7f800000 || ay >= 0x7f800000) { /* |X| or |Y| = Inf,Nan */
+!    if (ax0 > 0x7f800000 || ay > 0x7f800000)   /* |X| or |Y| = Nan     */
+!      pz[0] = *px * *py;
+!      goto next;
+!    if (ay == 0x7f800000) { /* |Y| = Inf */
+!      float fy;
+!      if (ax0 == 0x3f800000) fy = *py - *py; /* +-1 ** +-Inf = NaN */
+!      else fy = ((ax0 < 0x3f800000) != (uy >> 31)) ? ZERO : *(float*) &ay;
+!      pz[0] = fy;
+!      goto next;
+!    }
+!    if (sx) {                               /* X = -Inf     */
+!      exp = ay >> 23;
+!      if (exp >= 0x97)                      /* |Y| >= 2^24  */
+!        yisint0 = 2;                      /* Y - even     */
+!      else {
+!        if (exp >= 0x7f) {                  /* |Y| >= 1     */
+!          i0 = ay >> ((0x7f + 23) - exp);
+!          if ((i0 << ((0x7f + 23) - exp)) == ay) yisint0 = 2 - (i0 & 1);
+!        }
+!      }
+!    }
+!    if (uy >> 31) ax0 = 0;
+!    ax0 += yisint0 << 31;
+!    pz[0] =  *(float*)&ax0;
+!    goto next;
+!  }
+!  exp0 = (ax0 >> 23) - 127;
+!  if ((int)ux < 0x00800000) {         /* X = denormal or negative */
+!    if ((int)ax0 < 0x00800000) {    /* X = denormal */
+!      *((float*) &ax0) = (float) (int)ax0;
+!      exp0 = (ax0 >> 23) - (127 + 149);
+!    }
+!    if ((int)ux <= 0) {                      /* X <= 0       */
+!      exp = ay >> 23;
+!      if (exp >= 0x97)                       /* |Y| >= 2^24  */
+!        yisint0 = 2;                       /* Y - even     */
+!      else {
+!        if (exp >= 0x7f) {                   /* |Y| >= 1     */
+!          i0 = ay >> ((0x7f + 23) - exp);
+!          if ((i0 << ((0x7f + 23) - exp)) == ay) yisint0 = 2 - (i0 & 1);
+!        }
+!      }
+!      if (ax0 == 0) { /* pow(0,Y) */
+!        float fy;
+!        fy = (uy >> 31) ? ONE / ZERO : ZERO;
+!        if (sx & yisint0) fy = -fy;
+!        pz[0] = fy;
+!        goto next;
+!      }
+!      if (yisint0 == 0) { /* pow(neg,non-integer) */
+!        pz[0] = ZERO / ZERO;  /* NaN */
+!        goto next;
+!      }
+!    }
+!  }
+!
+!  ax0 = *px;
+!  exp0 = ax0 & 0x7fffffff;
+!  exp0 >>= 23;
+!  exp0 -= 127;
+!  exp0 <<= 8;
+!  ax0 &= 0x007fffff;
+!  i0 = ax0 + 0x8000;
+!  i0 &= 0xffff0000;
+!  ind0 = i0 >> 12;
+!  ind0 &= -8;
+!  i0 = ax0 - i0;
+!  dtmp0 = (double) i0;
+!  dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
+!  y0 =  dtmp0 * dtmp1;
+!  dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
+!  dtmp1 = (double) exp0;
+!  yy0 = dtmp0 + dtmp1;
+!  dtmp0 = KA3 * y0;
+!  dtmp0 += KA2;
+!  dtmp0 *= y0;
+!  dtmp0 += KA1;
+!  dtmp0 *= y0;
+!  dtmp0 += KA0;
+!  dtmp0 *= y0;
+!  yy0 += dtmp0;
+!  ftmp0 = *py0;
+!  dtmp0 = (double)ftmp0;
+!  yy0 *= dtmp0;
+!  if (yy0 >= HTHRESH)
+!    yy0 = HTHRESH;
+!  if (yy0 <= LTHRESH)
+!    yy0 = LTHRESH;
+!  ind0 = (int) yy0;
+!  ((int*)&dtmp1)[0] = ind0;
+!  ((int*)&dtmp1)[1] = 0;
+!  dtmp1 = vis_fpackfix(dtmp1);
+!  dtmp0 = (double)ind0;
+!  y0 = yy0 - dtmp0;
+!  dtmp0 = KB2 * y0;
+!  dtmp0 += KB1;
+!  yy0 = dtmp0 * y0;
+!  ind0 &= 255;
+!  ind0 <<= 3;
+!  di0 = *(double*)((char*)__mt_constexp2f + ind0);
+!  di0 = vis_fpadd32(di0,dtmp1);
+!  yy0 *= di0;
+!  yy0 += di0;
+!  ftmp0 = (float)yy0;
+!  *pz0 = ftmp0;
+!--------------------------------------------------------------------
+!		!!!!!	vpowf algorithm,stridex=0	!!!!!
+!
+!  ax = ax0 = *px;
+!  exp0 = ax0 & 0x7fffffff;
+!  exp0 >>= 23;
+!  exp0 -= 127;
+!  exp0 <<= 8;
+!  ax0 &= 0x007fffff;
+!  i0 = ax0 + 0x8000;
+!  i0 &= 0xffff0000;
+!  ind0 = i0 >> 12;
+!  ind0 &= -8;
+!  i0 = ax0 - i0;
+!  dtmp0 = (double) i0;
+!  dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
+!  y0 =  dtmp0 * dtmp1;
+!  dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
+!  dtmp1 = (double) exp0;
+!  yy0 = dtmp0 + dtmp1;
+!  dtmp0 = KA3 * y0;
+!  dtmp0 += KA2;
+!  dtmp0 *= y0;
+!  dtmp0 += KA1;
+!  dtmp0 *= y0;
+!  dtmp0 += KA0;
+!  dtmp0 *= y0;
+!  yy = yy0 + dtmp0;
+!
+!  uy = ((int*)py)[0];
+!  ay = uy & 0x7fffffff;
+!  if (ay >= 0x7f800000) {       /* |Y| = Inf or Nan */
+!    float fy;
+!   if (ay > 0x7f800000) fy = *py + *py;  /* |Y| = Nan     */
+!    else fy = ((ax < 0x3f800000) != (uy >> 31)) ? ZERO : *(float*)&ay;
+!    pz[0] = fy;
+!    goto next;
+!  }
+!
+!
+!  ftmp0 = py[0];
+!  dtmp0 = (double)ftmp0;
+!  yy0 = dtmp0 * yy;
+!  if (yy0 >= HTHRESH)
+!  if (yy0 <= LTHRESH)
+!  yy0 = HTHRESH;
+!  yy0 = LTHRESH;
+!  ii0 = (int) yy0;
+!  dtmp0 = (double)ii0;
+!  i0 = ii0 >> 5;
+!  i0 &= -8;
+!  di0 = ((double*)((char*)(__mt_constexp2fb + 150) + i0))[0];
+!  y0 = yy0 - dtmp0;
+!  dtmp0 = KB2 * y0;
+!  dtmp0 += KB1;
+!  yy0 = dtmp0 * y0;
+!  ii0 &= 255;
+!  ii0 <<= 3;
+!  dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
+!  di0 *= dtmp0;
+!  dtmp0 = yy0 * di0;
+!  dtmp0 += di0;
+!  ftmp0 = (float)dtmp0;
+!  pz[0] = ftmp0;
+!--------------------------------------------------------------------
+	ENTRY(__vpowf)
+	save	%sp,-SA(MINFRAME)-tmps,%sp
+	PIC_SETUP(l7)
+	PIC_SET(l7,.CONST_TBL,l2)
+	wr	%g0,0x60,%gsr
+
+#ifdef __sparcv9
+	ldx	[%fp+STACK_BIAS+176],stridez
+#else
+	ld	[%fp+STACK_BIAS+92],stridez
+#endif
+
+	ld	[%i1],%o3
+	add	%l2,2064,%l0
+	st	%i0,[%fp+tmp_counter]
+	add	%l0,2048,%l6
+	ldd	[%l6],KA3
+	ldd	[%l6+8],KA2
+	sll	stridey,2,stridey
+	ldd	[%l6+16],KA1
+	sll	stridez,2,stridez
+	ldd	[%l6+24],KA0
+	sll	%i2,2,stridex
+	ldd	[%l6+32],KB2
+	sethi	%hi(0x7ffffc00),MASK_0x7fffffff
+	fzero	%f2
+	ldd	[%l6+40],KB1
+	add	MASK_0x7fffffff,1023,MASK_0x7fffffff
+	fzero	%f10
+	ldd	[%l6+48],HTHRESHOLD
+	sethi	%hi(0x7ffc00),MASK_0x007fffff
+	fzero	%f20
+	ldd	[%l6+56],LTHRESHOLD
+	sethi	%hi(0x8000),CONST_0x8000
+	add	MASK_0x007fffff,1023,MASK_0x007fffff
+
+	cmp	stridex,0
+	bne,pt	%icc,.common_case
+	sethi	%hi(0x00800000),%l6
+
+	cmp	%o3,%l6
+	bl,pn	%icc,.common_case
+	sethi	%hi(0x7f800000),%o1
+
+	cmp	%o3,%o1
+	bge,pn	%icc,.common_case
+	sethi	%hi(0x3f800000),%l6
+
+	cmp	%o3,%l6
+	bne,pt	%icc,.stridex_zero
+	nop
+
+.common_case:
+	stx	%i1,[%fp+tmp_px]
+	stx	%i3,[%fp+tmp_py]
+.begin:
+	ld	[%fp+tmp_counter],counter
+	ldx	[%fp+tmp_px],%o2
+	ldx	[%fp+tmp_py],%i2
+	st	%g0,[%fp+tmp_counter]
+.begin1:
+	cmp	counter,0
+	ble,pn	%icc,.exit
+	lda	[%o2]0x82,%i1		! (Y0_2) ax0 = *px;
+
+	lda	[%i2]0x82,%l7
+	sethi	%hi(0xffff0000),%l6
+	sethi	%hi(0x7f800000),%o5
+
+	and	%i1,MASK_0x7fffffff,%i3	! (Y0_2) exp0 = ax0 & 0x7fffffff;
+	and	%i1,MASK_0x007fffff,%g5	! (Y0_2) ax0 &= 0x007fffff;
+
+	cmp	%i3,%o5			! (Y0_2) ax0 ? 0x7f800000
+	bge,pn	%icc,.spec1		! (Y0_2) if( ax0 >= 0x7f800000 )
+	and	%l7,MASK_0x7fffffff,%o4
+
+	cmp	%o4,%o5			! (Y0_2) ay0 ? 0x7f800000
+	bge,pn	%icc,.spec1		! (Y0_2) if( ay0 >= 0x7f800000 )
+	nop
+
+	cmp	%i1,MASK_0x007fffff	! (Y0_2) ux0 ? 0x800000
+	ble,pn	%icc,.spec2		! (Y0_2) if(ux0 < 0x800000)
+	srl	%i3,23,%o3		! (Y0_2) exp0 >>= 23;
+
+	sub	%o3,127,%o3		! (Y0_2) exp0 -= 127;
+
+	add	%g5,CONST_0x8000,%i3	! (Y0_2) i0 = ax0 + 0x8000;
+
+	sll	%o3,8,%o4		! (Y0_2) exp0 <<= 8;
+	and	%i3,%l6,%i3		! (Y0_2) i0 &= 0xffff0000;
+	st	%o4,[%fp+tmp3]		! (Y0_2) STORE exp0
+
+	sub	%g5,%i3,%o4		! (Y0_2) i0 = ax0 - i0;
+	st	%o4,[%fp+tmp2]		! (Y0_2) STORE i0
+	add	%o2,stridex,%o2		! px += stridex
+
+	sra	%i3,12,%o0		! (Y0_2) ind0 = i0 >> 12;
+	lda	[%o2]0x82,%o3		! (Y1_2) ax0 = *px;
+
+	and	%o0,-8,%g5		! (Y0_2) ind0 &= -8;
+	ld	[%fp+tmp2],%f14		! (Y0_2) dtmp0 = (double) i0;
+
+	and	%o3,MASK_0x7fffffff,%i3	! (Y1_2) exp0 = ax0 & 0x7fffffff;
+	and	%o3,MASK_0x007fffff,%o0	! (Y1_2) ax0 &= 0x007fffff;
+
+	cmp	%i3,%o5			! (Y1_2) ax0 ? 0x7f800000
+	add	%l2,%g5,%g1		! (Y0_2) (char*)__mt_constlog4f + ind0
+
+	srl	%i3,23,%i3		! (Y1_2) exp0 >>= 23;
+	add	%o0,CONST_0x8000,%i1	! (Y1_2) i0 = ax0 + 0x8000;
+
+	ldd	[%g1+8],%f48		! (Y0_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
+	sub	%i3,127,%i3		! (Y1_2) exp0 -= 127;
+	fitod	%f14,%f60		! (Y0_2) dtmp0 = (double) i0;
+
+	sll	%i3,8,%i3		! (Y1_2) exp0 <<= 8;
+	and	%i1,%l6,%i1		! (Y1_2) i0 &= 0xffff0000;
+	st	%i3,[%fp+tmp4]		! (Y1_2) STORE exp0
+
+	sub	%o0,%i1,%o0		! (Y1_2) i0 = ax0 - i0;
+	st	%o0,[%fp+tmp5]		! (Y1_2) STORE i0
+	bge,pn 	%icc,.update0		! (Y1_2) if(ax0 >= 0x7f800000)
+	nop
+.cont0:
+	cmp	%o3,MASK_0x007fffff	! (Y1_2) ux0 ? 0x800000
+
+	fmuld	%f60,%f48,%f48		! (Y0_2) y0 =  dtmp0 * dtmp1;
+	ble,pn 	%icc,.update1		! (Y1_2) if(ux0 < 0x800000)
+	nop
+.cont1:
+	fmuld	KA3,%f48,%f62		! (Y0_2) dtmp0 = KA3 * y0;
+
+	faddd	%f62,KA2,%f22		! (Y0_2) dtmp0 += KA2;
+
+	sra	%i1,12,%o1		! (Y1_2) ind0 = i0 >> 12;
+	add	%o2,stridex,%i3		! px += stridex
+	lda	[stridex+%o2]0x82,%g1	! (Y2_2) ax0 = *px;
+
+	and	%o1,-8,%o0		! (Y1_2) ind0 &= -8;
+	ld	[%fp+tmp5],%f12		! (Y1_2) LOAD i0
+
+	and	%g1,MASK_0x7fffffff,%i1	! (Y2_2) exp0 = ax0 & 0x7fffffff;
+	and	%g1,MASK_0x007fffff,%o2	! (Y2_2) ax0 &= 0x007fffff;
+	lda	[%i2]0x82,%f0		! (Y0_2) ftmp0 = *py0;
+
+	srl	%i1,23,%o3		! (Y2_2) exp0 >>= 23;
+	cmp	%i1,%o5			! (Y2_2) ax0 ? 0x7f800000
+
+	fmuld	%f22,%f48,%f26 		! (Y0_2) dtmp0 *= y0;
+	add	%l2,%o0,%i1		! (Y1_2) (char*)__mt_constlog4f + ind0
+	sub	%o3,127,%l7		! (Y2_2) exp0 -= 127;
+
+	add	%o2,CONST_0x8000,%o1	! (Y2_2) i0 = ax0 + 0x8000;
+	ldd	[%i1+8],%f50		! (Y1_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
+	fitod	%f12,%f28		! (Y1_2) dtmp0 = (double) i0;
+
+	sll	%l7,8,%l7		! (Y2_2) exp0 <<= 8;
+	and	%o1,%l6,%o1		! (Y2_2) i0 &= 0xffff0000;
+	st	%l7,[%fp+tmp6]		! (Y2_2) STORE exp0
+
+	sub	%o2,%o1,%i1		! (Y2_2) i0 = ax0 - i0;
+	st	%i1,[%fp+tmp2]		! (Y2_2) STORE i0
+	bge,pn	%icc,.update2		! (Y2_2) if(ax0 >= 0x7f800000)
+	nop
+.cont2:
+	cmp	%g1,MASK_0x007fffff	! (Y2_2) ux0 ? 0x800000
+
+	fmuld	%f28,%f50,%f46		! (Y1_2) y0 =  dtmp0 * dtmp1;
+	ble,pn	%icc,.update3		! (Y2_2) if(ux0 < 0x800000)
+	faddd	%f26,KA1,%f50		! (Y0_2) dtmp0 += KA1;
+.cont3:
+	ld	[%fp+tmp3],%f4		! (Y0_2) dtmp1 = (double) exp0;
+
+	fstod	%f0,%f24		! (Y0_2) dtmp0 = (double)ftmp0;
+
+	fmuld	KA3,%f46,%f28		! (Y1_1) dtmp0 = KA3 * y0;
+
+	fitod	%f4,%f26		! (Y0_1) dtmp1 = (double) exp0;
+
+	fmuld	%f50,%f48,%f50		! (Y0_1) dtmp0 *= y0;
+
+	faddd	%f28,KA2,%f28		! (Y1_1) dtmp0 += KA2;
+
+	ldd	[%l2+%g5],%f60		! (Y0_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
+	add	%i3,stridex,%o2		! px += stridex
+
+	lda	[%o2]0x82,%i1		! (Y0_2) ax0 = *px;
+	sra	%o1,12,%g5		! (Y2_1) ind0 = i0 >> 12;
+
+	faddd	%f50,KA0,%f58		! (Y0_1) dtmp0 += KA0;
+	and	%g5,-8,%o1		! (Y2_1) ind0 &= -8;
+	ld	[%fp+tmp2],%f6		! (Y2_1) dtmp0 = (double) i0;
+
+	and	%i1,MASK_0x7fffffff,%i3	! (Y0_2) exp0 = ax0 & 0x7fffffff;
+	and	%i1,MASK_0x007fffff,%g5	! (Y0_2) ax0 &= 0x007fffff;
+
+	srl	%i3,23,%o3		! (Y0_2) exp0 >>= 23;
+	add	%l2,%o1,%g1		! (Y2_1) (char*)__mt_constlog4f + ind0
+	faddd	%f60,%f26,%f26		! (Y0_1) yy0 = dtmp0 + dtmp1;
+
+	fmuld	%f28,%f46,%f50		! (Y1_1) dtmp0 *= y0;
+	sub	%o3,127,%o3		! (Y0_2) exp0 -= 127;
+	cmp	%i3,%o5			! (Y0_2) ax0 ? 0x7f800000
+
+	fmuld	%f58,%f48,%f48		! (Y0_1) dtmp0 *= y0;
+	add	%g5,CONST_0x8000,%i3	! (Y0_2) i0 = ax0 + 0x8000;
+	ldd	[%g1+8],%f58		! (Y2_1) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
+	fitod	%f6,%f54		! (Y2_1) dtmp0 = (double) i0;
+
+	sll	%o3,8,%o4		! (Y0_2) exp0 <<= 8;
+	and	%i3,%l6,%i3		! (Y0_2) i0 &= 0xffff0000;
+	st	%o4,[%fp+tmp3]		! (Y0_2) STORE exp0
+
+	sub	%g5,%i3,%o4		! (Y0_2) i0 = ax0 - i0;
+	st	%o4,[%fp+tmp2]		! (Y0_2) STORE i0
+	bge,pn 	%icc,.update4		! (Y0_2) if( ax0 >= 0x7f800000 )
+	nop
+.cont4:
+	lda	[stridey+%i2]0x82,%g1	! (Y1_1) ay0 = *(unsigned*)py0
+	add	%i2,stridey,%o4		! py += stridey
+	cmp	%i1,MASK_0x007fffff	! (Y0_2) ux0 ? 0x800000
+
+	fmuld	%f54,%f58,%f28		! (Y2_1) y0 =  dtmp0 * dtmp1;
+	lda	[stridey+%i2]0x82,%f2	! (Y1_1) ftmp0 = *py0;
+	ble,pn 	%icc,.update5		! (Y0_2) if(ux0 < 0x800000)
+	faddd	%f50,KA1,%f54		! (Y1_1) dtmp0 += KA1;
+.cont5:
+	and	%g1,MASK_0x7fffffff,%g1	! (Y1_1) ay0 &= 0x7fffffff;
+	ld	[%fp+tmp4],%f1		! (Y1_1) LOAD exp0
+	faddd	%f26,%f48,%f58		! (Y0_1) yy0 += dtmp0;
+
+	cmp	%g1,%o5			! (Y1_1) ay0 ? 0x7f800000
+	bge,pn 	%icc,.update6		! (Y1_1) if(ay0 >= 0x7f800000)
+	nop
+.cont6:
+	fmuld	KA3,%f28,%f62		! (Y2_1) dtmp0 = KA3 * y0;
+	fstod	%f2,%f22		! (Y1_1) dtmp0 = (double)ftmp0;
+
+	fmuld	%f24,%f58,%f58		! (Y0_1) yy0 *= dtmp0;
+
+	fitod	%f1,%f48		! (Y1_1) dtmp1 = (double) exp0;
+
+	fmuld	%f54,%f46,%f54		! (Y1_1) dtmp0 *= y0;
+
+	faddd	%f62,KA2,%f26		! (Y2_1) dtmp0 += KA2;
+
+	add	%o2,stridex,%o2		! px += stridex
+	ldd	[%l2+%o0],%f60		! (Y1_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
+	fcmped	%fcc0,HTHRESHOLD,%f58	! (Y0_1) if (yy0 >= HTHRESH)
+
+	sra	%i3,12,%o0		! (Y0_2) ind0 = i0 >> 12;
+	lda	[%o2]0x82,%o3		! (Y1_2) ax0 = *px;
+
+	faddd	%f54,KA0,%f56		! (Y1_1) dtmp0 += KA0;
+	and	%o0,-8,%g5		! (Y0_2) ind0 &= -8;
+	ld	[%fp+tmp2],%f14		! (Y0_2) dtmp0 = (double) i0;
+
+	and	%o3,MASK_0x7fffffff,%i3	! (Y1_2) exp0 = ax0 & 0x7fffffff;
+	and	%o3,MASK_0x007fffff,%o0	! (Y1_2) ax0 &= 0x007fffff;
+
+	cmp	%i3,%o5			! (Y1_2) ax0 ? 0x7f800000
+	add	%l2,%g5,%g1		! (Y0_2) (char*)__mt_constlog4f + ind0
+	faddd	%f60,%f48,%f12		! (Y1_1) yy0 = dtmp0 + dtmp1;
+
+	fmuld	%f26,%f28,%f50		! (Y2_1) dtmp0 *= y0;
+	srl	%i3,23,%i3		! (Y1_2) exp0 >>= 23;
+	add	%o0,CONST_0x8000,%i1	! (Y1_2) i0 = ax0 + 0x8000;
+	fcmped	%fcc1,LTHRESHOLD,%f58	! (Y0_1) if (yy0 <= LTHRESH)
+
+	fmuld	%f56,%f46,%f46		! (Y1_1) dtmp0 *= y0;
+	ldd	[%g1+8],%f48		! (Y0_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
+	sub	%i3,127,%i3		! (Y1_2) exp0 -= 127;
+	fitod	%f14,%f60		! (Y0_2) dtmp0 = (double) i0;
+
+	sll	%i3,8,%i2		! (Y1_2) exp0 <<= 8;
+	and	%i1,%l6,%i1		! (Y1_2) i0 &= 0xffff0000;
+	st	%i2,[%fp+tmp4]		! (Y1_2) STORE exp0
+
+	sub	%o0,%i1,%o0		! (Y1_2) i0 = ax0 - i0;
+	st	%o0,[%fp+tmp5]		! (Y1_2) STORE i0
+	bge,pn 	%icc,.update7		! (Y1_2) if(ax0 >= 0x7f800000)
+	nop
+.cont7:
+	lda	[stridey+%o4]0x82,%i3 	! Y(2_1) ay0 = *py0
+	cmp	%o3,MASK_0x007fffff	! (Y1_2) ux0 ? 0x800000
+	add	%o4,stridey,%i2		! py += stridey;
+	fmovdl	%fcc0,HTHRESHOLD,%f58	! (Y0_1) yy0 = HTHRESH;
+
+	fmuld	%f60,%f48,%f48		! (Y0_2) y0 =  dtmp0 * dtmp1;
+	lda	[stridey+%o4]0x82,%f16	! (Y2_1) ftmp0 = *py0;
+	ble,pn 	%icc,.update8		! (Y1_2) if(ux0 < 0x800000)
+	faddd	%f50,KA1,%f52		! (Y2_1) dtmp0 += KA1;
+.cont8:
+	and	%i3,MASK_0x7fffffff,%i3	! (Y2_1) ay0 &= 0x7fffffff
+	ld	[%fp+tmp6],%f17		! (Y2_1) dtmp1 = (double) exp0;
+	faddd	%f12,%f46,%f60		! (Y1_1) yy0 += dtmp0;
+
+	cmp	%i3,%o5			! (Y2_1) ay0 ? 0x7f800000
+	bge,pn 	%icc,.update9		! (Y2_1) if(ay0 >= 0x7f800000)
+	nop
+
+.cont9:
+	fmovdg	%fcc1,LTHRESHOLD,%f58	! (Y0_1) yy0 = LTHRESH;
+
+	fmuld	KA3,%f48,%f62		! (Y0_2) dtmp0 = KA3 * y0;
+	fstod	%f16,%f54		! (Y2_1) dtmp0 = (double)ftmp0;
+
+	fmuld	%f22,%f60,%f56		! (Y1_1) yy0 *= dtmp0;
+
+	fitod	%f17,%f24		! (Y2_1) dtmp1 = (double) exp0;
+
+	fmuld	%f52,%f28,%f52		! (Y2_1) dtmp0 *= y0;
+	fdtoi	%f58,%f10		! (Y0_1) ind0 = (int) yy0;
+
+	st	%f10,[%fp+tmp0]		! (Y0_1) STORE ind0
+	faddd	%f62,KA2,%f22		! (Y0_2) dtmp0 += KA2;
+
+	fcmped	%fcc0,HTHRESHOLD,%f56	! (Y1_1) if (yy0 >= HTHRESH)
+	ldd	[%l2+%o1],%f60		! (Y2_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
+
+	sra	%i1,12,%o1		! (Y1_2) ind0 = i0 >> 12;
+	add	%o2,stridex,%i3		! px += stridex
+	lda	[stridex+%o2]0x82,%g1	! (Y2_2) ax0 = *px;
+
+	and	%o1,-8,%o0		! (Y1_2) ind0 &= -8;
+	add	%i2,stridey,%i2		! py += stridey
+	ld	[%fp+tmp5],%f12		! (Y1_2) LOAD i0
+	faddd	%f52,KA0,%f4		! (Y2_1) dtmp0 += KA0;
+
+	and	%g1,MASK_0x7fffffff,%i1	! (Y2_2) exp0 = ax0 & 0x7fffffff;
+	and	%g1,MASK_0x007fffff,%o2	! (Y2_2) ax0 &= 0x007fffff;
+	lda	[%i2]0x82,%f0		! (Y0_2) ftmp0 = *py0;
+	fitod	%f10,%f52		! (Y0_1) dtmp0 = (double)ind0;
+
+	srl	%i1,23,%o3		! (Y2_2) exp0 >>= 23;
+	cmp	%i1,%o5			! (Y2_2) ax0 ? 0x7f800000
+	faddd	%f60,%f24,%f18		! (Y2_1) yy0 = dtmp0 + dtmp1;
+
+	fmuld	%f22,%f48,%f26		! (Y0_2) dtmp0 *= y0;
+	add	%l2,%o0,%i1		! (Y1_2) (char*)__mt_constlog4f + ind0
+	sub	%o3,127,%l7		! (Y2_2) exp0 -= 127;
+	fcmped	%fcc1,LTHRESHOLD,%f56	! (Y1_1) if (yy0 <= LTHRESH)
+
+	fmuld	%f4,%f28,%f24		! (Y2_1) dtmp0 *= y0;
+	add	%o2,CONST_0x8000,%o1	! (Y2_2) i0 = ax0 + 0x8000;
+	ldd	[%i1+8],%f50		! (Y1_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
+	fitod	%f12,%f28		! (Y1_2) dtmp0 = (double) i0;
+
+	sll	%l7,8,%l7		! (Y2_2) exp0 <<= 8;
+	and	%o1,%l6,%o1		! (Y2_2) i0 &= 0xffff0000;
+	st	%l7,[%fp+tmp6]		! (Y2_2) STORE exp0
+	fsubd	%f58,%f52,%f60		! (Y0_1) y0 = yy0 - dtmp0;
+
+
+	sub	%o2,%o1,%i1		! (Y2_2) i0 = ax0 - i0;
+	st	%i1,[%fp+tmp2]		! (Y2_2) STORE i0
+	bge,pn	%icc,.update10		! (Y2_2) if(ax0 >= 0x7f800000)
+	nop
+.cont10:
+	lda	[%i2]0x82,%o2		! (Y0_2) ay0 = *(int*)py0;
+	cmp	%g1,MASK_0x007fffff	! (Y2_2) ux0 ? 0x800000
+	fmovdl	%fcc0,HTHRESHOLD,%f56	! (Y1_1) yy0 = HTHRESH;
+
+	fmuld	%f28,%f50,%f46		! (Y1_2) y0 =  dtmp0 * dtmp1;
+	ble,pn	%icc,.update11		! (Y2_2) if(ux0 < 0x800000)
+	faddd	%f26,KA1,%f50		! (Y0_2) dtmp0 += KA1;
+.cont11:
+	fmuld	KB2,%f60,%f62		! (Y0_1) dtmp0 = KB2 * y0;
+	and	%o2,MASK_0x7fffffff,%o2	! (Y0_2) ay0 &= 0x7fffffff
+	ld	[%fp+tmp3],%f4		! (Y0_2) dtmp1 = (double) exp0;
+	faddd	%f18,%f24,%f52		! (Y2_1) yy0 += dtmp0;
+
+	ld	[%fp+tmp0],%g1		! (Y0_1) LAOD ind0
+	cmp	%o2,%o5			! (Y0_2) ay0 ? 0x7f800000
+	bge,pn	%icc,.update12		! (Y0_2) if( ay0 >= 0x7f800000)
+	nop
+.cont12:
+	fstod	%f0,%f24		! (Y0_2) dtmp0 = (double)ftmp0;
+
+	cmp	counter,6		! counter
+	bl,pn	%icc,.tail
+	sub	%i5,stridez,%o4
+
+	ba	.main_loop
+	nop
+
+	.align	16
+.main_loop:
+	fmuld	KA3,%f46,%f28		! (Y1_1) dtmp0 = KA3 * y0;
+	and	%g1,255,%o2		! (Y0_0) ind0 &= 255;
+	sub	counter,3,counter	! counter
+	fmovdg	%fcc1,LTHRESHOLD,%f56	! (Y1_0) yy0 = LTHRESH;
+
+	fmuld	%f54,%f52,%f18		! (Y2_0) yy0 *= dtmp0;
+	sll	%o2,3,%i1		! (Y0_0) ind0 <<= 3;
+	add	%o4,stridez,%l7     	! pz += stridez
+	faddd	%f62,KB1,%f62		! (Y0_0) dtmp0 += KB1;
+
+	fpackfix	%f10,%f10	! (Y0_0) dtmp1 = vis_fpackfix(dtmp1);
+	fitod	%f4,%f26		! (Y0_1) dtmp1 = (double) exp0;
+	ldd	[%l0+%i1],%f58		! (Y0_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
+
+	fmuld	%f50,%f48,%f50		! (Y0_1) dtmp0 *= y0;
+	fdtoi	%f56,%f20		! (Y1_0) ind0 = (int) yy0;
+	st	%f20,[%fp+tmp1]		! (Y1_0) STORE ind0
+
+	faddd	%f28,KA2,%f28		! (Y1_1) dtmp0 += KA2;
+
+	fmuld	%f62,%f60,%f62		! (Y0_0) yy0 = dtmp0 * y0;
+	ldd	[%l2+%g5],%f60		! (Y0_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
+	add	%i3,stridex,%o2		! px += stridex
+	fcmped	%fcc0,HTHRESHOLD,%f18	! (Y2_0) if (yy0 >= HTHRESH)
+
+	lda	[%o2]0x82,%i1		! (Y0_2) ax0 = *px;
+	sra	%o1,12,%g5		! (Y2_1) ind0 = i0 >> 12;
+	fpadd32	%f10,%f58,%f22		! (Y0_0) di0 = vis_fpadd32(di0,dtmp1);
+
+	faddd	%f50,KA0,%f58		! (Y0_1) dtmp0 += KA0;
+	and	%g5,-8,%o1		! (Y2_1) ind0 &= -8;
+	ld	[%fp+tmp2],%f6		! (Y2_1) dtmp0 = (double) i0;
+
+	fitod	%f20,%f52		! (Y1_0) dtmp0 = (double)ind0;
+	and	%i1,MASK_0x7fffffff,%i3	! (Y0_2) exp0 = ax0 & 0x7fffffff;
+	and	%i1,MASK_0x007fffff,%g5	! (Y0_2) ax0 &= 0x007fffff;
+
+	fmuld	%f62,%f22,%f62		! (Y0_0) yy0 *= di0;
+	srl	%i3,23,%o3		! (Y0_2) exp0 >>= 23;
+	add	%l2,%o1,%g1		! (Y2_1) (char*)__mt_constlog4f + ind0
+	faddd	%f60,%f26,%f26		! (Y0_1) yy0 = dtmp0 + dtmp1;
+
+	fmuld	%f28,%f46,%f50		! (Y1_1) dtmp0 *= y0;
+	sub	%o3,127,%o3		! (Y0_2) exp0 -= 127;
+	cmp	%i3,%o5			! (Y0_2) ax0 ? 0x7f800000
+	fcmped	%fcc1,LTHRESHOLD,%f18	! (Y2_0) if (yy0 <= LTHRESH)
+
+	fmuld	%f58,%f48,%f48		! (Y0_1) dtmp0 *= y0;
+	add	%g5,CONST_0x8000,%i3	! (Y0_2) i0 = ax0 + 0x8000;
+	ldd	[%g1+8],%f58		! (Y2_1) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
+	fitod	%f6,%f54		! (Y2_1) dtmp0 = (double) i0;
+
+	sll	%o3,8,%o4		! (Y0_2) exp0 <<= 8;
+	and	%i3,%l6,%i3		! (Y0_2) i0 &= 0xffff0000;
+	st	%o4,[%fp+tmp3]		! (Y0_2) STORE exp0
+	fsubd	%f56,%f52,%f52		! (Y1_0) y0 = yy0 - dtmp0;
+
+	sub	%g5,%i3,%o4		! (Y0_2) i0 = ax0 - i0;
+	st	%o4,[%fp+tmp2]		! (Y0_2) STORE i0
+	bge,pn 	%icc,.update13		! (Y0_2) if( ax0 >= 0x7f800000 )
+	faddd	%f62,%f22,%f62		! (Y0_0) yy0 += di0;
+.cont13:
+	lda	[stridey+%i2]0x82,%g1	! (Y1_1) ay0 = *(unsigned*)py0
+	add	%i2,stridey,%o4		! py += stridey
+	cmp	%i1,MASK_0x007fffff	! (Y0_2) ux0 ? 0x800000
+	fmovdl	%fcc0,HTHRESHOLD,%f18	! (Y2_0) yy0 = HTHRESH;
+
+	fmuld	%f54,%f58,%f28		! (Y2_1) y0 =  dtmp0 * dtmp1;
+	lda	[stridey+%i2]0x82,%f2	! (Y1_1) ftmp0 = *py0;
+	ble,pn 	%icc,.update14		! (Y0_2) if(ux0 < 0x800000)
+	faddd	%f50,KA1,%f54		! (Y1_1) dtmp0 += KA1;
+.cont14:
+	fmuld	KB2,%f52,%f56		! (Y1_0) dtmp0 = KB2 * y0;
+	and	%g1,MASK_0x7fffffff,%g1	! (Y1_1) ay0 &= 0x7fffffff;
+	ld	[%fp+tmp4],%f1		! (Y1_1) LOAD exp0
+	faddd	%f26,%f48,%f58		! (Y0_1) yy0 += dtmp0;
+
+	ld	[%fp+tmp1],%g5		! (Y1_0) ind0 = (int) yy0;
+	cmp	%g1,%o5			! (Y1_1) ay0 ? 0x7f800000
+	bge,pn 	%icc,.update15		! (Y1_1) if(ay0 >= 0x7f800000)
+	fdtos	%f62,%f8		! (Y0_0) ftmp0 = (float)yy0;
+.cont15:
+	st	%f8,[%l7]		! (Y0_0) *pz0 = ftmp0;
+	fmovdg	%fcc1,LTHRESHOLD,%f18	! (Y2_0) yy0 = LTHRESH;
+
+	add	%l7,stridez,%l7		! pz += stridez
+	fmuld	KA3,%f28,%f62		! (Y2_1) dtmp0 = KA3 * y0;
+	and	%g5,255,%g5		! (Y1_0) ind0 &= 255;
+	fstod	%f2,%f22		! (Y1_1) dtmp0 = (double)ftmp0;
+
+	fmuld	%f24,%f58,%f58		! (Y0_1) yy0 *= dtmp0;
+	sll	%g5,3,%i2		! (Y1_0) ind0 <<= 3;
+	faddd	%f56,KB1,%f60		! (Y1_0) dtmp0 += KB1;
+
+	fpackfix	%f20,%f20	! (Y1_0) dtmp1 = vis_fpackfix(dtmp1);
+	fitod	%f1,%f48		! (Y1_1) dtmp1 = (double) exp0;
+	ldd	[%l0+%i2],%f56		! (Y1_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
+
+	fmuld	%f54,%f46,%f54		! (Y1_1) dtmp0 *= y0;
+	fdtoi	%f18,%f2		! (Y2_0) ind0 = (int) yy0;
+	st	%f2,[%fp+tmp1]		! (Y2_0) STORE ind0
+
+	faddd	%f62,KA2,%f26		! (Y2_1) dtmp0 += KA2;
+
+	fmuld	%f60,%f52,%f62		! (Y1_0) yy0 = dtmp0 * y0;
+	add	%o2,stridex,%o2		! px += stridex
+	ldd	[%l2+%o0],%f60		! (Y1_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
+	fcmped	%fcc0,HTHRESHOLD,%f58	! (Y0_1) if (yy0 >= HTHRESH)
+
+	fpadd32	%f20,%f56,%f52		! (Y1_0) di0 = vis_fpadd32(di0,dtmp1);
+	sra	%i3,12,%o0		! (Y0_2) ind0 = i0 >> 12;
+	lda	[%o2]0x82,%o3		! (Y1_2) ax0 = *px;
+
+	faddd	%f54,KA0,%f56		! (Y1_1) dtmp0 += KA0;
+	and	%o0,-8,%g5		! (Y0_2) ind0 &= -8;
+	ld	[%fp+tmp2],%f14		! (Y0_2) dtmp0 = (double) i0;
+
+	fitod	%f2,%f54		! (Y2_0) dtmp0 = (double)ind0;
+	and	%o3,MASK_0x7fffffff,%i3	! (Y1_2) exp0 = ax0 & 0x7fffffff;
+	and	%o3,MASK_0x007fffff,%o0	! (Y1_2) ax0 &= 0x007fffff;
+
+	fmuld	%f62,%f52,%f62		! (Y1_0) yy0 *= di0;
+	cmp	%i3,%o5			! (Y1_2) ax0 ? 0x7f800000
+	add	%l2,%g5,%g1		! (Y0_2) (char*)__mt_constlog4f + ind0
+	faddd	%f60,%f48,%f12		! (Y1_1) yy0 = dtmp0 + dtmp1;
+
+	fmuld	%f26,%f28,%f50		! (Y2_1) dtmp0 *= y0;
+	srl	%i3,23,%i3		! (Y1_2) exp0 >>= 23;
+	add	%o0,CONST_0x8000,%i1	! (Y1_2) i0 = ax0 + 0x8000;
+	fcmped	%fcc1,LTHRESHOLD,%f58	! (Y0_1) if (yy0 <= LTHRESH)
+
+	fmuld	%f56,%f46,%f46		! (Y1_1) dtmp0 *= y0;
+	ldd	[%g1+8],%f48		! (Y0_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
+	sub	%i3,127,%i3		! (Y1_2) exp0 -= 127;
+	fitod	%f14,%f60		! (Y0_2) dtmp0 = (double) i0;
+
+	sll	%i3,8,%i2		! (Y1_2) exp0 <<= 8;
+	and	%i1,%l6,%i1		! (Y1_2) i0 &= 0xffff0000;
+	st	%i2,[%fp+tmp4]		! (Y1_2) STORE exp0
+	fsubd	%f18,%f54,%f26		! (Y2_0) y0 = yy0 - dtmp0;
+
+	sub	%o0,%i1,%o0		! (Y1_2) i0 = ax0 - i0;
+	st	%o0,[%fp+tmp5]		! (Y1_2) STORE i0
+	bge,pn 	%icc,.update16		! (Y1_2) if(ax0 >= 0x7f800000)
+	faddd	%f62,%f52,%f54		! (Y1_0) yy0 += di0;
+.cont16:
+	lda	[stridey+%o4]0x82,%i3 	! Y(2_1) ay0 = *py0
+	cmp	%o3,MASK_0x007fffff	! (Y1_2) ux0 ? 0x800000
+	add	%o4,stridey,%i2		! py += stridey;
+	fmovdl	%fcc0,HTHRESHOLD,%f58	! (Y0_1) yy0 = HTHRESH;
+
+	fmuld	%f60,%f48,%f48		! (Y0_2) y0 =  dtmp0 * dtmp1;
+	lda	[stridey+%o4]0x82,%f16	! (Y2_1) ftmp0 = *py0;
+	ble,pn 	%icc,.update17		! (Y1_2) if(ux0 < 0x800000)
+	faddd	%f50,KA1,%f52		! (Y2_1) dtmp0 += KA1;
+.cont17:
+	fmuld	KB2,%f26,%f4		! (Y2_0) dtmp0 = KB2 * y0;
+	and	%i3,MASK_0x7fffffff,%i3	! (Y2_1) ay0 &= 0x7fffffff
+	ld	[%fp+tmp6],%f17		! (Y2_1) dtmp1 = (double) exp0;
+	faddd	%f12,%f46,%f60		! (Y1_1) yy0 += dtmp0;
+
+	ld	[%fp+tmp1],%o0
+	cmp	%i3,%o5			! (Y2_1) ay0 ? 0x7f800000
+	bge,pn 	%icc,.update18		! (Y2_1) if(ay0 >= 0x7f800000)
+	fdtos	%f54,%f15		! (Y1_0) ftmp0 = (float)yy0;
+.cont18:
+	st	%f15,[%l7]		! (Y1_0) *pz0 = ftmp0;
+	add	%l7,stridez,%o4		! pz += stridez
+	fmovdg	%fcc1,LTHRESHOLD,%f58	! (Y0_1) yy0 = LTHRESH;
+
+	fmuld	KA3,%f48,%f62		! (Y0_2) dtmp0 = KA3 * y0;
+	and	%o0,255,%o0		! (Y2_0) ind0 &= 255;
+	fstod	%f16,%f54		! (Y2_1) dtmp0 = (double)ftmp0;
+
+	fmuld	%f22,%f60,%f56		! (Y1_1) yy0 *= dtmp0;
+	sll	%o0,3,%l7		! (Y2_0) ind0 <<= 3;
+	faddd	%f4,KB1,%f60		! (Y2_0) dtmp0 += KB1;
+
+	fpackfix	%f2,%f2		! (Y2_0) dtmp1 = vis_fpackfix(dtmp1);
+	fitod	%f17,%f24		! (Y2_1) dtmp1 = (double) exp0;
+	ldd	[%l0+%l7],%f4		! (Y2_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
+
+	fmuld	%f52,%f28,%f52		! (Y2_1) dtmp0 *= y0;
+	fdtoi	%f58,%f10		! (Y0_1) ind0 = (int) yy0;
+
+	st	%f10,[%fp+tmp0]		! (Y0_1) STORE ind0
+	faddd	%f62,KA2,%f22		! (Y0_2) dtmp0 += KA2;
+
+	fmuld	%f60,%f26,%f62		! (Y2_0) yy0 = dtmp0 * y0;
+	fcmped	%fcc0,HTHRESHOLD,%f56	! (Y1_1) if (yy0 >= HTHRESH)
+	ldd	[%l2+%o1],%f60		! (Y2_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
+
+	sra	%i1,12,%o1		! (Y1_2) ind0 = i0 >> 12;
+	add	%o2,stridex,%i3		! px += stridex
+	lda	[stridex+%o2]0x82,%g1	! (Y2_2) ax0 = *px;
+	fpadd32	%f2,%f4,%f46		! (Y2_0) di0 = vis_fpadd32(di0,dtmp1);
+
+	and	%o1,-8,%o0		! (Y1_2) ind0 &= -8;
+	add	%i2,stridey,%i2		! py += stridey
+	ld	[%fp+tmp5],%f12		! (Y1_2) LOAD i0
+	faddd	%f52,KA0,%f4		! (Y2_1) dtmp0 += KA0;
+
+	and	%g1,MASK_0x7fffffff,%i1	! (Y2_2) exp0 = ax0 & 0x7fffffff;
+	and	%g1,MASK_0x007fffff,%o2	! (Y2_2) ax0 &= 0x007fffff;
+	lda	[%i2]0x82,%f0		! (Y0_2) ftmp0 = *py0;
+	fitod	%f10,%f52		! (Y0_1) dtmp0 = (double)ind0;
+
+	fmuld	%f62,%f46,%f62		! (Y2_0) yy0 *= di0;
+	srl	%i1,23,%o3		! (Y2_2) exp0 >>= 23;
+	cmp	%i1,%o5			! (Y2_2) ax0 ? 0x7f800000
+	faddd	%f60,%f24,%f18		! (Y2_1) yy0 = dtmp0 + dtmp1;
+
+	fmuld	%f22,%f48,%f26		! (Y0_2) dtmp0 *= y0;
+	add	%l2,%o0,%i1		! (Y1_2) (char*)__mt_constlog4f + ind0
+	sub	%o3,127,%l7		! (Y2_2) exp0 -= 127;
+	fcmped	%fcc1,LTHRESHOLD,%f56	! (Y1_1) if (yy0 <= LTHRESH)
+
+	fmuld	%f4,%f28,%f24		! (Y2_1) dtmp0 *= y0;
+	add	%o2,CONST_0x8000,%o1	! (Y2_2) i0 = ax0 + 0x8000;
+	ldd	[%i1+8],%f50		! (Y1_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
+	fitod	%f12,%f28		! (Y1_2) dtmp0 = (double) i0;
+
+	sll	%l7,8,%l7		! (Y2_2) exp0 <<= 8;
+	and	%o1,%l6,%o1		! (Y2_2) i0 &= 0xffff0000;
+	st	%l7,[%fp+tmp6]		! (Y2_2) STORE exp0
+	fsubd	%f58,%f52,%f60		! (Y0_1) y0 = yy0 - dtmp0;
+
+	sub	%o2,%o1,%i1		! (Y2_2) i0 = ax0 - i0;
+	st	%i1,[%fp+tmp2]		! (Y2_2) STORE i0
+	bge,pn	%icc,.update19		! (Y2_2) if(ax0 >= 0x7f800000)
+	faddd	%f62,%f46,%f22		! (Y2_0) yy0 += di0;
+.cont19:
+	lda	[%i2]0x82,%o2		! (Y0_2) ay0 = *(int*)py0;
+	cmp	%g1,MASK_0x007fffff	! (Y2_2) ux0 ? 0x800000
+	fmovdl	%fcc0,HTHRESHOLD,%f56	! (Y1_1) yy0 = HTHRESH;
+
+	fmuld	%f28,%f50,%f46		! (Y1_2) y0 =  dtmp0 * dtmp1;
+	ble,pn	%icc,.update20		! (Y2_2) if(ux0 < 0x800000)
+	faddd	%f26,KA1,%f50		! (Y0_2) dtmp0 += KA1;
+.cont20:
+	fmuld	KB2,%f60,%f62		! (Y0_1) dtmp0 = KB2 * y0;
+	and	%o2,MASK_0x7fffffff,%o2	! (Y0_2) ay0 &= 0x7fffffff
+	ld	[%fp+tmp3],%f4		! (Y0_2) dtmp1 = (double) exp0;
+	faddd	%f18,%f24,%f52		! (Y2_1) yy0 += dtmp0;
+
+	ld	[%fp+tmp0],%g1		! (Y0_1) LAOD ind0
+	cmp	%o2,%o5			! (Y0_2) ay0 ? 0x7f800000
+	bge,pn	%icc,.update21		! (Y0_2) if( ay0 >= 0x7f800000)
+	fdtos	%f22,%f12		! (Y2_0) ftmp0 = (float)yy0;
+.cont21:
+	st	%f12,[%o4]		! (Y2_0) *pz0 = ftmp0;
+	cmp	counter,6		! counter
+	bge,pt	%icc,.main_loop
+	fstod	%f0,%f24		! (Y0_2) dtmp0 = (double)ftmp0;
+
+.tail:
+	subcc	counter,1,counter
+	bneg,pn	%icc,.begin
+	add	%o4,stridez,%i5
+
+	fmuld	KA3,%f46,%f28		! (Y1_1) dtmp0 = KA3 * y0;
+	and	%g1,255,%o2		! (Y0_0) ind0 &= 255;
+	fmovdg	%fcc1,LTHRESHOLD,%f56	! (Y1_0) yy0 = LTHRESH;
+
+	fmuld	%f54,%f52,%f18		! (Y2_0) yy0 *= dtmp0;
+	sll	%o2,3,%i1		! (Y0_0) ind0 <<= 3;
+	add	%o4,stridez,%l7    	! pz += stridez
+	faddd	%f62,KB1,%f62		! (Y0_0) dtmp0 += KB1;
+
+	fpackfix	%f10,%f10	! (Y0_0) dtmp1 = vis_fpackfix(dtmp1);
+	fitod	%f4,%f26		! (Y0_1) dtmp1 = (double) exp0;
+	ldd	[%l0+%i1],%f58		! (Y0_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
+
+	fmuld	%f50,%f48,%f50		! (Y0_1) dtmp0 *= y0;
+	fdtoi	%f56,%f20		! (Y1_0) ind0 = (int) yy0;
+	st	%f20,[%fp+tmp1]		! (Y1_0) STORE ind0
+
+	faddd	%f28,KA2,%f28		! (Y1_1) dtmp0 += KA2;
+
+	fmuld	%f62,%f60,%f62		! (Y0_0) yy0 = dtmp0 * y0;
+	ldd	[%l2+%g5],%f60		! (Y0_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
+	fcmped	%fcc0,HTHRESHOLD,%f18	! (Y2_0) if (yy0 >= HTHRESH)
+
+	fpadd32	%f10,%f58,%f22		! (Y0_0) di0 = vis_fpadd32(di0,dtmp1);
+
+	faddd	%f50,KA0,%f58		! (Y0_1) dtmp0 += KA0;
+
+	fitod	%f20,%f52		! (Y1_0) dtmp0 = (double)ind0;
+
+	fmuld	%f62,%f22,%f62		! (Y0_0) yy0 *= di0;
+	faddd	%f60,%f26,%f26		! (Y0_1) yy0 = dtmp0 + dtmp1;
+
+	fmuld	%f28,%f46,%f50		! (Y1_1) dtmp0 *= y0;
+	fcmped	%fcc1,LTHRESHOLD,%f18	! (Y2_0) if (yy0 <= LTHRESH)
+
+	fmuld	%f58,%f48,%f48		! (Y0_1) dtmp0 *= y0;
+
+	fsubd	%f56,%f52,%f52		! (Y1_0) y0 = yy0 - dtmp0;
+
+	faddd	%f62,%f22,%f62		! (Y0_0) yy0 += di0;
+
+	lda	[stridey+%i2]0x82,%g1	! (Y1_1) ay0 = *(unsigned*)py0
+	add	%i2,stridey,%o4		! py += stridey
+	fmovdl	%fcc0,HTHRESHOLD,%f18	! (Y2_0) yy0 = HTHRESH;
+
+	lda	[stridey+%i2]0x82,%f2	! (Y1_1) ftmp0 = *py0;
+	faddd	%f50,KA1,%f54		! (Y1_1) dtmp0 += KA1;
+
+	fmuld	KB2,%f52,%f56		! (Y1_0) dtmp0 = KB2 * y0;
+	and	%g1,MASK_0x7fffffff,%g1	! (Y1_1) ay0 &= 0x7fffffff;
+	ld	[%fp+tmp4],%f1		! (Y1_1) LOAD exp0
+	faddd	%f26,%f48,%f58		! (Y0_1) yy0 += dtmp0;
+
+	ld	[%fp+tmp1],%g5		! (Y1_0) ind0 = (int) yy0;
+	cmp	%g1,%o5			! (Y1_1) ay0 ? 0x7f800000
+	bge,pn 	%icc,.update22		! (Y1_1) if(ay0 >= 0x7f800000)
+	fdtos	%f62,%f8		! (Y0_0) ftmp0 = (float)yy0;
+.cont22:
+	st	%f8,[%l7]		! (Y0_0) *pz0 = ftmp0;
+	fmovdg	%fcc1,LTHRESHOLD,%f18	! (Y2_0) yy0 = LTHRESH;
+
+	subcc	counter,1,counter
+	bneg,pn %icc,.begin
+	add	%l7,stridez,%i5
+
+	add	%l7,stridez,%l7		! pz += stridez
+	and	%g5,255,%g5		! (Y1_0) ind0 &= 255;
+	fstod	%f2,%f22		! (Y1_1) dtmp0 = (double)ftmp0;
+
+	fmuld	%f24,%f58,%f58		! (Y0_1) yy0 *= dtmp0;
+	sll	%g5,3,%i2		! (Y1_0) ind0 <<= 3;
+	faddd	%f56,KB1,%f60		! (Y1_0) dtmp0 += KB1;
+
+	fpackfix	%f20,%f20	! (Y1_0) dtmp1 = vis_fpackfix(dtmp1);
+	fitod	%f1,%f48		! (Y1_1) dtmp1 = (double) exp0;
+	ldd	[%l0+%i2],%f56		! (Y1_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
+
+	fmuld	%f54,%f46,%f54		! (Y1_1) dtmp0 *= y0;
+	fdtoi	%f18,%f2		! (Y2_0) ind0 = (int) yy0;
+	st	%f2,[%fp+tmp1]		! (Y2_0) STORE ind0
+
+
+	fmuld	%f60,%f52,%f62		! (Y1_0) yy0 = dtmp0 * y0;
+	ldd	[%l2+%o0],%f60		! (Y1_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
+	fcmped	%fcc0,HTHRESHOLD,%f58	! (Y0_1) if (yy0 >= HTHRESH)
+
+	fpadd32	%f20,%f56,%f52		! (Y1_0) di0 = vis_fpadd32(di0,dtmp1);
+
+	faddd	%f54,KA0,%f56		! (Y1_1) dtmp0 += KA0;
+
+	fitod	%f2,%f54		! (Y2_0) dtmp0 = (double)ind0;
+
+	fmuld	%f62,%f52,%f62		! (Y1_0) yy0 *= di0;
+	faddd	%f60,%f48,%f12		! (Y1_1) yy0 = dtmp0 + dtmp1;
+
+	fcmped	%fcc1,LTHRESHOLD,%f58	! (Y0_1) if (yy0 <= LTHRESH)
+
+	fmuld	%f56,%f46,%f46		! (Y1_1) dtmp0 *= y0;
+
+	fsubd	%f18,%f54,%f26		! (Y2_0) y0 = yy0 - dtmp0;
+
+	faddd	%f62,%f52,%f54		! (Y1_0) yy0 += di0;
+
+	fmovdl	%fcc0,HTHRESHOLD,%f58	! (Y0_1) yy0 = HTHRESH;
+
+
+	fmuld	KB2,%f26,%f4		! (Y2_0) dtmp0 = KB2 * y0;
+	faddd	%f12,%f46,%f60		! (Y1_1) yy0 += dtmp0;
+
+	ld	[%fp+tmp1],%o0
+	fdtos	%f54,%f15		! (Y1_0) ftmp0 = (float)yy0;
+
+	st	%f15,[%l7]		! (Y1_0) *pz0 = ftmp0;
+	add	%l7,stridez,%o4		! pz += stridez
+	fmovdg	%fcc1,LTHRESHOLD,%f58	! (Y0_1) yy0 = LTHRESH;
+
+	subcc	counter,1,counter
+	bneg,pn %icc,.begin
+	or	%g0,%o4,%i5
+
+	and	%o0,255,%o0		! (Y2_0) ind0 &= 255;
+
+	fmuld	%f22,%f60,%f56		! (Y1_1) yy0 *= dtmp0;
+	sll	%o0,3,%l7		! (Y2_0) ind0 <<= 3;
+	faddd	%f4,KB1,%f60		! (Y2_0) dtmp0 += KB1;
+
+	fpackfix	%f2,%f2		! (Y2_0) dtmp1 = vis_fpackfix(dtmp1);
+	ldd	[%l0+%l7],%f4		! (Y2_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
+
+	fdtoi	%f58,%f10		! (Y0_1) ind0 = (int) yy0;
+
+	st	%f10,[%fp+tmp0]		! (Y0_1) STORE ind0
+
+	fmuld	%f60,%f26,%f62		! (Y2_0) yy0 = dtmp0 * y0;
+	fcmped	%fcc0,HTHRESHOLD,%f56	! (Y1_1) if (yy0 >= HTHRESH)
+
+	fpadd32	%f2,%f4,%f46		! (Y2_0) di0 = vis_fpadd32(di0,dtmp1);
+
+	add	%i2,stridey,%i2		! py += stridey
+
+	fitod	%f10,%f52		! (Y0_1) dtmp0 = (double)ind0;
+
+	fmuld	%f62,%f46,%f62		! (Y2_0) yy0 *= di0;
+
+	fcmped	%fcc1,LTHRESHOLD,%f56	! (Y1_1) if (yy0 <= LTHRESH)
+
+
+	fsubd	%f58,%f52,%f60		! (Y0_1) y0 = yy0 - dtmp0;
+
+	faddd	%f62,%f46,%f22		! (Y2_0) yy0 += di0;
+
+	fmovdl	%fcc0,HTHRESHOLD,%f56	! (Y1_1) yy0 = HTHRESH;
+
+	fmuld	KB2,%f60,%f62		! (Y0_1) dtmp0 = KB2 * y0;
+
+	ld	[%fp+tmp0],%g1		! (Y0_1) LAOD ind0
+	fdtos	%f22,%f12		! (Y2_0) ftmp0 = (float)yy0;
+
+	st	%f12,[%o4]		! (Y2_0) *pz0 = ftmp0;
+
+	subcc	counter,1,counter
+	bneg,pn %icc,.begin
+	add	%o4,stridez,%i5
+
+	and	%g1,255,%o2		! (Y0_0) ind0 &= 255;
+	fmovdg	%fcc1,LTHRESHOLD,%f56	! (Y1_0) yy0 = LTHRESH;
+
+	sll	%o2,3,%i1		! (Y0_0) ind0 <<= 3;
+	add	%o4,stridez,%l7    	! pz += stridez
+	faddd	%f62,KB1,%f62		! (Y0_0) dtmp0 += KB1;
+
+	fpackfix	%f10,%f10	! (Y0_0) dtmp1 = vis_fpackfix(dtmp1);
+	ldd	[%l0+%i1],%f58		! (Y0_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
+
+	fdtoi	%f56,%f20		! (Y1_0) ind0 = (int) yy0;
+	st	%f20,[%fp+tmp1]		! (Y1_0) STORE ind0
+
+	fmuld	%f62,%f60,%f62		! (Y0_0) yy0 = dtmp0 * y0;
+
+	fpadd32	%f10,%f58,%f22		! (Y0_0) di0 = vis_fpadd32(di0,dtmp1);
+
+	fitod	%f20,%f52		! (Y1_0) dtmp0 = (double)ind0;
+
+	fmuld	%f62,%f22,%f62		! (Y0_0) yy0 *= di0;
+
+	fsubd	%f56,%f52,%f52		! (Y1_0) y0 = yy0 - dtmp0;
+
+	faddd	%f62,%f22,%f62		! (Y0_0) yy0 += di0;
+
+	fmuld	KB2,%f52,%f56		! (Y1_0) dtmp0 = KB2 * y0;
+
+	ld	[%fp+tmp1],%g5		! (Y1_0) ind0 = (int) yy0;
+	fdtos	%f62,%f8		! (Y0_0) ftmp0 = (float)yy0;
+	st	%f8,[%l7]		! (Y0_0) *pz0 = ftmp0;
+
+	subcc	counter,1,counter
+	bneg	.begin
+	add	%l7,stridez,%i5
+
+	add	%l7,stridez,%l7		! pz += stridez
+	and	%g5,255,%g5		! (Y1_0) ind0 &= 255;
+
+	sll	%g5,3,%i2		! (Y1_0) ind0 <<= 3;
+	faddd	%f56,KB1,%f60		! (Y1_0) dtmp0 += KB1;
+
+	fpackfix	%f20,%f20	! (Y1_0) dtmp1 = vis_fpackfix(dtmp1);
+	ldd	[%l0+%i2],%f56		! (Y1_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
+
+	fmuld	%f60,%f52,%f62		! (Y1_0) yy0 = dtmp0 * y0;
+
+	fpadd32	%f20,%f56,%f52		! (Y1_0) di0 = vis_fpadd32(di0,dtmp1);
+
+	fmuld	%f62,%f52,%f62		! (Y1_0) yy0 *= di0;
+
+	faddd	%f62,%f52,%f54		! (Y1_0) yy0 += di0;
+
+	fdtos	%f54,%f15		! (Y1_0) ftmp0 = (float)yy0;
+
+	st	%f15,[%l7]		! (Y1_0) *pz0 = ftmp0;
+	ba	.begin
+	add	%l7,stridez,%i5		! pz += stridez
+
+.exit:
+	ret
+	restore
+
+	.align	16
+.specs_exit:
+	add	%i1,stridex,%o2
+	add	%i3,stridey,%i2
+	st	%f4,[%i5]
+
+	sub	counter,1,counter
+	ba	.begin1
+	add	%i5,stridez,%i5
+
+.spec1:
+	ld	[%l0+2048+64],%f0	! LOAD 1.0f
+	or	%g0,%i1,%o1
+	or	%g0,%i3,%o3
+
+	ld	[%o2],%f4		! *px
+	or	%g0,%o2,%i1
+	or	%g0,%i2,%i3
+
+	ld	[%i3],%f6		! *py
+	or	%g0,%l7,%o2
+	fsubs	%f0,%f0,%f5		! 0.0f
+
+	sethi	%hi(0x7f800000),%l6
+	cmp	%o4,0			! ay ? 0
+	be,a,pn	%icc,.specs_exit	! if(ay == 0)
+	fmovs	%f0,%f4			! return 1.0f
+
+	cmp	%o3,%l6			! ax0 ? 0x7f800000
+	bgu,a	%icc,.specs_exit	! ax0 > 0x7f800000
+	fmuls	%f4,%f6,%f4		! return *px * *py; /* |X| or |Y| = Nan */
+
+	cmp	%o4,%l6			! ay ? 0x7f800000
+	bgu,a	.specs_exit		! ay > 0x7f800000
+	fmuls	%f4,%f6,%f4		! return *px * *py; /* |X| or |Y| = Nan */
+
+	sethi	%hi(0x3f800000),%o5
+	bne,a	%icc,1f			! if (ay != 0x7f800000) { /* |Y| = Inf */
+	srl	%o1,31,%o1		! sx = ux >> 31
+
+	cmp	%o3,%o5			! ax0 ? 0x3f800000
+	be,a	.specs_exit		! if (ax0 == 0x3f800000)
+	fmuls	%f6,%f5,%f4		! return *py * 0.0f; /* +-1 ** +-Inf = NaN */
+
+	sub	%o3,%o5,%o3		! ax0 - 0x3f800000
+	srl	%o2,31,%o2		! uy >> 31
+
+	srlx	%o3,63,%o3		! (ax0 - 0x3f800000) << 63
+
+	cmp	%o3,%o2			! ((ax0 - 0x3f800000) << 63) ? (uy >> 31)
+	bne,a	.specs_exit
+	fzeros	%f4			! return 0.f;
+
+	ba	.specs_exit
+	fabss	%f6,%f4			! return fabss(*py)
+1:
+	cmp	%o1,0			! sx ? 0
+	be,pn	%icc,.spec1_exit	! if (sx == 0)
+	or	%g0,%g0,%o5		! yisint0 = 0;
+
+	srl	%o4,23,%l7		! exp = ay >> 23;
+	cmp	%l7,0x97		! exp ? 0x97
+	bge,a,pn %icc,.spec1_exit	! if (exp >= 0x97) /* |Y| >= 2^24  */
+	add	%g0,2,%o5		! yisint = 2;
+
+	cmp	%l7,0x7f		! exp ? 0x7f
+	bl,pn	%icc,.spec1_exit	! if (exp < 0x7f)
+	sub	%g0,%l7,%l7		! exp = -exp;
+
+	add	%l7,(0x7f + 23),%l7	! exp += (0x07f + 23);
+	srl	%o4,%l7,%l6		! i0 = ay >> exp
+	sll	%l6,%l7,%l7		! i0 << exp
+
+	cmp	%l7,%o4			! (i0 << exp) ? ay
+	bne,pn	%icc,.spec1_exit	! if((i0 << exp) != ay)
+	and	%l6,1,%l6		! i0 &= 1
+
+	sub	%g0,%l6,%l6		! i0 = -i0;
+	add	%l6,2,%o5		! yisint0 = 2 + i0;
+
+.spec1_exit:
+	srl	%o2,31,%o2		! uy >> 31
+	cmp	%o2,0			! (uy >> 31) ? 0
+	movne	%icc,%g0,%o3		! if (uy >> 31) ax0 = 0;
+
+	sll	%o5,31,%o5		! yisint0 <<= 31;
+	add	%o5,%o3,%o5		! ax0 += yisint0;
+
+	add	%i1,stridex,%o2		! px += stridex;
+	add	%i3,stridey,%i2		! py += stridey;
+	st	%o5,[%i5]		! return *(float*)&ax0;
+
+	sub	counter,1,counter	! counter--;
+	ba	.begin1
+	add	%i5,stridez,%i5		! pz += stridez;
+
+.spec2:
+	or	%g0,%i1,%o1
+	or	%g0,%i3,%o3
+	ld	[%l0+2048+64],%f0	! LOAD 1.0f
+	or	%g0,%o2,%i1
+	or	%g0,%i2,%i3
+
+	or	%g0,%l7,%o2
+	cmp	%o4,0			! ay ? 0
+	be,a,pn	%icc,.specs_exit	! if(ay == 0)
+	fmovs	%f0,%f4			! return 1.0f
+
+	srl	%o3,23,%l7		! exp0 = (ax0 >> 23);
+	sub	%l7,127,%l7		! exp = exp0 = exp0 - 127;
+
+	or	%g0,%g0,%o5		! yisint = 0;
+	cmp	%o3,MASK_0x007fffff	! (int)ax0 ? 0x00800000
+	bg,pn	%icc,1f			! if ((int)ax0 >= 0x00800000)
+	nop
+
+					! X = denormal or negative
+	st	%o3,[%fp+tmp0]		! *((float*) &ax0) = (float) (int)ax0;
+	ld	[%fp+tmp0],%f4
+	fitos	%f4,%f4
+	st	%f4,[%fp+tmp0]
+	ld	[%fp+tmp0],%o3
+
+	srl	%o3,23,%l7		! exp = (ax0 >> 23)
+	sub	%l7,127+149,%l7		! exp -= (127+149)
+1:
+	cmp	%o1,0			! ux ? 0
+	bg,a	%icc,.spec_proc		! if((int)ux > 0)
+	sethi	%hi(0xffff0000),%l6
+
+	srl	%o4,23,%o0		! exp = ay >> 23;
+	cmp	%o0,0x97		! exp ? 0x97
+	bge,a,pn %icc,2f		! if (exp >= 0x97) /* |Y| >= 2^24  */
+	add	%g0,2,%o5		! yisint0 = 2;     /* Y - even */
+
+	cmp	%o0,0x7f		! exp ? 0x7f
+	bl,pn	%icc,2f			! if(exp < 0x7f)
+	nop
+
+	sub	%g0,%o0,%o0		! exp = -exp;
+	add	%o0,(0x7f + 23),%o0	! exp += (0x7f + 23)
+	srl	%o4,%o0,%l6		! i0 = ay >> ((0x7f + 23) - exp);
+	sll	%l6,%o0,%o0		! i0 << ((0x7f + 23) - exp
+	cmp	%o0,%o4			! (i0 << ((0x7f + 23) - exp)) ? ay
+	bne,pn	%icc,2f			! if(i0 << ((0x7f + 23) - exp)) != ay)
+	nop
+
+	and	%l6,1,%l6		! i0 &= 1;
+	sub	%g0,%l6,%l6		! i0 = -i0;
+	add	%l6,2,%o5		! yisint = i0 + 2;
+2:
+	cmp	%o3,0			! ax0 ? 0
+	bne,pn	%icc,4f			! if(ax0 != 0)
+	nop
+
+	srl	%o1,31,%o1		! sx = ux >> 31
+	srl	%o2,31,%o2		! uy >> 31
+
+	cmp	%o2,0			! (uy >> 31) ? 0
+	be,a,pn	%icc,3f			! if((uy >> 31) == 0)
+	fzeros	%f4			! return ZERO
+
+	fdivs	%f0,%f3,%f4		! fy = ONE/ZERO
+3:
+	andcc	%o1,%o5,%g0		! sx & yisint0
+	be,pn	%icc,.specs_exit	! if( (sx & yisint0) == 0 )
+	nop
+
+	ba	.specs_exit
+	fnegs	%f4,%f4			! fy = -fy;
+4:
+	cmp	%o5,0			! ysisint0 ? 0
+	be,a	%icc,.specs_exit	! if(yisint0 == 0)
+	fdivs	%f3,%f3,%f4		! return ZERO/ZERO
+
+	sethi	%hi(0xffff0000),%l6
+
+.spec_proc:
+	sll	%l7,8,%l7		! exp0 = exp0 << 8;
+	st	%l7,[%fp+tmp1]		! STORE exp0
+	and	%o3,MASK_0x007fffff,%g5	! ax0 &= 0x007fffff;
+	ld	[%i3],%f14		! ftmp0 = py[0]
+	sllx	%o5,63,%o5		! ysisint0 <<= 63;
+	add	%g5,CONST_0x8000,%o3	! i0 = ax0 + 0x8000;
+	stx	%o5,[%fp+tmp5]		! STORE yisint0
+	and	%o3,%l6,%l7		! i0 &= 0xffff0000;
+	sub	%g5,%l7,%o1		! i0 = ax0 - i0;
+	sra	%l7,12,%g5		! ind0 = i0 >> 12;
+	st	%o1,[%fp+tmp2]		! STORE i0
+	fstod	%f14,%f54		! dtmp1 = (double)ftmp0
+	and	%g5,-8,%g5		! ind0 &= -8;
+	add	%l2,%g5,%l7		! (char*)__mt_constlog4f + ind0
+	ld	[%fp+tmp1],%f18		! LOAD exp0
+	ld	[%fp+tmp2],%f16		! LOAD i0
+	ldd	[%l7+8],%f62		! dtmp2 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
+	ldd	[%l2+%g5],%f56		! dtmp3 = *(double *)((char*)__mt_constlog4f + ind0);
+	fitod	%f18,%f58		! dtmp4 = (double)exp0
+	fitod	%f16,%f60		! dtmp5 = (double)i0
+	fmuld	%f60,%f62,%f60		! y0 =  dtmp5 * dtmp2;
+	faddd	%f56,%f58,%f58		! yy0 = dtmp3 + dtmp4;
+	fmuld	KA3,%f60,%f52		! dtmp0 = KA3 * y0;
+	faddd	%f52,KA2,%f50		! dtmp0 += KA2;
+	fmuld	%f50,%f60,%f48		! dtmp0 *= y0;
+	faddd	%f48,KA1,%f46		! dtmp0 += KA1;
+	fmuld	%f46,%f60,%f62		! dtmp0 *= y0;
+	ldd	[%fp+tmp5],%f24		! LOAD yisint0
+	faddd	%f62,KA0,%f56		! dtmp0 += KA0;
+	fmuld	%f56,%f60,%f52		! dtmp0 *= y0;
+	faddd	%f58,%f52,%f50		! yy0 += dtmp1;
+	fmuld	%f54,%f50,%f52		! yy0 *= dtmp1;
+	fcmped	%fcc0,HTHRESHOLD,%f52	! if (yy0 >= HTHRESH)
+	fcmped	%fcc1,LTHRESHOLD,%f52	! yy0 = HTHRESH;
+	fmovdl	%fcc0,HTHRESHOLD,%f52	! if (yy0 <= LTHRESH)
+	fmovdg	%fcc1,LTHRESHOLD,%f52	! yy0 = LTHRESH;
+	fdtoi	%f52,%f20		! ind0 = (int) yy0;
+	st	%f20,[%fp+tmp3]		! STORE ind0
+	fitod	%f20,%f58		! dtmp0 = (double) ind0;
+	fpackfix	%f20,%f20	! dtmp1 = vis_fpackfix(dtmp1)
+	ld	[%fp+tmp3],%g1		! LOAD ind0
+	fsubd	%f52,%f58,%f46		! y0 = yy0 - dtmp0;
+	fpadd32	%f20,%f24,%f56		! dtmp1 += yisint0
+	and	%g1,255,%o4		! ind0 &= 255;
+	sll	%o4,3,%o3		! ind0 <<= 3;
+	ldd	[%l0+%o3],%f54		! di0 = *(double*)((char*)__mt_constexp2f + ind0);
+	fmuld	KB2,%f46,%f48		! dtmp0 = KB2 * y0;
+	fpadd32	%f56,%f54,%f56		! di0 = vis_fpadd32(di0,dtmp1);
+	faddd	%f48,KB1,%f62		! dtmp0 += KB1;
+	fmuld	%f62,%f46,%f60		! yy0 = dtmp0 * y0;
+	fmuld	%f60,%f56,%f52		! yy0 *= di0;
+	faddd	%f52,%f56,%f58		! yy0 += di0;
+	ba	.specs_exit
+	fdtos	%f58,%f4		! ftmp0 = (float)yy0;
+
+	.align	16
+.update0:
+	cmp	counter,1
+	ble	.cont0
+	nop
+
+	add	%i2,stridey,%o1
+	stx	%o2,[%fp+tmp_px]
+
+	stx	%o1,[%fp+tmp_py]
+	sub	counter,1,counter
+
+	st	counter,[%fp+tmp_counter]
+	ba	.cont0
+	or	%g0,1,counter
+
+	.align	16
+.update1:
+	cmp	counter,1
+	ble	.cont1
+	nop
+
+	add	%i2,stridey,%o1
+	stx	%o2,[%fp+tmp_px]
+
+	stx	%o1,[%fp+tmp_py]
+	sub	counter,1,counter
+
+	st	counter,[%fp+tmp_counter]
+	ba	.cont1
+	or	%g0,1,counter
+
+	.align	16
+.update2:
+	cmp	counter,2
+	ble	.cont2
+	nop
+
+	add	%i2,stridey,%o2
+	stx	%i3,[%fp+tmp_px]
+
+	add	%o2,stridey,%o2
+	stx	%o2,[%fp+tmp_py]
+
+	sub	counter,2,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont2
+	or	%g0,2,counter
+
+	.align	16
+.update3:
+	cmp	counter,2
+	ble	.cont3
+	nop
+
+	add	%i2,stridey,%o2
+	stx	%i3,[%fp+tmp_px]
+
+	add	%o2,stridey,%o2
+	stx	%o2,[%fp+tmp_py]
+
+	sub	counter,2,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont3
+	or	%g0,2,counter
+
+	.align	16
+.update4:
+	cmp	counter,3
+	ble	.cont4
+	nop
+
+	sll	stridey,1,%g5
+	add	%i2,stridey,%o3
+	stx	%o2,[%fp+tmp_px]
+
+	add	%o3,%g5,%o3
+	stx	%o3,[%fp+tmp_py]
+
+	sub	counter,3,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont4
+	or	%g0,3,counter
+
+	.align	16
+.update5:
+	cmp	counter,3
+	ble	.cont5
+	nop
+
+	sll	stridey,1,%g5
+	add	%i2,stridey,%o3
+	stx	%o2,[%fp+tmp_px]
+
+	add	%o3,%g5,%o3
+	stx	%o3,[%fp+tmp_py]
+
+	sub	counter,3,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont5
+	or	%g0,3,counter
+
+	.align	16
+.update6:
+	fzeros	%f2
+	cmp	counter,1
+	ble	.cont6
+	nop
+
+	ld	[%fp+tmp_counter],%g1
+
+	sub	%o2,stridex,%o3
+	stx	%o4,[%fp+tmp_py]
+
+	sub	%o3,stridex,%o3
+	add	%g1,counter,counter
+	stx	%o3,[%fp+tmp_px]
+
+	sub	counter,1,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont6
+	or	%g0,1,counter
+
+	.align	16
+.update7:
+	cmp	counter,4
+	ble	.cont7
+	nop
+
+	sll	stridey,1,%g1
+	add	%o4,stridey,%o0
+	stx	%o2,[%fp+tmp_px]
+
+	add	%o0,%g1,%o0
+	stx	%o0,[%fp+tmp_py]
+
+	sub	counter,4,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont7
+	or	%g0,4,counter
+
+	.align	16
+.update8:
+	cmp	counter,4
+	ble	.cont8
+	nop
+
+	sll	stridey,1,%g1
+	add	%o4,stridey,%o0
+	stx	%o2,[%fp+tmp_px]
+
+	add	%o0,%g1,%o0
+	stx	%o0,[%fp+tmp_py]
+
+	sub	counter,4,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont8
+	or	%g0,4,counter
+
+	.align	16
+.update9:
+	cmp	counter,2
+	ble	.cont9
+	fzeros	%f16
+
+	ld	[%fp+tmp_counter],%i3
+
+	sub	%o2,stridex,%g1
+	stx	%i2,[%fp+tmp_py]
+
+	sub	%g1,stridex,%g1
+	add	%i3,counter,counter
+	stx	%g1,[%fp+tmp_px]
+
+	sub	counter,2,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont9
+	or	%g0,2,counter
+
+	.align	16
+.update10:
+	cmp	counter,5
+	ble	.cont10
+	nop
+
+	add	%i2,stridey,%i1
+	stx	%i3,[%fp+tmp_px]
+
+	add	%i1,stridey,%i1
+	stx	%i1,[%fp+tmp_py]
+
+	sub	counter,5,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont10
+	or	%g0,5,counter
+
+	.align	16
+.update11:
+	cmp	counter,5
+	ble	.cont11
+	nop
+
+	add	%i2,stridey,%i1
+	stx	%i3,[%fp+tmp_px]
+
+	add	%i1,stridey,%i1
+	stx	%i1,[%fp+tmp_py]
+
+	sub	counter,5,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont11
+	or	%g0,5,counter
+
+	.align	16
+.update12:
+	fzeros	%f0
+	cmp	counter,3
+	ble	.cont12
+	nop
+
+	ld	[%fp+tmp_counter],%o2
+
+	sub	%i3,stridex,%i1
+	stx	%i2,[%fp+tmp_py]
+
+	sub	%i1,stridex,%i1
+	add	%o2,counter,counter
+	stx	%i1,[%fp+tmp_px]
+
+	sub	counter,3,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont12
+	or	%g0,3,counter
+
+	.align	16
+.update13:
+	cmp	counter,3
+	ble	.cont13
+	nop
+
+	sll	stridey,1,%g5
+	add	%i2,stridey,%o3
+	stx	%o2,[%fp+tmp_px]
+
+	add	%o3,%g5,%o3
+	stx	%o3,[%fp+tmp_py]
+
+	sub	counter,3,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont13
+	or	%g0,3,counter
+
+	.align	16
+.update14:
+	cmp	counter,3
+	ble	.cont14
+	nop
+
+	sll	stridey,1,%g5
+	add	%i2,stridey,%o3
+	stx	%o2,[%fp+tmp_px]
+
+	add	%o3,%g5,%o3
+	stx	%o3,[%fp+tmp_py]
+
+	sub	counter,3,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont14
+	or	%g0,3,counter
+
+	.align	16
+.update15:
+	cmp	counter,1
+	ble	.cont15
+	fzeros	%f2
+
+	ld	[%fp+tmp_counter],%g1
+
+	sub	%o2,stridex,%o3
+	stx	%o4,[%fp+tmp_py]
+
+	sub	%o3,stridex,%o3
+	add	%g1,counter,counter
+	stx	%o3,[%fp+tmp_px]
+
+	sub	counter,1,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont15
+	or	%g0,1,counter
+
+	.align	16
+.update16:
+	cmp	counter,4
+	ble	.cont16
+	nop
+
+	sll	stridey,1,%g1
+	add	%o4,stridey,%o0
+	stx	%o2,[%fp+tmp_px]
+
+	add	%o0,%g1,%o0
+	stx	%o0,[%fp+tmp_py]
+
+	sub	counter,4,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont16
+	or	%g0,4,counter
+
+	.align	16
+.update17:
+	cmp	counter,4
+	ble	.cont17
+	nop
+
+	sll	stridey,1,%g1
+	add	%o4,stridey,%o0
+	stx	%o2,[%fp+tmp_px]
+
+	add	%o0,%g1,%o0
+	stx	%o0,[%fp+tmp_py]
+
+	sub	counter,4,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont17
+	or	%g0,4,counter
+
+	.align	16
+.update18:
+	fzeros	%f16
+	cmp	counter,2
+	ble	.cont18
+	nop
+
+	ld	[%fp+tmp_counter],%i3
+
+	sub	%o2,stridex,%g1
+	stx	%i2,[%fp+tmp_py]
+
+	sub	%g1,stridex,%g1
+	add	%i3,counter,counter
+	stx	%g1,[%fp+tmp_px]
+
+	sub	counter,2,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont18
+	or	%g0,2,counter
+
+	.align	16
+.update19:
+	cmp	counter,5
+	ble	.cont19
+	nop
+
+	add	%i2,stridey,%i1
+	stx	%i3,[%fp+tmp_px]
+
+	add	%i1,stridey,%i1
+	stx	%i1,[%fp+tmp_py]
+
+	sub	counter,5,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont19
+	or	%g0,5,counter
+
+	.align	16
+.update20:
+	cmp	counter,5
+	ble	.cont20
+	nop
+
+	add	%i2,stridey,%i1
+	stx	%i3,[%fp+tmp_px]
+
+	add	%i1,stridey,%i1
+	stx	%i1,[%fp+tmp_py]
+
+	sub	counter,5,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont20
+	or	%g0,5,counter
+
+	.align	16
+.update21:
+	cmp	counter,3
+	ble	.cont21
+	fzeros	%f0
+
+	ld	[%fp+tmp_counter],%o2
+
+	sub	%i3,stridex,%i1
+	stx	%i2,[%fp+tmp_py]
+
+	sub	%i1,stridex,%i1
+	add	%o2,counter,counter
+	stx	%i1,[%fp+tmp_px]
+
+
+	sub	counter,3,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont21
+	or	%g0,3,counter
+
+	.align	16
+.update22:
+	cmp	counter,3
+	ble	.cont22
+	fzeros	%f2
+
+	ld	[%fp+tmp_counter],%g1
+
+	sub	%i3,stridex,%i2
+	stx	%i2,[%fp+tmp_px]
+
+	add	%g1,counter,counter
+	stx	%o4,[%fp+tmp_py]
+
+	sub	counter,3,counter
+	st	counter,[%fp+tmp_counter]
+	ba	.cont22
+	or	%g0,3,counter
+
+.stridex_zero:
+	ld	[%fp+tmp_counter],counter
+
+	stx	%i3,[%fp+tmp_py]
+
+	cmp	counter,0
+	ble,pn	%icc,.exit
+	lda	[%i1]0x82,%i1		! (Y0_2) ax0 = *px;
+
+	and	%i1,MASK_0x7fffffff,%i3	! (Y0_2) exp0 = ax0 & 0x7fffffff;
+	sub	%i3,%l6,%l6
+	and	%i1,MASK_0x007fffff,%g5	! (Y0_2) ax0 &= 0x007fffff;
+	srl	%i3,23,%o3		! (Y0_2) exp0 >>= 23;
+	srl	%l6,31,%l6
+	st	%l6,[%fp+tmp5]
+	add	%g5,CONST_0x8000,%i3	! (Y0_2) i0 = ax0 + 0x8000;
+	sethi	%hi(0xffff0000),%l6
+	sub	%o3,127,%o3		! (Y0_2) exp0 -= 127;
+	and	%i3,%l6,%i3		! (Y0_2) i0 &= 0xffff0000;
+	sll	%o3,8,%o4		! (Y0_2) exp0 <<= 8;
+	st	%o4,[%fp+tmp3]		! (Y0_2) STORE exp0
+	sra	%i3,12,%o0		! (Y0_2) ind0 = i0 >> 12;
+	sub	%g5,%i3,%o4		! (Y0_2) i0 = ax0 - i0;
+	st	%o4,[%fp+tmp2]		! (Y0_2) STORE i0
+	and	%o0,-8,%g5		! (Y0_2) ind0 &= -8;
+	ld	[%fp+tmp2],%f14		! (Y0_2) dtmp0 = (double) i0;
+	add	%l2,%g5,%g1		! (Y0_2) (char*)__mt_constlog4f + ind0
+	ldd	[%g1+8],%f48		! (Y0_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
+	fitod	%f14,%f60		! (Y0_2) dtmp0 = (double) i0;
+	fmuld	%f60,%f48,%f48		! (Y0_2) y0 =  dtmp0 * dtmp1;
+	fmuld	KA3,%f48,%f62		! (Y0_2) dtmp0 = KA3 * y0;
+	faddd	%f62,KA2,%f22		! (Y0_2) dtmp0 += KA2;
+	fmuld	%f22,%f48,%f26 		! (Y0_2) dtmp0 *= y0;
+	faddd	%f26,KA1,%f50		! (Y0_2) dtmp0 += KA1;
+	ld	[%fp+tmp3],%f4		! (Y0_2) dtmp1 = (double) exp0;
+	fitod	%f4,%f26		! (Y0_1) dtmp1 = (double) exp0;
+	fmuld	%f50,%f48,%f50		! (Y0_1) dtmp0 *= y0;
+	ldd	[%l2+%g5],%f60		! (Y0_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
+	faddd	%f50,KA0,%f58		! (Y0_1) dtmp0 += KA0;
+	faddd	%f60,%f26,%f26		! (Y0_1) yy0 = dtmp0 + dtmp1;
+	fmuld	%f58,%f48,%f48		! (Y0_1) dtmp0 *= y0;
+	sub	%l2,3200,%o4
+	sub	%l2,1152-600,%o3
+	faddd	%f26,%f48,%f46		! (Y0_1) yy0 += dtmp0;
+	or	%g0,%i5,%g1
+	sethi	%hi(0x7f800000),%o1
+
+.xbegin:
+	ld	[%fp+tmp_counter],counter
+	ldx	[%fp+tmp_py],%o5
+	st	%g0,[%fp+tmp_counter]
+.xbegin1:
+	subcc	counter,1,counter
+	bneg,pn	%icc,.exit
+	nop
+
+	lda	[%o5]0x82,%i5		! (Y0_0) ay = py[0];
+
+	lda	[%o5]0x82,%f5		! (Y0_0) ftmp0 = py[0];
+
+	and	%i5,MASK_0x7fffffff,%i3	! (Y0_0) ay &= 0x7fffffff
+
+	cmp	%i3,%o1
+	bge,pn	%icc,.xspec
+	nop
+
+	fstod	%f5,%f52		! (Y0_0) dtmp0 = (double)ftmp0;
+
+	fmuld	%f52,%f46,%f26		! (Y0_0) yy0 = dtmp0 * yy;
+	add	%o5,stridey,%o5		! py += stridey
+
+	lda	[%o5]0x82,%i5		! (Y1_0) ay = ((int*)py)[0];
+
+	lda	[%o5]0x82,%f7		! (Y1_0) ftmp0 = py[0];
+
+	and	%i5,MASK_0x7fffffff,%i5	! (Y1_0) ay &= 0x7fffffff
+	fcmped	%fcc0,HTHRESHOLD,%f26	! (Y0_0) if (yy0 >= HTHRESH)
+
+	cmp	%i5,%o1
+	bge,pn	%icc,.xupdate0
+	nop
+
+.xcont0:
+	fstod	%f7,%f48		! (Y1_0) dtmp0 = (double)ftmp0;
+
+	fcmped	%fcc1,LTHRESHOLD,%f26	! (Y0_1) if (yy0 <= LTHRESH)
+
+	add	%o5,stridey,%o5		! py += stridey
+	fmuld	%f48,%f46,%f28		! (Y1_1) yy0 = dtmp0 * yy;
+
+	lda	[%o5]0x82,%i3		! (Y0_0) ay = py[0];
+
+	lda	[%o5]0x82,%f5		! (Y0_0) ftmp0 = py[0];
+
+	and	%i3,MASK_0x7fffffff,%i3	! (Y0_0) ay &= 0x7fffffff
+	fmovdl	%fcc0,HTHRESHOLD,%f26	! (Y0_1) yy0 = HTHRESH;
+
+	cmp	%i3,%o1
+	bge,pn	%icc,.xupdate1
+	fcmped	%fcc2,HTHRESHOLD,%f28	! (Y1_1) if (yy0 >= HTHRESH)
+.xcont1:
+	fstod	%f5,%f52		! (Y0_0) dtmp0 = (double)ftmp0;
+
+	fmovdg	%fcc1,LTHRESHOLD,%f26	! (Y0_1) yy0 = LTHRESH;
+
+	fcmped	%fcc3,LTHRESHOLD,%f28	! (Y1_1) if (yy0 <= LTHRESH)
+
+	fmuld	%f52,%f46,%f22		! (Y0_0) yy0 = dtmp0 * yy;
+
+	fdtoi	%f26,%f0		! (Y0_1) ii0 = (int) yy0;
+
+	add	%o5,stridey,%o5		! py += stridey
+	st	%f0,[%fp+tmp1]		! (Y0_1) STORE ii0
+
+	lda	[%o5]0x82,%l7		! (Y1_0) ay = ((int*)py)[0];
+
+	lda	[%o5]0x82,%f7		! (Y1_0) ftmp0 = py[0];
+	fmovdl	%fcc2,HTHRESHOLD,%f28	! (Y1_1) yy0 = HTHRESH;
+
+	and	%l7,MASK_0x7fffffff,%l7	! (Y1_0) ay &= 0x7fffffff
+	fcmped	%fcc0,HTHRESHOLD,%f22	! (Y0_0) if (yy0 >= HTHRESH)
+
+	cmp	%l7,%o1
+	bge,pn	%icc,.xupdate2
+	nop
+.xcont2:
+	fstod	%f7,%f48		! (Y1_0) dtmp0 = (double)ftmp0;
+
+	fmovdg	%fcc3,LTHRESHOLD,%f28	! (Y1_2) yy0 = LTHRESH;
+
+	fcmped	%fcc1,LTHRESHOLD,%f22	! (Y0_1) if (yy0 <= LTHRESH)
+
+	fitod	%f0,%f52		! (Y0_2) dtmp0 = (double)ii0;
+
+	add	%o5,stridey,%o5		! py += stridey
+	fmuld	%f48,%f46,%f24		! (Y1_1) yy0 = dtmp0 * yy;
+
+	fdtoi	%f28,%f3		! (Y1_2) ii0 = (int) yy0;
+	lda	[%o5]0x82,%i3		! (Y0_0) ay = py[0];
+
+	st	%f3,[%fp+tmp0]		! (Y1_2) STORE ii0
+
+	fsubd	%f26,%f52,%f40		! (Y0_2) y0 = yy0 - dtmp0;
+	lda	[%o5]0x82,%f5		! (Y0_0) ftmp0 = py[0];
+
+	and	%i3,MASK_0x7fffffff,%i3	! (Y0_0) ay &= 0x7fffffff
+	fmovdl	%fcc0,HTHRESHOLD,%f22	! (Y0_1) yy0 = HTHRESH;
+
+	cmp	%i3,%o1
+	bge,pn	%icc,.xupdate3
+	fcmped	%fcc2,HTHRESHOLD,%f24	! (Y1_1) if (yy0 >= HTHRESH)
+.xcont3:
+	ld	[%fp+tmp1],%i2		! (Y0_2) LOAD ii0
+	fmuld	KB2,%f40,%f36		! (Y0_2) dtmp0 = KB2 * y0;
+	fstod	%f5,%f52		! (Y0_0) dtmp0 = (double)ftmp0;
+
+	fmovdg	%fcc1,LTHRESHOLD,%f22	! (Y0_1) yy0 = LTHRESH;
+
+	sra	%i2,6,%l6		! (Y0_2) i0 = ii0 >> 6;
+	and	%i2,255,%l7		! (Y0_2) ii0 &= 255;
+	fcmped	%fcc3,LTHRESHOLD,%f24	! (Y1_1) if (yy0 <= LTHRESH)
+
+	fitod	%f3,%f56		! (Y1_2) dtmp0 = (double)ii0;
+	sll	%l7,3,%o0		! (Y0_2) ii0 <<= 3;
+	and	%l6,-4,%g5		! (Y0_2) i0 &= -4;
+
+	faddd	%f36,KB1,%f60		! (Y0_2) dtmp0 += KB1;
+	fmuld	%f52,%f46,%f26		! (Y0_0) yy0 = dtmp0 * yy;
+	ld	[%g5+%o3],%f10		! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0]
+
+	fdtoi	%f22,%f0		! (Y0_1) ii0 = (int) yy0;
+	ldd	[%o4+%o0],%f62		! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
+
+	add	%o5,stridey,%o5		! py += stridey
+	st	%f0,[%fp+tmp1]		! (Y0_1) STORE ii0
+
+	fsubd	%f28,%f56,%f56		! (Y1_2) y0 = yy0 - dtmp0;
+	lda	[%o5]0x82,%i5		! (Y1_0) ay = ((int*)py)[0];
+
+	fmuld	%f60,%f40,%f60		! (Y0_2) yy0 = dtmp0 * y0;
+	fmovdl	%fcc2,HTHRESHOLD,%f24	! (Y1_1) yy0 = HTHRESH;
+	lda	[%o5]0x82,%f7		! (Y1_0) ftmp0 = py[0];
+
+	fmuld	%f10,%f62,%f62		! (Y0_2) di0 *= dtmp0;
+	ld	[%fp+tmp0],%g5		! (Y1_2) LOAD ii0
+	and	%i5,MASK_0x7fffffff,%i5	! (Y1_0) ay &= 0x7fffffff
+	fcmped	%fcc0,HTHRESHOLD,%f26	! (Y0_0) if (yy0 >= HTHRESH)
+
+	cmp	%i5,%o1
+	bge,pn	%icc,.xupdate4
+.xcont4:
+	fmuld	KB2,%f56,%f58		! (Y1_2) dtmp0 = KB2 * y0;
+	fstod	%f7,%f48		! (Y1_0) dtmp0 = (double)ftmp0;
+
+	fmovdg	%fcc3,LTHRESHOLD,%f24	! (Y1_2) yy0 = LTHRESH;
+	sra	%g5,6,%i0		! (Y1_3) i0 = ii0 >> 6;
+	and	%g5,255,%i1		! (Y1_3) ii0 &= 255;
+	fmuld	%f60,%f62,%f40		! (Y0_3) dtmp0 = yy0 * di0;
+
+	fcmped	%fcc1,LTHRESHOLD,%f26	! (Y0_1) if (yy0 <= LTHRESH)
+	sll	%i1,3,%i3		! (Y1_3) ii0 <<= 3;
+	and	%i0,-4,%i0		! (Y1_3) i0 &= -4;
+
+	fitod	%f0,%f52		! (Y0_2) dtmp0 = (double)ii0;
+	ld	[%i0+%o3],%f10		! (Y1_3) di0 = ((double*)((char*)(__mt_constexp2fb + 150) + i0))[0];
+
+	faddd	%f58,KB1,%f58		! (Y1_3) dtmp0 += KB1;
+	add	%o5,stridey,%o5		! py += stridey
+	ldd	[%o4+%i3],%f18		! (Y1_3) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
+	fmuld	%f48,%f46,%f28		! (Y1_1) yy0 = dtmp0 * yy;
+
+	fdtoi	%f24,%f3		! (Y1_2) ii0 = (int) yy0;
+	lda	[%o5]0x82,%i3		! (Y0_0) ay = py[0];
+
+	faddd	%f40,%f62,%f60		! (Y0_3) dtmp0 += di0;
+	st	%f3,[%fp+tmp0]		! (Y1_2) STORE ii0
+
+	fsubd	%f22,%f52,%f40		! (Y0_2) y0 = yy0 - dtmp0;
+	lda	[%o5]0x82,%f5		! (Y0_0) ftmp0 = py[0];
+
+	fmuld	%f58,%f56,%f56		! (Y1_3) yy0 = dtmp0 * y0;
+	and	%i3,MASK_0x7fffffff,%i3	! (Y0_0) ay &= 0x7fffffff
+	fmovdl	%fcc0,HTHRESHOLD,%f26	! (Y0_1) yy0 = HTHRESH;
+
+	fmuld	%f10,%f18,%f50		! (Y1_3) di0 *= dtmp0;
+	cmp	%i3,%o1
+	bge,pn	%icc,.xupdate5
+	fcmped	%fcc2,HTHRESHOLD,%f28	! (Y1_1) if (yy0 >= HTHRESH)
+.xcont5:
+	fdtos	%f60,%f1		! (Y0_3) ftmp0 = (float)dtmp0;
+	add	%g1,stridez,%i3		! pz += stridez
+	st	%f1,[%g1]		! (Y0_3) pz[0] = ftmp0;
+
+	subcc	counter,1,counter
+	bneg,pn	%icc,.xbegin
+	or	%g0,%i3,%g1
+
+	ld	[%fp+tmp1],%i2		! (Y0_2) LOAD ii0
+	fmuld	KB2,%f40,%f36		! (Y0_2) dtmp0 = KB2 * y0;
+	fstod	%f5,%f52		! (Y0_0) dtmp0 = (double)ftmp0;
+
+	fmovdg	%fcc1,LTHRESHOLD,%f26	! (Y0_1) yy0 = LTHRESH;
+
+	fmuld	%f56,%f50,%f58		! (Y1_3) dtmp0 = yy0 * di0;
+	sra	%i2,6,%l6		! (Y0_2) i0 = ii0 >> 6;
+	and	%i2,255,%l7		! (Y0_2) ii0 &= 255;
+	fcmped	%fcc3,LTHRESHOLD,%f28	! (Y1_1) if (yy0 <= LTHRESH)
+
+	fitod	%f3,%f56		! (Y1_2) dtmp0 = (double)ii0;
+	sll	%l7,3,%o0		! (Y0_2) ii0 <<= 3;
+	and	%l6,-4,%g5		! (Y0_2) i0 &= -4;
+
+	faddd	%f36,KB1,%f60		! (Y0_2) dtmp0 += KB1;
+	fmuld	%f52,%f46,%f22		! (Y0_0) yy0 = dtmp0 * yy;
+	ld	[%g5+%o3],%f10		! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0]
+
+	fdtoi	%f26,%f0		! (Y0_1) ii0 = (int) yy0;
+	ldd	[%o4+%o0],%f62		! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
+
+	faddd	%f58,%f50,%f58		! (Y1_3) dtmp0 += di0;
+	add	%o5,stridey,%o5		! py += stridey
+	st	%f0,[%fp+tmp1]		! (Y0_1) STORE ii0
+
+	fsubd	%f24,%f56,%f56		! (Y1_2) y0 = yy0 - dtmp0;
+	lda	[%o5]0x82,%l7		! (Y1_0) ay = ((int*)py)[0];
+
+	fmuld	%f60,%f40,%f60		! (Y0_2) yy0 = dtmp0 * y0;
+	add	%i3,stridez,%i5		! pz += stridez
+	lda	[%o5]0x82,%f7		! (Y1_0) ftmp0 = py[0];
+	fmovdl	%fcc2,HTHRESHOLD,%f28	! (Y1_1) yy0 = HTHRESH;
+
+	fmuld	%f10,%f62,%f62		! (Y0_2) di0 *= dtmp0;
+	and	%l7,MASK_0x7fffffff,%l7	! (Y1_0) ay &= 0x7fffffff
+	ld	[%fp+tmp0],%g5		! (Y1_2) LOAD ii0
+	fcmped	%fcc0,HTHRESHOLD,%f22	! (Y0_0) if (yy0 >= HTHRESH)
+
+	fdtos	%f58,%f9		! (Y1_3) ftmp0 = (float)dtmp0;
+	st	%f9,[%i3]		! (Y1_3) pz[0] = ftmp0;
+	cmp	%l7,%o1
+	bge,pn	%icc,.xupdate6
+
+.xcont6:
+	fmuld	KB2,%f56,%f58		! (Y1_2) dtmp0 = KB2 * y0;
+	fstod	%f7,%f48		! (Y1_0) dtmp0 = (double)ftmp0;
+
+	cmp	counter,8
+	bl,pn	%icc,.xtail
+	nop
+
+	ba	.xmain_loop
+	nop
+
+	.align	16
+.xmain_loop:
+	fmovdg	%fcc3,LTHRESHOLD,%f28	! (Y1_2) yy0 = LTHRESH;
+	sra	%g5,6,%i0		! (Y1_3) i0 = ii0 >> 6;
+	and	%g5,255,%i1		! (Y1_3) ii0 &= 255;
+	fmuld	%f60,%f62,%f40		! (Y0_3) dtmp0 = yy0 * di0;
+
+	fcmped	%fcc1,LTHRESHOLD,%f22	! (Y0_1) if (yy0 <= LTHRESH)
+	sll	%i1,3,%i3		! (Y1_3) ii0 <<= 3;
+	and	%i0,-4,%i0		! (Y1_3) i0 &= -4;
+
+	fitod	%f0,%f52		! (Y0_2) dtmp0 = (double)ii0;
+	sub	counter,4,counter
+	ld	[%i0+%o3],%f10		! (Y1_3) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0];
+
+	faddd	%f58,KB1,%f58		! (Y1_3) dtmp0 += KB1;
+	add	%o5,stridey,%o5		! py += stridey
+	ldd	[%o4+%i3],%f18		! (Y1_3) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
+	fmuld	%f48,%f46,%f24		! (Y1_1) yy0 = dtmp0 * yy;
+
+	fdtoi	%f28,%f3		! (Y1_2) ii0 = (int) yy0;
+	lda	[%o5]0x82,%i3		! (Y0_0) ay = py[0];
+
+	faddd	%f40,%f62,%f60		! (Y0_3) dtmp0 += di0;
+	st	%f3,[%fp+tmp0]		! (Y1_2) STORE ii0
+
+	fsubd	%f26,%f52,%f40		! (Y0_2) y0 = yy0 - dtmp0;
+	lda	[%o5]0x82,%f5		! (Y0_0) ftmp0 = py[0];
+
+	fmuld	%f58,%f56,%f56		! (Y1_3) yy0 = dtmp0 * y0;
+	and	%i3,MASK_0x7fffffff,%i3	! (Y0_0) ay &= 0x7fffffff
+	fmovdl	%fcc0,HTHRESHOLD,%f22	! (Y0_1) yy0 = HTHRESH;
+
+	fmuld	%f10,%f18,%f50		! (Y1_3) di0 *= dtmp0;
+	cmp	%i3,%o1
+	bge,pn	%icc,.xupdate7
+	fcmped	%fcc2,HTHRESHOLD,%f24	! (Y1_1) if (yy0 >= HTHRESH)
+.xcont7:
+	fdtos	%f60,%f1		! (Y0_3) ftmp0 = (float)dtmp0;
+	add	%i5,stridez,%i3		! pz += stridez
+	st	%f1,[%i5]		! (Y0_3) pz[0] = ftmp0;
+
+	ld	[%fp+tmp1],%i2		! (Y0_2) LOAD ii0
+	fmuld	KB2,%f40,%f36		! (Y0_2) dtmp0 = KB2 * y0;
+	fstod	%f5,%f52		! (Y0_0) dtmp0 = (double)ftmp0;
+
+	fmovdg	%fcc1,LTHRESHOLD,%f22	! (Y0_1) yy0 = LTHRESH;
+
+	fmuld	%f56,%f50,%f58		! (Y1_3) dtmp0 = yy0 * di0;
+	sra	%i2,6,%l6		! (Y0_2) i0 = ii0 >> 6;
+	and	%i2,255,%l7		! (Y0_2) ii0 &= 255;
+	fcmped	%fcc3,LTHRESHOLD,%f24	! (Y1_1) if (yy0 <= LTHRESH)
+
+	fitod	%f3,%f56		! (Y1_2) dtmp0 = (double)ii0;
+	sll	%l7,3,%o0		! (Y0_2) ii0 <<= 3;
+	and	%l6,-4,%g5		! (Y0_2) i0 &= -4;
+
+	faddd	%f36,KB1,%f60		! (Y0_2) dtmp0 += KB1;
+	fmuld	%f52,%f46,%f26		! (Y0_0) yy0 = dtmp0 * yy;
+	ld	[%g5+%o3],%f10		! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0]
+
+	fdtoi	%f22,%f0		! (Y0_1) ii0 = (int) yy0;
+	ldd	[%o4+%o0],%f62		! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
+
+	faddd	%f58,%f50,%f58		! (Y1_3) dtmp0 += di0;
+	add	%o5,stridey,%o5		! py += stridey
+	st	%f0,[%fp+tmp1]		! (Y0_1) STORE ii0
+
+	fsubd	%f28,%f56,%f56		! (Y1_2) y0 = yy0 - dtmp0;
+	lda	[%o5]0x82,%i5		! (Y1_0) ay = ((int*)py)[0];
+
+	fmuld	%f60,%f40,%f60		! (Y0_2) yy0 = dtmp0 * y0;
+	fmovdl	%fcc2,HTHRESHOLD,%f24	! (Y1_1) yy0 = HTHRESH;
+	lda	[%o5]0x82,%f7		! (Y1_0) ftmp0 = py[0];
+
+	fmuld	%f10,%f62,%f62		! (Y0_2) di0 *= dtmp0;
+	ld	[%fp+tmp0],%g5		! (Y1_2) LOAD ii0
+	and	%i5,MASK_0x7fffffff,%i5	! (Y1_0) ay &= 0x7fffffff
+	fcmped	%fcc0,HTHRESHOLD,%f26	! (Y0_0) if (yy0 >= HTHRESH)
+
+	fdtos	%f58,%f9		! (Y1_3) ftmp0 = (float)dtmp0;
+	cmp	%i5,%o1
+	bge,pn	%icc,.xupdate8
+
+.xcont8:
+	fmuld	KB2,%f56,%f58		! (Y1_2) dtmp0 = KB2 * y0;
+	add	%i3,stridez,%i5		! pz += stridez
+	st	%f9,[%i3]		! (Y1_3) pz[0] = ftmp0;
+	fstod	%f7,%f48		! (Y1_0) dtmp0 = (double)ftmp0;
+
+	fmovdg	%fcc3,LTHRESHOLD,%f24	! (Y1_2) yy0 = LTHRESH;
+	sra	%g5,6,%i0		! (Y1_3) i0 = ii0 >> 6;
+	and	%g5,255,%i1		! (Y1_3) ii0 &= 255;
+	fmuld	%f60,%f62,%f40		! (Y0_3) dtmp0 = yy0 * di0;
+
+	fcmped	%fcc1,LTHRESHOLD,%f26	! (Y0_1) if (yy0 <= LTHRESH)
+	sll	%i1,3,%i3		! (Y1_3) ii0 <<= 3;
+	and	%i0,-4,%i0		! (Y1_3) i0 &= -4;
+
+	fitod	%f0,%f52		! (Y0_2) dtmp0 = (double)ii0;
+	ld	[%i0+%o3],%f10		! (Y1_3) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0];
+
+	faddd	%f58,KB1,%f58		! (Y1_3) dtmp0 += KB1;
+	add	%o5,stridey,%o5		! py += stridey
+	ldd	[%o4+%i3],%f18		! (Y1_3) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
+	fmuld	%f48,%f46,%f28		! (Y1_1) yy0 = dtmp0 * yy;
+
+	fdtoi	%f24,%f3		! (Y1_2) ii0 = (int) yy0;
+	lda	[%o5]0x82,%i3		! (Y0_0) ay = py[0];
+
+	faddd	%f40,%f62,%f60		! (Y0_3) dtmp0 += di0;
+	st	%f3,[%fp+tmp0]		! (Y1_2) STORE ii0
+
+	fsubd	%f22,%f52,%f40		! (Y0_2) y0 = yy0 - dtmp0;
+	lda	[%o5]0x82,%f5		! (Y0_0) ftmp0 = py[0];
+
+	fmuld	%f58,%f56,%f56		! (Y1_3) yy0 = dtmp0 * y0;
+	and	%i3,MASK_0x7fffffff,%i3	! (Y0_0) ay &= 0x7fffffff
+	fmovdl	%fcc0,HTHRESHOLD,%f26	! (Y0_1) yy0 = HTHRESH;
+
+	fmuld	%f10,%f18,%f50		! (Y1_3) di0 *= dtmp0;
+	cmp	%i3,%o1
+	bge,pn	%icc,.xupdate9
+	fcmped	%fcc2,HTHRESHOLD,%f28	! (Y1_1) if (yy0 >= HTHRESH)
+.xcont9:
+	fdtos	%f60,%f1		! (Y0_3) ftmp0 = (float)dtmp0;
+	add	%i5,stridez,%i3		! pz += stridez
+	st	%f1,[%i5]		! (Y0_3) pz[0] = ftmp0;
+
+	ld	[%fp+tmp1],%i2		! (Y0_2) LOAD ii0
+	fmuld	KB2,%f40,%f36		! (Y0_2) dtmp0 = KB2 * y0;
+	fstod	%f5,%f52		! (Y0_0) dtmp0 = (double)ftmp0;
+
+	fmovdg	%fcc1,LTHRESHOLD,%f26	! (Y0_1) yy0 = LTHRESH;
+
+	fmuld	%f56,%f50,%f58		! (Y1_3) dtmp0 = yy0 * di0;
+	sra	%i2,6,%l6		! (Y0_2) i0 = ii0 >> 6;
+	and	%i2,255,%l7		! (Y0_2) ii0 &= 255;
+	fcmped	%fcc3,LTHRESHOLD,%f28	! (Y1_1) if (yy0 <= LTHRESH)
+
+	fitod	%f3,%f56		! (Y1_2) dtmp0 = (double)ii0;
+	sll	%l7,3,%o0		! (Y0_2) ii0 <<= 3;
+	and	%l6,-4,%g5		! (Y0_2) i0 &= -4;
+
+	faddd	%f36,KB1,%f60		! (Y0_2) dtmp0 += KB1;
+	fmuld	%f52,%f46,%f22		! (Y0_0) yy0 = dtmp0 * yy;
+	ld	[%g5+%o3],%f10		! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0]
+
+	fdtoi	%f26,%f0		! (Y0_1) ii0 = (int) yy0;
+	ldd	[%o4+%o0],%f62		! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
+
+	faddd	%f58,%f50,%f58		! (Y1_3) dtmp0 += di0;
+	add	%o5,stridey,%o5		! py += stridey
+	st	%f0,[%fp+tmp1]		! (Y0_1) STORE ii0
+
+	fsubd	%f24,%f56,%f56		! (Y1_2) y0 = yy0 - dtmp0;
+	lda	[%o5]0x82,%l7		! (Y1_0) ay = ((int*)py)[0];
+
+	fmuld	%f60,%f40,%f60		! (Y0_2) yy0 = dtmp0 * y0;
+	add	%i3,stridez,%i5		! pz += stridez
+	lda	[%o5]0x82,%f7		! (Y1_0) ftmp0 = py[0];
+	fmovdl	%fcc2,HTHRESHOLD,%f28	! (Y1_1) yy0 = HTHRESH;
+
+	fmuld	%f10,%f62,%f62		! (Y0_2) di0 *= dtmp0;
+	and	%l7,MASK_0x7fffffff,%l7	! (Y1_0) ay &= 0x7fffffff
+	ld	[%fp+tmp0],%g5		! (Y1_2) LOAD ii0
+	fcmped	%fcc0,HTHRESHOLD,%f22	! (Y0_0) if (yy0 >= HTHRESH)
+
+	fdtos	%f58,%f9		! (Y1_3) ftmp0 = (float)dtmp0;
+	st	%f9,[%i3]		! (Y1_3) pz[0] = ftmp0;
+	cmp	%l7,%o1
+	bge,pn	%icc,.xupdate10
+.xcont10:
+	fmuld	KB2,%f56,%f58		! (Y1_2) dtmp0 = KB2 * y0;
+	cmp	counter,4
+	bge,pt	%icc,.xmain_loop
+	fstod	%f7,%f48		! (Y1_0) dtmp0 = (double)ftmp0;
+
+.xtail:
+	subcc	counter,1,counter
+	bneg,pn	%icc,.xbegin
+	or	%g0,%i5,%g1
+
+	fmovdg	%fcc3,LTHRESHOLD,%f28	! (Y1_2) yy0 = LTHRESH;
+	sra	%g5,6,%i0		! (Y1_3) i0 = ii0 >> 6;
+	and	%g5,255,%i1		! (Y1_3) ii0 &= 255;
+	fmuld	%f60,%f62,%f40		! (Y0_3) dtmp0 = yy0 * di0;
+
+	fcmped	%fcc1,LTHRESHOLD,%f22	! (Y0_1) if (yy0 <= LTHRESH)
+	sll	%i1,3,%i3		! (Y1_3) ii0 <<= 3;
+	and	%i0,-4,%i0		! (Y1_3) i0 &= -4;
+
+	fitod	%f0,%f52		! (Y0_2) dtmp0 = (double)ii0;
+	ld	[%i0+%o3],%f10		! (Y1_3) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0];
+
+	faddd	%f58,KB1,%f58		! (Y1_3) dtmp0 += KB1;
+	add	%o5,stridey,%o5		! py += stridey
+	ldd	[%o4+%i3],%f18		! (Y1_3) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
+	fmuld	%f48,%f46,%f24		! (Y1_1) yy0 = dtmp0 * yy;
+
+	fdtoi	%f28,%f3		! (Y1_2) ii0 = (int) yy0;
+	lda	[%o5]0x82,%i3		! (Y0_0) ay = py[0];
+
+	faddd	%f40,%f62,%f60		! (Y0_3) dtmp0 += di0;
+	st	%f3,[%fp+tmp0]		! (Y1_2) STORE ii0
+
+	fsubd	%f26,%f52,%f40		! (Y0_2) y0 = yy0 - dtmp0;
+	lda	[%o5]0x82,%f5		! (Y0_0) ftmp0 = py[0];
+
+	fmuld	%f58,%f56,%f56		! (Y1_3) yy0 = dtmp0 * y0;
+	and	%i3,MASK_0x7fffffff,%i3	! (Y0_0) ay &= 0x7fffffff
+	fmovdl	%fcc0,HTHRESHOLD,%f22	! (Y0_1) yy0 = HTHRESH;
+
+	fmuld	%f10,%f18,%f50		! (Y1_3) di0 *= dtmp0;
+	cmp	%i3,%o1
+	bge,pn	%icc,.xupdate11
+	fcmped	%fcc2,HTHRESHOLD,%f24	! (Y1_1) if (yy0 >= HTHRESH)
+.xcont11:
+	fdtos	%f60,%f1		! (Y0_3) ftmp0 = (float)dtmp0;
+	add	%i5,stridez,%i3		! pz += stridez
+	st	%f1,[%i5]		! (Y0_3) pz[0] = ftmp0;
+
+	subcc	counter,1,counter
+	bneg,pn	%icc,.xbegin
+	or	%g0,%i3,%g1
+
+	ld	[%fp+tmp1],%i2		! (Y0_2) LOAD ii0
+	fmuld	KB2,%f40,%f36		! (Y0_2) dtmp0 = KB2 * y0;
+	fstod	%f5,%f52		! (Y0_0) dtmp0 = (double)ftmp0;
+
+	fmovdg	%fcc1,LTHRESHOLD,%f22	! (Y0_1) yy0 = LTHRESH;
+
+	fmuld	%f56,%f50,%f58		! (Y1_3) dtmp0 = yy0 * di0;
+	sra	%i2,6,%l6		! (Y0_2) i0 = ii0 >> 6;
+	and	%i2,255,%l7		! (Y0_2) ii0 &= 255;
+	fcmped	%fcc3,LTHRESHOLD,%f24	! (Y1_1) if (yy0 <= LTHRESH)
+
+	fitod	%f3,%f56		! (Y1_2) dtmp0 = (double)ii0;
+	sll	%l7,3,%o0		! (Y0_2) ii0 <<= 3;
+	and	%l6,-4,%g5		! (Y0_2) i0 &= -4;
+
+	faddd	%f36,KB1,%f60		! (Y0_2) dtmp0 += KB1;
+	fmuld	%f52,%f46,%f26		! (Y0_0) yy0 = dtmp0 * yy;
+	ld	[%g5+%o3],%f10		! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0]
+
+	fdtoi	%f22,%f0		! (Y0_1) ii0 = (int) yy0;
+	ldd	[%o4+%o0],%f62		! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
+
+	faddd	%f58,%f50,%f58		! (Y1_3) dtmp0 += di0;
+	st	%f0,[%fp+tmp1]		! (Y0_1) STORE ii0
+
+	fsubd	%f28,%f56,%f56		! (Y1_2) y0 = yy0 - dtmp0;
+
+	fmuld	%f60,%f40,%f60		! (Y0_2) yy0 = dtmp0 * y0;
+	fmovdl	%fcc2,HTHRESHOLD,%f24	! (Y1_1) yy0 = HTHRESH;
+
+	fmuld	%f10,%f62,%f62		! (Y0_2) di0 *= dtmp0;
+	ld	[%fp+tmp0],%g5		! (Y1_2) LOAD ii0
+	fcmped	%fcc0,HTHRESHOLD,%f26	! (Y0_0) if (yy0 >= HTHRESH)
+
+	fdtos	%f58,%f9		! (Y1_3) ftmp0 = (float)dtmp0;
+
+	fmuld	KB2,%f56,%f58		! (Y1_2) dtmp0 = KB2 * y0;
+	add	%i3,stridez,%i5		! pz += stridez
+	st	%f9,[%i3]		! (Y1_3) pz[0] = ftmp0;
+
+	subcc	counter,1,counter
+	bneg,pn	%icc,.xbegin
+	or	%g0,%i5,%g1
+
+	fmovdg	%fcc3,LTHRESHOLD,%f24	! (Y1_2) yy0 = LTHRESH;
+	sra	%g5,6,%i0		! (Y1_3) i0 = ii0 >> 6;
+	and	%g5,255,%i1		! (Y1_3) ii0 &= 255;
+	fmuld	%f60,%f62,%f40		! (Y0_3) dtmp0 = yy0 * di0;
+
+	fcmped	%fcc1,LTHRESHOLD,%f26	! (Y0_1) if (yy0 <= LTHRESH)
+	sll	%i1,3,%i3		! (Y1_3) ii0 <<= 3;
+	and	%i0,-4,%i0		! (Y1_3) i0 &= -4;
+
+	fitod	%f0,%f52		! (Y0_2) dtmp0 = (double)ii0;
+	ld	[%i0+%o3],%f10		! (Y1_3) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0];
+
+	faddd	%f58,KB1,%f58		! (Y1_3) dtmp0 += KB1;
+	ldd	[%o4+%i3],%f18		! (Y1_3) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
+
+	fdtoi	%f24,%f3		! (Y1_2) ii0 = (int) yy0;
+
+	faddd	%f40,%f62,%f60		! (Y0_3) dtmp0 += di0;
+	st	%f3,[%fp+tmp0]		! (Y1_2) STORE ii0
+
+	fsubd	%f22,%f52,%f40		! (Y0_2) y0 = yy0 - dtmp0;
+
+	fmuld	%f58,%f56,%f56		! (Y1_3) yy0 = dtmp0 * y0;
+	fmovdl	%fcc0,HTHRESHOLD,%f26	! (Y0_1) yy0 = HTHRESH;
+
+	fmuld	%f10,%f18,%f50		! (Y1_3) di0 *= dtmp0;
+
+	fdtos	%f60,%f1		! (Y0_3) ftmp0 = (float)dtmp0;
+	add	%i5,stridez,%i3		! pz += stridez
+	st	%f1,[%i5]		! (Y0_3) pz[0] = ftmp0;
+
+	subcc	counter,1,counter
+	bneg,pn	%icc,.xbegin
+	or	%g0,%i3,%g1
+
+	ld	[%fp+tmp1],%i2		! (Y0_2) LOAD ii0
+	fmuld	KB2,%f40,%f36		! (Y0_2) dtmp0 = KB2 * y0;
+
+	fmovdg	%fcc1,LTHRESHOLD,%f26	! (Y0_1) yy0 = LTHRESH;
+
+	fmuld	%f56,%f50,%f58		! (Y1_3) dtmp0 = yy0 * di0;
+	sra	%i2,6,%l6		! (Y0_2) i0 = ii0 >> 6;
+	and	%i2,255,%l7		! (Y0_2) ii0 &= 255;
+
+	fitod	%f3,%f56		! (Y1_2) dtmp0 = (double)ii0;
+	sll	%l7,3,%o0		! (Y0_2) ii0 <<= 3;
+	and	%l6,-4,%g5		! (Y0_2) i0 &= -4;
+
+	faddd	%f36,KB1,%f60		! (Y0_2) dtmp0 += KB1;
+	ld	[%g5+%o3],%f10		! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150) + i0))[0];
+
+	fdtoi	%f26,%f0		! (Y0_1) ii0 = (int) yy0;
+	ldd	[%o4+%o0],%f62		! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
+
+	faddd	%f58,%f50,%f58		! (Y1_3) dtmp0 += di0;
+	st	%f0,[%fp+tmp1]		! (Y0_1) STORE ii0
+
+	fsubd	%f24,%f56,%f56		! (Y1_2) y0 = yy0 - dtmp0;
+
+	fmuld	%f60,%f40,%f60		! (Y0_2) yy0 = dtmp0 * y0;
+	add	%i3,stridez,%i5		! pz += stridez
+
+	fmuld	%f10,%f62,%f62		! (Y0_2) di0 *= dtmp0;
+	ld	[%fp+tmp0],%g5		! (Y1_2) LOAD ii0
+
+	fdtos	%f58,%f9		! (Y1_3) ftmp0 = (float)dtmp0;
+	st	%f9,[%i3]		! (Y1_3) pz[0] = ftmp0;
+
+	subcc	counter,1,counter
+	bneg,pn	%icc,.xbegin
+	or	%g0,%i5,%g1
+
+	fmuld	KB2,%f56,%f58		! (Y1_2) dtmp0 = KB2 * y0;
+
+	sra	%g5,6,%i0		! (Y1_3) i0 = ii0 >> 6;
+	and	%g5,255,%i1		! (Y1_3) ii0 &= 255;
+	fmuld	%f60,%f62,%f40		! (Y0_3) dtmp0 = yy0 * di0;
+
+	sll	%i1,3,%i3		! (Y1_3) ii0 <<= 3;
+	and	%i0,-4,%i0		! (Y1_3) i0 &= -4;
+
+	fitod	%f0,%f52		! (Y0_2) dtmp0 = (double)ii0;
+	ld	[%i0+%o3],%f10		! (Y1_3) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0];
+
+	faddd	%f58,KB1,%f58		! (Y1_3) dtmp0 += KB1;
+	ldd	[%o4+%i3],%f18		! (Y1_3) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
+
+	faddd	%f40,%f62,%f60		! (Y0_3) dtmp0 += di0;
+
+	fsubd	%f26,%f52,%f40		! (Y0_2) y0 = yy0 - dtmp0;
+
+	fmuld	%f58,%f56,%f56		! (Y1_3) yy0 = dtmp0 * y0;
+
+	fmuld	%f10,%f18,%f50		! (Y1_3) di0 *= dtmp0;
+
+	fdtos	%f60,%f1		! (Y0_3) ftmp0 = (float)dtmp0;
+	add	%i5,stridez,%i3		! pz += stridez
+	st	%f1,[%i5]		! (Y0_3) pz[0] = ftmp0;
+
+	subcc	counter,1,counter
+	bneg,pn	%icc,.xbegin
+	or	%g0,%i3,%g1
+
+	ld	[%fp+tmp1],%i2		! (Y0_2) LOAD ii0
+	fmuld	KB2,%f40,%f36		! (Y0_2) dtmp0 = KB2 * y0;
+
+	fmuld	%f56,%f50,%f58		! (Y1_3) dtmp0 = yy0 * di0;
+	sra	%i2,6,%l6		! (Y0_2) i0 = ii0 >> 6;
+	and	%i2,255,%l7		! (Y0_2) ii0 &= 255;
+
+	sll	%l7,3,%o0		! (Y0_2) ii0 <<= 3;
+	and	%l6,-4,%g5		! (Y0_2) i0 &= -4;
+
+	faddd	%f36,KB1,%f60		! (Y0_2) dtmp0 += KB1;
+	ld	[%g5+%o3],%f10		! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0]
+
+	ldd	[%o4+%o0],%f62		! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
+
+	faddd	%f58,%f50,%f58		! (Y1_3) dtmp0 += di0;
+
+	fmuld	%f60,%f40,%f60		! (Y0_2) yy0 = dtmp0 * y0;
+
+	fmuld	%f10,%f62,%f62		! (Y0_2) di0 *= dtmp0;
+
+	fdtos	%f58,%f9		! (Y1_3) ftmp0 = (float)dtmp0;
+	add	%i3,stridez,%i5		! pz += stridez
+	st	%f9,[%i3]		! (Y1_3) pz[0] = ftmp0;
+
+	subcc	counter,1,counter
+	bneg,pn	%icc,.xbegin
+	or	%g0,%i5,%g1
+
+	fmuld	%f60,%f62,%f40		! (Y0_3) dtmp0 = yy0 * di0;
+
+	faddd	%f40,%f62,%f60		! (Y0_3) dtmp0 += di0;
+
+	fdtos	%f60,%f1		! (Y0_3) ftmp0 = (float)dtmp0;
+	add	%i5,stridez,%i3		! pz += stridez
+	st	%f1,[%i5]		! (Y0_3) pz[0] = ftmp0;
+
+	ba	.xbegin
+	or	%g0,%i3,%g1
+
+.xspec:
+	bg,a,pn	%icc,.yisnan		! if (ay > 0x7f800000) /* |Y| = Nan */
+	ld	[%o5],%f8		! fy = *py;
+
+	ld	[%fp+tmp5],%l6		! LOAD (ax-0x3f800000)<<63
+	srl	%i5,31,%i5		! uy >> 31
+
+	cmp	%l6,%i5			! if((ax < 0x3f800000) != (uy >> 31))
+	be,a,pn	%icc,.xspec_exit	! if((ax < 0x3f800000) != (uy >> 31))
+	st	%i3,[%g1]		! fy = *(float*)&ay;
+
+	st	%g0,[%g1]		! fy = ZERO
+	add	%g1,stridez,%g1
+	ba	.xbegin1
+	add	%o5,stridey,%o5
+
+.yisnan:
+	fmuls	%f8,%f8,%f8		! fy = *py * *py;  /* |Y| = Nan */
+	st	%f8,[%g1]
+
+.xspec_exit:
+	add	%g1,stridez,%g1
+	ba	.xbegin1
+	add	%o5,stridey,%o5
+
+	.align	16
+.xupdate0:
+	cmp	counter,0
+	ble	.xcont0
+	fzeros	%f7
+
+	stx	%o5,[%fp+tmp_py]
+
+	st	counter,[%fp+tmp_counter]
+	ba	.xcont0
+	or	%g0,0,counter
+
+	.align	16
+.xupdate1:
+	cmp	counter,1
+	ble	.xcont1
+	fzeros	%f5
+
+	sub	counter,1,counter
+	stx	%o5,[%fp+tmp_py]
+
+	st	counter,[%fp+tmp_counter]
+	ba	.xcont1
+	or	%g0,1,counter
+
+	.align	16
+.xupdate2:
+	cmp	counter,2
+	ble	.xcont2
+	fzeros	%f7
+
+	sub	counter,2,counter
+	stx	%o5,[%fp+tmp_py]
+
+	st	counter,[%fp+tmp_counter]
+	ba	.xcont2
+	or	%g0,2,counter
+
+	.align	16
+.xupdate3:
+	cmp	counter,3
+	ble	.xcont3
+	fzeros	%f5
+
+	sub	counter,3,counter
+	stx	%o5,[%fp+tmp_py]
+
+	st	counter,[%fp+tmp_counter]
+	ba	.xcont3
+	or	%g0,3,counter
+
+	.align	16
+.xupdate4:
+	cmp	counter,4
+	ble	.xcont4
+	fzeros	%f7
+
+	sub	counter,4,counter
+	stx	%o5,[%fp+tmp_py]
+
+	st	counter,[%fp+tmp_counter]
+	ba	.xcont4
+	or	%g0,4,counter
+
+	.align	16
+.xupdate5:
+	cmp	counter,5
+	ble	.xcont5
+	fzeros	%f5
+
+	sub	counter,5,counter
+	stx	%o5,[%fp+tmp_py]
+
+	st	counter,[%fp+tmp_counter]
+	ba	.xcont5
+	or	%g0,5,counter
+
+	.align	16
+.xupdate6:
+	cmp	counter,5
+	ble	.xcont6
+	fzeros	%f7
+
+	sub	counter,5,counter
+	stx	%o5,[%fp+tmp_py]
+
+	st	counter,[%fp+tmp_counter]
+	ba	.xcont6
+	or	%g0,5,counter
+
+	.align	16
+.xupdate7:
+	cmp	counter,2
+	ble	.xcont7
+	fzeros	%f5
+
+	sub	counter,2,counter
+	stx	%o5,[%fp+tmp_py]
+
+	st	counter,[%fp+tmp_counter]
+	ba	.xcont7
+	or	%g0,2,counter
+
+	.align	16
+.xupdate8:
+	cmp	counter,3
+	ble	.xcont8
+	fzeros	%f7
+
+	sub	counter,3,counter
+	stx	%o5,[%fp+tmp_py]
+
+	st	counter,[%fp+tmp_counter]
+	ba	.xcont8
+	or	%g0,3,counter
+
+	.align	16
+.xupdate9:
+	cmp	counter,4
+	ble	.xcont9
+	fzeros	%f5
+
+	sub	counter,4,counter
+	stx	%o5,[%fp+tmp_py]
+
+	st	counter,[%fp+tmp_counter]
+	ba	.xcont9
+	or	%g0,4,counter
+
+	.align	16
+.xupdate10:
+	cmp	counter,5
+	ble	.xcont10
+	fzeros	%f7
+
+	sub	counter,5,counter
+	stx	%o5,[%fp+tmp_py]
+
+	st	counter,[%fp+tmp_counter]
+	ba	.xcont10
+	or	%g0,5,counter
+
+	.align	16
+.xupdate11:
+	cmp	counter,5
+	ble	.xcont11
+	fzeros	%f5
+
+	sub	counter,5,counter
+	stx	%o5,[%fp+tmp_py]
+
+	st	counter,[%fp+tmp_counter]
+	ba	.xcont11
+	or	%g0,5,counter
+
+	SET_SIZE(__vpowf)
+
