mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
554 lines
20 KiB
554 lines
20 KiB
// 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.
|
|
//
|