summaryrefslogtreecommitdiff
path: root/asm/code_801FA094.s
blob: 665dfeec5278b22b6127ae95e18e16322914ad8c (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
.include "macros.inc"

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

.global func_801FA094
func_801FA094:
/* 801FA094 001F5CF4  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801FA098 001F5CF8  7C 08 02 A6 */	mflr r0
/* 801FA09C 001F5CFC  90 01 00 24 */	stw r0, 0x24(r1)
/* 801FA0A0 001F5D00  39 61 00 20 */	addi r11, r1, 0x20
/* 801FA0A4 001F5D04  4B FC D0 81 */	bl _savegpr_26
/* 801FA0A8 001F5D08  38 00 00 00 */	li r0, 0
/* 801FA0AC 001F5D0C  90 83 00 00 */	stw r4, 0(r3)
/* 801FA0B0 001F5D10  7C 7F 1B 78 */	mr r31, r3
/* 801FA0B4 001F5D14  7C 9A 23 78 */	mr r26, r4
/* 801FA0B8 001F5D18  90 03 00 04 */	stw r0, 4(r3)
/* 801FA0BC 001F5D1C  90 03 00 08 */	stw r0, 8(r3)
/* 801FA0C0 001F5D20  90 03 00 0C */	stw r0, 0xc(r3)
/* 801FA0C4 001F5D24  90 03 00 10 */	stw r0, 0x10(r3)
/* 801FA0C8 001F5D28  A3 A4 00 18 */	lhz r29, 0x18(r4)
/* 801FA0CC 001F5D2C  2C 1D 00 00 */	cmpwi r29, 0
/* 801FA0D0 001F5D30  40 82 00 08 */	bne lbl_801FA0D8
/* 801FA0D4 001F5D34  48 00 01 A8 */	b lbl_801FA27C
lbl_801FA0D8:
/* 801FA0D8 001F5D38  80 6D 96 38 */	lwz r3, lbl_8063E8F8-_SDA_BASE_(r13)
/* 801FA0DC 001F5D3C  57 A4 13 BA */	rlwinm r4, r29, 2, 0xe, 0x1d
/* 801FA0E0 001F5D40  4B FE 0B B5 */	bl func_801DAC94
/* 801FA0E4 001F5D44  2C 03 00 00 */	cmpwi r3, 0
/* 801FA0E8 001F5D48  90 7F 00 04 */	stw r3, 4(r31)
/* 801FA0EC 001F5D4C  40 82 00 0C */	bne lbl_801FA0F8
/* 801FA0F0 001F5D50  7F E3 FB 78 */	mr r3, r31
/* 801FA0F4 001F5D54  48 00 01 88 */	b lbl_801FA27C
lbl_801FA0F8:
/* 801FA0F8 001F5D58  38 80 00 00 */	li r4, 0
/* 801FA0FC 001F5D5C  38 A0 00 04 */	li r5, 4
/* 801FA100 001F5D60  4B E0 A0 05 */	bl memset
/* 801FA104 001F5D64  3B 80 00 00 */	li r28, 0
/* 801FA108 001F5D68  3B C0 00 00 */	li r30, 0
/* 801FA10C 001F5D6C  48 00 00 58 */	b lbl_801FA164
lbl_801FA110:
/* 801FA110 001F5D70  80 7A 00 08 */	lwz r3, 8(r26)
/* 801FA114 001F5D74  7F 63 F0 2E */	lwzx r27, r3, r30
/* 801FA118 001F5D78  2C 1B 00 00 */	cmpwi r27, 0
/* 801FA11C 001F5D7C  41 82 00 40 */	beq lbl_801FA15C
/* 801FA120 001F5D80  4B FE 0A 09 */	bl func_801DAB28
/* 801FA124 001F5D84  2C 03 00 00 */	cmpwi r3, 0
/* 801FA128 001F5D88  41 82 00 14 */	beq lbl_801FA13C
/* 801FA12C 001F5D8C  80 6D 96 38 */	lwz r3, lbl_8063E8F8-_SDA_BASE_(r13)
/* 801FA130 001F5D90  38 80 01 54 */	li r4, 0x154
/* 801FA134 001F5D94  4B FE 0B 61 */	bl func_801DAC94
/* 801FA138 001F5D98  48 00 00 08 */	b lbl_801FA140
lbl_801FA13C:
/* 801FA13C 001F5D9C  38 60 00 00 */	li r3, 0
lbl_801FA140:
/* 801FA140 001F5DA0  2C 03 00 00 */	cmpwi r3, 0
/* 801FA144 001F5DA4  41 82 00 10 */	beq lbl_801FA154
/* 801FA148 001F5DA8  7F E4 FB 78 */	mr r4, r31
/* 801FA14C 001F5DAC  7F 65 DB 78 */	mr r5, r27
/* 801FA150 001F5DB0  4B FF A4 CD */	bl func_801F461C
lbl_801FA154:
/* 801FA154 001F5DB4  80 9F 00 04 */	lwz r4, 4(r31)
/* 801FA158 001F5DB8  7C 64 F1 2E */	stwx r3, r4, r30
lbl_801FA15C:
/* 801FA15C 001F5DBC  3B DE 00 04 */	addi r30, r30, 4
/* 801FA160 001F5DC0  3B 9C 00 01 */	addi r28, r28, 1
lbl_801FA164:
/* 801FA164 001F5DC4  7C 1C E8 00 */	cmpw r28, r29
/* 801FA168 001F5DC8  41 80 FF A8 */	blt lbl_801FA110
/* 801FA16C 001F5DCC  81 1A 00 24 */	lwz r8, 0x24(r26)
/* 801FA170 001F5DD0  2C 08 00 00 */	cmpwi r8, 0
/* 801FA174 001F5DD4  41 82 01 04 */	beq lbl_801FA278
/* 801FA178 001F5DD8  38 C0 00 00 */	li r6, 0
/* 801FA17C 001F5DDC  7F A9 03 A6 */	mtctr r29
/* 801FA180 001F5DE0  2C 1D 00 00 */	cmpwi r29, 0
/* 801FA184 001F5DE4  40 81 00 E0 */	ble lbl_801FA264
lbl_801FA188:
/* 801FA188 001F5DE8  80 7F 00 04 */	lwz r3, 4(r31)
/* 801FA18C 001F5DEC  7D 23 30 2E */	lwzx r9, r3, r6
/* 801FA190 001F5DF0  2C 09 00 00 */	cmpwi r9, 0
/* 801FA194 001F5DF4  41 82 00 C8 */	beq lbl_801FA25C
/* 801FA198 001F5DF8  A0 89 00 E4 */	lhz r4, 0xe4(r9)
/* 801FA19C 001F5DFC  39 40 00 00 */	li r10, 0
/* 801FA1A0 001F5E00  48 00 00 B0 */	b lbl_801FA250
lbl_801FA1A4:
/* 801FA1A4 001F5E04  80 A9 00 18 */	lwz r5, 0x18(r9)
/* 801FA1A8 001F5E08  2C 05 00 00 */	cmpwi r5, 0
/* 801FA1AC 001F5E0C  40 82 00 0C */	bne lbl_801FA1B8
/* 801FA1B0 001F5E10  38 60 00 00 */	li r3, 0
/* 801FA1B4 001F5E14  48 00 00 54 */	b lbl_801FA208
lbl_801FA1B8:
/* 801FA1B8 001F5E18  A0 09 00 E4 */	lhz r0, 0xe4(r9)
/* 801FA1BC 001F5E1C  55 43 04 3E */	clrlwi r3, r10, 0x10
/* 801FA1C0 001F5E20  7C 03 00 40 */	cmplw r3, r0
/* 801FA1C4 001F5E24  41 80 00 0C */	blt lbl_801FA1D0
/* 801FA1C8 001F5E28  38 60 00 00 */	li r3, 0
/* 801FA1CC 001F5E2C  48 00 00 3C */	b lbl_801FA208
lbl_801FA1D0:
/* 801FA1D0 001F5E30  80 E9 00 08 */	lwz r7, 8(r9)
/* 801FA1D4 001F5E34  55 40 0B FC */	rlwinm r0, r10, 1, 0xf, 0x1e
/* 801FA1D8 001F5E38  7C 65 02 2E */	lhzx r3, r5, r0
/* 801FA1DC 001F5E3C  2C 07 00 00 */	cmpwi r7, 0
/* 801FA1E0 001F5E40  40 82 00 0C */	bne lbl_801FA1EC
/* 801FA1E4 001F5E44  38 60 00 00 */	li r3, 0
/* 801FA1E8 001F5E48  48 00 00 20 */	b lbl_801FA208
lbl_801FA1EC:
/* 801FA1EC 001F5E4C  A0 09 00 DE */	lhz r0, 0xde(r9)
/* 801FA1F0 001F5E50  7C 03 00 40 */	cmplw r3, r0
/* 801FA1F4 001F5E54  41 80 00 0C */	blt lbl_801FA200
/* 801FA1F8 001F5E58  38 60 00 00 */	li r3, 0
/* 801FA1FC 001F5E5C  48 00 00 0C */	b lbl_801FA208
lbl_801FA200:
/* 801FA200 001F5E60  54 60 13 BA */	rlwinm r0, r3, 2, 0xe, 0x1d
/* 801FA204 001F5E64  7C 67 00 2E */	lwzx r3, r7, r0
lbl_801FA208:
/* 801FA208 001F5E68  2C 03 00 00 */	cmpwi r3, 0
/* 801FA20C 001F5E6C  41 82 00 40 */	beq lbl_801FA24C
/* 801FA210 001F5E70  80 A3 01 0C */	lwz r5, 0x10c(r3)
/* 801FA214 001F5E74  2C 05 00 00 */	cmpwi r5, 0
/* 801FA218 001F5E78  41 82 00 34 */	beq lbl_801FA24C
/* 801FA21C 001F5E7C  80 08 00 18 */	lwz r0, 0x18(r8)
/* 801FA220 001F5E80  7C 05 00 40 */	cmplw r5, r0
/* 801FA224 001F5E84  40 82 00 08 */	bne lbl_801FA22C
/* 801FA228 001F5E88  90 7F 00 08 */	stw r3, 8(r31)
lbl_801FA22C:
/* 801FA22C 001F5E8C  80 08 00 1C */	lwz r0, 0x1c(r8)
/* 801FA230 001F5E90  7C 05 00 40 */	cmplw r5, r0
/* 801FA234 001F5E94  40 82 00 08 */	bne lbl_801FA23C
/* 801FA238 001F5E98  90 7F 00 0C */	stw r3, 0xc(r31)
lbl_801FA23C:
/* 801FA23C 001F5E9C  80 08 00 20 */	lwz r0, 0x20(r8)
/* 801FA240 001F5EA0  7C 05 00 40 */	cmplw r5, r0
/* 801FA244 001F5EA4  40 82 00 08 */	bne lbl_801FA24C
/* 801FA248 001F5EA8  90 7F 00 10 */	stw r3, 0x10(r31)
lbl_801FA24C:
/* 801FA24C 001F5EAC  39 4A 00 01 */	addi r10, r10, 1
lbl_801FA250:
/* 801FA250 001F5EB0  55 40 04 3E */	clrlwi r0, r10, 0x10
/* 801FA254 001F5EB4  7C 00 20 40 */	cmplw r0, r4
/* 801FA258 001F5EB8  41 80 FF 4C */	blt lbl_801FA1A4
lbl_801FA25C:
/* 801FA25C 001F5EBC  38 C6 00 04 */	addi r6, r6, 4
/* 801FA260 001F5EC0  42 00 FF 28 */	bdnz lbl_801FA188
lbl_801FA264:
/* 801FA264 001F5EC4  80 1F 00 10 */	lwz r0, 0x10(r31)
/* 801FA268 001F5EC8  2C 00 00 00 */	cmpwi r0, 0
/* 801FA26C 001F5ECC  40 82 00 0C */	bne lbl_801FA278
/* 801FA270 001F5ED0  80 1F 00 0C */	lwz r0, 0xc(r31)
/* 801FA274 001F5ED4  90 1F 00 10 */	stw r0, 0x10(r31)
lbl_801FA278:
/* 801FA278 001F5ED8  7F E3 FB 78 */	mr r3, r31
lbl_801FA27C:
/* 801FA27C 001F5EDC  39 61 00 20 */	addi r11, r1, 0x20
/* 801FA280 001F5EE0  4B FC CE F1 */	bl _restgpr_26
/* 801FA284 001F5EE4  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801FA288 001F5EE8  7C 08 03 A6 */	mtlr r0
/* 801FA28C 001F5EEC  38 21 00 20 */	addi r1, r1, 0x20
/* 801FA290 001F5EF0  4E 80 00 20 */	blr

.global func_801FA294
func_801FA294:
/* 801FA294 001F5EF4  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801FA298 001F5EF8  7C 08 02 A6 */	mflr r0
/* 801FA29C 001F5EFC  2C 03 00 00 */	cmpwi r3, 0
/* 801FA2A0 001F5F00  90 01 00 24 */	stw r0, 0x24(r1)
/* 801FA2A4 001F5F04  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 801FA2A8 001F5F08  93 C1 00 18 */	stw r30, 0x18(r1)
/* 801FA2AC 001F5F0C  7C 9E 23 78 */	mr r30, r4
/* 801FA2B0 001F5F10  93 A1 00 14 */	stw r29, 0x14(r1)
/* 801FA2B4 001F5F14  7C 7D 1B 78 */	mr r29, r3
/* 801FA2B8 001F5F18  41 82 00 94 */	beq lbl_801FA34C
/* 801FA2BC 001F5F1C  80 8D A1 A8 */	lwz r4, lbl_8063F468-_SDA_BASE_(r13)
/* 801FA2C0 001F5F20  80 04 01 24 */	lwz r0, 0x124(r4)
/* 801FA2C4 001F5F24  7C 00 18 40 */	cmplw r0, r3
/* 801FA2C8 001F5F28  40 82 00 0C */	bne lbl_801FA2D4
/* 801FA2CC 001F5F2C  38 60 00 00 */	li r3, 0
/* 801FA2D0 001F5F30  48 00 87 01 */	bl func_802029D0
lbl_801FA2D4:
/* 801FA2D4 001F5F34  80 1D 00 04 */	lwz r0, 4(r29)
/* 801FA2D8 001F5F38  2C 00 00 00 */	cmpwi r0, 0
/* 801FA2DC 001F5F3C  41 82 00 5C */	beq lbl_801FA338
/* 801FA2E0 001F5F40  3B E0 00 00 */	li r31, 0
/* 801FA2E4 001F5F44  48 00 00 24 */	b lbl_801FA308
lbl_801FA2E8:
/* 801FA2E8 001F5F48  80 7D 00 04 */	lwz r3, 4(r29)
/* 801FA2EC 001F5F4C  57 E0 13 BA */	rlwinm r0, r31, 2, 0xe, 0x1d
/* 801FA2F0 001F5F50  7C 63 00 2E */	lwzx r3, r3, r0
/* 801FA2F4 001F5F54  2C 03 00 00 */	cmpwi r3, 0
/* 801FA2F8 001F5F58  41 82 00 0C */	beq lbl_801FA304
/* 801FA2FC 001F5F5C  38 80 00 01 */	li r4, 1
/* 801FA300 001F5F60  4B FF A7 F1 */	bl func_801F4AF0
lbl_801FA304:
/* 801FA304 001F5F64  3B FF 00 01 */	addi r31, r31, 1
lbl_801FA308:
/* 801FA308 001F5F68  80 7D 00 00 */	lwz r3, 0(r29)
/* 801FA30C 001F5F6C  57 E4 04 3E */	clrlwi r4, r31, 0x10
/* 801FA310 001F5F70  A0 03 00 18 */	lhz r0, 0x18(r3)
/* 801FA314 001F5F74  7C 04 00 40 */	cmplw r4, r0
/* 801FA318 001F5F78  41 80 FF D0 */	blt lbl_801FA2E8
/* 801FA31C 001F5F7C  80 9D 00 04 */	lwz r4, 4(r29)
/* 801FA320 001F5F80  2C 04 00 00 */	cmpwi r4, 0
/* 801FA324 001F5F84  41 82 00 14 */	beq lbl_801FA338
/* 801FA328 001F5F88  80 6D 96 38 */	lwz r3, lbl_8063E8F8-_SDA_BASE_(r13)
/* 801FA32C 001F5F8C  4B FE 0A 1D */	bl func_801DAD48
/* 801FA330 001F5F90  38 00 00 00 */	li r0, 0
/* 801FA334 001F5F94  90 1D 00 04 */	stw r0, 4(r29)
lbl_801FA338:
/* 801FA338 001F5F98  2C 1E 00 00 */	cmpwi r30, 0
/* 801FA33C 001F5F9C  40 81 00 10 */	ble lbl_801FA34C
/* 801FA340 001F5FA0  80 6D 96 38 */	lwz r3, lbl_8063E8F8-_SDA_BASE_(r13)
/* 801FA344 001F5FA4  7F A4 EB 78 */	mr r4, r29
/* 801FA348 001F5FA8  4B FE 0A 01 */	bl func_801DAD48
lbl_801FA34C:
/* 801FA34C 001F5FAC  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 801FA350 001F5FB0  7F A3 EB 78 */	mr r3, r29
/* 801FA354 001F5FB4  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 801FA358 001F5FB8  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 801FA35C 001F5FBC  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801FA360 001F5FC0  7C 08 03 A6 */	mtlr r0
/* 801FA364 001F5FC4  38 21 00 20 */	addi r1, r1, 0x20
/* 801FA368 001F5FC8  4E 80 00 20 */	blr

.global func_801FA36C
func_801FA36C:
/* 801FA36C 001F5FCC  38 A0 00 01 */	li r5, 1
/* 801FA370 001F5FD0  38 6D A1 30 */	addi r3, r13, lbl_8063F3F0-_SDA_BASE_
/* 801FA374 001F5FD4  38 80 00 04 */	li r4, 4
/* 801FA378 001F5FD8  38 00 00 00 */	li r0, 0
/* 801FA37C 001F5FDC  98 AD A1 30 */	stb r5, lbl_8063F3F0-_SDA_BASE_(r13)
/* 801FA380 001F5FE0  B0 83 00 02 */	sth r4, 2(r3)
/* 801FA384 001F5FE4  98 03 00 04 */	stb r0, 4(r3)
/* 801FA388 001F5FE8  4E 80 00 20 */	blr