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
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global __ieee754_fmod
__ieee754_fmod:
/* 801D13C8 001CD028 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 801D13CC 001CD02C D8 41 00 10 */ stfd f2, 0x10(r1)
/* 801D13D0 001CD030 D8 21 00 08 */ stfd f1, 8(r1)
/* 801D13D4 001CD034 80 01 00 10 */ lwz r0, 0x10(r1)
/* 801D13D8 001CD038 80 E1 00 08 */ lwz r7, 8(r1)
/* 801D13DC 001CD03C 80 C1 00 14 */ lwz r6, 0x14(r1)
/* 801D13E0 001CD040 54 00 00 7E */ clrlwi r0, r0, 1
/* 801D13E4 001CD044 54 E4 00 00 */ rlwinm r4, r7, 0, 0, 0
/* 801D13E8 001CD048 80 A1 00 0C */ lwz r5, 0xc(r1)
/* 801D13EC 001CD04C 7C 03 33 79 */ or. r3, r0, r6
/* 801D13F0 001CD050 7C E8 22 78 */ xor r8, r7, r4
/* 801D13F4 001CD054 41 82 00 28 */ beq lbl_801D141C
/* 801D13F8 001CD058 3C E0 7F F0 */ lis r7, 0x7ff0
/* 801D13FC 001CD05C 7C 08 38 00 */ cmpw r8, r7
/* 801D1400 001CD060 40 80 00 1C */ bge lbl_801D141C
/* 801D1404 001CD064 7C 66 00 D0 */ neg r3, r6
/* 801D1408 001CD068 7C C3 1B 78 */ or r3, r6, r3
/* 801D140C 001CD06C 54 63 0F FE */ srwi r3, r3, 0x1f
/* 801D1410 001CD070 7C 03 1B 78 */ or r3, r0, r3
/* 801D1414 001CD074 7C 03 38 40 */ cmplw r3, r7
/* 801D1418 001CD078 40 81 00 10 */ ble lbl_801D1428
lbl_801D141C:
/* 801D141C 001CD07C FC 01 00 B2 */ fmul f0, f1, f2
/* 801D1420 001CD080 FC 20 00 24 */ fdiv f1, f0, f0
/* 801D1424 001CD084 48 00 02 CC */ b lbl_801D16F0
lbl_801D1428:
/* 801D1428 001CD088 7C 08 00 00 */ cmpw r8, r0
/* 801D142C 001CD08C 41 81 00 2C */ bgt lbl_801D1458
/* 801D1430 001CD090 41 80 02 C0 */ blt lbl_801D16F0
/* 801D1434 001CD094 7C 05 30 40 */ cmplw r5, r6
/* 801D1438 001CD098 40 80 00 08 */ bge lbl_801D1440
/* 801D143C 001CD09C 48 00 02 B4 */ b lbl_801D16F0
lbl_801D1440:
/* 801D1440 001CD0A0 40 82 00 18 */ bne lbl_801D1458
/* 801D1444 001CD0A4 3C 60 80 40 */ lis r3, lbl_803FD328@ha
/* 801D1448 001CD0A8 54 80 27 38 */ rlwinm r0, r4, 4, 0x1c, 0x1c
/* 801D144C 001CD0AC 38 63 D3 28 */ addi r3, r3, lbl_803FD328@l
/* 801D1450 001CD0B0 7C 23 04 AE */ lfdx f1, r3, r0
/* 801D1454 001CD0B4 48 00 02 9C */ b lbl_801D16F0
lbl_801D1458:
/* 801D1458 001CD0B8 3C 60 00 10 */ lis r3, 0x10
/* 801D145C 001CD0BC 7C 08 18 00 */ cmpw r8, r3
/* 801D1460 001CD0C0 40 80 00 4C */ bge lbl_801D14AC
/* 801D1464 001CD0C4 2C 08 00 00 */ cmpwi r8, 0
/* 801D1468 001CD0C8 40 82 00 24 */ bne lbl_801D148C
/* 801D146C 001CD0CC 7C A3 2B 78 */ mr r3, r5
/* 801D1470 001CD0D0 39 60 FB ED */ li r11, -1043
/* 801D1474 001CD0D4 48 00 00 0C */ b lbl_801D1480
lbl_801D1478:
/* 801D1478 001CD0D8 54 63 08 3C */ slwi r3, r3, 1
/* 801D147C 001CD0DC 39 6B FF FF */ addi r11, r11, -1
lbl_801D1480:
/* 801D1480 001CD0E0 2C 03 00 00 */ cmpwi r3, 0
/* 801D1484 001CD0E4 41 81 FF F4 */ bgt lbl_801D1478
/* 801D1488 001CD0E8 48 00 00 2C */ b lbl_801D14B4
lbl_801D148C:
/* 801D148C 001CD0EC 55 03 58 28 */ slwi r3, r8, 0xb
/* 801D1490 001CD0F0 39 60 FC 02 */ li r11, -1022
/* 801D1494 001CD0F4 48 00 00 0C */ b lbl_801D14A0
lbl_801D1498:
/* 801D1498 001CD0F8 54 63 08 3C */ slwi r3, r3, 1
/* 801D149C 001CD0FC 39 6B FF FF */ addi r11, r11, -1
lbl_801D14A0:
/* 801D14A0 001CD100 2C 03 00 00 */ cmpwi r3, 0
/* 801D14A4 001CD104 41 81 FF F4 */ bgt lbl_801D1498
/* 801D14A8 001CD108 48 00 00 0C */ b lbl_801D14B4
lbl_801D14AC:
/* 801D14AC 001CD10C 7D 03 A6 70 */ srawi r3, r8, 0x14
/* 801D14B0 001CD110 39 63 FC 01 */ addi r11, r3, -1023
lbl_801D14B4:
/* 801D14B4 001CD114 3C 60 00 10 */ lis r3, 0x10
/* 801D14B8 001CD118 7C 00 18 00 */ cmpw r0, r3
/* 801D14BC 001CD11C 40 80 00 4C */ bge lbl_801D1508
/* 801D14C0 001CD120 2C 00 00 00 */ cmpwi r0, 0
/* 801D14C4 001CD124 40 82 00 24 */ bne lbl_801D14E8
/* 801D14C8 001CD128 7C C7 33 78 */ mr r7, r6
/* 801D14CC 001CD12C 38 60 FB ED */ li r3, -1043
/* 801D14D0 001CD130 48 00 00 0C */ b lbl_801D14DC
lbl_801D14D4:
/* 801D14D4 001CD134 54 E7 08 3C */ slwi r7, r7, 1
/* 801D14D8 001CD138 38 63 FF FF */ addi r3, r3, -1
lbl_801D14DC:
/* 801D14DC 001CD13C 2C 07 00 00 */ cmpwi r7, 0
/* 801D14E0 001CD140 41 81 FF F4 */ bgt lbl_801D14D4
/* 801D14E4 001CD144 48 00 00 2C */ b lbl_801D1510
lbl_801D14E8:
/* 801D14E8 001CD148 54 07 58 28 */ slwi r7, r0, 0xb
/* 801D14EC 001CD14C 38 60 FC 02 */ li r3, -1022
/* 801D14F0 001CD150 48 00 00 0C */ b lbl_801D14FC
lbl_801D14F4:
/* 801D14F4 001CD154 54 E7 08 3C */ slwi r7, r7, 1
/* 801D14F8 001CD158 38 63 FF FF */ addi r3, r3, -1
lbl_801D14FC:
/* 801D14FC 001CD15C 2C 07 00 00 */ cmpwi r7, 0
/* 801D1500 001CD160 41 81 FF F4 */ bgt lbl_801D14F4
/* 801D1504 001CD164 48 00 00 0C */ b lbl_801D1510
lbl_801D1508:
/* 801D1508 001CD168 7C 03 A6 70 */ srawi r3, r0, 0x14
/* 801D150C 001CD16C 38 63 FC 01 */ addi r3, r3, -1023
lbl_801D1510:
/* 801D1510 001CD170 2C 0B FC 02 */ cmpwi r11, -1022
/* 801D1514 001CD174 41 80 00 10 */ blt lbl_801D1524
/* 801D1518 001CD178 55 07 03 3E */ clrlwi r7, r8, 0xc
/* 801D151C 001CD17C 64 E9 00 10 */ oris r9, r7, 0x10
/* 801D1520 001CD180 48 00 00 34 */ b lbl_801D1554
lbl_801D1524:
/* 801D1524 001CD184 21 2B FC 02 */ subfic r9, r11, -1022
/* 801D1528 001CD188 2C 09 00 1F */ cmpwi r9, 0x1f
/* 801D152C 001CD18C 41 81 00 1C */ bgt lbl_801D1548
/* 801D1530 001CD190 20 E9 00 20 */ subfic r7, r9, 0x20
/* 801D1534 001CD194 7D 08 48 30 */ slw r8, r8, r9
/* 801D1538 001CD198 7C A7 3C 30 */ srw r7, r5, r7
/* 801D153C 001CD19C 7C A5 48 30 */ slw r5, r5, r9
/* 801D1540 001CD1A0 7D 09 3B 78 */ or r9, r8, r7
/* 801D1544 001CD1A4 48 00 00 10 */ b lbl_801D1554
lbl_801D1548:
/* 801D1548 001CD1A8 38 E9 FF E0 */ addi r7, r9, -32
/* 801D154C 001CD1AC 7C A9 38 30 */ slw r9, r5, r7
/* 801D1550 001CD1B0 38 A0 00 00 */ li r5, 0
lbl_801D1554:
/* 801D1554 001CD1B4 2C 03 FC 02 */ cmpwi r3, -1022
/* 801D1558 001CD1B8 41 80 00 10 */ blt lbl_801D1568
/* 801D155C 001CD1BC 54 00 03 3E */ clrlwi r0, r0, 0xc
/* 801D1560 001CD1C0 64 08 00 10 */ oris r8, r0, 0x10
/* 801D1564 001CD1C4 48 00 00 34 */ b lbl_801D1598
lbl_801D1568:
/* 801D1568 001CD1C8 21 43 FC 02 */ subfic r10, r3, -1022
/* 801D156C 001CD1CC 2C 0A 00 1F */ cmpwi r10, 0x1f
/* 801D1570 001CD1D0 41 81 00 1C */ bgt lbl_801D158C
/* 801D1574 001CD1D4 20 EA 00 20 */ subfic r7, r10, 0x20
/* 801D1578 001CD1D8 7C 08 50 30 */ slw r8, r0, r10
/* 801D157C 001CD1DC 7C C0 3C 30 */ srw r0, r6, r7
/* 801D1580 001CD1E0 7C C6 50 30 */ slw r6, r6, r10
/* 801D1584 001CD1E4 7D 08 03 78 */ or r8, r8, r0
/* 801D1588 001CD1E8 48 00 00 10 */ b lbl_801D1598
lbl_801D158C:
/* 801D158C 001CD1EC 38 0A FF E0 */ addi r0, r10, -32
/* 801D1590 001CD1F0 7C C8 00 30 */ slw r8, r6, r0
/* 801D1594 001CD1F4 38 C0 00 00 */ li r6, 0
lbl_801D1598:
/* 801D1598 001CD1F8 7C 03 58 51 */ subf. r0, r3, r11
/* 801D159C 001CD1FC 7C 09 03 A6 */ mtctr r0
/* 801D15A0 001CD200 41 82 00 64 */ beq lbl_801D1604
lbl_801D15A4:
/* 801D15A4 001CD204 7C 05 30 40 */ cmplw r5, r6
/* 801D15A8 001CD208 7C E8 48 50 */ subf r7, r8, r9
/* 801D15AC 001CD20C 7D 46 28 50 */ subf r10, r6, r5
/* 801D15B0 001CD210 40 80 00 08 */ bge lbl_801D15B8
/* 801D15B4 001CD214 38 E7 FF FF */ addi r7, r7, -1
lbl_801D15B8:
/* 801D15B8 001CD218 2C 07 00 00 */ cmpwi r7, 0
/* 801D15BC 001CD21C 40 80 00 18 */ bge lbl_801D15D4
/* 801D15C0 001CD220 54 A7 0F FE */ srwi r7, r5, 0x1f
/* 801D15C4 001CD224 55 20 08 3C */ slwi r0, r9, 1
/* 801D15C8 001CD228 7D 27 02 14 */ add r9, r7, r0
/* 801D15CC 001CD22C 7C A5 2A 14 */ add r5, r5, r5
/* 801D15D0 001CD230 48 00 00 30 */ b lbl_801D1600
lbl_801D15D4:
/* 801D15D4 001CD234 7C E0 53 79 */ or. r0, r7, r10
/* 801D15D8 001CD238 40 82 00 18 */ bne lbl_801D15F0
/* 801D15DC 001CD23C 3C 60 80 40 */ lis r3, lbl_803FD328@ha
/* 801D15E0 001CD240 54 80 27 38 */ rlwinm r0, r4, 4, 0x1c, 0x1c
/* 801D15E4 001CD244 38 63 D3 28 */ addi r3, r3, lbl_803FD328@l
/* 801D15E8 001CD248 7C 23 04 AE */ lfdx f1, r3, r0
/* 801D15EC 001CD24C 48 00 01 04 */ b lbl_801D16F0
lbl_801D15F0:
/* 801D15F0 001CD250 55 45 0F FE */ srwi r5, r10, 0x1f
/* 801D15F4 001CD254 54 E0 08 3C */ slwi r0, r7, 1
/* 801D15F8 001CD258 7D 25 02 14 */ add r9, r5, r0
/* 801D15FC 001CD25C 55 45 08 3C */ slwi r5, r10, 1
lbl_801D1600:
/* 801D1600 001CD260 42 00 FF A4 */ bdnz lbl_801D15A4
lbl_801D1604:
/* 801D1604 001CD264 7C 05 30 40 */ cmplw r5, r6
/* 801D1608 001CD268 7C E8 48 50 */ subf r7, r8, r9
/* 801D160C 001CD26C 7C 06 28 50 */ subf r0, r6, r5
/* 801D1610 001CD270 40 80 00 08 */ bge lbl_801D1618
/* 801D1614 001CD274 38 E7 FF FF */ addi r7, r7, -1
lbl_801D1618:
/* 801D1618 001CD278 2C 07 00 00 */ cmpwi r7, 0
/* 801D161C 001CD27C 41 80 00 0C */ blt lbl_801D1628
/* 801D1620 001CD280 7C E9 3B 78 */ mr r9, r7
/* 801D1624 001CD284 7C 05 03 78 */ mr r5, r0
lbl_801D1628:
/* 801D1628 001CD288 7D 20 2B 79 */ or. r0, r9, r5
/* 801D162C 001CD28C 40 82 00 18 */ bne lbl_801D1644
/* 801D1630 001CD290 3C 60 80 40 */ lis r3, lbl_803FD328@ha
/* 801D1634 001CD294 54 80 27 38 */ rlwinm r0, r4, 4, 0x1c, 0x1c
/* 801D1638 001CD298 38 63 D3 28 */ addi r3, r3, lbl_803FD328@l
/* 801D163C 001CD29C 7C 23 04 AE */ lfdx f1, r3, r0
/* 801D1640 001CD2A0 48 00 00 B0 */ b lbl_801D16F0
lbl_801D1644:
/* 801D1644 001CD2A4 3C 00 00 10 */ lis r0, 0x10
/* 801D1648 001CD2A8 48 00 00 18 */ b lbl_801D1660
lbl_801D164C:
/* 801D164C 001CD2AC 54 A7 0F FE */ srwi r7, r5, 0x1f
/* 801D1650 001CD2B0 55 26 08 3C */ slwi r6, r9, 1
/* 801D1654 001CD2B4 7D 27 32 14 */ add r9, r7, r6
/* 801D1658 001CD2B8 7C A5 2A 14 */ add r5, r5, r5
/* 801D165C 001CD2BC 38 63 FF FF */ addi r3, r3, -1
lbl_801D1660:
/* 801D1660 001CD2C0 7C 09 00 00 */ cmpw r9, r0
/* 801D1664 001CD2C4 41 80 FF E8 */ blt lbl_801D164C
/* 801D1668 001CD2C8 2C 03 FC 02 */ cmpwi r3, -1022
/* 801D166C 001CD2CC 41 80 00 24 */ blt lbl_801D1690
/* 801D1670 001CD2D0 38 03 03 FF */ addi r0, r3, 0x3ff
/* 801D1674 001CD2D4 3C 69 FF F0 */ addis r3, r9, 0xfff0
/* 801D1678 001CD2D8 54 00 A0 16 */ slwi r0, r0, 0x14
/* 801D167C 001CD2DC 90 A1 00 0C */ stw r5, 0xc(r1)
/* 801D1680 001CD2E0 7C 60 03 78 */ or r0, r3, r0
/* 801D1684 001CD2E4 7C 00 23 78 */ or r0, r0, r4
/* 801D1688 001CD2E8 90 01 00 08 */ stw r0, 8(r1)
/* 801D168C 001CD2EC 48 00 00 60 */ b lbl_801D16EC
lbl_801D1690:
/* 801D1690 001CD2F0 20 C3 FC 02 */ subfic r6, r3, -1022
/* 801D1694 001CD2F4 2C 06 00 14 */ cmpwi r6, 0x14
/* 801D1698 001CD2F8 41 81 00 1C */ bgt lbl_801D16B4
/* 801D169C 001CD2FC 20 06 00 20 */ subfic r0, r6, 0x20
/* 801D16A0 001CD300 7C A3 34 30 */ srw r3, r5, r6
/* 801D16A4 001CD304 7D 20 00 30 */ slw r0, r9, r0
/* 801D16A8 001CD308 7D 29 36 30 */ sraw r9, r9, r6
/* 801D16AC 001CD30C 7C 63 03 78 */ or r3, r3, r0
/* 801D16B0 001CD310 48 00 00 30 */ b lbl_801D16E0
lbl_801D16B4:
/* 801D16B4 001CD314 2C 06 00 1F */ cmpwi r6, 0x1f
/* 801D16B8 001CD318 41 81 00 1C */ bgt lbl_801D16D4
/* 801D16BC 001CD31C 20 66 00 20 */ subfic r3, r6, 0x20
/* 801D16C0 001CD320 7C A0 34 30 */ srw r0, r5, r6
/* 801D16C4 001CD324 7D 23 18 30 */ slw r3, r9, r3
/* 801D16C8 001CD328 7C 89 23 78 */ mr r9, r4
/* 801D16CC 001CD32C 7C 63 03 78 */ or r3, r3, r0
/* 801D16D0 001CD330 48 00 00 10 */ b lbl_801D16E0
lbl_801D16D4:
/* 801D16D4 001CD334 38 06 FF E0 */ addi r0, r6, -32
/* 801D16D8 001CD338 7D 23 06 30 */ sraw r3, r9, r0
/* 801D16DC 001CD33C 7C 89 23 78 */ mr r9, r4
lbl_801D16E0:
/* 801D16E0 001CD340 7D 20 23 78 */ or r0, r9, r4
/* 801D16E4 001CD344 90 61 00 0C */ stw r3, 0xc(r1)
/* 801D16E8 001CD348 90 01 00 08 */ stw r0, 8(r1)
lbl_801D16EC:
/* 801D16EC 001CD34C C8 21 00 08 */ lfd f1, 8(r1)
lbl_801D16F0:
/* 801D16F0 001CD350 38 21 00 20 */ addi r1, r1, 0x20
/* 801D16F4 001CD354 4E 80 00 20 */ blr
|