1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global __ieee754_sqrt
__ieee754_sqrt:
/* 801D45E8 001D0248 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 801D45EC 001D024C D8 21 00 08 */ stfd f1, 8(r1)
/* 801D45F0 001D0250 80 C1 00 08 */ lwz r6, 8(r1)
/* 801D45F4 001D0254 80 01 00 0C */ lwz r0, 0xc(r1)
/* 801D45F8 001D0258 54 C3 00 56 */ rlwinm r3, r6, 0, 1, 0xb
/* 801D45FC 001D025C 3C 63 80 10 */ addis r3, r3, 0x8010
/* 801D4600 001D0260 28 03 00 00 */ cmplwi r3, 0
/* 801D4604 001D0264 40 82 00 18 */ bne lbl_801D461C
/* 801D4608 001D0268 FC 01 00 72 */ fmul f0, f1, f1
/* 801D460C 001D026C 38 00 00 21 */ li r0, 0x21
/* 801D4610 001D0270 90 0D 9F C8 */ stw r0, lbl_8063F288-_SDA_BASE_(r13)
/* 801D4614 001D0274 FC 21 00 2A */ fadd f1, f1, f0
/* 801D4618 001D0278 48 00 02 10 */ b lbl_801D4828
lbl_801D461C:
/* 801D461C 001D027C 2C 86 00 00 */ cmpwi cr1, r6, 0
/* 801D4620 001D0280 41 85 00 2C */ bgt cr1, lbl_801D464C
/* 801D4624 001D0284 54 C3 00 7E */ clrlwi r3, r6, 1
/* 801D4628 001D0288 7C 03 1B 79 */ or. r3, r0, r3
/* 801D462C 001D028C 40 82 00 08 */ bne lbl_801D4634
/* 801D4630 001D0290 48 00 01 F8 */ b lbl_801D4828
lbl_801D4634:
/* 801D4634 001D0294 40 84 00 18 */ bge cr1, lbl_801D464C
/* 801D4638 001D0298 38 00 00 21 */ li r0, 0x21
/* 801D463C 001D029C 3C 60 80 64 */ lis r3, lbl_8063D6B8@ha
/* 801D4640 001D02A0 90 0D 9F C8 */ stw r0, lbl_8063F288-_SDA_BASE_(r13)
/* 801D4644 001D02A4 C0 23 D6 B8 */ lfs f1, lbl_8063D6B8@l(r3)
/* 801D4648 001D02A8 48 00 01 E0 */ b lbl_801D4828
lbl_801D464C:
/* 801D464C 001D02AC 7C C3 A6 71 */ srawi. r3, r6, 0x14
/* 801D4650 001D02B0 40 82 00 50 */ bne lbl_801D46A0
/* 801D4654 001D02B4 48 00 00 14 */ b lbl_801D4668
lbl_801D4658:
/* 801D4658 001D02B8 54 04 AA FE */ srwi r4, r0, 0xb
/* 801D465C 001D02BC 54 00 A8 14 */ slwi r0, r0, 0x15
/* 801D4660 001D02C0 7C C6 23 78 */ or r6, r6, r4
/* 801D4664 001D02C4 38 63 FF EB */ addi r3, r3, -21
lbl_801D4668:
/* 801D4668 001D02C8 2C 06 00 00 */ cmpwi r6, 0
/* 801D466C 001D02CC 41 82 FF EC */ beq lbl_801D4658
/* 801D4670 001D02D0 38 E0 00 00 */ li r7, 0
/* 801D4674 001D02D4 48 00 00 0C */ b lbl_801D4680
lbl_801D4678:
/* 801D4678 001D02D8 54 C6 08 3C */ slwi r6, r6, 1
/* 801D467C 001D02DC 38 E7 00 01 */ addi r7, r7, 1
lbl_801D4680:
/* 801D4680 001D02E0 54 C4 02 D7 */ rlwinm. r4, r6, 0, 0xb, 0xb
/* 801D4684 001D02E4 41 82 FF F4 */ beq lbl_801D4678
/* 801D4688 001D02E8 20 87 00 20 */ subfic r4, r7, 0x20
/* 801D468C 001D02EC 38 A7 FF FF */ addi r5, r7, -1
/* 801D4690 001D02F0 7C 04 24 30 */ srw r4, r0, r4
/* 801D4694 001D02F4 7C 00 38 30 */ slw r0, r0, r7
/* 801D4698 001D02F8 7C 65 18 50 */ subf r3, r5, r3
/* 801D469C 001D02FC 7C C6 23 78 */ or r6, r6, r4
lbl_801D46A0:
/* 801D46A0 001D0300 38 83 FC 01 */ addi r4, r3, -1023
/* 801D46A4 001D0304 54 C5 03 3E */ clrlwi r5, r6, 0xc
/* 801D46A8 001D0308 54 84 07 FF */ clrlwi. r4, r4, 0x1f
/* 801D46AC 001D030C 64 A6 00 10 */ oris r6, r5, 0x10
/* 801D46B0 001D0310 41 82 00 14 */ beq lbl_801D46C4
/* 801D46B4 001D0314 54 05 0F FE */ srwi r5, r0, 0x1f
/* 801D46B8 001D0318 7C 86 32 14 */ add r4, r6, r6
/* 801D46BC 001D031C 7C C5 22 14 */ add r6, r5, r4
/* 801D46C0 001D0320 7C 00 02 14 */ add r0, r0, r0
lbl_801D46C4:
/* 801D46C4 001D0324 54 05 0F FE */ srwi r5, r0, 0x1f
/* 801D46C8 001D0328 7C 86 32 14 */ add r4, r6, r6
/* 801D46CC 001D032C 7C C5 22 14 */ add r6, r5, r4
/* 801D46D0 001D0330 7C 00 02 14 */ add r0, r0, r0
/* 801D46D4 001D0334 39 20 00 00 */ li r9, 0
/* 801D46D8 001D0338 39 60 00 00 */ li r11, 0
/* 801D46DC 001D033C 39 40 00 00 */ li r10, 0
/* 801D46E0 001D0340 39 80 00 00 */ li r12, 0
/* 801D46E4 001D0344 3C E0 00 20 */ lis r7, 0x20
/* 801D46E8 001D0348 48 00 00 30 */ b lbl_801D4718
lbl_801D46EC:
/* 801D46EC 001D034C 7C 8B 3A 14 */ add r4, r11, r7
/* 801D46F0 001D0350 7C 04 30 00 */ cmpw r4, r6
/* 801D46F4 001D0354 41 81 00 10 */ bgt lbl_801D4704
/* 801D46F8 001D0358 7D 64 3A 14 */ add r11, r4, r7
/* 801D46FC 001D035C 7C C4 30 50 */ subf r6, r4, r6
/* 801D4700 001D0360 7D 8C 3A 14 */ add r12, r12, r7
lbl_801D4704:
/* 801D4704 001D0364 54 05 0F FE */ srwi r5, r0, 0x1f
/* 801D4708 001D0368 7C 86 32 14 */ add r4, r6, r6
/* 801D470C 001D036C 7C C5 22 14 */ add r6, r5, r4
/* 801D4710 001D0370 7C 00 02 14 */ add r0, r0, r0
/* 801D4714 001D0374 54 E7 F8 7E */ srwi r7, r7, 1
lbl_801D4718:
/* 801D4718 001D0378 2C 07 00 00 */ cmpwi r7, 0
/* 801D471C 001D037C 40 82 FF D0 */ bne lbl_801D46EC
/* 801D4720 001D0380 3C E0 80 00 */ lis r7, 0x8000
/* 801D4724 001D0384 48 00 00 6C */ b lbl_801D4790
lbl_801D4728:
/* 801D4728 001D0388 7C 0B 30 00 */ cmpw r11, r6
/* 801D472C 001D038C 7D 65 5B 78 */ mr r5, r11
/* 801D4730 001D0390 7D 09 3A 14 */ add r8, r9, r7
/* 801D4734 001D0394 41 80 00 10 */ blt lbl_801D4744
/* 801D4738 001D0398 40 82 00 44 */ bne lbl_801D477C
/* 801D473C 001D039C 7C 08 00 40 */ cmplw r8, r0
/* 801D4740 001D03A0 41 81 00 3C */ bgt lbl_801D477C
lbl_801D4744:
/* 801D4744 001D03A4 55 04 00 00 */ rlwinm r4, r8, 0, 0, 0
/* 801D4748 001D03A8 7D 28 3A 14 */ add r9, r8, r7
/* 801D474C 001D03AC 3C 84 80 00 */ addis r4, r4, 0x8000
/* 801D4750 001D03B0 28 04 00 00 */ cmplwi r4, 0
/* 801D4754 001D03B4 40 82 00 10 */ bne lbl_801D4764
/* 801D4758 001D03B8 55 24 00 01 */ rlwinm. r4, r9, 0, 0, 0
/* 801D475C 001D03BC 40 82 00 08 */ bne lbl_801D4764
/* 801D4760 001D03C0 39 6B 00 01 */ addi r11, r11, 1
lbl_801D4764:
/* 801D4764 001D03C4 7C 00 40 40 */ cmplw r0, r8
/* 801D4768 001D03C8 7C C5 30 50 */ subf r6, r5, r6
/* 801D476C 001D03CC 40 80 00 08 */ bge lbl_801D4774
/* 801D4770 001D03D0 38 C6 FF FF */ addi r6, r6, -1
lbl_801D4774:
/* 801D4774 001D03D4 7C 08 00 50 */ subf r0, r8, r0
/* 801D4778 001D03D8 7D 4A 3A 14 */ add r10, r10, r7
lbl_801D477C:
/* 801D477C 001D03DC 54 05 0F FE */ srwi r5, r0, 0x1f
/* 801D4780 001D03E0 7C 86 32 14 */ add r4, r6, r6
/* 801D4784 001D03E4 7C C5 22 14 */ add r6, r5, r4
/* 801D4788 001D03E8 7C 00 02 14 */ add r0, r0, r0
/* 801D478C 001D03EC 54 E7 F8 7E */ srwi r7, r7, 1
lbl_801D4790:
/* 801D4790 001D03F0 2C 07 00 00 */ cmpwi r7, 0
/* 801D4794 001D03F4 40 82 FF 94 */ bne lbl_801D4728
/* 801D4798 001D03F8 7C C0 03 79 */ or. r0, r6, r0
/* 801D479C 001D03FC 41 82 00 58 */ beq lbl_801D47F4
/* 801D47A0 001D0400 C8 02 95 D8 */ lfd f0, lbl_80641BD8-_SDA2_BASE_(r2)
/* 801D47A4 001D0404 FC 00 00 40 */ fcmpo cr0, f0, f0
/* 801D47A8 001D0408 D8 01 00 10 */ stfd f0, 0x10(r1)
/* 801D47AC 001D040C 4C 41 13 82 */ cror 2, 1, 2
/* 801D47B0 001D0410 40 82 00 44 */ bne lbl_801D47F4
/* 801D47B4 001D0414 3C 0A 00 01 */ addis r0, r10, 1
/* 801D47B8 001D0418 D8 01 00 10 */ stfd f0, 0x10(r1)
/* 801D47BC 001D041C 28 00 FF FF */ cmplwi r0, 0xffff
/* 801D47C0 001D0420 40 82 00 10 */ bne lbl_801D47D0
/* 801D47C4 001D0424 39 40 00 00 */ li r10, 0
/* 801D47C8 001D0428 39 8C 00 01 */ addi r12, r12, 1
/* 801D47CC 001D042C 48 00 00 28 */ b lbl_801D47F4
lbl_801D47D0:
/* 801D47D0 001D0430 FC 00 00 40 */ fcmpo cr0, f0, f0
/* 801D47D4 001D0434 40 81 00 18 */ ble lbl_801D47EC
/* 801D47D8 001D0438 28 00 FF FE */ cmplwi r0, 0xfffe
/* 801D47DC 001D043C 40 82 00 08 */ bne lbl_801D47E4
/* 801D47E0 001D0440 39 8C 00 01 */ addi r12, r12, 1
lbl_801D47E4:
/* 801D47E4 001D0444 39 4A 00 02 */ addi r10, r10, 2
/* 801D47E8 001D0448 48 00 00 0C */ b lbl_801D47F4
lbl_801D47EC:
/* 801D47EC 001D044C 55 40 07 FE */ clrlwi r0, r10, 0x1f
/* 801D47F0 001D0450 7D 4A 02 14 */ add r10, r10, r0
lbl_801D47F4:
/* 801D47F4 001D0454 55 80 07 FE */ clrlwi r0, r12, 0x1f
/* 801D47F8 001D0458 7D 84 0E 70 */ srawi r4, r12, 1
/* 801D47FC 001D045C 2C 00 00 01 */ cmpwi r0, 1
/* 801D4800 001D0460 55 45 F8 7E */ srwi r5, r10, 1
/* 801D4804 001D0464 3C 84 3F E0 */ addis r4, r4, 0x3fe0
/* 801D4808 001D0468 40 82 00 08 */ bne lbl_801D4810
/* 801D480C 001D046C 64 A5 80 00 */ oris r5, r5, 0x8000
lbl_801D4810:
/* 801D4810 001D0470 38 03 FC 01 */ addi r0, r3, -1023
/* 801D4814 001D0474 90 A1 00 14 */ stw r5, 0x14(r1)
/* 801D4818 001D0478 54 00 98 16 */ rlwinm r0, r0, 0x13, 0, 0xb
/* 801D481C 001D047C 7C 84 02 14 */ add r4, r4, r0
/* 801D4820 001D0480 90 81 00 10 */ stw r4, 0x10(r1)
/* 801D4824 001D0484 C8 21 00 10 */ lfd f1, 0x10(r1)
lbl_801D4828:
/* 801D4828 001D0488 38 21 00 20 */ addi r1, r1, 0x20
/* 801D482C 001D048C 4E 80 00 20 */ blr
|