summaryrefslogtreecommitdiff
path: root/asm/code_8017E3F4.s
blob: e92eea07ac7b0cdfc7f2c044785dfa3bd96ff327 (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
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
.include "macros.inc"

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

.global func_8017E3F4
func_8017E3F4:
/* 8017E3F4 0017A054  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8017E3F8 0017A058  7C 08 02 A6 */	mflr r0
/* 8017E3FC 0017A05C  90 01 00 14 */	stw r0, 0x14(r1)
/* 8017E400 0017A060  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8017E404 0017A064  7C 7F 1B 78 */	mr r31, r3
/* 8017E408 0017A068  4B F9 E5 6D */	bl func_8011C974
/* 8017E40C 0017A06C  7C 63 FA 14 */	add r3, r3, r31
/* 8017E410 0017A070  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8017E414 0017A074  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8017E418 0017A078  88 63 01 1C */	lbz r3, 0x11c(r3)
/* 8017E41C 0017A07C  7C 08 03 A6 */	mtlr r0
/* 8017E420 0017A080  38 21 00 10 */	addi r1, r1, 0x10
/* 8017E424 0017A084  4E 80 00 20 */	blr

.global func_8017E428
func_8017E428:
/* 8017E428 0017A088  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8017E42C 0017A08C  7C 08 02 A6 */	mflr r0
/* 8017E430 0017A090  90 01 00 14 */	stw r0, 0x14(r1)
/* 8017E434 0017A094  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8017E438 0017A098  7C 7F 1B 78 */	mr r31, r3
/* 8017E43C 0017A09C  4B F9 E5 39 */	bl func_8011C974
/* 8017E440 0017A0A0  7C 63 FA 14 */	add r3, r3, r31
/* 8017E444 0017A0A4  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8017E448 0017A0A8  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8017E44C 0017A0AC  88 63 01 20 */	lbz r3, 0x120(r3)
/* 8017E450 0017A0B0  7C 08 03 A6 */	mtlr r0
/* 8017E454 0017A0B4  38 21 00 10 */	addi r1, r1, 0x10
/* 8017E458 0017A0B8  4E 80 00 20 */	blr

.global func_8017E45C
func_8017E45C:
/* 8017E45C 0017A0BC  38 00 00 06 */	li r0, 6
/* 8017E460 0017A0C0  38 E0 00 00 */	li r7, 0
/* 8017E464 0017A0C4  39 00 00 00 */	li r8, 0
/* 8017E468 0017A0C8  7C 09 03 A6 */	mtctr r0
lbl_8017E46C:
/* 8017E46C 0017A0CC  55 00 15 BA */	rlwinm r0, r8, 2, 0x16, 0x1d
/* 8017E470 0017A0D0  7C C3 00 2E */	lwzx r6, r3, r0
/* 8017E474 0017A0D4  2C 06 00 00 */	cmpwi r6, 0
/* 8017E478 0017A0D8  41 82 00 64 */	beq lbl_8017E4DC
/* 8017E47C 0017A0DC  88 C6 00 8A */	lbz r6, 0x8a(r6)
/* 8017E480 0017A0E0  54 C0 CF FF */	rlwinm. r0, r6, 0x19, 0x1f, 0x1f
/* 8017E484 0017A0E4  41 82 00 58 */	beq lbl_8017E4DC
/* 8017E488 0017A0E8  2C 05 00 00 */	cmpwi r5, 0
/* 8017E48C 0017A0EC  41 82 00 44 */	beq lbl_8017E4D0
/* 8017E490 0017A0F0  28 05 00 01 */	cmplwi r5, 1
/* 8017E494 0017A0F4  40 82 00 10 */	bne lbl_8017E4A4
/* 8017E498 0017A0F8  54 C0 D7 FF */	rlwinm. r0, r6, 0x1a, 0x1f, 0x1f
/* 8017E49C 0017A0FC  41 82 00 40 */	beq lbl_8017E4DC
/* 8017E4A0 0017A100  48 00 00 30 */	b lbl_8017E4D0
lbl_8017E4A4:
/* 8017E4A4 0017A104  28 05 00 02 */	cmplwi r5, 2
/* 8017E4A8 0017A108  40 82 00 10 */	bne lbl_8017E4B8
/* 8017E4AC 0017A10C  54 C0 DF FF */	rlwinm. r0, r6, 0x1b, 0x1f, 0x1f
/* 8017E4B0 0017A110  41 82 00 2C */	beq lbl_8017E4DC
/* 8017E4B4 0017A114  48 00 00 1C */	b lbl_8017E4D0
lbl_8017E4B8:
/* 8017E4B8 0017A118  28 05 00 03 */	cmplwi r5, 3
/* 8017E4BC 0017A11C  40 82 00 14 */	bne lbl_8017E4D0
/* 8017E4C0 0017A120  54 C0 D7 FF */	rlwinm. r0, r6, 0x1a, 0x1f, 0x1f
/* 8017E4C4 0017A124  40 82 00 18 */	bne lbl_8017E4DC
/* 8017E4C8 0017A128  54 C0 DF FF */	rlwinm. r0, r6, 0x1b, 0x1f, 0x1f
/* 8017E4CC 0017A12C  40 82 00 10 */	bne lbl_8017E4DC
lbl_8017E4D0:
/* 8017E4D0 0017A130  54 E0 06 3E */	clrlwi r0, r7, 0x18
/* 8017E4D4 0017A134  38 E7 00 01 */	addi r7, r7, 1
/* 8017E4D8 0017A138  7D 04 01 AE */	stbx r8, r4, r0
lbl_8017E4DC:
/* 8017E4DC 0017A13C  39 08 00 01 */	addi r8, r8, 1
/* 8017E4E0 0017A140  42 00 FF 8C */	bdnz lbl_8017E46C
/* 8017E4E4 0017A144  7C E3 3B 78 */	mr r3, r7
/* 8017E4E8 0017A148  4E 80 00 20 */	blr

.global func_8017E4EC
func_8017E4EC:
/* 8017E4EC 0017A14C  94 21 FF B0 */	stwu r1, -0x50(r1)
/* 8017E4F0 0017A150  7C 08 02 A6 */	mflr r0
/* 8017E4F4 0017A154  90 01 00 54 */	stw r0, 0x54(r1)
/* 8017E4F8 0017A158  39 61 00 50 */	addi r11, r1, 0x50
/* 8017E4FC 0017A15C  48 04 8C 19 */	bl _savegpr_22
/* 8017E500 0017A160  38 00 00 06 */	li r0, 6
/* 8017E504 0017A164  7C BA 2B 78 */	mr r26, r5
/* 8017E508 0017A168  7C DD 33 78 */	mr r29, r6
/* 8017E50C 0017A16C  7C 99 23 78 */	mr r25, r4
/* 8017E510 0017A170  38 E1 00 10 */	addi r7, r1, 0x10
/* 8017E514 0017A174  38 A1 00 08 */	addi r5, r1, 8
/* 8017E518 0017A178  3B 80 00 00 */	li r28, 0
/* 8017E51C 0017A17C  39 40 00 00 */	li r10, 0
/* 8017E520 0017A180  39 20 00 00 */	li r9, 0
/* 8017E524 0017A184  38 C0 00 FF */	li r6, 0xff
/* 8017E528 0017A188  7C 09 03 A6 */	mtctr r0
lbl_8017E52C:
/* 8017E52C 0017A18C  55 48 15 BA */	rlwinm r8, r10, 2, 0x16, 0x1d
/* 8017E530 0017A190  55 40 06 3E */	clrlwi r0, r10, 0x18
/* 8017E534 0017A194  7D 27 41 2E */	stwx r9, r7, r8
/* 8017E538 0017A198  7C C4 01 AE */	stbx r6, r4, r0
/* 8017E53C 0017A19C  7D 45 01 AE */	stbx r10, r5, r0
/* 8017E540 0017A1A0  39 4A 00 01 */	addi r10, r10, 1
/* 8017E544 0017A1A4  42 00 FF E8 */	bdnz lbl_8017E52C
/* 8017E548 0017A1A8  38 00 00 06 */	li r0, 6
/* 8017E54C 0017A1AC  38 C1 00 08 */	addi r6, r1, 8
/* 8017E550 0017A1B0  38 81 00 10 */	addi r4, r1, 0x10
/* 8017E554 0017A1B4  39 00 00 00 */	li r8, 0
/* 8017E558 0017A1B8  7C 09 03 A6 */	mtctr r0
lbl_8017E55C:
/* 8017E55C 0017A1BC  55 07 06 3E */	clrlwi r7, r8, 0x18
/* 8017E560 0017A1C0  1C 07 00 8C */	mulli r0, r7, 0x8c
/* 8017E564 0017A1C4  7C A3 02 14 */	add r5, r3, r0
/* 8017E568 0017A1C8  88 05 02 86 */	lbz r0, 0x286(r5)
/* 8017E56C 0017A1CC  54 00 CF FF */	rlwinm. r0, r0, 0x19, 0x1f, 0x1f
/* 8017E570 0017A1D0  41 82 00 14 */	beq lbl_8017E584
/* 8017E574 0017A1D4  38 A5 01 FC */	addi r5, r5, 0x1fc
/* 8017E578 0017A1D8  55 00 15 BA */	rlwinm r0, r8, 2, 0x16, 0x1d
/* 8017E57C 0017A1DC  7D 06 39 AE */	stbx r8, r6, r7
/* 8017E580 0017A1E0  7C A4 01 2E */	stwx r5, r4, r0
lbl_8017E584:
/* 8017E584 0017A1E4  39 08 00 01 */	addi r8, r8, 1
/* 8017E588 0017A1E8  42 00 FF D4 */	bdnz lbl_8017E55C
/* 8017E58C 0017A1EC  38 61 00 10 */	addi r3, r1, 0x10
/* 8017E590 0017A1F0  38 81 00 08 */	addi r4, r1, 8
/* 8017E594 0017A1F4  38 A0 00 01 */	li r5, 1
/* 8017E598 0017A1F8  4B FF FE C5 */	bl func_8017E45C
/* 8017E59C 0017A1FC  7C 76 1B 78 */	mr r22, r3
/* 8017E5A0 0017A200  38 61 00 10 */	addi r3, r1, 0x10
/* 8017E5A4 0017A204  38 81 00 08 */	addi r4, r1, 8
/* 8017E5A8 0017A208  38 A0 00 02 */	li r5, 2
/* 8017E5AC 0017A20C  4B FF FE B1 */	bl func_8017E45C
/* 8017E5B0 0017A210  7C 7B 1B 78 */	mr r27, r3
/* 8017E5B4 0017A214  48 04 31 59 */	bl func_801C170C
/* 8017E5B8 0017A218  28 03 00 01 */	cmplwi r3, 1
/* 8017E5BC 0017A21C  40 82 00 28 */	bne lbl_8017E5E4
/* 8017E5C0 0017A220  56 C0 06 3E */	clrlwi r0, r22, 0x18
/* 8017E5C4 0017A224  28 00 00 01 */	cmplwi r0, 1
/* 8017E5C8 0017A228  40 81 00 08 */	ble lbl_8017E5D0
/* 8017E5CC 0017A22C  3A C0 00 01 */	li r22, 1
lbl_8017E5D0:
/* 8017E5D0 0017A230  57 60 06 3E */	clrlwi r0, r27, 0x18
/* 8017E5D4 0017A234  28 00 00 01 */	cmplwi r0, 1
/* 8017E5D8 0017A238  40 81 00 5C */	ble lbl_8017E634
/* 8017E5DC 0017A23C  3B 60 00 01 */	li r27, 1
/* 8017E5E0 0017A240  48 00 00 54 */	b lbl_8017E634
lbl_8017E5E4:
/* 8017E5E4 0017A244  2C 1D 00 01 */	cmpwi r29, 1
/* 8017E5E8 0017A248  41 82 00 08 */	beq lbl_8017E5F0
/* 8017E5EC 0017A24C  40 82 00 28 */	bne lbl_8017E614
lbl_8017E5F0:
/* 8017E5F0 0017A250  56 C0 06 3E */	clrlwi r0, r22, 0x18
/* 8017E5F4 0017A254  28 00 00 02 */	cmplwi r0, 2
/* 8017E5F8 0017A258  40 81 00 08 */	ble lbl_8017E600
/* 8017E5FC 0017A25C  3A C0 00 02 */	li r22, 2
lbl_8017E600:
/* 8017E600 0017A260  57 60 06 3E */	clrlwi r0, r27, 0x18
/* 8017E604 0017A264  28 00 00 02 */	cmplwi r0, 2
/* 8017E608 0017A268  40 81 00 2C */	ble lbl_8017E634
/* 8017E60C 0017A26C  3B 60 00 02 */	li r27, 2
/* 8017E610 0017A270  48 00 00 24 */	b lbl_8017E634
lbl_8017E614:
/* 8017E614 0017A274  56 C0 06 3E */	clrlwi r0, r22, 0x18
/* 8017E618 0017A278  28 00 00 01 */	cmplwi r0, 1
/* 8017E61C 0017A27C  40 81 00 08 */	ble lbl_8017E624
/* 8017E620 0017A280  3A C0 00 01 */	li r22, 1
lbl_8017E624:
/* 8017E624 0017A284  57 60 06 3E */	clrlwi r0, r27, 0x18
/* 8017E628 0017A288  28 00 00 01 */	cmplwi r0, 1
/* 8017E62C 0017A28C  40 81 00 08 */	ble lbl_8017E634
/* 8017E630 0017A290  3B 60 00 01 */	li r27, 1
lbl_8017E634:
/* 8017E634 0017A294  48 04 30 6D */	bl func_801C16A0
/* 8017E638 0017A298  28 03 00 01 */	cmplwi r3, 1
/* 8017E63C 0017A29C  40 82 00 A0 */	bne lbl_8017E6DC
/* 8017E640 0017A2A0  3A E1 00 08 */	addi r23, r1, 8
/* 8017E644 0017A2A4  3B E1 00 10 */	addi r31, r1, 0x10
/* 8017E648 0017A2A8  3A C0 00 00 */	li r22, 0
/* 8017E64C 0017A2AC  3B 60 00 06 */	li r27, 6
lbl_8017E650:
/* 8017E650 0017A2B0  57 80 06 3E */	clrlwi r0, r28, 0x18
/* 8017E654 0017A2B4  7C 00 D0 40 */	cmplw r0, r26
/* 8017E658 0017A2B8  40 80 02 90 */	bge lbl_8017E8E8
/* 8017E65C 0017A2BC  3B 00 00 00 */	li r24, 0
/* 8017E660 0017A2C0  38 60 00 00 */	li r3, 0
/* 8017E664 0017A2C4  7F 69 03 A6 */	mtctr r27
lbl_8017E668:
/* 8017E668 0017A2C8  54 60 15 BA */	rlwinm r0, r3, 2, 0x16, 0x1d
/* 8017E66C 0017A2CC  7C 9F 00 2E */	lwzx r4, r31, r0
/* 8017E670 0017A2D0  2C 04 00 00 */	cmpwi r4, 0
/* 8017E674 0017A2D4  41 82 00 1C */	beq lbl_8017E690
/* 8017E678 0017A2D8  88 04 00 8A */	lbz r0, 0x8a(r4)
/* 8017E67C 0017A2DC  54 00 CF FF */	rlwinm. r0, r0, 0x19, 0x1f, 0x1f
/* 8017E680 0017A2E0  41 82 00 10 */	beq lbl_8017E690
/* 8017E684 0017A2E4  57 00 06 3E */	clrlwi r0, r24, 0x18
/* 8017E688 0017A2E8  3B 18 00 01 */	addi r24, r24, 1
/* 8017E68C 0017A2EC  7C 77 01 AE */	stbx r3, r23, r0
lbl_8017E690:
/* 8017E690 0017A2F0  38 63 00 01 */	addi r3, r3, 1
/* 8017E694 0017A2F4  42 00 FF D4 */	bdnz lbl_8017E668
/* 8017E698 0017A2F8  57 00 06 3F */	clrlwi. r0, r24, 0x18
/* 8017E69C 0017A2FC  41 82 02 4C */	beq lbl_8017E8E8
/* 8017E6A0 0017A300  48 00 02 61 */	bl func_8017E900
/* 8017E6A4 0017A304  54 65 04 3E */	clrlwi r5, r3, 0x10
/* 8017E6A8 0017A308  57 04 06 3E */	clrlwi r4, r24, 0x18
/* 8017E6AC 0017A30C  7C 65 23 D6 */	divw r3, r5, r4
/* 8017E6B0 0017A310  57 80 06 3E */	clrlwi r0, r28, 0x18
/* 8017E6B4 0017A314  3B 9C 00 01 */	addi r28, r28, 1
/* 8017E6B8 0017A318  7C 63 21 D6 */	mullw r3, r3, r4
/* 8017E6BC 0017A31C  7C 63 28 50 */	subf r3, r3, r5
/* 8017E6C0 0017A320  54 64 06 3E */	clrlwi r4, r3, 0x18
/* 8017E6C4 0017A324  7C 77 20 AE */	lbzx r3, r23, r4
/* 8017E6C8 0017A328  7C 79 01 AE */	stbx r3, r25, r0
/* 8017E6CC 0017A32C  7C 17 20 AE */	lbzx r0, r23, r4
/* 8017E6D0 0017A330  54 00 10 3A */	slwi r0, r0, 2
/* 8017E6D4 0017A334  7E DF 01 2E */	stwx r22, r31, r0
/* 8017E6D8 0017A338  4B FF FF 78 */	b lbl_8017E650
lbl_8017E6DC:
/* 8017E6DC 0017A33C  3B C1 00 08 */	addi r30, r1, 8
/* 8017E6E0 0017A340  3A E1 00 10 */	addi r23, r1, 0x10
/* 8017E6E4 0017A344  56 DF 06 3E */	clrlwi r31, r22, 0x18
/* 8017E6E8 0017A348  3B A0 00 00 */	li r29, 0
/* 8017E6EC 0017A34C  3B 00 00 00 */	li r24, 0
lbl_8017E6F0:
/* 8017E6F0 0017A350  57 A0 06 3E */	clrlwi r0, r29, 0x18
/* 8017E6F4 0017A354  7C 00 F8 40 */	cmplw r0, r31
/* 8017E6F8 0017A358  40 80 00 60 */	bge lbl_8017E758
/* 8017E6FC 0017A35C  38 61 00 10 */	addi r3, r1, 0x10
/* 8017E700 0017A360  38 81 00 08 */	addi r4, r1, 8
/* 8017E704 0017A364  38 A0 00 01 */	li r5, 1
/* 8017E708 0017A368  4B FF FD 55 */	bl func_8017E45C
/* 8017E70C 0017A36C  54 60 06 3F */	clrlwi. r0, r3, 0x18
/* 8017E710 0017A370  7C 76 1B 78 */	mr r22, r3
/* 8017E714 0017A374  41 82 00 44 */	beq lbl_8017E758
/* 8017E718 0017A378  48 00 01 E9 */	bl func_8017E900
/* 8017E71C 0017A37C  54 65 04 3E */	clrlwi r5, r3, 0x10
/* 8017E720 0017A380  56 C4 06 3E */	clrlwi r4, r22, 0x18
/* 8017E724 0017A384  7C 65 23 D6 */	divw r3, r5, r4
/* 8017E728 0017A388  57 80 06 3E */	clrlwi r0, r28, 0x18
/* 8017E72C 0017A38C  3B 9C 00 01 */	addi r28, r28, 1
/* 8017E730 0017A390  3B BD 00 01 */	addi r29, r29, 1
/* 8017E734 0017A394  7C 63 21 D6 */	mullw r3, r3, r4
/* 8017E738 0017A398  7C 63 28 50 */	subf r3, r3, r5
/* 8017E73C 0017A39C  54 64 06 3E */	clrlwi r4, r3, 0x18
/* 8017E740 0017A3A0  7C 7E 20 AE */	lbzx r3, r30, r4
/* 8017E744 0017A3A4  7C 79 01 AE */	stbx r3, r25, r0
/* 8017E748 0017A3A8  7C 1E 20 AE */	lbzx r0, r30, r4
/* 8017E74C 0017A3AC  54 00 10 3A */	slwi r0, r0, 2
/* 8017E750 0017A3B0  7F 17 01 2E */	stwx r24, r23, r0
/* 8017E754 0017A3B4  4B FF FF 9C */	b lbl_8017E6F0
lbl_8017E758:
/* 8017E758 0017A3B8  57 60 06 3E */	clrlwi r0, r27, 0x18
/* 8017E75C 0017A3BC  3B C1 00 08 */	addi r30, r1, 8
/* 8017E760 0017A3C0  7F E0 D0 50 */	subf r31, r0, r26
/* 8017E764 0017A3C4  3A E1 00 10 */	addi r23, r1, 0x10
/* 8017E768 0017A3C8  3B 00 00 00 */	li r24, 0
lbl_8017E76C:
/* 8017E76C 0017A3CC  57 80 06 3E */	clrlwi r0, r28, 0x18
/* 8017E770 0017A3D0  7C 00 F8 00 */	cmpw r0, r31
/* 8017E774 0017A3D4  40 80 00 5C */	bge lbl_8017E7D0
/* 8017E778 0017A3D8  38 61 00 10 */	addi r3, r1, 0x10
/* 8017E77C 0017A3DC  38 81 00 08 */	addi r4, r1, 8
/* 8017E780 0017A3E0  38 A0 00 03 */	li r5, 3
/* 8017E784 0017A3E4  4B FF FC D9 */	bl func_8017E45C
/* 8017E788 0017A3E8  54 60 06 3F */	clrlwi. r0, r3, 0x18
/* 8017E78C 0017A3EC  7C 7D 1B 78 */	mr r29, r3
/* 8017E790 0017A3F0  41 82 00 40 */	beq lbl_8017E7D0
/* 8017E794 0017A3F4  48 00 01 6D */	bl func_8017E900
/* 8017E798 0017A3F8  54 65 04 3E */	clrlwi r5, r3, 0x10
/* 8017E79C 0017A3FC  57 A4 06 3E */	clrlwi r4, r29, 0x18
/* 8017E7A0 0017A400  7C 65 23 D6 */	divw r3, r5, r4
/* 8017E7A4 0017A404  57 80 06 3E */	clrlwi r0, r28, 0x18
/* 8017E7A8 0017A408  3B 9C 00 01 */	addi r28, r28, 1
/* 8017E7AC 0017A40C  7C 63 21 D6 */	mullw r3, r3, r4
/* 8017E7B0 0017A410  7C 63 28 50 */	subf r3, r3, r5
/* 8017E7B4 0017A414  54 64 06 3E */	clrlwi r4, r3, 0x18
/* 8017E7B8 0017A418  7C 7E 20 AE */	lbzx r3, r30, r4
/* 8017E7BC 0017A41C  7C 79 01 AE */	stbx r3, r25, r0
/* 8017E7C0 0017A420  7C 1E 20 AE */	lbzx r0, r30, r4
/* 8017E7C4 0017A424  54 00 10 3A */	slwi r0, r0, 2
/* 8017E7C8 0017A428  7F 17 01 2E */	stwx r24, r23, r0
/* 8017E7CC 0017A42C  4B FF FF A0 */	b lbl_8017E76C
lbl_8017E7D0:
/* 8017E7D0 0017A430  57 7F 06 3E */	clrlwi r31, r27, 0x18
/* 8017E7D4 0017A434  3B C1 00 08 */	addi r30, r1, 8
/* 8017E7D8 0017A438  3B 01 00 10 */	addi r24, r1, 0x10
/* 8017E7DC 0017A43C  3B A0 00 00 */	li r29, 0
/* 8017E7E0 0017A440  3B 60 00 00 */	li r27, 0
lbl_8017E7E4:
/* 8017E7E4 0017A444  57 A0 06 3E */	clrlwi r0, r29, 0x18
/* 8017E7E8 0017A448  7C 00 F8 40 */	cmplw r0, r31
/* 8017E7EC 0017A44C  40 80 00 60 */	bge lbl_8017E84C
/* 8017E7F0 0017A450  38 61 00 10 */	addi r3, r1, 0x10
/* 8017E7F4 0017A454  38 81 00 08 */	addi r4, r1, 8
/* 8017E7F8 0017A458  38 A0 00 02 */	li r5, 2
/* 8017E7FC 0017A45C  4B FF FC 61 */	bl func_8017E45C
/* 8017E800 0017A460  54 60 06 3F */	clrlwi. r0, r3, 0x18
/* 8017E804 0017A464  7C 77 1B 78 */	mr r23, r3
/* 8017E808 0017A468  41 82 00 44 */	beq lbl_8017E84C
/* 8017E80C 0017A46C  48 00 00 F5 */	bl func_8017E900
/* 8017E810 0017A470  54 65 04 3E */	clrlwi r5, r3, 0x10
/* 8017E814 0017A474  56 E4 06 3E */	clrlwi r4, r23, 0x18
/* 8017E818 0017A478  7C 65 23 D6 */	divw r3, r5, r4
/* 8017E81C 0017A47C  57 80 06 3E */	clrlwi r0, r28, 0x18
/* 8017E820 0017A480  3B 9C 00 01 */	addi r28, r28, 1
/* 8017E824 0017A484  3B BD 00 01 */	addi r29, r29, 1
/* 8017E828 0017A488  7C 63 21 D6 */	mullw r3, r3, r4
/* 8017E82C 0017A48C  7C 63 28 50 */	subf r3, r3, r5
/* 8017E830 0017A490  54 64 06 3E */	clrlwi r4, r3, 0x18
/* 8017E834 0017A494  7C 7E 20 AE */	lbzx r3, r30, r4
/* 8017E838 0017A498  7C 79 01 AE */	stbx r3, r25, r0
/* 8017E83C 0017A49C  7C 1E 20 AE */	lbzx r0, r30, r4
/* 8017E840 0017A4A0  54 00 10 3A */	slwi r0, r0, 2
/* 8017E844 0017A4A4  7F 78 01 2E */	stwx r27, r24, r0
/* 8017E848 0017A4A8  4B FF FF 9C */	b lbl_8017E7E4
lbl_8017E84C:
/* 8017E84C 0017A4AC  3B C1 00 08 */	addi r30, r1, 8
/* 8017E850 0017A4B0  3B E1 00 10 */	addi r31, r1, 0x10
/* 8017E854 0017A4B4  3B A0 00 00 */	li r29, 0
/* 8017E858 0017A4B8  3B 60 00 06 */	li r27, 6
lbl_8017E85C:
/* 8017E85C 0017A4BC  57 80 06 3E */	clrlwi r0, r28, 0x18
/* 8017E860 0017A4C0  7C 00 D0 40 */	cmplw r0, r26
/* 8017E864 0017A4C4  40 80 00 84 */	bge lbl_8017E8E8
/* 8017E868 0017A4C8  3A C0 00 00 */	li r22, 0
/* 8017E86C 0017A4CC  38 60 00 00 */	li r3, 0
/* 8017E870 0017A4D0  7F 69 03 A6 */	mtctr r27
lbl_8017E874:
/* 8017E874 0017A4D4  54 60 15 BA */	rlwinm r0, r3, 2, 0x16, 0x1d
/* 8017E878 0017A4D8  7C 9F 00 2E */	lwzx r4, r31, r0
/* 8017E87C 0017A4DC  2C 04 00 00 */	cmpwi r4, 0
/* 8017E880 0017A4E0  41 82 00 1C */	beq lbl_8017E89C
/* 8017E884 0017A4E4  88 04 00 8A */	lbz r0, 0x8a(r4)
/* 8017E888 0017A4E8  54 00 CF FF */	rlwinm. r0, r0, 0x19, 0x1f, 0x1f
/* 8017E88C 0017A4EC  41 82 00 10 */	beq lbl_8017E89C
/* 8017E890 0017A4F0  56 C0 06 3E */	clrlwi r0, r22, 0x18
/* 8017E894 0017A4F4  3A D6 00 01 */	addi r22, r22, 1
/* 8017E898 0017A4F8  7C 7E 01 AE */	stbx r3, r30, r0
lbl_8017E89C:
/* 8017E89C 0017A4FC  38 63 00 01 */	addi r3, r3, 1
/* 8017E8A0 0017A500  42 00 FF D4 */	bdnz lbl_8017E874
/* 8017E8A4 0017A504  56 C0 06 3F */	clrlwi. r0, r22, 0x18
/* 8017E8A8 0017A508  41 82 00 40 */	beq lbl_8017E8E8
/* 8017E8AC 0017A50C  48 00 00 55 */	bl func_8017E900
/* 8017E8B0 0017A510  54 65 04 3E */	clrlwi r5, r3, 0x10
/* 8017E8B4 0017A514  56 C4 06 3E */	clrlwi r4, r22, 0x18
/* 8017E8B8 0017A518  7C 65 23 D6 */	divw r3, r5, r4
/* 8017E8BC 0017A51C  57 80 06 3E */	clrlwi r0, r28, 0x18
/* 8017E8C0 0017A520  3B 9C 00 01 */	addi r28, r28, 1
/* 8017E8C4 0017A524  7C 63 21 D6 */	mullw r3, r3, r4
/* 8017E8C8 0017A528  7C 63 28 50 */	subf r3, r3, r5
/* 8017E8CC 0017A52C  54 64 06 3E */	clrlwi r4, r3, 0x18
/* 8017E8D0 0017A530  7C 7E 20 AE */	lbzx r3, r30, r4
/* 8017E8D4 0017A534  7C 79 01 AE */	stbx r3, r25, r0
/* 8017E8D8 0017A538  7C 1E 20 AE */	lbzx r0, r30, r4
/* 8017E8DC 0017A53C  54 00 10 3A */	slwi r0, r0, 2
/* 8017E8E0 0017A540  7F BF 01 2E */	stwx r29, r31, r0
/* 8017E8E4 0017A544  4B FF FF 78 */	b lbl_8017E85C
lbl_8017E8E8:
/* 8017E8E8 0017A548  39 61 00 50 */	addi r11, r1, 0x50
/* 8017E8EC 0017A54C  48 04 88 75 */	bl _restgpr_22
/* 8017E8F0 0017A550  80 01 00 54 */	lwz r0, 0x54(r1)
/* 8017E8F4 0017A554  7C 08 03 A6 */	mtlr r0
/* 8017E8F8 0017A558  38 21 00 50 */	addi r1, r1, 0x50
/* 8017E8FC 0017A55C  4E 80 00 20 */	blr

.global func_8017E900
func_8017E900:
/* 8017E900 0017A560  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8017E904 0017A564  7C 08 02 A6 */	mflr r0
/* 8017E908 0017A568  90 01 00 14 */	stw r0, 0x14(r1)
/* 8017E90C 0017A56C  48 0A 4F 25 */	bl func_80223830
/* 8017E910 0017A570  3C 80 00 03 */	lis r4, 0x000343FD@ha
/* 8017E914 0017A574  80 A3 00 00 */	lwz r5, 0(r3)
/* 8017E918 0017A578  38 04 43 FD */	addi r0, r4, 0x000343FD@l
/* 8017E91C 0017A57C  7C 85 01 D6 */	mullw r4, r5, r0
/* 8017E920 0017A580  3C 84 00 27 */	addis r4, r4, 0x27
/* 8017E924 0017A584  38 04 9E C3 */	addi r0, r4, -24893
/* 8017E928 0017A588  90 03 00 00 */	stw r0, 0(r3)
/* 8017E92C 0017A58C  54 03 84 3E */	srwi r3, r0, 0x10
/* 8017E930 0017A590  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8017E934 0017A594  7C 08 03 A6 */	mtlr r0
/* 8017E938 0017A598  38 21 00 10 */	addi r1, r1, 0x10
/* 8017E93C 0017A59C  4E 80 00 20 */	blr

.global func_8017E940
func_8017E940:
/* 8017E940 0017A5A0  38 6D 9F 98 */	addi r3, r13, lbl_8063F258-_SDA_BASE_
/* 8017E944 0017A5A4  38 80 00 01 */	li r4, 1
/* 8017E948 0017A5A8  38 A0 00 04 */	li r5, 4
/* 8017E94C 0017A5AC  38 C0 00 00 */	li r6, 0
/* 8017E950 0017A5B0  4B EA 5F C4 */	b func_80024914