summaryrefslogtreecommitdiffstats
path: root/private/crt32/misc/alpha/divdat.s
diff options
context:
space:
mode:
Diffstat (limited to 'private/crt32/misc/alpha/divdat.s')
-rw-r--r--private/crt32/misc/alpha/divdat.s597
1 files changed, 597 insertions, 0 deletions
diff --git a/private/crt32/misc/alpha/divdat.s b/private/crt32/misc/alpha/divdat.s
new file mode 100644
index 000000000..543d6237b
--- /dev/null
+++ b/private/crt32/misc/alpha/divdat.s
@@ -0,0 +1,597 @@
+
+ # Copyright 1992,1993, Digital Equipment Corporation
+ #
+ # This software is furnished under a license and may be used and copied
+ # only in accordance with the terms of such license and with the
+ # inclusion of the above copyright notice. This software or any other
+ # copies thereof may not be provided or otherwise made available to any
+ # other person. No title to and ownership of the software is hereby
+ # transferred.
+ #
+ # The information in this software is subject to change without notice
+ # and should not be construed as a commitment by Digital Equipment
+ # Corporation.
+ #
+ # Digital assumes no responsibility for the use or reliability of its
+ # software on equipment which is not supplied by Digital.
+ #
+ # 009 15 Jul 1992 KDG - Can't have .end for Alpha/OSF - use
+ # new ots_data_end macro
+ # - Need .data for OSF
+ #
+ # 010 4 Sep 1992 KDG Switch PSECT from ots_div_data to ots_lit
+ #
+ # 011 26 Jan 1993 KDG Add underscore, OSF uses CS name
+ #
+ # 012 5 Apr 1993 WBN Use 16-byte entries, up to 512, and
+ # support computing 1/(a+x).
+
+#include "ots_defs.hs"
+
+ # Data area description
+ #
+ # The data area "ots_div_data" is an array of structures, indexed
+ # by the divisor value, with each array entry being 16 bytes in size
+ # formatted as follows:
+ #
+ # 6 1 1
+ # 3 6 5 6 5 0
+ # +-------+-------+-------+-------+-------+-------+-------+-------+
+ # | 32 bit reciprocal (48 bits) | recip^2 |shift|
+ # +-------+-------+-------+-------+-------+-------+-------+-------+
+ # | 64 bit reciprocal |
+ # +---------------------------------------------------------------+
+ #
+ # The 64-bit reciprocal has the leading '1' bit omitted, so it provides
+ # 65 bits of precision -- enough to handle unsigned 64-bit dividends.
+ #
+ # The first quadword contains the 6-bit shift amount needed to handle
+ # 64-bit cases and powers of two. For divisors between 256 and 512,
+ # this quadword also contains a 10-bit coefficient for linearly
+ # approximating larger reciprocals (1/(a+x) = 1/a - x/a^2 + ...).
+ #
+ # The 32-bit reciprocal has the shift count built in, so a UMULH gives
+ # the correct quotient without shifting. The reciprocal needs 33 bits
+ # of precision. The 10-bit reciprocal-squared, and 6-bit shift amount,
+ # are noise in the reciprocal that can be ignored for divisors less than
+ # 512. (The only possible exception is for 1/257, and it checks out OK.)
+ #
+ # Powers of two are flagged with a 32-bit reciprocal that is negative,
+ # and a 64-bit reciprocal that is zero.
+
+ # OTS division data table
+ #
+
+#ifdef VMS
+ .psect ots_lit
+ .align 4 # octaword alignment
+ots_div_data::
+#endif
+#ifdef OSF
+ .globl _OtsDivData
+ .data
+ .align 4
+_OtsDivData:
+#endif
+#ifdef WNT
+ .globl _OtsDivData
+ .data
+ .align 4
+_OtsDivData:
+#endif
+ # recip^2--. .-shift
+ #32b recip / \| 64 bit reciprocal divisor
+ .quad 0x0000000000000000, 0x0000000000000000 # 0
+ .quad 0x8000000000000000, 0x0000000000000000 # 1
+ .quad 0x8000000000000001, 0x0000000000000000 # 2
+ .quad 0x5555555555560002, 0x5555555555555556 # 3
+ .quad 0x8000000000000002, 0x0000000000000000 # 4
+ .quad 0x3333333333340003, 0x999999999999999A # 5
+ .quad 0x2AAAAAAAAAAB0003, 0x5555555555555556 # 6
+ .quad 0x24924924924A0003, 0x2492492492492493 # 7
+ .quad 0x8000000000000003, 0x0000000000000000 # 8
+ .quad 0x1C71C71C71C80004, 0xC71C71C71C71C71D # 9
+ .quad 0x19999999999A0004, 0x999999999999999A # 10
+ .quad 0x1745D1745D180004, 0x745D1745D1745D18 # 11
+ .quad 0x1555555555560004, 0x5555555555555556 # 12
+ .quad 0x13B13B13B13C0004, 0x3B13B13B13B13B14 # 13
+ .quad 0x1249249249250004, 0x2492492492492493 # 14
+ .quad 0x1111111111120004, 0x1111111111111112 # 15
+ .quad 0x8000000000000004, 0x0000000000000000 # 16
+ .quad 0x0F0F0F0F0F100005, 0xE1E1E1E1E1E1E1E2 # 17
+ .quad 0x0E38E38E38E40005, 0xC71C71C71C71C71D # 18
+ .quad 0x0D79435E50D80005, 0xAF286BCA1AF286BD # 19
+ .quad 0x0CCCCCCCCCCD0005, 0x999999999999999A # 20
+ .quad 0x0C30C30C30C40005, 0x8618618618618619 # 21
+ .quad 0x0BA2E8BA2E8C0005, 0x745D1745D1745D18 # 22
+ .quad 0x0B21642C85910005, 0x642C8590B21642C9 # 23
+ .quad 0x0AAAAAAAAAAB0005, 0x5555555555555556 # 24
+ .quad 0x0A3D70A3D70B0005, 0x47AE147AE147AE15 # 25
+ .quad 0x09D89D89D89E0005, 0x3B13B13B13B13B14 # 26
+ .quad 0x097B425ED0980005, 0x2F684BDA12F684BE # 27
+ .quad 0x0924924924930005, 0x2492492492492493 # 28
+ .quad 0x08D3DCB08D3E0005, 0x1A7B9611A7B9611B # 29
+ .quad 0x0888888888890005, 0x1111111111111112 # 30
+ .quad 0x0842108421090005, 0x0842108421084211 # 31
+ .quad 0x8000000000000005, 0x0000000000000000 # 32
+ .quad 0x07C1F07C1F080006, 0xF07C1F07C1F07C20 # 33
+ .quad 0x0787878787880006, 0xE1E1E1E1E1E1E1E2 # 34
+ .quad 0x0750750750760006, 0xD41D41D41D41D41E # 35
+ .quad 0x071C71C71C720006, 0xC71C71C71C71C71D # 36
+ .quad 0x06EB3E45306F0006, 0xBACF914C1BACF915 # 37
+ .quad 0x06BCA1AF286C0006, 0xAF286BCA1AF286BD # 38
+ .quad 0x06906906906A0006, 0xA41A41A41A41A41B # 39
+ .quad 0x0666666666670006, 0x999999999999999A # 40
+ .quad 0x063E7063E7070006, 0x8F9C18F9C18F9C19 # 41
+ .quad 0x0618618618620006, 0x8618618618618619 # 42
+ .quad 0x05F417D05F420006, 0x7D05F417D05F417E # 43
+ .quad 0x05D1745D17460006, 0x745D1745D1745D18 # 44
+ .quad 0x05B05B05B05C0006, 0x6C16C16C16C16C17 # 45
+ .quad 0x0590B21642C90006, 0x642C8590B21642C9 # 46
+ .quad 0x0572620AE4C50006, 0x5C9882B931057263 # 47
+ .quad 0x0555555555560006, 0x5555555555555556 # 48
+ .quad 0x05397829CBC20006, 0x4E5E0A72F0539783 # 49
+ .quad 0x051EB851EB860006, 0x47AE147AE147AE15 # 50
+ .quad 0x0505050505060006, 0x4141414141414142 # 51
+ .quad 0x04EC4EC4EC4F0006, 0x3B13B13B13B13B14 # 52
+ .quad 0x04D4873ECADF0006, 0x3521CFB2B78C1353 # 53
+ .quad 0x04BDA12F684C0006, 0x2F684BDA12F684BE # 54
+ .quad 0x04A7904A79050006, 0x29E4129E4129E413 # 55
+ .quad 0x04924924924A0006, 0x2492492492492493 # 56
+ .quad 0x047DC11F70480006, 0x1F7047DC11F7047E # 57
+ .quad 0x0469EE58469F0006, 0x1A7B9611A7B9611B # 58
+ .quad 0x0456C797DD4A0006, 0x15B1E5F75270D046 # 59
+ .quad 0x0444444444450006, 0x1111111111111112 # 60
+ .quad 0x04325C53EF370006, 0x0C9714FBCDA3AC11 # 61
+ .quad 0x0421084210850006, 0x0842108421084211 # 62
+ .quad 0x0410410410420006, 0x0410410410410411 # 63
+ .quad 0x8000000000000006, 0x0000000000000000 # 64
+ .quad 0x03F03F03F0400007, 0xF81F81F81F81F820 # 65
+ .quad 0x03E0F83E0F840007, 0xF07C1F07C1F07C20 # 66
+ .quad 0x03D226357E170007, 0xE9131ABF0B7672A1 # 67
+ .quad 0x03C3C3C3C3C40007, 0xE1E1E1E1E1E1E1E2 # 68
+ .quad 0x03B5CC0ED7310007, 0xDAE6076B981DAE61 # 69
+ .quad 0x03A83A83A83B0007, 0xD41D41D41D41D41E # 70
+ .quad 0x039B0AD120740007, 0xCD85689039B0AD13 # 71
+ .quad 0x038E38E38E390007, 0xC71C71C71C71C71D # 72
+ .quad 0x0381C0E070390007, 0xC0E070381C0E0704 # 73
+ .quad 0x03759F2298380007, 0xBACF914C1BACF915 # 74
+ .quad 0x0369D0369D040007, 0xB4E81B4E81B4E81C # 75
+ .quad 0x035E50D794360007, 0xAF286BCA1AF286BD # 76
+ .quad 0x03531DEC0D4D0007, 0xA98EF606A63BD81B # 77
+ .quad 0x0348348348350007, 0xA41A41A41A41A41B # 78
+ .quad 0x033D91D2A2070007, 0x9EC8E951033D91D3 # 79
+ .quad 0x0333333333340007, 0x999999999999999A # 80
+ .quad 0x0329161F9ADE0007, 0x948B0FCD6E9E0653 # 81
+ .quad 0x031F3831F3840007, 0x8F9C18F9C18F9C19 # 82
+ .quad 0x03159721ED7F0007, 0x8ACB90F6BF3A9A38 # 83
+ .quad 0x030C30C30C310007, 0x8618618618618619 # 84
+ .quad 0x0303030303040007, 0x8181818181818182 # 85
+ .quad 0x02FA0BE82FA10007, 0x7D05F417D05F417E # 86
+ .quad 0x02F149902F150007, 0x78A4C8178A4C8179 # 87
+ .quad 0x02E8BA2E8BA30007, 0x745D1745D1745D18 # 88
+ .quad 0x02E05C0B81710007, 0x702E05C0B81702E1 # 89
+ .quad 0x02D82D82D82E0007, 0x6C16C16C16C16C17 # 90
+ .quad 0x02D02D02D02E0007, 0x6816816816816817 # 91
+ .quad 0x02C8590B21650007, 0x642C8590B21642C9 # 92
+ .quad 0x02C0B02C0B030007, 0x6058160581605817 # 93
+ .quad 0x02B9310572630007, 0x5C9882B931057263 # 94
+ .quad 0x02B1DA46102C0007, 0x58ED2308158ED231 # 95
+ .quad 0x02AAAAAAAAAB0007, 0x5555555555555556 # 96
+ .quad 0x02A3A0FD5C600007, 0x51D07EAE2F8151D1 # 97
+ .quad 0x029CBC14E5E10007, 0x4E5E0A72F0539783 # 98
+ .quad 0x0295FAD40A580007, 0x4AFD6A052BF5A815 # 99
+ .quad 0x028F5C28F5C30007, 0x47AE147AE147AE15 # 100
+ .quad 0x0288DF0CAC5C0007, 0x446F86562D9FAEE5 # 101
+ .quad 0x0282828282830007, 0x4141414141414142 # 102
+ .quad 0x027C45979C960007, 0x3E22CBCE4A9027C5 # 103
+ .quad 0x0276276276280007, 0x3B13B13B13B13B14 # 104
+ .quad 0x0270270270280007, 0x3813813813813814 # 105
+ .quad 0x026A439F65700007, 0x3521CFB2B78C1353 # 106
+ .quad 0x02647C6945630007, 0x323E34A2B10BF66F # 107
+ .quad 0x025ED097B4260007, 0x2F684BDA12F684BE # 108
+ .quad 0x02593F69B0260007, 0x2C9FB4D812C9FB4E # 109
+ .quad 0x0253C8253C830007, 0x29E4129E4129E413 # 110
+ .quad 0x024E6A1710250007, 0x27350B88127350B9 # 111
+ .quad 0x0249249249250007, 0x2492492492492493 # 112
+ .quad 0x0243F6F024400007, 0x21FB78121FB78122 # 113
+ .quad 0x023EE08FB8240007, 0x1F7047DC11F7047E # 114
+ .quad 0x0239E0D5B4510007, 0x1CF06ADA2811CF07 # 115
+ .quad 0x0234F72C23500007, 0x1A7B9611A7B9611B # 116
+ .quad 0x0230230230240007, 0x1811811811811812 # 117
+ .quad 0x022B63CBEEA50007, 0x15B1E5F75270D046 # 118
+ .quad 0x0226B90226BA0007, 0x135C81135C81135D # 119
+ .quad 0x0222222222230007, 0x1111111111111112 # 120
+ .quad 0x021D9EAD7CD40007, 0x0ECF56BE69C8FDE3 # 121
+ .quad 0x02192E29F79C0007, 0x0C9714FBCDA3AC11 # 122
+ .quad 0x0214D0214D030007, 0x0A6810A6810A6811 # 123
+ .quad 0x0210842108430007, 0x0842108421084211 # 124
+ .quad 0x020C49BA5E360007, 0x0624DD2F1A9FBE77 # 125
+ .quad 0x0208208208210007, 0x0410410410410411 # 126
+ .quad 0x0204081020410007, 0x0204081020408103 # 127
+ .quad 0x8000000000000007, 0x0000000000000000 # 128
+ .quad 0x01FC07F01FC10008, 0xFC07F01FC07F01FD # 129
+ .quad 0x01F81F81F8200008, 0xF81F81F81F81F820 # 130
+ .quad 0x01F44659E4A50008, 0xF44659E4A4271580 # 131
+ .quad 0x01F07C1F07C20008, 0xF07C1F07C1F07C20 # 132
+ .quad 0x01ECC07B301F0008, 0xECC07B301ECC07B4 # 133
+ .quad 0x01E9131ABF0C0008, 0xE9131ABF0B7672A1 # 134
+ .quad 0x01E573AC901F0008, 0xE573AC901E573ACA # 135
+ .quad 0x01E1E1E1E1E20008, 0xE1E1E1E1E1E1E1E2 # 136
+ .quad 0x01DE5D6E3F890008, 0xDE5D6E3F8868A471 # 137
+ .quad 0x01DAE6076B990008, 0xDAE6076B981DAE61 # 138
+ .quad 0x01D77B654B830008, 0xD77B654B82C33918 # 139
+ .quad 0x01D41D41D41E0008, 0xD41D41D41D41D41E # 140
+ .quad 0x01D0CB58F6ED0008, 0xD0CB58F6EC07432E # 141
+ .quad 0x01CD8568903A0008, 0xCD85689039B0AD13 # 142
+ .quad 0x01CA4B3055EF0008, 0xCA4B3055EE19101D # 143
+ .quad 0x01C71C71C71D0008, 0xC71C71C71C71C71D # 144
+ .quad 0x01C3F8F01C400008, 0xC3F8F01C3F8F01C4 # 145
+ .quad 0x01C0E070381D0008, 0xC0E070381C0E0704 # 146
+ .quad 0x01BDD2B899410008, 0xBDD2B899406F74AF # 147
+ .quad 0x01BACF914C1C0008, 0xBACF914C1BACF915 # 148
+ .quad 0x01B7D6C3DDA40008, 0xB7D6C3DDA338B2B0 # 149
+ .quad 0x01B4E81B4E820008, 0xB4E81B4E81B4E81C # 150
+ .quad 0x01B2036406C90008, 0xB2036406C80D901C # 151
+ .quad 0x01AF286BCA1B0008, 0xAF286BCA1AF286BD # 152
+ .quad 0x01AC5701AC580008, 0xAC5701AC5701AC58 # 153
+ .quad 0x01A98EF606A70008, 0xA98EF606A63BD81B # 154
+ .quad 0x01A6D01A6D020008, 0xA6D01A6D01A6D01B # 155
+ .quad 0x01A41A41A41B0008, 0xA41A41A41A41A41B # 156
+ .quad 0x01A16D3F97A50008, 0xA16D3F97A4B01A17 # 157
+ .quad 0x019EC8E951040008, 0x9EC8E951033D91D3 # 158
+ .quad 0x019C2D14EE4B0008, 0x9C2D14EE4A1019C3 # 159
+ .quad 0x01999999999A0008, 0x999999999999999A # 160
+ .quad 0x01970E4F80CC0008, 0x970E4F80CB8727C1 # 161
+ .quad 0x01948B0FCD6F0008, 0x948B0FCD6E9E0653 # 162
+ .quad 0x01920FB49D0F0008, 0x920FB49D0E228D5A # 163
+ .quad 0x018F9C18F9C20008, 0x8F9C18F9C18F9C19 # 164
+ .quad 0x018D3018D3020008, 0x8D3018D3018D3019 # 165
+ .quad 0x018ACB90F6C00008, 0x8ACB90F6BF3A9A38 # 166
+ .quad 0x01886E5F0ABC0008, 0x886E5F0ABB04994C # 167
+ .quad 0x0186186186190008, 0x8618618618618619 # 168
+ .quad 0x0183C977AB2C0008, 0x83C977AB2BEDD28F # 169
+ .quad 0x0181818181820008, 0x8181818181818182 # 170
+ .quad 0x017F405FD0180008, 0x7F405FD017F405FE # 171
+ .quad 0x017D05F417D10008, 0x7D05F417D05F417E # 172
+ .quad 0x017AD2208E0F0008, 0x7AD2208E0ECC3546 # 173
+ .quad 0x0178A4C8178B0008, 0x78A4C8178A4C8179 # 174
+ .quad 0x01767DCE434B0008, 0x767DCE434A9B1018 # 175
+ .quad 0x01745D1745D20008, 0x745D1745D1745D18 # 176
+ .quad 0x01724287F46E0008, 0x724287F46DEBC05D # 177
+ .quad 0x01702E05C0B90008, 0x702E05C0B81702E1 # 178
+ .quad 0x016E1F76B4340008, 0x6E1F76B4337C6CB2 # 179
+ .quad 0x016C16C16C170008, 0x6C16C16C16C16C17 # 180
+ .quad 0x016A13CD15380008, 0x6A13CD153729043F # 181
+ .quad 0x0168168168170008, 0x6816816816816817 # 182
+ .quad 0x01661EC6A5130008, 0x661EC6A5122F9017 # 183
+ .quad 0x01642C8590B30008, 0x642C8590B21642C9 # 184
+ .quad 0x01623FA770170008, 0x623FA7701623FA78 # 185
+ .quad 0x0160581605820008, 0x6058160581605817 # 186
+ .quad 0x015E75BB8D020008, 0x5E75BB8D015E75BC # 187
+ .quad 0x015C9882B9320008, 0x5C9882B931057263 # 188
+ .quad 0x015AC056B0160008, 0x5AC056B015AC056C # 189
+ .quad 0x0158ED2308160008, 0x58ED2308158ED231 # 190
+ .quad 0x01571ED3C5070008, 0x571ED3C506B39A23 # 191
+ .quad 0x0155555555560008, 0x5555555555555556 # 192
+ .quad 0x015390948F410008, 0x5390948F40FEAC70 # 193
+ .quad 0x0151D07EAE300008, 0x51D07EAE2F8151D1 # 194
+ .quad 0x0150150150160008, 0x5015015015015016 # 195
+ .quad 0x014E5E0A72F10008, 0x4E5E0A72F0539783 # 196
+ .quad 0x014CAB88725B0008, 0x4CAB88725AF6E750 # 197
+ .quad 0x014AFD6A052C0008, 0x4AFD6A052BF5A815 # 198
+ .quad 0x0149539E3B2E0008, 0x49539E3B2D066EA3 # 199
+ .quad 0x0147AE147AE20008, 0x47AE147AE147AE15 # 200
+ .quad 0x01460CBC7F5D0008, 0x460CBC7F5CF9A1C1 # 201
+ .quad 0x01446F86562E0008, 0x446F86562D9FAEE5 # 202
+ .quad 0x0142D6625D520008, 0x42D6625D51F86EFA # 203
+ .quad 0x0141414141420008, 0x4141414141414142 # 204
+ .quad 0x013FB013FB020008, 0x3FB013FB013FB014 # 205
+ .quad 0x013E22CBCE4B0008, 0x3E22CBCE4A9027C5 # 206
+ .quad 0x013C995A47BB0008, 0x3C995A47BABE7441 # 207
+ .quad 0x013B13B13B140008, 0x3B13B13B13B13B14 # 208
+ .quad 0x013991C2C1880008, 0x3991C2C187F63372 # 209
+ .quad 0x0138138138140008, 0x3813813813813814 # 210
+ .quad 0x013698DF3DE10008, 0x3698DF3DE0747954 # 211
+ .quad 0x013521CFB2B80008, 0x3521CFB2B78C1353 # 212
+ .quad 0x0133AE45B57C0008, 0x33AE45B57BCB1E0D # 213
+ .quad 0x01323E34A2B20008, 0x323E34A2B10BF66F # 214
+ .quad 0x0130D190130E0008, 0x30D190130D190131 # 215
+ .quad 0x012F684BDA130008, 0x2F684BDA12F684BE # 216
+ .quad 0x012E025C04B90008, 0x2E025C04B8097013 # 217
+ .quad 0x012C9FB4D8130008, 0x2C9FB4D812C9FB4E # 218
+ .quad 0x012B404AD0130008, 0x2B404AD012B404AE # 219
+ .quad 0x0129E4129E420008, 0x29E4129E4129E413 # 220
+ .quad 0x01288B01288C0008, 0x288B01288B01288C # 221
+ .quad 0x0127350B88130008, 0x27350B88127350B9 # 222
+ .quad 0x0125E227080A0008, 0x25E22708092F1139 # 223
+ .quad 0x0124924924930008, 0x2492492492492493 # 224
+ .quad 0x0123456789AC0008, 0x23456789ABCDF013 # 225
+ .quad 0x0121FB7812200008, 0x21FB78121FB78122 # 226
+ .quad 0x0120B470C67D0008, 0x20B470C67C0D8876 # 227
+ .quad 0x011F7047DC120008, 0x1F7047DC11F7047E # 228
+ .quad 0x011E2EF3B3FC0008, 0x1E2EF3B3FB874432 # 229
+ .quad 0x011CF06ADA290008, 0x1CF06ADA2811CF07 # 230
+ .quad 0x011BB4A4046F0008, 0x1BB4A4046ED29012 # 231
+ .quad 0x011A7B9611A80008, 0x1A7B9611A7B9611B # 232
+ .quad 0x0119453808CB0008, 0x19453808CA29C047 # 233
+ .quad 0x0118118118120008, 0x1811811811811812 # 234
+ .quad 0x0116E06894280008, 0x16E0689427378EB5 # 235
+ .quad 0x0115B1E5F7530008, 0x15B1E5F75270D046 # 236
+ .quad 0x011485F0E0AD0008, 0x1485F0E0ACD3B68D # 237
+ .quad 0x01135C81135D0008, 0x135C81135C81135D # 238
+ .quad 0x0112358E75D40008, 0x12358E75D30336A1 # 239
+ .quad 0x0111111111120008, 0x1111111111111112 # 240
+ .quad 0x010FEF010FF00008, 0x0FEF010FEF010FF0 # 241
+ .quad 0x010ECF56BE6A0008, 0x0ECF56BE69C8FDE3 # 242
+ .quad 0x010DB20A88F50008, 0x0DB20A88F469598D # 243
+ .quad 0x010C9714FBCE0008, 0x0C9714FBCDA3AC11 # 244
+ .quad 0x010B7E6EC25A0008, 0x0B7E6EC259DC7936 # 245
+ .quad 0x010A6810A6820008, 0x0A6810A6810A6811 # 246
+ .quad 0x010953F390110008, 0x0953F39010953F3A # 247
+ .quad 0x0108421084220008, 0x0842108421084211 # 248
+ .quad 0x01073260A4800008, 0x073260A47F7C66D0 # 249
+ .quad 0x010624DD2F1B0008, 0x0624DD2F1A9FBE77 # 250
+ .quad 0x0105197F7D740008, 0x05197F7D73404147 # 251
+ .quad 0x0104104104110008, 0x0410410410410411 # 252
+ .quad 0x0103091B51F60008, 0x03091B51F5E1A4EF # 253
+ .quad 0x0102040810210008, 0x0204081020408103 # 254
+ .quad 0x0101010101020008, 0x0101010101010102 # 255
+ .quad 0x800000000000FFC8, 0x0000000000000000 # 256
+ .quad 0x00FF00FF0100FE09, 0xFE01FE01FE01FE02 # 257
+ .quad 0x00FE03F80FE1FC09, 0xFC07F01FC07F01FD # 258
+ .quad 0x00FD08E55010FA09, 0xFA11CAA01FA11CAB # 259
+ .quad 0x00FC0FC0FC10F849, 0xF81F81F81F81F820 # 260
+ .quad 0x00FB18856507F649, 0xF6310ACA0DBB574C # 261
+ .quad 0x00FA232CF253F489, 0xF44659E4A4271580 # 262
+ .quad 0x00F92FB22119F289, 0xF25F644230AB50CB # 263
+ .quad 0x00F83E0F83E1F0C9, 0xF07C1F07C1F07C20 # 264
+ .quad 0x00F74E3FC22DEF09, 0xEE9C7F8458E01EEA # 265
+ .quad 0x00F6603D9810ED09, 0xECC07B301ECC07B4 # 266
+ .quad 0x00F57403D5D1EB49, 0xEAE807ABA01EAE81 # 267
+ .quad 0x00F4898D5F86E989, 0xE9131ABF0B7672A1 # 268
+ .quad 0x00F3A0D52CBBE7C9, 0xE741AA59750E466D # 269
+ .quad 0x00F2B9D64810E649, 0xE573AC901E573ACA # 270
+ .quad 0x00F1D48BCEE1E489, 0xE3A9179DC1A733F5 # 271
+ .quad 0x00F0F0F0F0F1E2C9, 0xE1E1E1E1E1E1E1E2 # 272
+ .quad 0x00F00F00F010E109, 0xE01E01E01E01E01F # 273
+ .quad 0x00EF2EB71FC5DF89, 0xDE5D6E3F8868A471 # 274
+ .quad 0x00EE500EE501DDC9, 0xDCA01DCA01DCA01E # 275
+ .quad 0x00ED7303B5CDDC49, 0xDAE6076B981DAE61 # 276
+ .quad 0x00EC979118F4DAC9, 0xD92F2231E7F89B44 # 277
+ .quad 0x00EBBDB2A5C2D909, 0xD77B654B82C33918 # 278
+ .quad 0x00EAE56403ACD789, 0xD5CAC807572B201E # 279
+ .quad 0x00EA0EA0EA0FD609, 0xD41D41D41D41D41E # 280
+ .quad 0x00E939651FE3D489, 0xD272CA3FC5B1A6B9 # 281
+ .quad 0x00E865AC7B77D309, 0xD0CB58F6EC07432E # 282
+ .quad 0x00E79372E226D189, 0xCF26E5C44BFC61B3 # 283
+ .quad 0x00E6C2B4481DD009, 0xCD85689039B0AD13 # 284
+ .quad 0x00E5F36CB00FCE89, 0xCBE6D9601CBE6D97 # 285
+ .quad 0x00E525982AF8CD09, 0xCA4B3055EE19101D # 286
+ .quad 0x00E45932D7DDCBC9, 0xC8B265AFB8A4201D # 287
+ .quad 0x00E38E38E38FCA49, 0xC71C71C71C71C71D # 288
+ .quad 0x00E2C4A6886BC8C9, 0xC5894D10D4985C20 # 289
+ .quad 0x00E1FC780E20C789, 0xC3F8F01C3F8F01C4 # 290
+ .quad 0x00E135A9C976C609, 0xC26B5392EA01C26C # 291
+ .quad 0x00E070381C0FC4C9, 0xC0E070381C0E0704 # 292
+ .quad 0x00DFAC1F7435C389, 0xBF583EE868D8AEBF # 293
+ .quad 0x00DEE95C4CA1C209, 0xBDD2B899406F74AF # 294
+ .quad 0x00DE27EB2C42C0C9, 0xBC4FD65883E7B3A3 # 295
+ .quad 0x00DD67C8A60EBF89, 0xBACF914C1BACF915 # 296
+ .quad 0x00DCA8F158C8BE49, 0xB951E2B18FF23571 # 297
+ .quad 0x00DBEB61EED2BD09, 0xB7D6C3DDA338B2B0 # 298
+ .quad 0x00DB2F171DF8BBC9, 0xB65E2E3BEEE05232 # 299
+ .quad 0x00DA740DA741BA89, 0xB4E81B4E81B4E81C # 300
+ .quad 0x00D9BA4256C1B949, 0xB37484AD806CDD22 # 301
+ .quad 0x00D901B20365B809, 0xB2036406C80D901C # 302
+ .quad 0x00D84A598ECAB6C9, 0xB094B31D922A3E86 # 303
+ .quad 0x00D79435E50EB589, 0xAF286BCA1AF286BD # 304
+ .quad 0x00D6DF43FCA5B449, 0xADBE87F94905E01B # 305
+ .quad 0x00D62B80D62CB349, 0xAC5701AC5701AC58 # 306
+ .quad 0x00D578E97C40B209, 0xAAF1D2F87EBFCAA2 # 307
+ .quad 0x00D4C77B0354B0C9, 0xA98EF606A63BD81B # 308
+ .quad 0x00D417328988AFC9, 0xA82E65130E158A5C # 309
+ .quad 0x00D3680D3681AE89, 0xA6D01A6D01A6D01B # 310
+ .quad 0x00D2BA083B45AD89, 0xA574107688A4A157 # 311
+ .quad 0x00D20D20D20EAC49, 0xA41A41A41A41A41B # 312
+ .quad 0x00D161543E29AB49, 0xA2C2A87C51CA04E9 # 313
+ .quad 0x00D0B69FCBD3AA49, 0xA16D3F97A4B01A17 # 314
+ .quad 0x00D00D00D00EA909, 0xA01A01A01A01A01B # 315
+ .quad 0x00CF6474A882A809, 0x9EC8E951033D91D3 # 316
+ .quad 0x00CEBCF8BB5CA709, 0x9D79F176B682D396 # 317
+ .quad 0x00CE168A7726A609, 0x9C2D14EE4A1019C3 # 318
+ .quad 0x00CD712752A9A4C9, 0x9AE24EA5510DA484 # 319
+ .quad 0x00CCCCCCCCCDA3C9, 0x999999999999999A # 320
+ .quad 0x00CC29786C77A2C9, 0x9852F0D8EC0FF33E # 321
+ .quad 0x00CB8727C066A1C9, 0x970E4F80CB8727C1 # 322
+ .quad 0x00CAE5D85F1CA0C9, 0x95CBB0BE377AD92B # 323
+ .quad 0x00CA4587E6B89FC9, 0x948B0FCD6E9E0653 # 324
+ .quad 0x00C9A633FCDA9EC9, 0x934C67F9B2CE601A # 325
+ .quad 0x00C907DA4E889DC9, 0x920FB49D0E228D5A # 326
+ .quad 0x00C86A78900D9D09, 0x90D4F120190D4F13 # 327
+ .quad 0x00C7CE0C7CE19C09, 0x8F9C18F9C18F9C19 # 328
+ .quad 0x00C73293D78A9B09, 0x8E6527AF1373F071 # 329
+ .quad 0x00C6980C69819A09, 0x8D3018D3018D3019 # 330
+ .quad 0x00C5FE7403189949, 0x8BFCE8062FF3A019 # 331
+ .quad 0x00C565C87B609849, 0x8ACB90F6BF3A9A38 # 332
+ .quad 0x00C4CE07B00D9749, 0x899C0F601899C0F7 # 333
+ .quad 0x00C4372F855E9689, 0x886E5F0ABB04994C # 334
+ .quad 0x00C3A13DE6059589, 0x87427BCC092B8EE7 # 335
+ .quad 0x00C30C30C30D9489, 0x8618618618618619 # 336
+ .quad 0x00C2780613C193C9, 0x84F00C2780613C04 # 337
+ .quad 0x00C1E4BBD59692C9, 0x83C977AB2BEDD28F # 338
+ .quad 0x00C152500C169209, 0x82A4A0182A4A0183 # 339
+ .quad 0x00C0C0C0C0C19149, 0x8181818181818182 # 340
+ .quad 0x00C0300C03019049, 0x8060180601806019 # 341
+ .quad 0x00BFA02FE80C8F89, 0x7F405FD017F405FE # 342
+ .quad 0x00BF112A8AD38E89, 0x7E225515A4F1D1BA # 343
+ .quad 0x00BE82FA0BE98DC9, 0x7D05F417D05F417E # 344
+ .quad 0x00BDF59C91718D09, 0x7BEB3922E017BEB4 # 345
+ .quad 0x00BD691047088C49, 0x7AD2208E0ECC3546 # 346
+ .quad 0x00BCDD535DB28B49, 0x79BAA6BB6398B6F7 # 347
+ .quad 0x00BC52640BC68A89, 0x78A4C8178A4C8179 # 348
+ .quad 0x00BBC8408CD789C9, 0x77908119AC60D342 # 349
+ .quad 0x00BB3EE721A68909, 0x767DCE434A9B1018 # 350
+ .quad 0x00BAB656100C8849, 0x756CAC201756CAC3 # 351
+ .quad 0x00BA2E8BA2E98789, 0x745D1745D1745D18 # 352
+ .quad 0x00B9A7862A1086C9, 0x734F0C541FE8CB10 # 353
+ .quad 0x00B92143FA378609, 0x724287F46DEBC05D # 354
+ .quad 0x00B89BC36CE48549, 0x713786D9C7C08A75 # 355
+ .quad 0x00B81702E05D8489, 0x702E05C0B81702E1 # 356
+ .quad 0x00B79300B79483C9, 0x6F26016F26016F27 # 357
+ .quad 0x00B70FBB5A1A8309, 0x6E1F76B4337C6CB2 # 358
+ .quad 0x00B68D31340F8249, 0x6D1A62681C860FB1 # 359
+ .quad 0x00B60B60B60C8189, 0x6C16C16C16C16C17 # 360
+ .quad 0x00B58A48551980C9, 0x6B1490AA31A3CFC8 # 361
+ .quad 0x00B509E68A9C8009, 0x6A13CD153729043F # 362
+ .quad 0x00B48A39D4477F49, 0x691473A88D0BFD2E # 363
+ .quad 0x00B40B40B40C7E89, 0x6816816816816817 # 364
+ .quad 0x00B38CF9B00C7E09, 0x6719F36016719F37 # 365
+ .quad 0x00B30F63528A7D49, 0x661EC6A5122F9017 # 366
+ .quad 0x00B2927C29DB7C89, 0x6524F853B4AA339F # 367
+ .quad 0x00B21642C85A7C09, 0x642C8590B21642C9 # 368
+ .quad 0x00B19AB5C4577B49, 0x63356B88AC0DE017 # 369
+ .quad 0x00B11FD3B80C7A89, 0x623FA7701623FA78 # 370
+ .quad 0x00B0A59B418E7A09, 0x614B36831AE93AA7 # 371
+ .quad 0x00B02C0B02C17949, 0x6058160581605817 # 372
+ .quad 0x00AFB321A14A7889, 0x5F66434292DFBE1D # 373
+ .quad 0x00AF3ADDC6817809, 0x5E75BB8D015E75BC # 374
+ .quad 0x00AEC33E1F687749, 0x5D867C3ECE2A534A # 375
+ .quad 0x00AE4C415C9976C9, 0x5C9882B931057263 # 376
+ .quad 0x00ADD5E632407609, 0x5BABCC647FA9150D # 377
+ .quad 0x00AD602B580B7589, 0x5AC056B015AC056C # 378
+ .quad 0x00ACEB0F891F74C9, 0x59D61F123CCAA377 # 379
+ .quad 0x00AC7691840B7449, 0x58ED2308158ED231 # 380
+ .quad 0x00AC02B00AC17389, 0x5805601580560159 # 381
+ .quad 0x00AB8F69E2847309, 0x571ED3C506B39A23 # 382
+ .quad 0x00AB1CBDD3E37249, 0x56397BA7C52E1EC0 # 383
+ .quad 0x00AAAAAAAAAB71C9, 0x5555555555555556 # 384
+ .quad 0x00AA392F35DD7149, 0x54725E6BB82FE016 # 385
+ .quad 0x00A9C84A47A17089, 0x5390948F40FEAC70 # 386
+ .quad 0x00A957FAB5417009, 0x52AFF56A8054ABFE # 387
+ .quad 0x00A8E83F57186F89, 0x51D07EAE2F8151D1 # 388
+ .quad 0x00A87917088F6EC9, 0x50F22E111C4C56DF # 389
+ .quad 0x00A80A80A80B6E49, 0x5015015015015016 # 390
+ .quad 0x00A79C7B16EB6DC9, 0x4F38F62DD4C9A845 # 391
+ .quad 0x00A72F0539796D49, 0x4E5E0A72F0539783 # 392
+ .quad 0x00A6C21DF6E26CC9, 0x4D843BEDC2C4B900 # 393
+ .quad 0x00A655C4392E6C09, 0x4CAB88725AF6E750 # 394
+ .quad 0x00A5E9F6ED356B89, 0x4BD3EDDA68FE0E43 # 395
+ .quad 0x00A57EB502966B09, 0x4AFD6A052BF5A815 # 396
+ .quad 0x00A513FD6BB16A89, 0x4A27FAD76014A280 # 397
+ .quad 0x00A4A9CF1D976A09, 0x49539E3B2D066EA3 # 398
+ .quad 0x00A44029100B6989, 0x4880522014880523 # 399
+ .quad 0x00A3D70A3D7168C9, 0x47AE147AE147AE15 # 400
+ .quad 0x00A36E71A2CC6849, 0x46DCE34596066251 # 401
+ .quad 0x00A3065E3FAF67C9, 0x460CBC7F5CF9A1C1 # 402
+ .quad 0x00A29ECF163C6749, 0x453D9E2C776CA015 # 403
+ .quad 0x00A237C32B1766C9, 0x446F86562D9FAEE5 # 404
+ .quad 0x00A1D13985606649, 0x43A2730ABEE4D1DC # 405
+ .quad 0x00A16B312EA965C9, 0x42D6625D51F86EFA # 406
+ .quad 0x00A105A932F36549, 0x420B5265E595123E # 407
+ .quad 0x00A0A0A0A0A164C9, 0x4141414141414142 # 408
+ .quad 0x00A03C1688746449, 0x40782D10E6566065 # 409
+ .quad 0x009FD809FD8163C9, 0x3FB013FB013FB014 # 410
+ .quad 0x009F747A152E6349, 0x3EE8F42A5AF06DA1 # 411
+ .quad 0x009F1165E72662C9, 0x3E22CBCE4A9027C5 # 412
+ .quad 0x009EAECC8D546249, 0x3D5D991AA75C5BBE # 413
+ .quad 0x009E4CAD23DE6209, 0x3C995A47BABE7441 # 414
+ .quad 0x009DEB06C91A6189, 0x3BD60D923295482D # 415
+ .quad 0x009D89D89D8A6109, 0x3B13B13B13B13B14 # 416
+ .quad 0x009D2921C3D76089, 0x3A524387AC822610 # 417
+ .quad 0x009CC8E160C46009, 0x3991C2C187F63372 # 418
+ .quad 0x009C69169B315F89, 0x38D22D366088DBF4 # 419
+ .quad 0x009C09C09C0A5F09, 0x3813813813813814 # 420
+ .quad 0x009BAADE8E4B5EC9, 0x3755BD1C945EDC20 # 421
+ .quad 0x009B4C6F9EF15E49, 0x3698DF3DE0747954 # 422
+ .quad 0x009AEE72FCFA5DC9, 0x35DCE5F9F2AF821F # 423
+ .quad 0x009A90E7D95C5D49, 0x3521CFB2B78C1353 # 424
+ .quad 0x009A33CD67015D09, 0x34679ACE0134679B # 425
+ .quad 0x0099D722DABE5C89, 0x33AE45B57BCB1E0D # 426
+ .quad 0x00997AE76B515C09, 0x32F5CED6A1DFA014 # 427
+ .quad 0x00991F1A51595B89, 0x323E34A2B10BF66F # 428
+ .quad 0x0098C3BAC7505B49, 0x3187758E9EBB6014 # 429
+ .quad 0x009868C809875AC9, 0x30D190130D190131 # 430
+ .quad 0x00980E4156215A49, 0x301C82AC40260391 # 431
+ .quad 0x0097B425ED0A5A09, 0x2F684BDA12F684BE # 432
+ .quad 0x00975A750FF75989, 0x2EB4EA1FED14B15F # 433
+ .quad 0x0097012E025D5909, 0x2E025C04B8097013 # 434
+ .quad 0x0096A850096B58C9, 0x2D50A012D50A012E # 435
+ .quad 0x00964FDA6C0A5849, 0x2C9FB4D812C9FB4E # 436
+ .quad 0x0095F7CC72D257C9, 0x2BEF98E5A3710FD2 # 437
+ .quad 0x0095A025680A5789, 0x2B404AD012B404AE # 438
+ .quad 0x009548E4979F5709, 0x2A91C92F3C1053FA # 439
+ .quad 0x0094F2094F2156C9, 0x29E4129E4129E413 # 440
+ .quad 0x00949B92DDC15649, 0x293725BB804A4DCA # 441
+ .quad 0x0094458094465609, 0x288B01288B01288C # 442
+ .quad 0x0093EFD1C50F5589, 0x27DFA38A1CE4D6F9 # 443
+ .quad 0x00939A85C40A5509, 0x27350B88127350B9 # 444
+ .quad 0x0093459BE6B154C9, 0x268B37CD601268B4 # 445
+ .quad 0x0092F11384055449, 0x25E22708092F1139 # 446
+ .quad 0x00929CEBF48C5409, 0x2539D7E9177B21CB # 447
+ .quad 0x00924924924A5389, 0x2492492492492493 # 448
+ .quad 0x0091F5BCB8BC5349, 0x23EB79717605B39A # 449
+ .quad 0x0091A2B3C4D652C9, 0x23456789ABCDF013 # 450
+ .quad 0x0091500915015289, 0x22A0122A0122A013 # 451
+ .quad 0x0090FDBC09105209, 0x21FB78121FB78122 # 452
+ .quad 0x0090ABCC024351C9, 0x21579804855E6013 # 453
+ .quad 0x00905A38633F5189, 0x20B470C67C0D8876 # 454
+ .quad 0x00900900900A5109, 0x2012012012012013 # 455
+ .quad 0x008FB823EE0950C9, 0x1F7047DC11F7047E # 456
+ .quad 0x008F67A1E3FE5049, 0x1ECF43C7FB84C2F1 # 457
+ .quad 0x008F1779D9FE5009, 0x1E2EF3B3FB874432 # 458
+ .quad 0x008EC7AB39734FC9, 0x1D8F5672E4ABC83B # 459
+ .quad 0x008E78356D154F49, 0x1CF06ADA2811CF07 # 460
+ .quad 0x008E2917E0E84F09, 0x1C522FC1CE058D9B # 461
+ .quad 0x008DDA5202384E89, 0x1BB4A4046ED29012 # 462
+ .quad 0x008D8BE33F964E49, 0x1B17C67F2BAE2B21 # 463
+ .quad 0x008D3DCB08D44E09, 0x1A7B9611A7B9611B # 464
+ .quad 0x008CF008CF014D89, 0x19E0119E0119E012 # 465
+ .quad 0x008CA29C04664D49, 0x19453808CA29C047 # 466
+ .quad 0x008C55841C824D09, 0x18AB083902BDAB95 # 467
+ .quad 0x008C08C08C094C89, 0x1811811811811812 # 468
+ .quad 0x008BBC50C8DF4C49, 0x1778A191BD684181 # 469
+ .quad 0x008B70344A144C09, 0x16E0689427378EB5 # 470
+ .quad 0x008B246A87E24BC9, 0x1648D50FC3201165 # 471
+ .quad 0x008AD8F2FBAA4B49, 0x15B1E5F75270D046 # 472
+ .quad 0x008A8DCD1FEF4B09, 0x151B9A3FDD5C8CB9 # 473
+ .quad 0x008A42F870574AC9, 0x1485F0E0ACD3B68D # 474
+ .quad 0x0089F87469A34A49, 0x13F0E8D3447241C1 # 475
+ .quad 0x0089AE4089AF4A09, 0x135C81135C81135D # 476
+ .quad 0x0089645C4F6F49C9, 0x12C8B89EDC0ABBD8 # 477
+ .quad 0x00891AC73AEA4989, 0x12358E75D30336A1 # 478
+ .quad 0x0088D180CD3B4909, 0x11A3019A748267AF # 479
+ .quad 0x00888888888948C9, 0x1111111111111112 # 480
+ .quad 0x00883FDDF0094889, 0x107FBBE01107FBBF # 481
+ .quad 0x0087F78087F84849, 0x0FEF010FEF010FF0 # 482
+ .quad 0x0087AF6FD59A4809, 0x0F5EDFAB325A1A81 # 483
+ .quad 0x008767AB5F354789, 0x0ECF56BE69C8FDE3 # 484
+ .quad 0x00872032AC144749, 0x0E40655826010E41 # 485
+ .quad 0x0086D905447B4709, 0x0DB20A88F469598D # 486
+ .quad 0x00869222B1AD46C9, 0x0D24456359E39D2D # 487
+ .quad 0x00864B8A7DE74689, 0x0C9714FBCDA3AC11 # 488
+ .quad 0x0086053C345B4649, 0x0C0A7868B41708E7 # 489
+ .quad 0x0085BF37612D4609, 0x0B7E6EC259DC7936 # 490
+ .quad 0x0085797B91784589, 0x0AF2F722EECB5713 # 491
+ .quad 0x0085340853414549, 0x0A6810A6810A6811 # 492
+ .quad 0x0084EEDD357D4509, 0x09DDBA6AF836010A # 493
+ .quad 0x0084A9F9C80944C9, 0x0953F39010953F3A # 494
+ .quad 0x0084655D9BAC4489, 0x08CABB37565E2011 # 495
+ .quad 0x0084210842114449, 0x0842108421084211 # 496
+ .quad 0x0083DCF94DC84409, 0x07B9F29B8EAE19C2 # 497
+ .quad 0x00839930524043C9, 0x073260A47F7C66D0 # 498
+ .quad 0x008355ACE3C94389, 0x06AB59C7912FB620 # 499
+ .quad 0x0083126E978E4309, 0x0624DD2F1A9FBE77 # 500
+ .quad 0x0082CF75039442C9, 0x059EEA0727586633 # 501
+ .quad 0x00828CBFBEBA4289, 0x05197F7D73404147 # 502
+ .quad 0x00824A4E60B44249, 0x04949CC1664C578A # 503
+ .quad 0x0082082082094209, 0x0410410410410411 # 504
+ .quad 0x0081C635BC1341C9, 0x038C6B78247FBF1D # 505
+ .quad 0x0081848DA8FB4189, 0x03091B51F5E1A4EF # 506
+ .quad 0x00814327E3BA4149, 0x02864FC7729E8C5F # 507
+ .quad 0x0081020408114109, 0x0204081020408103 # 508
+ .quad 0x0080C121B28C40C9, 0x0182436517A37530 # 509
+ .quad 0x0080808080814089, 0x0101010101010102 # 510
+ .quad 0x0080402010094049, 0x0080402010080403 # 511
+ .quad 0x8000000000004009, 0x0000000000000000 # 512
+