summaryrefslogtreecommitdiff
path: root/asm/code_801DD5C8.s
blob: a6861365704037e51dbf3a3eca1c2b5a00469c55 (plain)
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
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global func_801DD5C8
func_801DD5C8:
/* 801DD5C8 001D9228  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801DD5CC 001D922C  80 A3 00 00 */	lwz r5, 0(r3)
/* 801DD5D0 001D9230  2C 05 00 00 */	cmpwi r5, 0
/* 801DD5D4 001D9234  41 82 02 20 */	beq lbl_801DD7F4
/* 801DD5D8 001D9238  A0 83 00 06 */	lhz r4, 6(r3)
/* 801DD5DC 001D923C  54 80 07 FF */	clrlwi. r0, r4, 0x1f
/* 801DD5E0 001D9240  41 82 02 14 */	beq lbl_801DD7F4
/* 801DD5E4 001D9244  54 80 07 39 */	rlwinm. r0, r4, 0, 0x1c, 0x1c
/* 801DD5E8 001D9248  41 82 00 08 */	beq lbl_801DD5F0
/* 801DD5EC 001D924C  48 00 02 08 */	b lbl_801DD7F4
lbl_801DD5F0:
/* 801DD5F0 001D9250  C0 63 00 08 */	lfs f3, 8(r3)
/* 801DD5F4 001D9254  C0 03 00 0C */	lfs f0, 0xc(r3)
/* 801DD5F8 001D9258  EC 21 00 F2 */	fmuls f1, f1, f3
/* 801DD5FC 001D925C  C0 42 95 E0 */	lfs f2, lbl_80641BE0-_SDA2_BASE_(r2)
/* 801DD600 001D9260  EC 20 08 2A */	fadds f1, f0, f1
/* 801DD604 001D9264  FC 01 10 40 */	fcmpo cr0, f1, f2
/* 801DD608 001D9268  D0 23 00 0C */	stfs f1, 0xc(r3)
/* 801DD60C 001D926C  40 80 00 F8 */	bge lbl_801DD704
/* 801DD610 001D9270  A0 03 00 04 */	lhz r0, 4(r3)
/* 801DD614 001D9274  60 84 00 04 */	ori r4, r4, 4
/* 801DD618 001D9278  B0 83 00 06 */	sth r4, 6(r3)
/* 801DD61C 001D927C  2C 00 00 02 */	cmpwi r0, 2
/* 801DD620 001D9280  41 82 00 3C */	beq lbl_801DD65C
/* 801DD624 001D9284  40 80 00 C8 */	bge lbl_801DD6EC
/* 801DD628 001D9288  2C 00 00 01 */	cmpwi r0, 1
/* 801DD62C 001D928C  40 80 00 20 */	bge lbl_801DD64C
/* 801DD630 001D9290  48 00 00 BC */	b lbl_801DD6EC
/* 801DD634 001D9294  48 00 00 18 */	b lbl_801DD64C
lbl_801DD638:
/* 801DD638 001D9298  80 83 00 00 */	lwz r4, 0(r3)
/* 801DD63C 001D929C  C0 23 00 0C */	lfs f1, 0xc(r3)
/* 801DD640 001D92A0  C0 04 00 08 */	lfs f0, 8(r4)
/* 801DD644 001D92A4  EC 01 00 2A */	fadds f0, f1, f0
/* 801DD648 001D92A8  D0 03 00 0C */	stfs f0, 0xc(r3)
lbl_801DD64C:
/* 801DD64C 001D92AC  C0 03 00 0C */	lfs f0, 0xc(r3)
/* 801DD650 001D92B0  FC 00 10 40 */	fcmpo cr0, f0, f2
/* 801DD654 001D92B4  41 80 FF E4 */	blt lbl_801DD638
/* 801DD658 001D92B8  48 00 01 90 */	b lbl_801DD7E8
lbl_801DD65C:
/* 801DD65C 001D92BC  FC 00 08 50 */	fneg f0, f1
/* 801DD660 001D92C0  D0 03 00 0C */	stfs f0, 0xc(r3)
/* 801DD664 001D92C4  FC 00 00 18 */	frsp f0, f0
/* 801DD668 001D92C8  C0 45 00 08 */	lfs f2, 8(r5)
/* 801DD66C 001D92CC  FC 00 10 40 */	fcmpo cr0, f0, f2
/* 801DD670 001D92D0  40 81 00 70 */	ble lbl_801DD6E0
/* 801DD674 001D92D4  EC 80 10 24 */	fdivs f4, f0, f2
/* 801DD678 001D92D8  3C 00 43 30 */	lis r0, 0x4330
/* 801DD67C 001D92DC  90 01 00 10 */	stw r0, 0x10(r1)
/* 801DD680 001D92E0  C8 22 95 E8 */	lfd f1, lbl_80641BE8-_SDA2_BASE_(r2)
/* 801DD684 001D92E4  FC 00 20 1E */	fctiwz f0, f4
/* 801DD688 001D92E8  D8 01 00 08 */	stfd f0, 8(r1)
/* 801DD68C 001D92EC  80 A1 00 0C */	lwz r5, 0xc(r1)
/* 801DD690 001D92F0  6C A0 80 00 */	xoris r0, r5, 0x8000
/* 801DD694 001D92F4  54 A4 0F FE */	srwi r4, r5, 0x1f
/* 801DD698 001D92F8  90 01 00 14 */	stw r0, 0x14(r1)
/* 801DD69C 001D92FC  54 A0 07 FE */	clrlwi r0, r5, 0x1f
/* 801DD6A0 001D9300  7C 00 22 78 */	xor r0, r0, r4
/* 801DD6A4 001D9304  C8 01 00 10 */	lfd f0, 0x10(r1)
/* 801DD6A8 001D9308  7C 04 00 51 */	subf. r0, r4, r0
/* 801DD6AC 001D930C  EC 00 08 28 */	fsubs f0, f0, f1
/* 801DD6B0 001D9310  EC 84 00 28 */	fsubs f4, f4, f0
/* 801DD6B4 001D9314  41 82 00 18 */	beq lbl_801DD6CC
/* 801DD6B8 001D9318  C0 02 95 E4 */	lfs f0, lbl_80641BE4-_SDA2_BASE_(r2)
/* 801DD6BC 001D931C  EC 00 20 28 */	fsubs f0, f0, f4
/* 801DD6C0 001D9320  EC 02 00 32 */	fmuls f0, f2, f0
/* 801DD6C4 001D9324  D0 03 00 0C */	stfs f0, 0xc(r3)
/* 801DD6C8 001D9328  48 00 01 20 */	b lbl_801DD7E8
lbl_801DD6CC:
/* 801DD6CC 001D932C  EC 22 01 32 */	fmuls f1, f2, f4
/* 801DD6D0 001D9330  FC 00 18 50 */	fneg f0, f3
/* 801DD6D4 001D9334  D0 23 00 0C */	stfs f1, 0xc(r3)
/* 801DD6D8 001D9338  D0 03 00 08 */	stfs f0, 8(r3)
/* 801DD6DC 001D933C  48 00 01 0C */	b lbl_801DD7E8
lbl_801DD6E0:
/* 801DD6E0 001D9340  FC 00 18 50 */	fneg f0, f3
/* 801DD6E4 001D9344  D0 03 00 08 */	stfs f0, 8(r3)
/* 801DD6E8 001D9348  48 00 01 00 */	b lbl_801DD7E8
lbl_801DD6EC:
/* 801DD6EC 001D934C  A0 03 00 06 */	lhz r0, 6(r3)
/* 801DD6F0 001D9350  C0 02 95 E0 */	lfs f0, lbl_80641BE0-_SDA2_BASE_(r2)
/* 801DD6F4 001D9354  60 00 00 08 */	ori r0, r0, 8
/* 801DD6F8 001D9358  B0 03 00 06 */	sth r0, 6(r3)
/* 801DD6FC 001D935C  D0 03 00 0C */	stfs f0, 0xc(r3)
/* 801DD700 001D9360  48 00 00 E8 */	b lbl_801DD7E8
lbl_801DD704:
/* 801DD704 001D9364  C0 05 00 08 */	lfs f0, 8(r5)
/* 801DD708 001D9368  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 801DD70C 001D936C  40 81 00 DC */	ble lbl_801DD7E8
/* 801DD710 001D9370  A0 03 00 04 */	lhz r0, 4(r3)
/* 801DD714 001D9374  60 84 00 04 */	ori r4, r4, 4
/* 801DD718 001D9378  B0 83 00 06 */	sth r4, 6(r3)
/* 801DD71C 001D937C  2C 00 00 02 */	cmpwi r0, 2
/* 801DD720 001D9380  41 82 00 40 */	beq lbl_801DD760
/* 801DD724 001D9384  40 80 00 AC */	bge lbl_801DD7D0
/* 801DD728 001D9388  2C 00 00 01 */	cmpwi r0, 1
/* 801DD72C 001D938C  40 80 00 1C */	bge lbl_801DD748
/* 801DD730 001D9390  48 00 00 A0 */	b lbl_801DD7D0
/* 801DD734 001D9394  48 00 00 14 */	b lbl_801DD748
lbl_801DD738:
/* 801DD738 001D9398  C0 23 00 0C */	lfs f1, 0xc(r3)
/* 801DD73C 001D939C  C0 04 00 08 */	lfs f0, 8(r4)
/* 801DD740 001D93A0  EC 01 00 28 */	fsubs f0, f1, f0
/* 801DD744 001D93A4  D0 03 00 0C */	stfs f0, 0xc(r3)
lbl_801DD748:
/* 801DD748 001D93A8  80 83 00 00 */	lwz r4, 0(r3)
/* 801DD74C 001D93AC  C0 23 00 0C */	lfs f1, 0xc(r3)
/* 801DD750 001D93B0  C0 04 00 08 */	lfs f0, 8(r4)
/* 801DD754 001D93B4  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 801DD758 001D93B8  41 81 FF E0 */	bgt lbl_801DD738
/* 801DD75C 001D93BC  48 00 00 8C */	b lbl_801DD7E8
lbl_801DD760:
/* 801DD760 001D93C0  C0 45 00 08 */	lfs f2, 8(r5)
/* 801DD764 001D93C4  3C 00 43 30 */	lis r0, 0x4330
/* 801DD768 001D93C8  90 01 00 08 */	stw r0, 8(r1)
/* 801DD76C 001D93CC  EC 81 10 24 */	fdivs f4, f1, f2
/* 801DD770 001D93D0  C8 22 95 E8 */	lfd f1, lbl_80641BE8-_SDA2_BASE_(r2)
/* 801DD774 001D93D4  FC 00 20 1E */	fctiwz f0, f4
/* 801DD778 001D93D8  D8 01 00 10 */	stfd f0, 0x10(r1)
/* 801DD77C 001D93DC  80 A1 00 14 */	lwz r5, 0x14(r1)
/* 801DD780 001D93E0  6C A0 80 00 */	xoris r0, r5, 0x8000
/* 801DD784 001D93E4  54 A4 0F FE */	srwi r4, r5, 0x1f
/* 801DD788 001D93E8  90 01 00 0C */	stw r0, 0xc(r1)
/* 801DD78C 001D93EC  54 A0 07 FE */	clrlwi r0, r5, 0x1f
/* 801DD790 001D93F0  7C 00 22 78 */	xor r0, r0, r4
/* 801DD794 001D93F4  C8 01 00 08 */	lfd f0, 8(r1)
/* 801DD798 001D93F8  7C 04 00 51 */	subf. r0, r4, r0
/* 801DD79C 001D93FC  EC 00 08 28 */	fsubs f0, f0, f1
/* 801DD7A0 001D9400  EC 84 00 28 */	fsubs f4, f4, f0
/* 801DD7A4 001D9404  41 82 00 20 */	beq lbl_801DD7C4
/* 801DD7A8 001D9408  C0 22 95 E4 */	lfs f1, lbl_80641BE4-_SDA2_BASE_(r2)
/* 801DD7AC 001D940C  FC 00 18 50 */	fneg f0, f3
/* 801DD7B0 001D9410  EC 21 20 28 */	fsubs f1, f1, f4
/* 801DD7B4 001D9414  D0 03 00 08 */	stfs f0, 8(r3)
/* 801DD7B8 001D9418  EC 02 00 72 */	fmuls f0, f2, f1
/* 801DD7BC 001D941C  D0 03 00 0C */	stfs f0, 0xc(r3)
/* 801DD7C0 001D9420  48 00 00 28 */	b lbl_801DD7E8
lbl_801DD7C4:
/* 801DD7C4 001D9424  EC 02 01 32 */	fmuls f0, f2, f4
/* 801DD7C8 001D9428  D0 03 00 0C */	stfs f0, 0xc(r3)
/* 801DD7CC 001D942C  48 00 00 1C */	b lbl_801DD7E8
lbl_801DD7D0:
/* 801DD7D0 001D9430  A0 03 00 06 */	lhz r0, 6(r3)
/* 801DD7D4 001D9434  80 83 00 00 */	lwz r4, 0(r3)
/* 801DD7D8 001D9438  60 00 00 08 */	ori r0, r0, 8
/* 801DD7DC 001D943C  B0 03 00 06 */	sth r0, 6(r3)
/* 801DD7E0 001D9440  C0 04 00 08 */	lfs f0, 8(r4)
/* 801DD7E4 001D9444  D0 03 00 0C */	stfs f0, 0xc(r3)
lbl_801DD7E8:
/* 801DD7E8 001D9448  A0 03 00 06 */	lhz r0, 6(r3)
/* 801DD7EC 001D944C  60 00 00 02 */	ori r0, r0, 2
/* 801DD7F0 001D9450  B0 03 00 06 */	sth r0, 6(r3)
lbl_801DD7F4:
/* 801DD7F4 001D9454  38 21 00 20 */	addi r1, r1, 0x20
/* 801DD7F8 001D9458  4E 80 00 20 */	blr

.global func_801DD7FC
func_801DD7FC:
/* 801DD7FC 001D945C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801DD800 001D9460  7C 08 02 A6 */	mflr r0
/* 801DD804 001D9464  90 01 00 24 */	stw r0, 0x24(r1)
/* 801DD808 001D9468  39 61 00 20 */	addi r11, r1, 0x20
/* 801DD80C 001D946C  4B FE 99 19 */	bl _savegpr_26
/* 801DD810 001D9470  80 C3 00 00 */	lwz r6, 0(r3)
/* 801DD814 001D9474  7C 7A 1B 78 */	mr r26, r3
/* 801DD818 001D9478  7C 9B 23 78 */	mr r27, r4
/* 801DD81C 001D947C  7C BC 2B 78 */	mr r28, r5
/* 801DD820 001D9480  2C 06 00 00 */	cmpwi r6, 0
/* 801DD824 001D9484  41 82 00 64 */	beq lbl_801DD888
/* 801DD828 001D9488  A0 03 00 06 */	lhz r0, 6(r3)
/* 801DD82C 001D948C  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 801DD830 001D9490  40 82 00 08 */	bne lbl_801DD838
/* 801DD834 001D9494  48 00 00 54 */	b lbl_801DD888
lbl_801DD838:
/* 801DD838 001D9498  83 E6 00 04 */	lwz r31, 4(r6)
/* 801DD83C 001D949C  3B A0 00 00 */	li r29, 0
/* 801DD840 001D94A0  A3 C6 00 02 */	lhz r30, 2(r6)
/* 801DD844 001D94A4  48 00 00 30 */	b lbl_801DD874
lbl_801DD848:
/* 801DD848 001D94A8  81 9F 00 0C */	lwz r12, 0xc(r31)
/* 801DD84C 001D94AC  2C 0C 00 00 */	cmpwi r12, 0
/* 801DD850 001D94B0  41 82 00 1C */	beq lbl_801DD86C
/* 801DD854 001D94B4  7F 63 DB 78 */	mr r3, r27
/* 801DD858 001D94B8  7F E4 FB 78 */	mr r4, r31
/* 801DD85C 001D94BC  7F 85 E3 78 */	mr r5, r28
/* 801DD860 001D94C0  C0 3A 00 0C */	lfs f1, 0xc(r26)
/* 801DD864 001D94C4  7D 89 03 A6 */	mtctr r12
/* 801DD868 001D94C8  4E 80 04 21 */	bctrl
lbl_801DD86C:
/* 801DD86C 001D94CC  3B BD 00 01 */	addi r29, r29, 1
/* 801DD870 001D94D0  3B FF 00 10 */	addi r31, r31, 0x10
lbl_801DD874:
/* 801DD874 001D94D4  7C 1D F0 00 */	cmpw r29, r30
/* 801DD878 001D94D8  41 80 FF D0 */	blt lbl_801DD848
/* 801DD87C 001D94DC  A0 1A 00 06 */	lhz r0, 6(r26)
/* 801DD880 001D94E0  54 00 07 FA */	rlwinm r0, r0, 0, 0x1f, 0x1d
/* 801DD884 001D94E4  B0 1A 00 06 */	sth r0, 6(r26)
lbl_801DD888:
/* 801DD888 001D94E8  39 61 00 20 */	addi r11, r1, 0x20
/* 801DD88C 001D94EC  4B FE 98 E5 */	bl _restgpr_26
/* 801DD890 001D94F0  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801DD894 001D94F4  7C 08 03 A6 */	mtlr r0
/* 801DD898 001D94F8  38 21 00 20 */	addi r1, r1, 0x20
/* 801DD89C 001D94FC  4E 80 00 20 */	blr

.global func_801DD8A0
func_801DD8A0:
/* 801DD8A0 001D9500  38 A0 00 01 */	li r5, 1
/* 801DD8A4 001D9504  38 6D A0 88 */	addi r3, r13, lbl_8063F348-_SDA_BASE_
/* 801DD8A8 001D9508  38 80 00 04 */	li r4, 4
/* 801DD8AC 001D950C  38 00 00 00 */	li r0, 0
/* 801DD8B0 001D9510  98 AD A0 88 */	stb r5, lbl_8063F348-_SDA_BASE_(r13)
/* 801DD8B4 001D9514  B0 83 00 02 */	sth r4, 2(r3)
/* 801DD8B8 001D9518  98 03 00 04 */	stb r0, 4(r3)
/* 801DD8BC 001D951C  4E 80 00 20 */	blr