summaryrefslogtreecommitdiff
path: root/asm/code_8017C980.s
blob: 1c45e9fc29a27b6910d4ca8fa4242a8655f5671c (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
.include "macros.inc"

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

.global func_8017C980
func_8017C980:
/* 8017C980 001785E0  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8017C984 001785E4  7C 08 02 A6 */	mflr r0
/* 8017C988 001785E8  90 01 00 14 */	stw r0, 0x14(r1)
/* 8017C98C 001785EC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8017C990 001785F0  3F E0 00 01 */	lis r31, 0x00012A98@ha
/* 8017C994 001785F4  38 9F 2A 98 */	addi r4, r31, 0x00012A98@l
/* 8017C998 001785F8  80 6D 96 2C */	lwz r3, lbl_8063E8EC-_SDA_BASE_(r13)
/* 8017C99C 001785FC  48 05 E2 F9 */	bl func_801DAC94
/* 8017C9A0 00178600  90 6D 9F 88 */	stw r3, lbl_8063F248-_SDA_BASE_(r13)
/* 8017C9A4 00178604  38 BF 2A 98 */	addi r5, r31, 0x2a98
/* 8017C9A8 00178608  38 80 00 00 */	li r4, 0
/* 8017C9AC 0017860C  4B E8 77 59 */	bl memset
/* 8017C9B0 00178610  80 6D 96 2C */	lwz r3, lbl_8063E8EC-_SDA_BASE_(r13)
/* 8017C9B4 00178614  38 80 00 10 */	li r4, 0x10
/* 8017C9B8 00178618  48 05 E2 DD */	bl func_801DAC94
/* 8017C9BC 0017861C  90 6D 9F 8C */	stw r3, lbl_8063F24C-_SDA_BASE_(r13)
/* 8017C9C0 00178620  38 80 00 00 */	li r4, 0
/* 8017C9C4 00178624  38 A0 00 10 */	li r5, 0x10
/* 8017C9C8 00178628  4B E8 77 3D */	bl memset
/* 8017C9CC 0017862C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8017C9D0 00178630  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8017C9D4 00178634  7C 08 03 A6 */	mtlr r0
/* 8017C9D8 00178638  38 21 00 10 */	addi r1, r1, 0x10
/* 8017C9DC 0017863C  4E 80 00 20 */	blr

.global func_8017C9E0
func_8017C9E0:
/* 8017C9E0 00178640  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 8017C9E4 00178644  7C 08 02 A6 */	mflr r0
/* 8017C9E8 00178648  90 01 00 44 */	stw r0, 0x44(r1)
/* 8017C9EC 0017864C  39 61 00 40 */	addi r11, r1, 0x40
/* 8017C9F0 00178650  48 04 A7 3D */	bl _savegpr_28
/* 8017C9F4 00178654  7C 7C 1B 78 */	mr r28, r3
/* 8017C9F8 00178658  7C 9D 23 78 */	mr r29, r4
/* 8017C9FC 0017865C  4B F9 FF 79 */	bl func_8011C974
/* 8017CA00 00178660  80 6D 9F 8C */	lwz r3, lbl_8063F24C-_SDA_BASE_(r13)
/* 8017CA04 00178664  2C 03 00 00 */	cmpwi r3, 0
/* 8017CA08 00178668  40 82 00 0C */	bne lbl_8017CA14
/* 8017CA0C 0017866C  3B C0 00 00 */	li r30, 0
/* 8017CA10 00178670  48 00 00 08 */	b lbl_8017CA18
lbl_8017CA14:
/* 8017CA14 00178674  83 C3 00 08 */	lwz r30, 8(r3)
lbl_8017CA18:
/* 8017CA18 00178678  7F C3 F3 78 */	mr r3, r30
/* 8017CA1C 0017867C  7F A4 EB 78 */	mr r4, r29
/* 8017CA20 00178680  48 24 C8 A9 */	bl func_803C92C8
/* 8017CA24 00178684  7C 7F 1B 78 */	mr r31, r3
/* 8017CA28 00178688  7F 83 E3 78 */	mr r3, r28
/* 8017CA2C 0017868C  48 22 FE 15 */	bl func_803AC840
/* 8017CA30 00178690  54 60 07 39 */	rlwinm. r0, r3, 0, 0x1c, 0x1c
/* 8017CA34 00178694  40 82 00 C8 */	bne lbl_8017CAFC
/* 8017CA38 00178698  57 E0 06 3E */	clrlwi r0, r31, 0x18
/* 8017CA3C 0017869C  28 00 00 FF */	cmplwi r0, 0xff
/* 8017CA40 001786A0  41 82 00 BC */	beq lbl_8017CAFC
/* 8017CA44 001786A4  3C 60 80 49 */	lis r3, lbl_8048DFA8@ha
/* 8017CA48 001786A8  57 E0 15 BA */	rlwinm r0, r31, 2, 0x16, 0x1d
/* 8017CA4C 001786AC  38 63 DF A8 */	addi r3, r3, lbl_8048DFA8@l
/* 8017CA50 001786B0  7F E3 00 2E */	lwzx r31, r3, r0
/* 8017CA54 001786B4  2C 1F 00 00 */	cmpwi r31, 0
/* 8017CA58 001786B8  41 82 00 A4 */	beq lbl_8017CAFC
/* 8017CA5C 001786BC  7F 83 E3 78 */	mr r3, r28
/* 8017CA60 001786C0  7F A4 EB 78 */	mr r4, r29
/* 8017CA64 001786C4  38 A0 00 00 */	li r5, 0
/* 8017CA68 001786C8  48 24 C9 5D */	bl func_803C93C4
/* 8017CA6C 001786CC  54 60 06 3E */	clrlwi r0, r3, 0x18
/* 8017CA70 001786D0  28 00 00 FF */	cmplwi r0, 0xff
/* 8017CA74 001786D4  40 82 00 10 */	bne lbl_8017CA84
/* 8017CA78 001786D8  7F E3 FB 78 */	mr r3, r31
/* 8017CA7C 001786DC  7F C4 F3 78 */	mr r4, r30
/* 8017CA80 001786E0  48 00 21 F5 */	bl func_8017EC74
lbl_8017CA84:
/* 8017CA84 001786E4  7F 83 E3 78 */	mr r3, r28
/* 8017CA88 001786E8  7F A4 EB 78 */	mr r4, r29
/* 8017CA8C 001786EC  38 A0 00 00 */	li r5, 0
/* 8017CA90 001786F0  48 24 C9 35 */	bl func_803C93C4
/* 8017CA94 001786F4  54 60 06 3E */	clrlwi r0, r3, 0x18
/* 8017CA98 001786F8  28 00 00 01 */	cmplwi r0, 1
/* 8017CA9C 001786FC  40 82 00 60 */	bne lbl_8017CAFC
/* 8017CAA0 00178700  7F 83 E3 78 */	mr r3, r28
/* 8017CAA4 00178704  7F A4 EB 78 */	mr r4, r29
/* 8017CAA8 00178708  38 A0 00 02 */	li r5, 2
/* 8017CAAC 0017870C  48 24 C9 19 */	bl func_803C93C4
/* 8017CAB0 00178710  54 60 06 3E */	clrlwi r0, r3, 0x18
/* 8017CAB4 00178714  7C 7F 1B 78 */	mr r31, r3
/* 8017CAB8 00178718  28 00 00 FF */	cmplwi r0, 0xff
/* 8017CABC 0017871C  41 82 00 40 */	beq lbl_8017CAFC
/* 8017CAC0 00178720  7F 83 E3 78 */	mr r3, r28
/* 8017CAC4 00178724  48 22 FD 85 */	bl func_803AC848
/* 8017CAC8 00178728  7C 64 1B 78 */	mr r4, r3
/* 8017CACC 0017872C  7F 83 E3 78 */	mr r3, r28
/* 8017CAD0 00178730  7F A5 EB 78 */	mr r5, r29
/* 8017CAD4 00178734  57 E6 06 3E */	clrlwi r6, r31, 0x18
/* 8017CAD8 00178738  38 E1 00 08 */	addi r7, r1, 8
/* 8017CADC 0017873C  48 24 18 DD */	bl func_803BE3B8
/* 8017CAE0 00178740  2C 03 00 00 */	cmpwi r3, 0
/* 8017CAE4 00178744  40 82 00 18 */	bne lbl_8017CAFC
/* 8017CAE8 00178748  7F 83 E3 78 */	mr r3, r28
/* 8017CAEC 0017874C  7F A4 EB 78 */	mr r4, r29
/* 8017CAF0 00178750  38 A0 00 02 */	li r5, 2
/* 8017CAF4 00178754  38 C0 00 FF */	li r6, 0xff
/* 8017CAF8 00178758  48 24 C8 81 */	bl func_803C9378
lbl_8017CAFC:
/* 8017CAFC 0017875C  39 61 00 40 */	addi r11, r1, 0x40
/* 8017CB00 00178760  48 04 A6 79 */	bl _restgpr_28
/* 8017CB04 00178764  80 01 00 44 */	lwz r0, 0x44(r1)
/* 8017CB08 00178768  7C 08 03 A6 */	mtlr r0
/* 8017CB0C 0017876C  38 21 00 40 */	addi r1, r1, 0x40
/* 8017CB10 00178770  4E 80 00 20 */	blr

.global func_8017CB14
func_8017CB14:
/* 8017CB14 00178774  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8017CB18 00178778  7C 08 02 A6 */	mflr r0
/* 8017CB1C 0017877C  90 01 00 24 */	stw r0, 0x24(r1)
/* 8017CB20 00178780  39 61 00 20 */	addi r11, r1, 0x20
/* 8017CB24 00178784  48 04 A6 01 */	bl _savegpr_26
/* 8017CB28 00178788  7C 7D 1B 78 */	mr r29, r3
/* 8017CB2C 0017878C  7C 9E 23 78 */	mr r30, r4
/* 8017CB30 00178790  48 22 FD 11 */	bl func_803AC840
/* 8017CB34 00178794  7C 7B 1B 78 */	mr r27, r3
/* 8017CB38 00178798  7F C4 F3 78 */	mr r4, r30
/* 8017CB3C 0017879C  48 24 C7 8D */	bl func_803C92C8
/* 8017CB40 001787A0  7C 7C 1B 78 */	mr r28, r3
/* 8017CB44 001787A4  3B E0 00 FF */	li r31, 0xff
/* 8017CB48 001787A8  4B F9 FE 2D */	bl func_8011C974
/* 8017CB4C 001787AC  57 60 07 39 */	rlwinm. r0, r27, 0, 0x1c, 0x1c
/* 8017CB50 001787B0  41 82 00 0C */	beq lbl_8017CB5C
/* 8017CB54 001787B4  38 60 00 FF */	li r3, 0xff
/* 8017CB58 001787B8  48 00 01 08 */	b lbl_8017CC60
lbl_8017CB5C:
/* 8017CB5C 001787BC  7F A3 EB 78 */	mr r3, r29
/* 8017CB60 001787C0  48 00 03 79 */	bl func_8017CED8
/* 8017CB64 001787C4  57 80 06 3E */	clrlwi r0, r28, 0x18
/* 8017CB68 001787C8  28 00 00 FF */	cmplwi r0, 0xff
/* 8017CB6C 001787CC  40 82 00 0C */	bne lbl_8017CB78
/* 8017CB70 001787D0  38 60 00 FF */	li r3, 0xff
/* 8017CB74 001787D4  48 00 00 EC */	b lbl_8017CC60
lbl_8017CB78:
/* 8017CB78 001787D8  3C 60 80 49 */	lis r3, lbl_8048DFA8@ha
/* 8017CB7C 001787DC  3C 80 80 49 */	lis r4, lbl_8048DFB8@ha
/* 8017CB80 001787E0  57 85 15 BA */	rlwinm r5, r28, 2, 0x16, 0x1d
/* 8017CB84 001787E4  57 C0 15 BA */	rlwinm r0, r30, 2, 0x16, 0x1d
/* 8017CB88 001787E8  38 63 DF A8 */	addi r3, r3, lbl_8048DFA8@l
/* 8017CB8C 001787EC  38 84 DF B8 */	addi r4, r4, lbl_8048DFB8@l
/* 8017CB90 001787F0  7F 83 28 2E */	lwzx r28, r3, r5
/* 8017CB94 001787F4  7F A3 EB 78 */	mr r3, r29
/* 8017CB98 001787F8  7F 44 00 2E */	lwzx r26, r4, r0
/* 8017CB9C 001787FC  7F C4 F3 78 */	mr r4, r30
/* 8017CBA0 00178800  38 A0 00 02 */	li r5, 2
/* 8017CBA4 00178804  48 24 C8 21 */	bl func_803C93C4
/* 8017CBA8 00178808  54 60 06 3E */	clrlwi r0, r3, 0x18
/* 8017CBAC 0017880C  28 00 00 FF */	cmplwi r0, 0xff
/* 8017CBB0 00178810  40 82 00 AC */	bne lbl_8017CC5C
/* 8017CBB4 00178814  7F 83 E3 78 */	mr r3, r28
/* 8017CBB8 00178818  7F 64 DB 78 */	mr r4, r27
/* 8017CBBC 0017881C  7F 46 D3 78 */	mr r6, r26
/* 8017CBC0 00178820  38 A0 00 00 */	li r5, 0
/* 8017CBC4 00178824  48 01 E5 6D */	bl func_8019B130
/* 8017CBC8 00178828  2C 03 00 00 */	cmpwi r3, 0
/* 8017CBCC 0017882C  40 82 00 08 */	bne lbl_8017CBD4
/* 8017CBD0 00178830  3B E0 00 FF */	li r31, 0xff
lbl_8017CBD4:
/* 8017CBD4 00178834  38 00 00 06 */	li r0, 6
/* 8017CBD8 00178838  38 A0 00 00 */	li r5, 0
/* 8017CBDC 0017883C  7C 09 03 A6 */	mtctr r0
lbl_8017CBE0:
/* 8017CBE0 00178840  2C 1C 00 00 */	cmpwi r28, 0
/* 8017CBE4 00178844  40 82 00 0C */	bne lbl_8017CBF0
/* 8017CBE8 00178848  38 00 00 00 */	li r0, 0
/* 8017CBEC 0017884C  48 00 00 14 */	b lbl_8017CC00
lbl_8017CBF0:
/* 8017CBF0 00178850  54 A0 06 3E */	clrlwi r0, r5, 0x18
/* 8017CBF4 00178854  1C 00 07 74 */	mulli r0, r0, 0x774
/* 8017CBF8 00178858  7C 9C 02 14 */	add r4, r28, r0
/* 8017CBFC 0017885C  38 04 02 8C */	addi r0, r4, 0x28c
lbl_8017CC00:
/* 8017CC00 00178860  7C 00 18 40 */	cmplw r0, r3
/* 8017CC04 00178864  40 82 00 50 */	bne lbl_8017CC54
/* 8017CC08 00178868  7F C3 F3 78 */	mr r3, r30
/* 8017CC0C 0017886C  54 A4 06 3E */	clrlwi r4, r5, 0x18
/* 8017CC10 00178870  48 24 C5 B1 */	bl func_803C91C0
/* 8017CC14 00178874  7C 7F 1B 78 */	mr r31, r3
/* 8017CC18 00178878  7F A3 EB 78 */	mr r3, r29
/* 8017CC1C 0017887C  7F C4 F3 78 */	mr r4, r30
/* 8017CC20 00178880  38 A0 00 00 */	li r5, 0
/* 8017CC24 00178884  38 C0 00 03 */	li r6, 3
/* 8017CC28 00178888  48 24 C7 51 */	bl func_803C9378
/* 8017CC2C 0017888C  7F C3 F3 78 */	mr r3, r30
/* 8017CC30 00178890  57 E4 06 3E */	clrlwi r4, r31, 0x18
/* 8017CC34 00178894  48 24 C5 8D */	bl func_803C91C0
/* 8017CC38 00178898  7C 60 1B 78 */	mr r0, r3
/* 8017CC3C 0017889C  7F A3 EB 78 */	mr r3, r29
/* 8017CC40 001788A0  7F C4 F3 78 */	mr r4, r30
/* 8017CC44 001788A4  38 A0 00 02 */	li r5, 2
/* 8017CC48 001788A8  54 06 06 3E */	clrlwi r6, r0, 0x18
/* 8017CC4C 001788AC  48 24 C7 2D */	bl func_803C9378
/* 8017CC50 001788B0  48 00 00 0C */	b lbl_8017CC5C
lbl_8017CC54:
/* 8017CC54 001788B4  38 A5 00 01 */	addi r5, r5, 1
/* 8017CC58 001788B8  42 00 FF 88 */	bdnz lbl_8017CBE0
lbl_8017CC5C:
/* 8017CC5C 001788BC  7F E3 FB 78 */	mr r3, r31
lbl_8017CC60:
/* 8017CC60 001788C0  39 61 00 20 */	addi r11, r1, 0x20
/* 8017CC64 001788C4  48 04 A5 0D */	bl _restgpr_26
/* 8017CC68 001788C8  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8017CC6C 001788CC  7C 08 03 A6 */	mtlr r0
/* 8017CC70 001788D0  38 21 00 20 */	addi r1, r1, 0x20
/* 8017CC74 001788D4  4E 80 00 20 */	blr

.global func_8017CC78
func_8017CC78:
/* 8017CC78 001788D8  38 6D 9F 80 */	addi r3, r13, lbl_8063F240-_SDA_BASE_
/* 8017CC7C 001788DC  38 80 00 01 */	li r4, 1
/* 8017CC80 001788E0  38 A0 00 04 */	li r5, 4
/* 8017CC84 001788E4  38 C0 00 00 */	li r6, 0
/* 8017CC88 001788E8  4B EA 7C 8C */	b func_80024914