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

        .file   "__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)