summaryrefslogtreecommitdiff
path: root/asm/code_8017C588.s
blob: 733c42097c29ac31cebc52cc637845d6b945d42d (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
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
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
.include "macros.inc"

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

.global func_8017C588
func_8017C588:
/* 8017C588 001781E8  80 6D 9F 78 */	lwz r3, lbl_8063F238-_SDA_BASE_(r13)
/* 8017C58C 001781EC  4E 80 00 20 */	blr

.global func_8017C590
func_8017C590:
/* 8017C590 001781F0  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8017C594 001781F4  7C 08 02 A6 */	mflr r0
/* 8017C598 001781F8  90 01 00 14 */	stw r0, 0x14(r1)
/* 8017C59C 001781FC  80 0D 9F 78 */	lwz r0, lbl_8063F238-_SDA_BASE_(r13)
/* 8017C5A0 00178200  2C 00 00 00 */	cmpwi r0, 0
/* 8017C5A4 00178204  40 82 00 1C */	bne lbl_8017C5C0
/* 8017C5A8 00178208  38 60 00 BC */	li r3, 0xbc
/* 8017C5AC 0017820C  48 05 E4 85 */	bl __nw__FUl
/* 8017C5B0 00178210  2C 03 00 00 */	cmpwi r3, 0
/* 8017C5B4 00178214  41 82 00 08 */	beq lbl_8017C5BC
/* 8017C5B8 00178218  48 00 00 4D */	bl func_8017C604
lbl_8017C5BC:
/* 8017C5BC 0017821C  90 6D 9F 78 */	stw r3, lbl_8063F238-_SDA_BASE_(r13)
lbl_8017C5C0:
/* 8017C5C0 00178220  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8017C5C4 00178224  7C 08 03 A6 */	mtlr r0
/* 8017C5C8 00178228  38 21 00 10 */	addi r1, r1, 0x10
/* 8017C5CC 0017822C  4E 80 00 20 */	blr

.global func_8017C5D0
func_8017C5D0:
/* 8017C5D0 00178230  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8017C5D4 00178234  7C 08 02 A6 */	mflr r0
/* 8017C5D8 00178238  90 01 00 14 */	stw r0, 0x14(r1)
/* 8017C5DC 0017823C  80 6D 9F 78 */	lwz r3, lbl_8063F238-_SDA_BASE_(r13)
/* 8017C5E0 00178240  2C 03 00 00 */	cmpwi r3, 0
/* 8017C5E4 00178244  41 82 00 10 */	beq lbl_8017C5F4
/* 8017C5E8 00178248  48 05 E4 D1 */	bl __dl__FPv
/* 8017C5EC 0017824C  38 00 00 00 */	li r0, 0
/* 8017C5F0 00178250  90 0D 9F 78 */	stw r0, lbl_8063F238-_SDA_BASE_(r13)
lbl_8017C5F4:
/* 8017C5F4 00178254  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8017C5F8 00178258  7C 08 03 A6 */	mtlr r0
/* 8017C5FC 0017825C  38 21 00 10 */	addi r1, r1, 0x10
/* 8017C600 00178260  4E 80 00 20 */	blr

.global func_8017C604
func_8017C604:
/* 8017C604 00178264  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8017C608 00178268  7C 08 02 A6 */	mflr r0
/* 8017C60C 0017826C  38 80 00 00 */	li r4, 0
/* 8017C610 00178270  38 A0 00 90 */	li r5, 0x90
/* 8017C614 00178274  90 01 00 14 */	stw r0, 0x14(r1)
/* 8017C618 00178278  38 00 00 00 */	li r0, 0
/* 8017C61C 0017827C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8017C620 00178280  7C 7F 1B 78 */	mr r31, r3
/* 8017C624 00178284  98 03 00 00 */	stb r0, 0(r3)
/* 8017C628 00178288  38 63 00 02 */	addi r3, r3, 2
/* 8017C62C 0017828C  4B E8 7A D9 */	bl memset
/* 8017C630 00178290  7F E3 FB 78 */	mr r3, r31
/* 8017C634 00178294  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8017C638 00178298  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8017C63C 0017829C  7C 08 03 A6 */	mtlr r0
/* 8017C640 001782A0  38 21 00 10 */	addi r1, r1, 0x10
/* 8017C644 001782A4  4E 80 00 20 */	blr

.global func_8017C648
func_8017C648:
/* 8017C648 001782A8  88 63 00 00 */	lbz r3, 0(r3)
/* 8017C64C 001782AC  4E 80 00 20 */	blr

.global func_8017C650
func_8017C650:
/* 8017C650 001782B0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8017C654 001782B4  7C 08 02 A6 */	mflr r0
/* 8017C658 001782B8  90 01 00 24 */	stw r0, 0x24(r1)
/* 8017C65C 001782BC  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8017C660 001782C0  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8017C664 001782C4  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8017C668 001782C8  7C BD 2B 78 */	mr r29, r5
/* 8017C66C 001782CC  93 81 00 10 */	stw r28, 0x10(r1)
/* 8017C670 001782D0  7C 7C 1B 78 */	mr r28, r3
/* 8017C674 001782D4  88 03 00 00 */	lbz r0, 0(r3)
/* 8017C678 001782D8  2C 00 00 00 */	cmpwi r0, 0
/* 8017C67C 001782DC  41 82 00 3C */	beq lbl_8017C6B8
/* 8017C680 001782E0  7C 9F 23 78 */	mr r31, r4
/* 8017C684 001782E4  3B C0 00 00 */	li r30, 0
/* 8017C688 001782E8  48 00 00 28 */	b lbl_8017C6B0
lbl_8017C68C:
/* 8017C68C 001782EC  A0 9F 00 04 */	lhz r4, 4(r31)
/* 8017C690 001782F0  7F 83 E3 78 */	mr r3, r28
/* 8017C694 001782F4  48 00 02 69 */	bl func_8017C8FC
/* 8017C698 001782F8  7C 64 1B 78 */	mr r4, r3
/* 8017C69C 001782FC  38 7F 00 1C */	addi r3, r31, 0x1c
/* 8017C6A0 00178300  38 A0 00 20 */	li r5, 0x20
/* 8017C6A4 00178304  4B E8 79 5D */	bl memcpy
/* 8017C6A8 00178308  3B DE 00 01 */	addi r30, r30, 1
/* 8017C6AC 0017830C  3B FF 00 3C */	addi r31, r31, 0x3c
lbl_8017C6B0:
/* 8017C6B0 00178310  7C 1E E8 00 */	cmpw r30, r29
/* 8017C6B4 00178314  41 80 FF D8 */	blt lbl_8017C68C
lbl_8017C6B8:
/* 8017C6B8 00178318  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8017C6BC 0017831C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8017C6C0 00178320  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8017C6C4 00178324  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8017C6C8 00178328  83 81 00 10 */	lwz r28, 0x10(r1)
/* 8017C6CC 0017832C  7C 08 03 A6 */	mtlr r0
/* 8017C6D0 00178330  38 21 00 20 */	addi r1, r1, 0x20
/* 8017C6D4 00178334  4E 80 00 20 */	blr

.global func_8017C6D8
func_8017C6D8:
/* 8017C6D8 00178338  94 21 FF 80 */	stwu r1, -0x80(r1)
/* 8017C6DC 0017833C  7C 08 02 A6 */	mflr r0
/* 8017C6E0 00178340  90 01 00 84 */	stw r0, 0x84(r1)
/* 8017C6E4 00178344  39 61 00 80 */	addi r11, r1, 0x80
/* 8017C6E8 00178348  48 04 AA 41 */	bl _savegpr_27
/* 8017C6EC 0017834C  7C 7C 1B 78 */	mr r28, r3
/* 8017C6F0 00178350  7C 9B 23 78 */	mr r27, r4
/* 8017C6F4 00178354  38 60 00 00 */	li r3, 0
/* 8017C6F8 00178358  4B FE 85 75 */	bl func_80164C6C
/* 8017C6FC 0017835C  80 1B 00 0C */	lwz r0, 0xc(r27)
/* 8017C700 00178360  2C 00 00 03 */	cmpwi r0, 3
/* 8017C704 00178364  40 82 00 34 */	bne lbl_8017C738
/* 8017C708 00178368  2C 03 00 00 */	cmpwi r3, 0
/* 8017C70C 0017836C  41 82 00 2C */	beq lbl_8017C738
/* 8017C710 00178370  4B FE A3 AD */	bl func_80166ABC
/* 8017C714 00178374  2C 03 00 00 */	cmpwi r3, 0
/* 8017C718 00178378  40 82 00 20 */	bne lbl_8017C738
/* 8017C71C 0017837C  38 60 02 68 */	li r3, 0x268
/* 8017C720 00178380  4B FE 63 71 */	bl func_80162A90
/* 8017C724 00178384  2C 03 00 00 */	cmpwi r3, 0
/* 8017C728 00178388  40 82 00 10 */	bne lbl_8017C738
/* 8017C72C 0017838C  38 00 00 01 */	li r0, 1
/* 8017C730 00178390  98 1C 00 00 */	stb r0, 0(r28)
/* 8017C734 00178394  48 00 00 10 */	b lbl_8017C744
lbl_8017C738:
/* 8017C738 00178398  38 00 00 00 */	li r0, 0
/* 8017C73C 0017839C  98 1C 00 00 */	stb r0, 0(r28)
/* 8017C740 001783A0  48 00 00 98 */	b lbl_8017C7D8
lbl_8017C744:
/* 8017C744 001783A4  3B BC 00 02 */	addi r29, r28, 2
/* 8017C748 001783A8  3F E0 80 64 */	lis r31, lbl_8063CE34@ha
/* 8017C74C 001783AC  3B DB 14 20 */	addi r30, r27, 0x1420
/* 8017C750 001783B0  3B 60 00 00 */	li r27, 0
/* 8017C754 001783B4  7F BC EB 78 */	mr r28, r29
/* 8017C758 001783B8  3B FF CE 34 */	addi r31, r31, lbl_8063CE34@l
lbl_8017C75C:
/* 8017C75C 001783BC  7F C3 F3 78 */	mr r3, r30
/* 8017C760 001783C0  7F A5 EB 78 */	mr r5, r29
/* 8017C764 001783C4  38 80 00 74 */	li r4, 0x74
/* 8017C768 001783C8  48 25 E7 95 */	bl func_803DAEFC
/* 8017C76C 001783CC  7F 84 E3 78 */	mr r4, r28
/* 8017C770 001783D0  38 61 00 08 */	addi r3, r1, 8
/* 8017C774 001783D4  38 A0 00 20 */	li r5, 0x20
/* 8017C778 001783D8  4B FF AA B5 */	bl func_8017722C
/* 8017C77C 001783DC  7F C3 F3 78 */	mr r3, r30
/* 8017C780 001783E0  38 80 00 05 */	li r4, 5
/* 8017C784 001783E4  38 A0 00 00 */	li r5, 0
/* 8017C788 001783E8  48 25 E7 75 */	bl func_803DAEFC
/* 8017C78C 001783EC  7C 64 1B 78 */	mr r4, r3
/* 8017C790 001783F0  38 7F 00 10 */	addi r3, r31, 0x10
/* 8017C794 001783F4  48 21 58 01 */	bl func_80391F94
/* 8017C798 001783F8  54 63 04 3E */	clrlwi r3, r3, 0x10
/* 8017C79C 001783FC  48 0D 3B 59 */	bl func_802502F4
/* 8017C7A0 00178400  7C 64 1B 78 */	mr r4, r3
/* 8017C7A4 00178404  38 61 00 28 */	addi r3, r1, 0x28
/* 8017C7A8 00178408  38 A0 00 10 */	li r5, 0x10
/* 8017C7AC 0017840C  4B FF A7 09 */	bl func_80176EB4
/* 8017C7B0 00178410  7F C3 F3 78 */	mr r3, r30
/* 8017C7B4 00178414  38 A1 00 28 */	addi r5, r1, 0x28
/* 8017C7B8 00178418  38 80 00 74 */	li r4, 0x74
/* 8017C7BC 0017841C  48 25 EE BD */	bl func_803DB678
/* 8017C7C0 00178420  3B 7B 00 01 */	addi r27, r27, 1
/* 8017C7C4 00178424  3B BD 00 18 */	addi r29, r29, 0x18
/* 8017C7C8 00178428  2C 1B 00 06 */	cmpwi r27, 6
/* 8017C7CC 0017842C  3B 9C 00 18 */	addi r28, r28, 0x18
/* 8017C7D0 00178430  3B DE 00 8C */	addi r30, r30, 0x8c
/* 8017C7D4 00178434  41 80 FF 88 */	blt lbl_8017C75C
lbl_8017C7D8:
/* 8017C7D8 00178438  39 61 00 80 */	addi r11, r1, 0x80
/* 8017C7DC 0017843C  48 04 A9 99 */	bl _restgpr_27
/* 8017C7E0 00178440  80 01 00 84 */	lwz r0, 0x84(r1)
/* 8017C7E4 00178444  7C 08 03 A6 */	mtlr r0
/* 8017C7E8 00178448  38 21 00 80 */	addi r1, r1, 0x80
/* 8017C7EC 0017844C  4E 80 00 20 */	blr

.global func_8017C7F0
func_8017C7F0:
/* 8017C7F0 00178450  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8017C7F4 00178454  7C 08 02 A6 */	mflr r0
/* 8017C7F8 00178458  90 01 00 24 */	stw r0, 0x24(r1)
/* 8017C7FC 0017845C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8017C800 00178460  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8017C804 00178464  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8017C808 00178468  7C BD 2B 78 */	mr r29, r5
/* 8017C80C 0017846C  93 81 00 10 */	stw r28, 0x10(r1)
/* 8017C810 00178470  7C 7C 1B 78 */	mr r28, r3
/* 8017C814 00178474  88 03 00 00 */	lbz r0, 0(r3)
/* 8017C818 00178478  2C 00 00 00 */	cmpwi r0, 0
/* 8017C81C 0017847C  41 82 00 60 */	beq lbl_8017C87C
/* 8017C820 00178480  54 80 10 3A */	slwi r0, r4, 2
/* 8017C824 00178484  3B E0 00 00 */	li r31, 0
/* 8017C828 00178488  7C 63 02 14 */	add r3, r3, r0
/* 8017C82C 0017848C  90 A3 00 B4 */	stw r5, 0xb4(r3)
lbl_8017C830:
/* 8017C830 00178490  7F A3 EB 78 */	mr r3, r29
/* 8017C834 00178494  7F E4 FB 78 */	mr r4, r31
/* 8017C838 00178498  48 26 21 15 */	bl func_803DE94C
/* 8017C83C 0017849C  7C 7E 1B 78 */	mr r30, r3
/* 8017C840 001784A0  38 80 00 05 */	li r4, 5
/* 8017C844 001784A4  38 A0 00 00 */	li r5, 0
/* 8017C848 001784A8  48 26 11 95 */	bl func_803DD9DC
/* 8017C84C 001784AC  7C 64 1B 78 */	mr r4, r3
/* 8017C850 001784B0  7F 83 E3 78 */	mr r3, r28
/* 8017C854 001784B4  48 00 00 A9 */	bl func_8017C8FC
/* 8017C858 001784B8  2C 03 00 00 */	cmpwi r3, 0
/* 8017C85C 001784BC  7C 65 1B 78 */	mr r5, r3
/* 8017C860 001784C0  41 82 00 10 */	beq lbl_8017C870
/* 8017C864 001784C4  7F C3 F3 78 */	mr r3, r30
/* 8017C868 001784C8  38 80 00 74 */	li r4, 0x74
/* 8017C86C 001784CC  48 25 EC B9 */	bl func_803DB524
lbl_8017C870:
/* 8017C870 001784D0  3B FF 00 01 */	addi r31, r31, 1
/* 8017C874 001784D4  2C 1F 00 06 */	cmpwi r31, 6
/* 8017C878 001784D8  41 80 FF B8 */	blt lbl_8017C830
lbl_8017C87C:
/* 8017C87C 001784DC  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8017C880 001784E0  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8017C884 001784E4  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8017C888 001784E8  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8017C88C 001784EC  83 81 00 10 */	lwz r28, 0x10(r1)
/* 8017C890 001784F0  7C 08 03 A6 */	mtlr r0
/* 8017C894 001784F4  38 21 00 20 */	addi r1, r1, 0x20
/* 8017C898 001784F8  4E 80 00 20 */	blr

.global func_8017C89C
func_8017C89C:
/* 8017C89C 001784FC  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8017C8A0 00178500  7C 08 02 A6 */	mflr r0
/* 8017C8A4 00178504  90 01 00 34 */	stw r0, 0x34(r1)
/* 8017C8A8 00178508  93 E1 00 2C */	stw r31, 0x2c(r1)
/* 8017C8AC 0017850C  7C BF 2B 78 */	mr r31, r5
/* 8017C8B0 00178510  88 03 00 00 */	lbz r0, 0(r3)
/* 8017C8B4 00178514  2C 00 00 00 */	cmpwi r0, 0
/* 8017C8B8 00178518  41 82 00 30 */	beq lbl_8017C8E8
/* 8017C8BC 0017851C  54 80 10 3A */	slwi r0, r4, 2
/* 8017C8C0 00178520  7C C4 33 78 */	mr r4, r6
/* 8017C8C4 00178524  7C 63 02 14 */	add r3, r3, r0
/* 8017C8C8 00178528  80 63 00 B4 */	lwz r3, 0xb4(r3)
/* 8017C8CC 0017852C  48 26 20 81 */	bl func_803DE94C
/* 8017C8D0 00178530  38 A1 00 08 */	addi r5, r1, 8
/* 8017C8D4 00178534  38 80 00 74 */	li r4, 0x74
/* 8017C8D8 00178538  48 26 11 05 */	bl func_803DD9DC
/* 8017C8DC 0017853C  7F E3 FB 78 */	mr r3, r31
/* 8017C8E0 00178540  38 81 00 08 */	addi r4, r1, 8
/* 8017C8E4 00178544  48 24 CB AD */	bl func_803C9490
lbl_8017C8E8:
/* 8017C8E8 00178548  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8017C8EC 0017854C  83 E1 00 2C */	lwz r31, 0x2c(r1)
/* 8017C8F0 00178550  7C 08 03 A6 */	mtlr r0
/* 8017C8F4 00178554  38 21 00 30 */	addi r1, r1, 0x30
/* 8017C8F8 00178558  4E 80 00 20 */	blr

.global func_8017C8FC
func_8017C8FC:
/* 8017C8FC 0017855C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8017C900 00178560  7C 08 02 A6 */	mflr r0
/* 8017C904 00178564  3C A0 80 64 */	lis r5, lbl_8063CE34@ha
/* 8017C908 00178568  90 01 00 14 */	stw r0, 0x14(r1)
/* 8017C90C 0017856C  38 A5 CE 34 */	addi r5, r5, lbl_8063CE34@l
/* 8017C910 00178570  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8017C914 00178574  7C 7F 1B 78 */	mr r31, r3
/* 8017C918 00178578  38 65 00 10 */	addi r3, r5, 0x10
/* 8017C91C 0017857C  48 21 56 AD */	bl func_80391FC8
/* 8017C920 00178580  54 63 04 3E */	clrlwi r3, r3, 0x10
/* 8017C924 00178584  48 0D 39 D1 */	bl func_802502F4
/* 8017C928 00178588  2C 03 00 00 */	cmpwi r3, 0
/* 8017C92C 0017858C  41 82 00 1C */	beq lbl_8017C948
/* 8017C930 00178590  7C 64 1B 78 */	mr r4, r3
/* 8017C934 00178594  38 7F 00 92 */	addi r3, r31, 0x92
/* 8017C938 00178598  38 A0 00 10 */	li r5, 0x10
/* 8017C93C 0017859C  4B FF A5 79 */	bl func_80176EB4
/* 8017C940 001785A0  38 7F 00 92 */	addi r3, r31, 0x92
/* 8017C944 001785A4  48 00 00 08 */	b lbl_8017C94C
lbl_8017C948:
/* 8017C948 001785A8  38 60 00 00 */	li r3, 0
lbl_8017C94C:
/* 8017C94C 001785AC  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8017C950 001785B0  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8017C954 001785B4  7C 08 03 A6 */	mtlr r0
/* 8017C958 001785B8  38 21 00 10 */	addi r1, r1, 0x10
/* 8017C95C 001785BC  4E 80 00 20 */	blr

.global func_8017C960
func_8017C960:
/* 8017C960 001785C0  38 A0 00 01 */	li r5, 1
/* 8017C964 001785C4  38 6D 9F 70 */	addi r3, r13, lbl_8063F230-_SDA_BASE_
/* 8017C968 001785C8  38 80 00 04 */	li r4, 4
/* 8017C96C 001785CC  38 00 00 00 */	li r0, 0
/* 8017C970 001785D0  98 AD 9F 70 */	stb r5, lbl_8063F230-_SDA_BASE_(r13)
/* 8017C974 001785D4  B0 83 00 02 */	sth r4, 2(r3)
/* 8017C978 001785D8  98 03 00 04 */	stb r0, 4(r3)
/* 8017C97C 001785DC  4E 80 00 20 */	blr