diff options
Diffstat (limited to 'private/fp32/tran/alpha/trig_rdx.s')
-rw-r--r-- | private/fp32/tran/alpha/trig_rdx.s | 554 |
1 files changed, 554 insertions, 0 deletions
diff --git a/private/fp32/tran/alpha/trig_rdx.s b/private/fp32/tran/alpha/trig_rdx.s new file mode 100644 index 000000000..f38adf3d9 --- /dev/null +++ b/private/fp32/tran/alpha/trig_rdx.s @@ -0,0 +1,554 @@ +// TITLE("Alpha AXP Trigonometric Argument Reduction") +//++ +// +// Copyright (c) 1991, 1993, 1994 Digital Equipment Corporation +// +// Module Name: +// +// trig_rdx.s +// +// Abstract: +// This module implements a routine for the large argument reduction +// and varying octant large argument reduction for sin, cos, tan and +// cot routines. +// +// Author: +// +// Bob Hanek 1-Oct-1991 +// +// Environment: +// +// User mode. +// +// Revision History: +// +// Thomas Van Baak (tvb) 10-Feb-1994 +// +//-- + +#include "ksalpha.h" + +// +// Define stack frame. +// + + .struct 0 +SaveS0: .space 8 // save register s0 +SaveRa: .space 8 // save return address +Temp0: .space 8 // +Temp1: .space 8 // + .space 0 // for 16-byte stack alignment +FrameLength: + +// +// Define lower and upper 32-bit parts of 64-bit double. +// + +#define LowPart 0x0 +#define HighPart 0x4 + + SBTTL("Trigonometric Argument Reduction") + +//++ +// +// int __trig_reduce(double x, int n, double *hi, double *lo) +// +// Routine Description: +// +// The goal of the large argument redution algorithm is to produce a floating +// point value y and an integer o, defined by +// I = nearest_int(x'/(pi/2)) +// y = x' - I*(p/2) +// o = 2*I if y >= 0 +// = 2*I + 1 if y < 0 +// +// Return y in hi and low parts, and return (o+n) * 2^7, with the low 7 bits +// providing a table index. +// +// Arguments: +// +// x (f16) - Supplies the argument value. +// +// (a1) - Supplies the number of bits. +// +// (a2) - Supplies a pointer to the high part of y. +// +// (a3) - Supplies a pointer to the low part of y. +// +// Return Value: +// +// The octant is returned as the function value in v0. +// +//-- + + NESTED_ENTRY(__trig_reduce, FrameLength, ra) + + lda sp, -FrameLength(sp) // allocate stack frame + + stq s0, SaveS0(sp) // save register s0 + stq ra, SaveRa(sp) // save return address + + PROLOGUE_END + + ldah v0, -16(zero) + lda t2, 0x3c2(zero) // Bias adjustment + ldah t3, 0x10(zero) + stt f16, Temp0(sp) // Get the fraction bits as an integer + ldl t0, Temp0 + HighPart(sp)// and the biased exponent field + mov 32, a5 + and t0, v0, v0 + sra v0, 20, t1 // shift tmp_digit + xor t0, v0, v0 + subl t1, t2, t1 // subtract the bias, giving the offset + ldl t2, Temp0(sp) + bis v0, t3, v0 + sra t1, 5, t0 // divide by L=32 + lda t3, __four_over_pi + s4addl t0, t3, t3 // p = &four_over_pi[j]; + lda t4, 4(t3) // Get 'g' digits from the table + and t1, 31, t1 // offset mod 32 + ldl t3, 0(t3) // Get more digits... + ldl t5, 0(t4) + lda t4, 4(t4) + lda t6, 4(t4) + ldl t4, 0(t4) + lda t7, 4(t6) + ldl t6, 0(t6) + cmpult zero, t1, a4 // Ensure 32-bit alignment ... + ldl a0, 0(t7) + lda t7, 4(t7) + beq a4, already_aligned // Branch if already aligned + + zapnot t5, 0xf, t12 + subl a5, t1, t0 // ... by adjusting j + sll t5, t1, t8 // ... and shifting the digits left + srl t12, t0, t5 + // + // Precondition the initial multiply + // + zapnot t4, 0xf, t12 + sll t3, t1, t3 + srl t12, t0, t9 + addl zero, t3, t3 + addl zero, t5, t5 + zapnot t6, 0xf, t12 + addl zero, t8, t8 + addl zero, t9, t9 + bis t3, t5, t3 + bis t8, t9, t5 + srl t12, t0, t8 + zapnot a0, 0xf, t12 + sll t4, t1, t4 + sll t6, t1, t6 + srl t12, t0, t9 + addl zero, t4, t4 + addl zero, t8, t8 + addl zero, t6, t6 + addl zero, t9, t9 + bis t4, t8, t4 + bis t6, t9, t6 +already_aligned: + // + // Multiply the 'f' and 'g' digits. + // + mull t3, t2, t3 + zapnot t6, 0xf, t8 + zapnot t2, 0xf, t9 + zapnot v0, 0xf, t11 + sll a1, 29 a1 + mulq t8, t9, t10 + zapnot t6, 0xf, t8 + zapnot t4, 0xf, t6 + zapnot t2, 0xf, t9 + mulq t8, t11, t8 + zapnot v0, 0xf, t11 + mulq t6, t9, t12 + zapnot t4, 0xf, t6 + zapnot t5, 0xf, t4 + zapnot t2, 0xf, t9 + mulq t6, t11, t6 + ornot zero, zero, t11 + zapnot t11, 0xf, t11 + mulq t4, t9, t4 + srl t10, 32, t9 + zapnot t10, 0xf, t10 + addl zero, t9, t9 + zapnot t9, 0xf, t9 + addl zero, t10, t10 + addq t8, t9, t8 + srl t8, 32, t9 + zapnot t8, 0xf, t8 + addl zero, t9, t9 + zapnot t9, 0xf, t9 + addl zero, t8, t8 + zapnot t8, 0xf, t8 + sll t9, 32, t9 + addq t9, t8, t8 + addq t8, t12, t8 + cmpult t8, t12, t12 + srl t8, 32, t11 + zapnot t12, 0xf, t12 + addl zero, t11, t11 + mull t5, v0, t5 + sll t12, 32, t12 + zapnot t11, 0xf, t11 + zapnot t8, 0xf, t8 + addq t12, t11, t11 + addq t6, t11, t6 + srl t6, 32, t9 + zapnot t6, 0xf, t6 + addl zero, t9, t9 + zapnot t9, 0xf, t9 + addl zero, t6, t6 + zapnot t6, 0xf, t6 + sll t9, 32, t9 + ldah t11, 1(zero) // does w have bit loss? + addq t9, t6, t6 + addq t4, t6, t4 + srl t4, 32, t12 + lda t11, -0x8000(t11) + addl zero, t12, t12 + zapnot t4, 0xf, t4 + addl zero, t8, t8 +// +// Add in n and check to see if there are enough significant bits to obtain +// the final result. If not, generate some more. +// + addl t5, t12, t5 + addl t3, t5, t3 + addl t3, a1, t3 + addl t3, t11, t9 + ldah t12, 0x3fff(zero) + and t9, t12, t9 + ldah t5, 0x4000(zero) + addl zero, t4, t4 + mov zero, t6 // t6 = scale + bne t9, done // break if no loss of significance + + lda t5, -0x2(t5) + cpys f31, f31, f31 + +do_loop: +// +// Get more bits from the table and align them correctly +// + mov a0, a1 // move next_g_digit to a1 + ldl a0, 0(t7) // then load next next_g_digit + lda t7, 4(t7) + beq a4, 30f // aligned offset? + + sll a1, t1, a1 // tmp_digit = + zapnot a0, 0xf, t12 // (tmp_digit << offset) + addl zero, a1, a1 // (next_g_digit >> j) + srl t12, t0, t9 + addl zero, t9, t9 + bis a1, t9, a1 + +// +// Get the next product +// +30: zapnot a1, 0xf, t9 + zapnot t2, 0xf, ra + zapnot t8, 0xf, t8 + mulq t9, ra, ra + zapnot a1, 0xf, t9 + zapnot v0, 0xf, a1 + sll t8, 32, t8 + mulq t9, a1, a1 + insll t10, 4, t9 + addq t9, ra, t9 + cmpult t9, ra, ra + srl t9, 32, s0 + zapnot ra, 0xf, ra + addl zero, s0, s0 + zapnot s0, 0xf, s0 + sll ra, 32, ra + addq t8, s0, s0 + addq s0, ra, s0 + cmpult s0, ra, ra + zapnot t9, 0xf, t9 + addl zero, t9, t9 + addq s0, a1, s0 + cmpult s0, a1, a1 + srl s0, 32, t8 + zapnot s0, 0xf, s0 + addq ra, a1, a1 + addl zero, a1, a1 + addl zero, s0, s0 + addl zero, t8, t8 + beq a1, end_of_get_next_product + mov t4, ra + addl t4, 1, t4 + bne ra, end_of_get_next_product + + addl t3, 1, t3 +end_of_get_next_product: + // + // Check for L bits worth of 0's or 1's. If there are fewer we're done + // + addl t3, 1, a1 + and a1, t5, a1 + ldah ra, 0x2000(zero) + bne a1, done + + addl t4, ra, ra + ldah a1, -0x4000(zero) + and ra, a1, a1 + bne a1, done + // + // Compress the current value of w and increment counter + // + ldah a1, 0x2000(zero) + ldah ra, -0x2000(zero) + lda a1, -1(a1) + and t3, ra, t3 + and t4, a1, t4 + bis t3, t4, t3 + addl t3, t11, ra + mov t8, t4 + ldah t12, 0x3fff(zero) + and ra, t12, ra + addl t6, 32, t6 // adjust scale factor to reflect compression + mov s0, t8 + mov t9, t10 + beq ra, do_loop // while 1 +done: +// +// We want to return the reduced argument between (-pi/4, +pi/4). This +// means that if we are in an even octant, we return pi/4*f, if we are in +// an odd octant we return pi/4*(f - 1). +// +// NOTE: f or f - 1 can be obtained from w by propagating +// the low octant bit to all three octant bits. +// + s4addl t3, zero, a1 + sra a1, 2, s0 + zapnot a1, 0xf, a1 + zapnot t3, 0xf, t3 + srl a1, 31 a1 + srl t3, 22, t3 + addl a1, s0, a1 // tmp_digit + msd of w + zapnot t4, 0xf, t9 + bne a1, 60f +// +// Msd of w is all zeroes or all ones +// Left shift the significant w digits and and bump t6 +// + zapnot t8, 0xf, ra + sll s0, 29, s0 + sll t4, 29, t4 + srl t9, 3, t9 + srl ra, 3, ra + addl zero, s0, s0 + addl zero, t4, t4 + bis s0, t9, s0 + bis t4, ra, t4 + addl t6, 29, t6 + +// +// Now take care of remain zeros or ones. +// +60: stq s0, Temp0(sp) + lda t2, 0x7ff(zero) + ldt f16, Temp0(sp) + lda t5, 0x3fd(zero) + cvtqt f16, f16 + stt f16, Temp1(sp) + ldl t1, Temp1 + HighPart(sp) + sra t1, 20, t1 + and t1, t2, t1 + subl t1, t5, t1 + subl a5, t1, a5 + beq a5, 70f // skip if already aligned + zapnot t4, 0xf, t12 // else left shift significant w digits + sll s0, a5, s0 + srl t12, t1, t7 + zapnot t8, 0xf, t12 + sll t4, a5, t4 + srl t12, t1, t1 + addl zero, s0, s0 + addl zero, t7, t7 + addl zero, t4, t4 + addl zero, t1, t1 + bis s0, t7, s0 + bis t4, t1, t4 + addl t6, a5, t6 +70: // + // Time to convert to floating point and then to radians + // + zapnot t4, 0xf, t4 + stq t4, Temp0(sp) + ldt f0, Temp0(sp) + lda t12, __trig_reduce_t_table + lda a0, 0x3ff(zero) + ldt f16, 0x10(t12) + cvtqt f0, f0 + subl a0, t6, t6 + sll t6, 20 t6 + ldt f11, 0(t12) + stt f31, Temp1(sp) + and s0, 0x3f, t9 + stl t6, Temp1 + HighPart(sp) + zapnot t9, 0xf, ra + ldt f1, Temp1(sp) + xor s0, t9, s0 + ldt f10, 8(t12) + mult f0, f16, f0 + stq ra, Temp0(sp) + mov t3, v0 // Move octant to result + ldt f16, Temp0(sp) + mult f1, f10, f10 + mult f1, f11, f1 + cvtqt f16, f16 + stq s0, Temp1(sp) + ldt f11, Temp1(sp) + cvtqt f11, f11 + addt f16, f0, f0 + addt f1, f10, f12 + mult f11, f10, f10 + mult f11, f1, f1 + mult f0, f12, f0 + addt f0, f10, f0 + addt f1, f0, f16 + // + // Return the high and low parts of the reduced argument + // + stt f16, 0(a2) + subt f16, f1, f1 + subt f1, f0, f0 + stt f0, 0(a3) + ldq s0, SaveS0(sp) // restore register s0 + ldq ra, SaveRa(sp) // restore return address + lda sp, FrameLength(sp) // deallocate stack frame + ret zero, (ra) // return + + .end __trig_reduce + + .rdata + .align 3 + +__trig_reduce_t_table: + .double 1.4629180922209883e-009 // 2^s2*(pi/4) in hi and lo + .double -1.2953828660926890e-017 // pieces + .double 2.3283064365386963e-010 // 2^-BITS_PER_DIGIT + +// +// Define high precision version of 4 over pi, for use by the trig_reduce +// functions to perform accurate range reduction of very large arguments +// for the trigonometric functions. +// + + .rdata + .align 2 + +__four_over_pi: + + .long 0x00000000, 0x00000000, 0x00000000, 0x0000145f, 0x306dc9c8 + .long 0x82a53f84, 0xeafa3ea6, 0x9bb81b6c, 0x52b32788, 0x72083fca + .long 0x2c757bd7, 0x78ac36e4, 0x8dc74849, 0xba5c00c9, 0x25dd413a + .long 0x32439fc3, 0xbd639625, 0x34e7dd10, 0x46bea5d7, 0x68909d33 + .long 0x8e04d68b, 0xefc82732, 0x3ac7306a, 0x673e9390, 0x8bf177bf + .long 0x250763ff, 0x12fffbc0, 0xb301fde5, 0xe2316b41, 0x4da3eda6 + .long 0xcfd9e4f9, 0x6136e9e8, 0xc7ecd3cb, 0xfd45aea4, 0xf758fd7c + .long 0xbe2f67a0, 0xe73ef14a, 0x525d4d7f, 0x6bf623f1, 0xaba10ac0 + .long 0x6608df8f, 0x6d757e19, 0xf784135e, 0x86c3b53c, 0x722c2bdc + .long 0xc3610cb3, 0x30abe294, 0x0d0811bf, 0xfb1009ae, 0x64e620c0 + .long 0xc2aad94e, 0x75192c1c, 0x4f78118d, 0x68f88338, 0x6cf9bb9d + .long 0x0125506b, 0x388ed172, 0xc394dbb5, 0xe89a2ae3, 0x20a7d4bf + .long 0xe0e0a7ef, 0xc67d0658, 0x5bc9f306, 0x4fb77867, 0xa4dded63 + .long 0xcbdf13e7, 0x43e6b95e, 0x4fe3b0fe, 0x24320f8f, 0x848d5f4d + .long 0xdaaee5a6, 0x086762b8, 0xc296b3a3, 0x38785895, 0xa829a58b + .long 0xa00188cf, 0xb0c5ae3c, 0x7358d360, 0x0c466f9a, 0x5692f4f6 + .long 0x9aaaa6fe, 0xc7dae302, 0x147f8ec9, 0xa553ac95, 0x7aee1f0f + .long 0x8c6af60f, 0x5ce2a2ea, 0xc9381b3a, 0xc7671094, 0xf964648e + .long 0xf15ac46a, 0x8b5723e0, 0x03615e3b, 0xf9c33fe6, 0x33ed43cc + .long 0xcc2af328, 0xff759b0f, 0xefd6eca4, 0x513d064c, 0x17fcd9b8 + .long 0x9de126cd, 0x9a87ebba, 0xfbc2dbc7, 0x6b12537b, 0xc5045a5d + .long 0x10c509ab, 0x1c465958, 0xc2dc6119, 0x6fbc0a18, 0x02f4e3be + .long 0x6b7c0306, 0x8265cc42, 0x50602910, 0x6b71deaf, 0xf615be5d + .long 0x23c86949, 0x1a6ce21b, 0x1bb5484b, 0xf5d9cc2d, 0x54850156 + .long 0x933a7e54, 0xc0cfeeeb, 0x90785471, 0x078c2f0e, 0x714b5195 + .long 0xf7baedec, 0x74c5b977, 0xfe9df031, 0xacf824c8, 0xb94aa6db + .long 0x395a5505, 0x11ac384e, 0xf9224284, 0xc09368c2, 0x588b3888 + .long 0x98b91236, 0x49be62e0, 0x15a87a9c, 0xa925221a, 0xbfbf97c0 + .long 0x199283dd, 0xd9ce1ea7, 0xc2701e3d, 0x987cf665, 0x1f18f280 + .long 0xb267ce38, 0x366125de, 0x68a17382, 0x510f6415, 0x73f6a5d8 + .long 0x5248e5e6, 0x4f6daaa1, 0x9214ee43, 0xfced72d9, 0x662942cf + .long 0x3c4f2831, 0x3bfe92f2, 0x9d109cdc, 0x52e6332d, 0x7db106cb + .long 0xebe1dfb7, 0x7693490d, 0x948ce84e, 0x4e264bb1, 0xb702b3e1 + .long 0x3cb784a6, 0x31a72e9e, 0xe380a600, 0x2181ad01, 0x096b1dc5 + .long 0x921548e0, 0x5cee849a, 0xd7b4cfbe, 0xee490ddd, 0xe2d3f4d2 + .long 0x91ded236, 0x8a2a7a3e, 0x4159e673, 0x040fc97e, 0xad0c764b + .long 0xe7dba06b, 0xa80ff130, 0xa52a4ab8, 0x0c86e21b, 0x0da64906 + .long 0x4ea98b7a, 0x8e29cdca, 0x88b82121, 0x6d3ea55a, 0xacc293a0 + .long 0xe4ea008b, 0xbb677698, 0xaedd42ff, 0x30efad69, 0x3744e3a5 + .long 0x2d32d599, 0x98ca8295, 0xad5c5211, 0x3b310a0e, 0x4597d480 + .long 0x9280eeee, 0x061e64ff, 0x80150e3d, 0x49384cc7, 0xbc0c907b + .long 0xb2f2e7f4, 0x7fb28871, 0x90c1bbc8, 0x2633a732, 0x518e1bbc + .long 0xf6e2e77b, 0xe10566e2, 0xb4100b92, 0x700b5242, 0x221b1d01 + .long 0xf5f00d89, 0x7ffb61f2, 0x070ec30b, 0x22b4ac57, 0x796c3731 + .long 0x38f7a802, 0x009e5a44, 0xeea93ed6, 0xdd77645b, 0x75428145 + .long 0xe4d12ed0, 0x6c866761, 0x235281d5, 0x474a3854, 0x63b5ddb5 + .long 0xe244cb89, 0xb84db38f, 0x45b2ead8, 0x1067e07e, 0xde013188 + .long 0x0573262d, 0xa0f68722, 0xa4018b78, 0x7b18925e, 0xa975b8d4 + .long 0xb949d9a6, 0xf4e6d53c, 0xd292556d, 0x085bbbcc, 0x633df18e + .long 0xca516d06, 0xfb7f9574, 0x35c622bb, 0xf435c01b, 0x5f618cc9 + .long 0xac96e0bd, 0xa60ca537, 0xeacae75f, 0xe8f73f2d, 0x5e77cebb + .long 0xf2650610, 0x157ed18c, 0xc2b96080, 0xc45f43bc, 0x9b349667 + .long 0xb1e36ae1, 0x39a6dd28, 0x49d497c2, 0x76a46663, 0x555e150c + .long 0xa9f4b83a, 0x41e7e179, 0xaf0b6edf, 0x2460916f, 0x6e42f12a + .long 0x74d8dc4d, 0xcde01d7d, 0xeb095376, 0xfb58974c, 0xd559f9ee + .long 0xc3a05a25, 0xbe363833, 0x318ef5b8, 0x7b4910d4, 0x0bbefe90 + .long 0x18c5fe15, 0x935d9bb7, 0x8b87edbb, 0xda03f8f2, 0x16db6547 + .long 0x44b47355, 0xe0126a75, 0xa08af6d6, 0x85a52fd0, 0x0974e0fb + .long 0x41d54ed4, 0x2b2f6542, 0x42c5b6fb, 0x9fbcbf5f, 0xdb713fb7 + .long 0xd12d8edc, 0x9f9520ce, 0x1007c2ad, 0xd0bff0ff, 0xa0e7c506 + .long 0x6cec30c3, 0x055d57a9, 0xb5fcf66d, 0xcdb1e72c, 0xf2ab77e6 + .long 0x291af082, 0xdbe60865, 0xb8e6ac24, 0xb9ce1937, 0x19661fad + .long 0x97f44014, 0x9c8d80b4, 0x1bab48ed, 0xe43a424c, 0x508b9729 + .long 0x2c2e1c0a, 0xcd602a53, 0x26eaaa16, 0xfaa3d89e, 0x266bedc2 + .long 0x7c860bb5, 0x25d0b876, 0x43a6c654, 0x3496e11a, 0x963d443e + .long 0xe2dc8d31, 0xeeffe4f0, 0x006185a8, 0x11b419a9, 0xf334a41a + .long 0x7456614b, 0xa5e85f36, 0x997b423a, 0x17cfb83b, 0x7377a2f5 + .long 0x7034594b, 0x8d4102ea, 0xa5caa004, 0xfe028ff0, 0xc0fc2c81 + .long 0x6291a832, 0xdbd7d0e5, 0x5fbb56c4, 0xad66912f, 0x7fde60b3 + .long 0xd7f729ed, 0x4d150549, 0x4b5889f7, 0x9f05b30b, 0x5af2b8fe + .long 0x91a9a1b4, 0xc7440bea, 0xf49627e2, 0x92a71000, 0x241990db + .long 0xae36dbd9, 0x3eac17e2, 0x2ca9ad60, 0xe0359611, 0x9a181649 + .long 0x0aaa21df, 0x63d86e52, 0xa760d466, 0xa8180f7b, 0x80d988bc + .long 0x1f4529d9, 0x195ac83e, 0x7d1bcc8f, 0x9b0c9366, 0x37db3872 + .long 0xf49a8b0e, 0xf8bc6d22, 0x7b5e0787, 0x5748c308, 0xcbeeaabe + .long 0xb7ba58d2, 0x4dcba5d5, 0x9da881c8, 0x47c390f8, 0x8c3d3fa5 + .long 0x3e7adcf9, 0x4f8446b2, 0x2df8bc01, 0x11bafffc, 0x4d4dd8df + .long 0xb6182112, 0x6e8baf96, 0x55ad73ad, 0xd9af6e47, 0xcd4238d5 + .long 0x39fefbee, 0x65375936, 0xaa2016e1, 0xb65c4497, 0x4e8c0fbc + .long 0xb15b0e85, 0x82a1a183, 0x10328ccf, 0xc2c5202e, 0xcf53f7df + .long 0xbfbde8aa, 0xc6cfdb22, 0x7b3d9737, 0x517f92f8, 0x84f50638 + .long 0x6dde26d8, 0xb28ad51b, 0x16b51681, 0xd999e5b1, 0x22468aed + .long 0xf12ac59c, 0x79d33724, 0x1ad54bcd, 0x738547d9, 0x8be22941 + .long 0x7fbf7e9c, 0x2da771c5, 0x90dc509a, 0x9d35369f, 0x9a3dddf9 + .long 0x26a5cc27, 0x25e88427, 0x191b2361, 0x5f902d49, 0x5f7b0385 + .long 0xf0968a71, 0x9329d984, 0x4a9b8aa5, 0x5ad8d812, 0xc321770e + .long 0x034c92ad, 0x2c0b44dd, 0xca47e1e2, 0x2fe236be, 0x9eb97f85 + .long 0xb7869dd7, 0x86998bbd, 0x0c0bdbb3, 0x71ccfde6, 0x725702f9 + .long 0x336b0c37, 0x8afc38d0, 0x6a2207db, 0x090e3bbb, 0xa385b423 + .long 0x15e8c584, 0x3afe6b33, 0x0f5b380a, 0x93df50c9, 0xff80cad5 + .long 0xcf3ca6c4, 0x512455a7, 0x1b926cf5, 0x5d0aa704, 0xd0537cf9 + .long 0x5481aa36, 0x267321da, 0xf52900ad, 0x3e164cb4, 0xf10ff2e9 + .long 0x9106da3f, 0x36724429, 0x504f6439, 0xf31b93e8, 0x0aa8fb87 + .long 0x4e9c285d, 0x6cfbf3bf, 0xcbfa8bd4, 0x8cef6f55, 0x97545eca + .long 0xa471056a, 0xb748210d, 0xcb30c544, 0x3068e73c, 0xdc713a93 + .long 0xdca81f69, 0x3d2adff9, 0x41e3914b, 0x38a57f52, 0x98b83a79 + .long 0xf8a1f5cb, 0x5b70d8a8, 0xec4870a7, 0x70c4328f, 0x2590ec22 + .long 0x0f698543, 0x45900257, 0xe87204d1, 0x11278f1c, 0x98950f7b + .long 0x7cb84758, 0x9d5e84d1, 0x4cfef7f2, 0x41a5746c, 0xb63267a1 + .long 0x6f97bb8a, 0x348c7ba4, 0xfbbc2d23, 0x329352a5, 0x350519cd + .long 0x169da124, 0x13e89953, 0x09cc704e, 0x046f8fc6, 0x5721f1de + .long 0xb4fceac2, 0x811e2425, 0x53b6a9af, 0xcdea2334, 0xb57f36ba + .long 0xdbf04c3b, 0xb2c046c2, 0xd3e75894, 0x34506dbd, 0xae4f51a7 + .long 0x3537104b, 0x864d6b64, 0xe8dda680, 0x0ee01a4a, 0xbe9f89ab + .long 0x20300e3c, 0x1c27f136, 0x52be6c95, 0x1e35d4e9 + +// +// End of table. +// |