summaryrefslogtreecommitdiff
path: root/asm/code_80169268.s
blob: 1ceced5e2342708dc8d446e6b57e26bc111283b5 (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
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
.include "macros.inc"

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

.global func_80169268
func_80169268:
/* 80169268 00164EC8  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8016926C 00164ECC  7C 08 02 A6 */	mflr r0
/* 80169270 00164ED0  90 01 00 24 */	stw r0, 0x24(r1)
/* 80169274 00164ED4  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80169278 00164ED8  3F E0 80 49 */	lis r31, lbl_8048CB90@ha
/* 8016927C 00164EDC  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80169280 00164EE0  7C 9E 23 78 */	mr r30, r4
/* 80169284 00164EE4  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80169288 00164EE8  7C 7D 1B 78 */	mr r29, r3
/* 8016928C 00164EEC  38 7F CB 90 */	addi r3, r31, lbl_8048CB90@l
/* 80169290 00164EF0  48 10 66 B9 */	bl OSLockMutex
/* 80169294 00164EF4  80 8D 9E 80 */	lwz r4, lbl_8063F140-_SDA_BASE_(r13)
/* 80169298 00164EF8  2C 04 00 00 */	cmpwi r4, 0
/* 8016929C 00164EFC  40 82 00 80 */	bne lbl_8016931C
/* 801692A0 00164F00  80 0D 9E 88 */	lwz r0, lbl_8063F148-_SDA_BASE_(r13)
/* 801692A4 00164F04  7C 1E 00 40 */	cmplw r30, r0
/* 801692A8 00164F08  40 81 00 14 */	ble lbl_801692BC
/* 801692AC 00164F0C  38 7F CB 90 */	addi r3, r31, -13424
/* 801692B0 00164F10  48 10 67 75 */	bl OSUnlockMutex
/* 801692B4 00164F14  38 60 FF FF */	li r3, -1
/* 801692B8 00164F18  48 00 00 DC */	b lbl_80169394
lbl_801692BC:
/* 801692BC 00164F1C  3C 60 50 42 */	lis r3, 0x50425243@ha
/* 801692C0 00164F20  81 0D 9E 84 */	lwz r8, lbl_8063F144-_SDA_BASE_(r13)
/* 801692C4 00164F24  38 E3 52 43 */	addi r7, r3, 0x50425243@l
/* 801692C8 00164F28  38 1E 00 03 */	addi r0, r30, 3
/* 801692CC 00164F2C  90 E8 00 00 */	stw r7, 0(r8)
/* 801692D0 00164F30  38 60 00 01 */	li r3, 1
/* 801692D4 00164F34  38 C0 00 00 */	li r6, 0
/* 801692D8 00164F38  54 00 00 3A */	rlwinm r0, r0, 0, 0, 0x1d
/* 801692DC 00164F3C  90 68 00 04 */	stw r3, 4(r8)
/* 801692E0 00164F40  7F A4 EB 78 */	mr r4, r29
/* 801692E4 00164F44  7F C5 F3 78 */	mr r5, r30
/* 801692E8 00164F48  38 68 00 14 */	addi r3, r8, 0x14
/* 801692EC 00164F4C  90 C8 00 08 */	stw r6, 8(r8)
/* 801692F0 00164F50  90 E8 00 0C */	stw r7, 0xc(r8)
/* 801692F4 00164F54  90 08 00 10 */	stw r0, 0x10(r8)
/* 801692F8 00164F58  4B E9 AD 09 */	bl memcpy
/* 801692FC 00164F5C  38 1E 00 02 */	addi r0, r30, 2
/* 80169300 00164F60  38 7F CB 90 */	addi r3, r31, -13424
/* 80169304 00164F64  54 04 07 FA */	rlwinm r4, r0, 0, 0x1f, 0x1d
/* 80169308 00164F68  38 04 00 14 */	addi r0, r4, 0x14
/* 8016930C 00164F6C  90 0D 9E 80 */	stw r0, lbl_8063F140-_SDA_BASE_(r13)
/* 80169310 00164F70  48 10 67 15 */	bl OSUnlockMutex
/* 80169314 00164F74  38 60 00 00 */	li r3, 0
/* 80169318 00164F78  48 00 00 7C */	b lbl_80169394
lbl_8016931C:
/* 8016931C 00164F7C  80 0D 9E 88 */	lwz r0, lbl_8063F148-_SDA_BASE_(r13)
/* 80169320 00164F80  38 7E 00 08 */	addi r3, r30, 8
/* 80169324 00164F84  7C 04 00 50 */	subf r0, r4, r0
/* 80169328 00164F88  7C 03 00 40 */	cmplw r3, r0
/* 8016932C 00164F8C  40 81 00 14 */	ble lbl_80169340
/* 80169330 00164F90  38 7F CB 90 */	addi r3, r31, -13424
/* 80169334 00164F94  48 10 66 F1 */	bl OSUnlockMutex
/* 80169338 00164F98  38 60 FF FF */	li r3, -1
/* 8016933C 00164F9C  48 00 00 58 */	b lbl_80169394
lbl_80169340:
/* 80169340 00164FA0  80 CD 9E 84 */	lwz r6, lbl_8063F144-_SDA_BASE_(r13)
/* 80169344 00164FA4  3C 60 50 42 */	lis r3, 0x50425243@ha
/* 80169348 00164FA8  38 03 52 43 */	addi r0, r3, 0x50425243@l
/* 8016934C 00164FAC  7F A4 EB 78 */	mr r4, r29
/* 80169350 00164FB0  80 66 00 04 */	lwz r3, 4(r6)
/* 80169354 00164FB4  7F C5 F3 78 */	mr r5, r30
/* 80169358 00164FB8  38 63 00 01 */	addi r3, r3, 1
/* 8016935C 00164FBC  90 66 00 04 */	stw r3, 4(r6)
/* 80169360 00164FC0  80 6D 9E 80 */	lwz r3, lbl_8063F140-_SDA_BASE_(r13)
/* 80169364 00164FC4  7C 06 19 6E */	stwux r0, r6, r3
/* 80169368 00164FC8  93 C6 00 04 */	stw r30, 4(r6)
/* 8016936C 00164FCC  38 66 00 08 */	addi r3, r6, 8
/* 80169370 00164FD0  4B E9 AC 91 */	bl memcpy
/* 80169374 00164FD4  38 1E 00 0B */	addi r0, r30, 0xb
/* 80169378 00164FD8  80 8D 9E 80 */	lwz r4, lbl_8063F140-_SDA_BASE_(r13)
/* 8016937C 00164FDC  54 00 00 3A */	rlwinm r0, r0, 0, 0, 0x1d
/* 80169380 00164FE0  38 7F CB 90 */	addi r3, r31, -13424
/* 80169384 00164FE4  7C 04 02 14 */	add r0, r4, r0
/* 80169388 00164FE8  90 0D 9E 80 */	stw r0, lbl_8063F140-_SDA_BASE_(r13)
/* 8016938C 00164FEC  48 10 66 99 */	bl OSUnlockMutex
/* 80169390 00164FF0  38 60 00 00 */	li r3, 0
lbl_80169394:
/* 80169394 00164FF4  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80169398 00164FF8  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8016939C 00164FFC  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 801693A0 00165000  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 801693A4 00165004  7C 08 03 A6 */	mtlr r0
/* 801693A8 00165008  38 21 00 20 */	addi r1, r1, 0x20
/* 801693AC 0016500C  4E 80 00 20 */	blr

.global func_801693B0
func_801693B0:
/* 801693B0 00165010  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801693B4 00165014  7C 08 02 A6 */	mflr r0
/* 801693B8 00165018  90 01 00 24 */	stw r0, 0x24(r1)
/* 801693BC 0016501C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 801693C0 00165020  3F E0 80 49 */	lis r31, lbl_8048CB90@ha
/* 801693C4 00165024  93 C1 00 18 */	stw r30, 0x18(r1)
/* 801693C8 00165028  7C 7E 1B 78 */	mr r30, r3
/* 801693CC 0016502C  38 7F CB 90 */	addi r3, r31, lbl_8048CB90@l
/* 801693D0 00165030  93 A1 00 14 */	stw r29, 0x14(r1)
/* 801693D4 00165034  7C 9D 23 78 */	mr r29, r4
/* 801693D8 00165038  48 10 67 81 */	bl OSTryLockMutex
/* 801693DC 0016503C  2C 03 00 00 */	cmpwi r3, 0
/* 801693E0 00165040  40 82 00 0C */	bne lbl_801693EC
/* 801693E4 00165044  38 7F CB 90 */	addi r3, r31, -13424
/* 801693E8 00165048  48 10 65 61 */	bl OSLockMutex
lbl_801693EC:
/* 801693EC 0016504C  3C 60 80 49 */	lis r3, lbl_8048CBA8@ha
/* 801693F0 00165050  38 63 CB A8 */	addi r3, r3, lbl_8048CBA8@l
/* 801693F4 00165054  4B FF A2 21 */	bl func_80163614
/* 801693F8 00165058  80 CD 9E 80 */	lwz r6, lbl_8063F140-_SDA_BASE_(r13)
/* 801693FC 0016505C  2C 06 00 00 */	cmpwi r6, 0
/* 80169400 00165060  40 82 00 14 */	bne lbl_80169414
/* 80169404 00165064  3C 60 80 49 */	lis r3, lbl_8048CB90@ha
/* 80169408 00165068  38 63 CB 90 */	addi r3, r3, lbl_8048CB90@l
/* 8016940C 0016506C  48 10 66 19 */	bl OSUnlockMutex
/* 80169410 00165070  48 00 00 74 */	b lbl_80169484
lbl_80169414:
/* 80169414 00165074  2C 1D 00 00 */	cmpwi r29, 0
/* 80169418 00165078  40 82 00 20 */	bne lbl_80169438
/* 8016941C 0016507C  3C 80 80 42 */	lis r4, lbl_8041F738@ha
/* 80169420 00165080  80 AD 9E 84 */	lwz r5, lbl_8063F144-_SDA_BASE_(r13)
/* 80169424 00165084  7F C3 F3 78 */	mr r3, r30
/* 80169428 00165088  38 84 F7 38 */	addi r4, r4, lbl_8041F738@l
/* 8016942C 0016508C  4B FF B3 69 */	bl func_80164794
/* 80169430 00165090  3B A0 01 2C */	li r29, 0x12c
/* 80169434 00165094  48 00 00 08 */	b lbl_8016943C
lbl_80169438:
/* 80169438 00165098  38 60 FF FB */	li r3, -5
lbl_8016943C:
/* 8016943C 0016509C  2C 03 00 00 */	cmpwi r3, 0
/* 80169440 001650A0  40 82 00 10 */	bne lbl_80169450
/* 80169444 001650A4  38 00 00 00 */	li r0, 0
/* 80169448 001650A8  90 0D 9E 80 */	stw r0, lbl_8063F140-_SDA_BASE_(r13)
/* 8016944C 001650AC  48 00 00 2C */	b lbl_80169478
lbl_80169450:
/* 80169450 001650B0  2C 03 FF FB */	cmpwi r3, -5
/* 80169454 001650B4  40 82 00 24 */	bne lbl_80169478
/* 80169458 001650B8  3C 60 80 49 */	lis r3, lbl_8048CBA8@ha
/* 8016945C 001650BC  3C A0 80 17 */	lis r5, func_801693B0@ha
/* 80169460 001650C0  7F A4 EB 78 */	mr r4, r29
/* 80169464 001650C4  7F C6 F3 78 */	mr r6, r30
/* 80169468 001650C8  38 63 CB A8 */	addi r3, r3, lbl_8048CBA8@l
/* 8016946C 001650CC  38 A5 93 B0 */	addi r5, r5, func_801693B0@l
/* 80169470 001650D0  38 E0 00 00 */	li r7, 0
/* 80169474 001650D4  4B FF A1 19 */	bl func_8016358C
lbl_80169478:
/* 80169478 001650D8  3C 60 80 49 */	lis r3, lbl_8048CB90@ha
/* 8016947C 001650DC  38 63 CB 90 */	addi r3, r3, lbl_8048CB90@l
/* 80169480 001650E0  48 10 65 A5 */	bl OSUnlockMutex
lbl_80169484:
/* 80169484 001650E4  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80169488 001650E8  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8016948C 001650EC  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80169490 001650F0  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80169494 001650F4  7C 08 03 A6 */	mtlr r0
/* 80169498 001650F8  38 21 00 20 */	addi r1, r1, 0x20
/* 8016949C 001650FC  4E 80 00 20 */	blr

.global func_801694A0
func_801694A0:
/* 801694A0 00165100  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 801694A4 00165104  7C 08 02 A6 */	mflr r0
/* 801694A8 00165108  90 01 00 14 */	stw r0, 0x14(r1)
/* 801694AC 0016510C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 801694B0 00165110  80 0D 9E 84 */	lwz r0, lbl_8063F144-_SDA_BASE_(r13)
/* 801694B4 00165114  2C 00 00 00 */	cmpwi r0, 0
/* 801694B8 00165118  40 82 00 2C */	bne lbl_801694E4
/* 801694BC 0016511C  48 0F 4B 15 */	bl func_8025DFD0
/* 801694C0 00165120  3F E0 00 01 */	lis r31, 0x00008000@ha
/* 801694C4 00165124  38 9F 80 00 */	addi r4, r31, 0x00008000@l
/* 801694C8 00165128  48 0F 4A F9 */	bl func_8025DFC0
/* 801694CC 0016512C  38 1F 80 00 */	addi r0, r31, -32768
/* 801694D0 00165130  90 6D 9E 84 */	stw r3, lbl_8063F144-_SDA_BASE_(r13)
/* 801694D4 00165134  3C 60 80 49 */	lis r3, lbl_8048CB90@ha
/* 801694D8 00165138  90 0D 9E 88 */	stw r0, lbl_8063F148-_SDA_BASE_(r13)
/* 801694DC 0016513C  38 63 CB 90 */	addi r3, r3, lbl_8048CB90@l
/* 801694E0 00165140  48 10 64 31 */	bl OSInitMutex
lbl_801694E4:
/* 801694E4 00165144  38 00 00 00 */	li r0, 0
/* 801694E8 00165148  3C 60 80 49 */	lis r3, lbl_8048CBA8@ha
/* 801694EC 0016514C  90 0D 9E 80 */	stw r0, lbl_8063F140-_SDA_BASE_(r13)
/* 801694F0 00165150  38 63 CB A8 */	addi r3, r3, lbl_8048CBA8@l
/* 801694F4 00165154  4B FF A0 8D */	bl func_80163580
/* 801694F8 00165158  80 01 00 14 */	lwz r0, 0x14(r1)
/* 801694FC 0016515C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80169500 00165160  7C 08 03 A6 */	mtlr r0
/* 80169504 00165164  38 21 00 10 */	addi r1, r1, 0x10
/* 80169508 00165168  4E 80 00 20 */	blr

.global func_8016950C
func_8016950C:
/* 8016950C 0016516C  80 A3 00 0C */	lwz r5, 0xc(r3)
/* 80169510 00165170  80 83 00 14 */	lwz r4, 0x14(r3)
/* 80169514 00165174  38 05 00 03 */	addi r0, r5, 3
/* 80169518 00165178  80 A3 00 1C */	lwz r5, 0x1c(r3)
/* 8016951C 0016517C  54 06 00 3A */	rlwinm r6, r0, 0, 0, 0x1d
/* 80169520 00165180  38 04 00 03 */	addi r0, r4, 3
/* 80169524 00165184  80 83 00 24 */	lwz r4, 0x24(r3)
/* 80169528 00165188  38 A5 00 03 */	addi r5, r5, 3
/* 8016952C 0016518C  38 E6 00 30 */	addi r7, r6, 0x30
/* 80169530 00165190  54 06 00 3A */	rlwinm r6, r0, 0, 0, 0x1d
/* 80169534 00165194  80 63 00 2C */	lwz r3, 0x2c(r3)
/* 80169538 00165198  38 84 00 03 */	addi r4, r4, 3
/* 8016953C 0016519C  54 A5 00 3A */	rlwinm r5, r5, 0, 0, 0x1d
/* 80169540 001651A0  38 03 00 03 */	addi r0, r3, 3
/* 80169544 001651A4  7C E7 32 14 */	add r7, r7, r6
/* 80169548 001651A8  54 83 00 3A */	rlwinm r3, r4, 0, 0, 0x1d
/* 8016954C 001651AC  7C E7 2A 14 */	add r7, r7, r5
/* 80169550 001651B0  54 00 00 3A */	rlwinm r0, r0, 0, 0, 0x1d
/* 80169554 001651B4  7C E7 1A 14 */	add r7, r7, r3
/* 80169558 001651B8  7C 67 02 14 */	add r3, r7, r0
/* 8016955C 001651BC  4E 80 00 20 */	blr

.global func_80169560
func_80169560:
/* 80169560 001651C0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80169564 001651C4  7C 08 02 A6 */	mflr r0
/* 80169568 001651C8  38 A0 00 30 */	li r5, 0x30
/* 8016956C 001651CC  90 01 00 24 */	stw r0, 0x24(r1)
/* 80169570 001651D0  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80169574 001651D4  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80169578 001651D8  7C 9E 23 78 */	mr r30, r4
/* 8016957C 001651DC  38 80 00 00 */	li r4, 0
/* 80169580 001651E0  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80169584 001651E4  7C 7D 1B 78 */	mr r29, r3
/* 80169588 001651E8  7F C3 F3 78 */	mr r3, r30
/* 8016958C 001651EC  4B E9 AB 79 */	bl memset
/* 80169590 001651F0  80 1D 00 00 */	lwz r0, 0(r29)
/* 80169594 001651F4  3B FE 00 30 */	addi r31, r30, 0x30
/* 80169598 001651F8  7F E3 FB 78 */	mr r3, r31
/* 8016959C 001651FC  90 1E 00 00 */	stw r0, 0(r30)
/* 801695A0 00165200  88 1D 00 04 */	lbz r0, 4(r29)
/* 801695A4 00165204  98 1E 00 04 */	stb r0, 4(r30)
/* 801695A8 00165208  88 1D 00 05 */	lbz r0, 5(r29)
/* 801695AC 0016520C  98 1E 00 05 */	stb r0, 5(r30)
/* 801695B0 00165210  88 1D 00 06 */	lbz r0, 6(r29)
/* 801695B4 00165214  98 1E 00 06 */	stb r0, 6(r30)
/* 801695B8 00165218  88 1D 00 07 */	lbz r0, 7(r29)
/* 801695BC 0016521C  98 1E 00 07 */	stb r0, 7(r30)
/* 801695C0 00165220  80 9D 00 08 */	lwz r4, 8(r29)
/* 801695C4 00165224  80 BD 00 0C */	lwz r5, 0xc(r29)
/* 801695C8 00165228  4B E9 AA 39 */	bl memcpy
/* 801695CC 0016522C  7C 1E F8 50 */	subf r0, r30, r31
/* 801695D0 00165230  90 1E 00 08 */	stw r0, 8(r30)
/* 801695D4 00165234  80 1D 00 0C */	lwz r0, 0xc(r29)
/* 801695D8 00165238  90 1E 00 0C */	stw r0, 0xc(r30)
/* 801695DC 0016523C  80 7D 00 0C */	lwz r3, 0xc(r29)
/* 801695E0 00165240  80 9D 00 10 */	lwz r4, 0x10(r29)
/* 801695E4 00165244  38 03 00 03 */	addi r0, r3, 3
/* 801695E8 00165248  80 BD 00 14 */	lwz r5, 0x14(r29)
/* 801695EC 0016524C  54 00 00 3A */	rlwinm r0, r0, 0, 0, 0x1d
/* 801695F0 00165250  7F FF 02 14 */	add r31, r31, r0
/* 801695F4 00165254  7F E3 FB 78 */	mr r3, r31
/* 801695F8 00165258  4B E9 AA 09 */	bl memcpy
/* 801695FC 0016525C  7C 1E F8 50 */	subf r0, r30, r31
/* 80169600 00165260  90 1E 00 10 */	stw r0, 0x10(r30)
/* 80169604 00165264  80 1D 00 14 */	lwz r0, 0x14(r29)
/* 80169608 00165268  90 1E 00 14 */	stw r0, 0x14(r30)
/* 8016960C 0016526C  80 7D 00 14 */	lwz r3, 0x14(r29)
/* 80169610 00165270  80 9D 00 18 */	lwz r4, 0x18(r29)
/* 80169614 00165274  38 03 00 03 */	addi r0, r3, 3
/* 80169618 00165278  80 BD 00 1C */	lwz r5, 0x1c(r29)
/* 8016961C 0016527C  54 00 00 3A */	rlwinm r0, r0, 0, 0, 0x1d
/* 80169620 00165280  7F FF 02 14 */	add r31, r31, r0
/* 80169624 00165284  7F E3 FB 78 */	mr r3, r31
/* 80169628 00165288  4B E9 A9 D9 */	bl memcpy
/* 8016962C 0016528C  7C 1E F8 50 */	subf r0, r30, r31
/* 80169630 00165290  90 1E 00 18 */	stw r0, 0x18(r30)
/* 80169634 00165294  80 1D 00 1C */	lwz r0, 0x1c(r29)
/* 80169638 00165298  90 1E 00 1C */	stw r0, 0x1c(r30)
/* 8016963C 0016529C  80 7D 00 1C */	lwz r3, 0x1c(r29)
/* 80169640 001652A0  80 9D 00 20 */	lwz r4, 0x20(r29)
/* 80169644 001652A4  38 03 00 03 */	addi r0, r3, 3
/* 80169648 001652A8  80 BD 00 24 */	lwz r5, 0x24(r29)
/* 8016964C 001652AC  54 00 00 3A */	rlwinm r0, r0, 0, 0, 0x1d
/* 80169650 001652B0  7F FF 02 14 */	add r31, r31, r0
/* 80169654 001652B4  7F E3 FB 78 */	mr r3, r31
/* 80169658 001652B8  4B E9 A9 A9 */	bl memcpy
/* 8016965C 001652BC  7C 1E F8 50 */	subf r0, r30, r31
/* 80169660 001652C0  90 1E 00 20 */	stw r0, 0x20(r30)
/* 80169664 001652C4  80 1D 00 24 */	lwz r0, 0x24(r29)
/* 80169668 001652C8  90 1E 00 24 */	stw r0, 0x24(r30)
/* 8016966C 001652CC  80 7D 00 24 */	lwz r3, 0x24(r29)
/* 80169670 001652D0  80 9D 00 28 */	lwz r4, 0x28(r29)
/* 80169674 001652D4  38 03 00 03 */	addi r0, r3, 3
/* 80169678 001652D8  80 BD 00 2C */	lwz r5, 0x2c(r29)
/* 8016967C 001652DC  54 00 00 3A */	rlwinm r0, r0, 0, 0, 0x1d
/* 80169680 001652E0  7F FF 02 14 */	add r31, r31, r0
/* 80169684 001652E4  7F E3 FB 78 */	mr r3, r31
/* 80169688 001652E8  4B E9 A9 79 */	bl memcpy
/* 8016968C 001652EC  7C 1E F8 50 */	subf r0, r30, r31
/* 80169690 001652F0  90 1E 00 28 */	stw r0, 0x28(r30)
/* 80169694 001652F4  80 1D 00 2C */	lwz r0, 0x2c(r29)
/* 80169698 001652F8  90 1E 00 2C */	stw r0, 0x2c(r30)
/* 8016969C 001652FC  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 801696A0 00165300  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 801696A4 00165304  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 801696A8 00165308  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801696AC 0016530C  7C 08 03 A6 */	mtlr r0
/* 801696B0 00165310  38 21 00 20 */	addi r1, r1, 0x20
/* 801696B4 00165314  4E 80 00 20 */	blr

.global lbl_801696B8
lbl_801696B8:
/* 801696B8 00165318  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801696BC 0016531C  7C 08 02 A6 */	mflr r0
/* 801696C0 00165320  90 01 00 24 */	stw r0, 0x24(r1)
/* 801696C4 00165324  39 61 00 20 */	addi r11, r1, 0x20
/* 801696C8 00165328  48 05 DA 61 */	bl _savegpr_27
/* 801696CC 0016532C  7C 9B 23 78 */	mr r27, r4
/* 801696D0 00165330  7C BC 2B 78 */	mr r28, r5
/* 801696D4 00165334  4B FF E3 5D */	bl func_80167A30
/* 801696D8 00165338  2C 03 00 00 */	cmpwi r3, 0
/* 801696DC 0016533C  7C 7E 1B 78 */	mr r30, r3
/* 801696E0 00165340  40 80 00 0C */	bge lbl_801696EC
/* 801696E4 00165344  38 60 FF FF */	li r3, -1
/* 801696E8 00165348  48 00 00 8C */	b lbl_80169774
lbl_801696EC:
/* 801696EC 0016534C  4B FF B5 19 */	bl func_80164C04
/* 801696F0 00165350  2C 03 00 00 */	cmpwi r3, 0
/* 801696F4 00165354  40 82 00 0C */	bne lbl_80169700
/* 801696F8 00165358  38 60 FF FE */	li r3, -2
/* 801696FC 0016535C  48 00 00 78 */	b lbl_80169774
lbl_80169700:
/* 80169700 00165360  7F 63 DB 78 */	mr r3, r27
/* 80169704 00165364  4B FF FE 09 */	bl func_8016950C
/* 80169708 00165368  7C 7F 1B 78 */	mr r31, r3
/* 8016970C 0016536C  48 0F 48 C5 */	bl func_8025DFD0
/* 80169710 00165370  7F E4 FB 78 */	mr r4, r31
/* 80169714 00165374  48 0F 48 AD */	bl func_8025DFC0
/* 80169718 00165378  2C 03 00 00 */	cmpwi r3, 0
/* 8016971C 0016537C  7C 7D 1B 78 */	mr r29, r3
/* 80169720 00165380  40 82 00 0C */	bne lbl_8016972C
/* 80169724 00165384  38 60 FF FF */	li r3, -1
/* 80169728 00165388  48 00 00 4C */	b lbl_80169774
lbl_8016972C:
/* 8016972C 0016538C  7F 63 DB 78 */	mr r3, r27
/* 80169730 00165390  7F A4 EB 78 */	mr r4, r29
/* 80169734 00165394  4B FF FE 2D */	bl func_80169560
/* 80169738 00165398  7F A3 EB 78 */	mr r3, r29
/* 8016973C 0016539C  7F E4 FB 78 */	mr r4, r31
/* 80169740 001653A0  4B FF FB 29 */	bl func_80169268
/* 80169744 001653A4  7C 7F 1B 78 */	mr r31, r3
/* 80169748 001653A8  48 0F 48 89 */	bl func_8025DFD0
/* 8016974C 001653AC  7F A4 EB 78 */	mr r4, r29
/* 80169750 001653B0  48 0F 48 79 */	bl func_8025DFC8
/* 80169754 001653B4  2C 1F 00 00 */	cmpwi r31, 0
/* 80169758 001653B8  41 82 00 0C */	beq lbl_80169764
/* 8016975C 001653BC  38 60 FF FF */	li r3, -1
/* 80169760 001653C0  48 00 00 14 */	b lbl_80169774
lbl_80169764:
/* 80169764 001653C4  7F C3 F3 78 */	mr r3, r30
/* 80169768 001653C8  7F 84 E3 78 */	mr r4, r28
/* 8016976C 001653CC  4B FF FC 45 */	bl func_801693B0
/* 80169770 001653D0  38 60 00 00 */	li r3, 0
lbl_80169774:
/* 80169774 001653D4  39 61 00 20 */	addi r11, r1, 0x20
/* 80169778 001653D8  48 05 D9 FD */	bl _restgpr_27
/* 8016977C 001653DC  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80169780 001653E0  7C 08 03 A6 */	mtlr r0
/* 80169784 001653E4  38 21 00 20 */	addi r1, r1, 0x20
/* 80169788 001653E8  4E 80 00 20 */	blr

.global func_8016978C
func_8016978C:
/* 8016978C 001653EC  38 A0 00 01 */	li r5, 1
/* 80169790 001653F0  38 6D 9E 78 */	addi r3, r13, lbl_8063F138-_SDA_BASE_
/* 80169794 001653F4  38 80 00 04 */	li r4, 4
/* 80169798 001653F8  38 00 00 00 */	li r0, 0
/* 8016979C 001653FC  98 AD 9E 78 */	stb r5, lbl_8063F138-_SDA_BASE_(r13)
/* 801697A0 00165400  B0 83 00 02 */	sth r4, 2(r3)
/* 801697A4 00165404  98 03 00 04 */	stb r0, 4(r3)
/* 801697A8 00165408  4E 80 00 20 */	blr