summaryrefslogtreecommitdiff
path: root/asm/Dolphin/os/OSLink.s
blob: af86ed2de84881f93898135918b34f5bc5f0e67b (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
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
.include "macros.inc"

.section .text

.global func_8036f340
.type func_8036f340, @function
func_8036f340:
/* 8036F340 4E800020 */ blr         
.size func_8036f340, . - func_8036f340


.global func_8036f344
.type func_8036f344, @function
func_8036f344:
/* 8036F344 4E800020 */ blr         
.size func_8036f344, . - func_8036f344


.global func_8036f348
.type func_8036f348, @function
func_8036f348:
/* 8036F348 7C0802A6 */ mflr        r0
/* 8036F34C 90010004 */ stw         r0, 4(r1)
/* 8036F350 9421FFC0 */ stwu        r1, -0x40(r1)
/* 8036F354 BEE1001C */ stmw        r23, 0x1c(r1)
/* 8036F358 7C7A1B79 */ or.         r26, r3, r3
/* 8036F35C 3B640000 */ addi        r27, r4, 0x0
/* 8036F360 4182000C */ beq-        lbl_8036f36c
/* 8036F364 83FA0000 */ lwz         r31, 0(r26)
/* 8036F368 48000008 */ b           lbl_8036f370
lbl_8036f36c:
/* 8036F36C 3BE00000 */ li          r31, 0x0
lbl_8036f370:
/* 8036F370 807B0028 */ lwz         r3, 0x28(r27)
/* 8036F374 801B002C */ lwz         r0, 0x2c(r27)
/* 8036F378 38830000 */ addi        r4, r3, 0x0
/* 8036F37C 7C630214 */ add         r3, r3, r0
/* 8036F380 38030007 */ addi        r0, r3, 0x7
/* 8036F384 7C040050 */ subf        r0, r4, r0
/* 8036F388 5400E8FE */ srwi        r0, r0, 3
/* 8036F38C 7C041840 */ cmplw       r4, r3
/* 8036F390 7C0903A6 */ mtctr       r0
/* 8036F394 40800018 */ bge-        lbl_8036f3ac
lbl_8036f398:
/* 8036F398 80040000 */ lwz         r0, 0(r4)
/* 8036F39C 7C00F840 */ cmplw       r0, r31
/* 8036F3A0 41820014 */ beq-        lbl_8036f3b4
/* 8036F3A4 38840008 */ addi        r4, r4, 0x8
/* 8036F3A8 4200FFF0 */ bdnz        lbl_8036f398
lbl_8036f3ac:
/* 8036F3AC 38600000 */ li          r3, 0x0
/* 8036F3B0 480001F8 */ b           lbl_8036f5a8
lbl_8036f3b4:
/* 8036F3B4 3C60804F */ lis         r3, lbl_804ef548@ha
/* 8036F3B8 83C40004 */ lwz         r30, 4(r4)
/* 8036F3BC 3B23F548 */ addi        r25, r3, lbl_804ef548@l
/* 8036F3C0 3BA00000 */ li          r29, 0x0
/* 8036F3C4 480001AC */ b           lbl_8036f570
lbl_8036f3c8:
/* 8036F3C8 A01E0000 */ lhz         r0, 0(r30)
/* 8036F3CC 281F0000 */ cmplwi      r31, 0
/* 8036F3D0 7F9C0214 */ add         r28, r28, r0
/* 8036F3D4 4182001C */ beq-        lbl_8036f3f0
/* 8036F3D8 881E0003 */ lbz         r0, 3(r30)
/* 8036F3DC 807A0010 */ lwz         r3, 0x10(r26)
/* 8036F3E0 54001838 */ slwi        r0, r0, 3
/* 8036F3E4 7C03002E */ lwzx        r0, r3, r0
/* 8036F3E8 5405003C */ rlwinm      r5, r0, 0, 0, 0x1e
/* 8036F3EC 48000008 */ b           lbl_8036f3f4
lbl_8036f3f0:
/* 8036F3F0 38A00000 */ li          r5, 0x0
lbl_8036f3f4:
/* 8036F3F4 2C040006 */ cmpwi       r4, 0x6
/* 8036F3F8 418200B8 */ beq-        lbl_8036f4b0
/* 8036F3FC 40800030 */ bge-        lbl_8036f42c
/* 8036F400 2C040002 */ cmpwi       r4, 0x2
/* 8036F404 4182005C */ beq-        lbl_8036f460
/* 8036F408 40800014 */ bge-        lbl_8036f41c
/* 8036F40C 2C040000 */ cmpwi       r4, 0x0
/* 8036F410 4182015C */ beq-        lbl_8036f56c
/* 8036F414 4080003C */ bge-        lbl_8036f450
/* 8036F418 48000148 */ b           lbl_8036f560
lbl_8036f41c:
/* 8036F41C 2C040004 */ cmpwi       r4, 0x4
/* 8036F420 4182006C */ beq-        lbl_8036f48c
/* 8036F424 40800078 */ bge-        lbl_8036f49c
/* 8036F428 48000054 */ b           lbl_8036f47c
lbl_8036f42c:
/* 8036F42C 2C0400C9 */ cmpwi       r4, 0xc9
/* 8036F430 4182013C */ beq-        lbl_8036f56c
/* 8036F434 40800010 */ bge-        lbl_8036f444
/* 8036F438 2C04000A */ cmpwi       r4, 0xa
/* 8036F43C 418200A0 */ beq-        lbl_8036f4dc
/* 8036F440 48000120 */ b           lbl_8036f560
lbl_8036f444:
/* 8036F444 2C0400CB */ cmpwi       r4, 0xcb
/* 8036F448 40800118 */ bge-        lbl_8036f560
/* 8036F44C 480000B0 */ b           lbl_8036f4fc
lbl_8036f450:
/* 8036F450 801E0004 */ lwz         r0, 4(r30)
/* 8036F454 7C050214 */ add         r0, r5, r0
/* 8036F458 901C0000 */ stw         r0, 0(r28)
/* 8036F45C 48000110 */ b           lbl_8036f56c
lbl_8036f460:
/* 8036F460 801E0004 */ lwz         r0, 4(r30)
/* 8036F464 807C0000 */ lwz         r3, 0(r28)
/* 8036F468 7C050214 */ add         r0, r5, r0
/* 8036F46C 5463078A */ rlwinm      r3, r3, 0, 0x1e, 5
/* 8036F470 500301BA */ rlwimi      r3, r0, 0, 6, 0x1d
/* 8036F474 907C0000 */ stw         r3, 0(r28)
/* 8036F478 480000F4 */ b           lbl_8036f56c
lbl_8036f47c:
/* 8036F47C 801E0004 */ lwz         r0, 4(r30)
/* 8036F480 7C050214 */ add         r0, r5, r0
/* 8036F484 B01C0000 */ sth         r0, 0(r28)
/* 8036F488 480000E4 */ b           lbl_8036f56c
lbl_8036f48c:
/* 8036F48C 801E0004 */ lwz         r0, 4(r30)
/* 8036F490 7C050214 */ add         r0, r5, r0
/* 8036F494 B01C0000 */ sth         r0, 0(r28)
/* 8036F498 480000D4 */ b           lbl_8036f56c
lbl_8036f49c:
/* 8036F49C 801E0004 */ lwz         r0, 4(r30)
/* 8036F4A0 7C050214 */ add         r0, r5, r0
/* 8036F4A4 5400843E */ srwi        r0, r0, 0x10
/* 8036F4A8 B01C0000 */ sth         r0, 0(r28)
/* 8036F4AC 480000C0 */ b           lbl_8036f56c
lbl_8036f4b0:
/* 8036F4B0 801E0004 */ lwz         r0, 4(r30)
/* 8036F4B4 7C850214 */ add         r4, r5, r0
/* 8036F4B8 54800421 */ rlwinm.     r0, r4, 0, 0x10, 0x10
/* 8036F4BC 4182000C */ beq-        lbl_8036f4c8
/* 8036F4C0 38600001 */ li          r3, 0x1
/* 8036F4C4 48000008 */ b           lbl_8036f4cc
lbl_8036f4c8:
/* 8036F4C8 38600000 */ li          r3, 0x0
lbl_8036f4cc:
/* 8036F4CC 5480843E */ srwi        r0, r4, 0x10
/* 8036F4D0 7C001A14 */ add         r0, r0, r3
/* 8036F4D4 B01C0000 */ sth         r0, 0(r28)
/* 8036F4D8 48000094 */ b           lbl_8036f56c
lbl_8036f4dc:
/* 8036F4DC 801E0004 */ lwz         r0, 4(r30)
/* 8036F4E0 807C0000 */ lwz         r3, 0(r28)
/* 8036F4E4 7C050214 */ add         r0, r5, r0
/* 8036F4E8 7C1C0050 */ subf        r0, r28, r0
/* 8036F4EC 5463078A */ rlwinm      r3, r3, 0, 0x1e, 5
/* 8036F4F0 500301BA */ rlwimi      r3, r0, 0, 6, 0x1d
/* 8036F4F4 907C0000 */ stw         r3, 0(r28)
/* 8036F4F8 48000074 */ b           lbl_8036f56c
lbl_8036f4fc:
/* 8036F4FC 881E0003 */ lbz         r0, 3(r30)
/* 8036F500 281D0000 */ cmplwi      r29, 0
/* 8036F504 807B0010 */ lwz         r3, 0x10(r27)
/* 8036F508 54001838 */ slwi        r0, r0, 3
/* 8036F50C 7C630214 */ add         r3, r3, r0
/* 8036F510 80030000 */ lwz         r0, 0(r3)
/* 8036F514 3AE30000 */ addi        r23, r3, 0x0
/* 8036F518 541C003C */ rlwinm      r28, r0, 0, 0, 0x1e
/* 8036F51C 41820024 */ beq-        lbl_8036f540
/* 8036F520 801D0000 */ lwz         r0, 0(r29)
/* 8036F524 809D0004 */ lwz         r4, 4(r29)
/* 8036F528 5418003C */ rlwinm      r24, r0, 0, 0, 0x1e
/* 8036F52C 38780000 */ addi        r3, r24, 0x0
/* 8036F530 4BFFE3E1 */ bl          func_8036d910
/* 8036F534 7F03C378 */ mr          r3, r24
/* 8036F538 809D0004 */ lwz         r4, 4(r29)
/* 8036F53C 4BFFE49D */ bl          func_8036d9d8
lbl_8036f540:
/* 8036F540 80170000 */ lwz         r0, 0(r23)
/* 8036F544 540007FF */ clrlwi.     r0, r0, 0x1f
/* 8036F548 4182000C */ beq-        lbl_8036f554
/* 8036F54C 7EE0BB78 */ mr          r0, r23
/* 8036F550 48000008 */ b           lbl_8036f558
lbl_8036f554:
/* 8036F554 38000000 */ li          r0, 0x0
lbl_8036f558:
/* 8036F558 7C1D0378 */ mr          r29, r0
/* 8036F55C 48000010 */ b           lbl_8036f56c
lbl_8036f560:
/* 8036F560 38790000 */ addi        r3, r25, 0x0
/* 8036F564 4CC63182 */ crclr       6
/* 8036F568 4BFFF14D */ bl          func_8036e6b4
lbl_8036f56c:
/* 8036F56C 3BDE0008 */ addi        r30, r30, 0x8
lbl_8036f570:
/* 8036F570 889E0002 */ lbz         r4, 2(r30)
/* 8036F574 280400CB */ cmplwi      r4, 0xcb
/* 8036F578 4082FE50 */ bne+        lbl_8036f3c8
/* 8036F57C 281D0000 */ cmplwi      r29, 0
/* 8036F580 41820024 */ beq-        lbl_8036f5a4
/* 8036F584 801D0000 */ lwz         r0, 0(r29)
/* 8036F588 809D0004 */ lwz         r4, 4(r29)
/* 8036F58C 5419003C */ rlwinm      r25, r0, 0, 0, 0x1e
/* 8036F590 38790000 */ addi        r3, r25, 0x0
/* 8036F594 4BFFE37D */ bl          func_8036d910
/* 8036F598 7F23CB78 */ mr          r3, r25
/* 8036F59C 809D0004 */ lwz         r4, 4(r29)
/* 8036F5A0 4BFFE439 */ bl          func_8036d9d8
lbl_8036f5a4:
/* 8036F5A4 38600001 */ li          r3, 0x1
lbl_8036f5a8:
/* 8036F5A8 BAE1001C */ lmw         r23, 0x1c(r1)
/* 8036F5AC 80010044 */ lwz         r0, 0x44(r1)
/* 8036F5B0 38210040 */ addi        r1, r1, 0x40
/* 8036F5B4 7C0803A6 */ mtlr        r0
/* 8036F5B8 4E800020 */ blr         
.size func_8036f348, . - func_8036f348


.global func_8036f5bc
.type func_8036f5bc, @function
func_8036f5bc:
/* 8036F5BC 7C0802A6 */ mflr        r0
/* 8036F5C0 90010004 */ stw         r0, 4(r1)
/* 8036F5C4 9421FFE0 */ stwu        r1, -0x20(r1)
/* 8036F5C8 93E1001C */ stw         r31, 0x1c(r1)
/* 8036F5CC 7C7F1B78 */ mr          r31, r3
/* 8036F5D0 93C10018 */ stw         r30, 0x18(r1)
/* 8036F5D4 3BC40000 */ addi        r30, r4, 0x0
/* 8036F5D8 93A10014 */ stw         r29, 0x14(r1)
/* 8036F5DC 8003001C */ lwz         r0, 0x1c(r3)
/* 8036F5E0 28000002 */ cmplwi      r0, 2
/* 8036F5E4 41810040 */ bgt-        lbl_8036f624
/* 8036F5E8 41800044 */ blt-        lbl_8036f62c
/* 8036F5EC 807F0040 */ lwz         r3, 0x40(r31)
/* 8036F5F0 28030000 */ cmplwi      r3, 0
/* 8036F5F4 41820014 */ beq-        lbl_8036f608
/* 8036F5F8 7C1F1B96 */ divwu       r0, r31, r3
/* 8036F5FC 7C0019D6 */ mullw       r0, r0, r3
/* 8036F600 7C00F851 */ subf.       r0, r0, r31
/* 8036F604 40820020 */ bne-        lbl_8036f624
lbl_8036f608:
/* 8036F608 807F0044 */ lwz         r3, 0x44(r31)
/* 8036F60C 28030000 */ cmplwi      r3, 0
/* 8036F610 4182001C */ beq-        lbl_8036f62c
/* 8036F614 7C1E1B96 */ divwu       r0, r30, r3
/* 8036F618 7C0019D6 */ mullw       r0, r0, r3
/* 8036F61C 7C00F051 */ subf.       r0, r0, r30
/* 8036F620 4182000C */ beq-        lbl_8036f62c
lbl_8036f624:
/* 8036F624 38600000 */ li          r3, 0x0
/* 8036F628 480001C8 */ b           lbl_8036f7f0
lbl_8036f62c:
/* 8036F62C 3C608000 */ lis         r3, 0x8000
/* 8036F630 38A330C8 */ addi        r5, r3, 0x30c8
/* 8036F634 84850004 */ lwzu        r4, 4(r5)
/* 8036F638 28040000 */ cmplwi      r4, 0
/* 8036F63C 4082000C */ bne-        lbl_8036f648
/* 8036F640 93E330C8 */ stw         r31, 0x30c8(r3)
/* 8036F644 48000008 */ b           lbl_8036f64c
lbl_8036f648:
/* 8036F648 93E40004 */ stw         r31, 4(r4)
lbl_8036f64c:
/* 8036F64C 909F0008 */ stw         r4, 8(r31)
/* 8036F650 3BA00000 */ li          r29, 0x0
/* 8036F654 387E0000 */ addi        r3, r30, 0x0
/* 8036F658 93BF0004 */ stw         r29, 4(r31)
/* 8036F65C 38800000 */ li          r4, 0x0
/* 8036F660 93E50000 */ stw         r31, 0(r5)
/* 8036F664 80BF0020 */ lwz         r5, 0x20(r31)
/* 8036F668 4BC9ECCD */ bl          func_8000e334
/* 8036F66C 801F0010 */ lwz         r0, 0x10(r31)
/* 8036F670 38800000 */ li          r4, 0x0
/* 8036F674 7C00FA14 */ add         r0, r0, r31
/* 8036F678 901F0010 */ stw         r0, 0x10(r31)
/* 8036F67C 801F0024 */ lwz         r0, 0x24(r31)
/* 8036F680 7C00FA14 */ add         r0, r0, r31
/* 8036F684 901F0024 */ stw         r0, 0x24(r31)
/* 8036F688 801F0028 */ lwz         r0, 0x28(r31)
/* 8036F68C 7C00FA14 */ add         r0, r0, r31
/* 8036F690 901F0028 */ stw         r0, 0x28(r31)
/* 8036F694 48000044 */ b           lbl_8036f6d8
lbl_8036f698:
/* 8036F698 801F0010 */ lwz         r0, 0x10(r31)
/* 8036F69C 7C60EA14 */ add         r3, r0, r29
/* 8036F6A0 80030000 */ lwz         r0, 0(r3)
/* 8036F6A4 28000000 */ cmplwi      r0, 0
/* 8036F6A8 41820010 */ beq-        lbl_8036f6b8
/* 8036F6AC 7C00FA14 */ add         r0, r0, r31
/* 8036F6B0 90030000 */ stw         r0, 0(r3)
/* 8036F6B4 4800001C */ b           lbl_8036f6d0
lbl_8036f6b8:
/* 8036F6B8 80030004 */ lwz         r0, 4(r3)
/* 8036F6BC 28000000 */ cmplwi      r0, 0
/* 8036F6C0 41820010 */ beq-        lbl_8036f6d0
/* 8036F6C4 93C30000 */ stw         r30, 0(r3)
/* 8036F6C8 80030004 */ lwz         r0, 4(r3)
/* 8036F6CC 7FDE0214 */ add         r30, r30, r0
lbl_8036f6d0:
/* 8036F6D0 3BBD0008 */ addi        r29, r29, 0x8
/* 8036F6D4 38840001 */ addi        r4, r4, 0x1
lbl_8036f6d8:
/* 8036F6D8 801F000C */ lwz         r0, 0xc(r31)
/* 8036F6DC 7C040040 */ cmplw       r4, r0
/* 8036F6E0 4180FFB8 */ blt+        lbl_8036f698
/* 8036F6E4 809F0028 */ lwz         r4, 0x28(r31)
/* 8036F6E8 48000014 */ b           lbl_8036f6fc
lbl_8036f6ec:
/* 8036F6EC 80040004 */ lwz         r0, 4(r4)
/* 8036F6F0 7C00FA14 */ add         r0, r0, r31
/* 8036F6F4 90040004 */ stw         r0, 4(r4)
/* 8036F6F8 38840008 */ addi        r4, r4, 0x8
lbl_8036f6fc:
/* 8036F6FC 807F0028 */ lwz         r3, 0x28(r31)
/* 8036F700 801F002C */ lwz         r0, 0x2c(r31)
/* 8036F704 7C030214 */ add         r0, r3, r0
/* 8036F708 7C040040 */ cmplw       r4, r0
/* 8036F70C 4180FFE0 */ blt+        lbl_8036f6ec
/* 8036F710 881F0030 */ lbz         r0, 0x30(r31)
/* 8036F714 28000000 */ cmplwi      r0, 0
/* 8036F718 41820020 */ beq-        lbl_8036f738
/* 8036F71C 807F0010 */ lwz         r3, 0x10(r31)
/* 8036F720 54001838 */ slwi        r0, r0, 3
/* 8036F724 809F0034 */ lwz         r4, 0x34(r31)
/* 8036F728 7C03002E */ lwzx        r0, r3, r0
/* 8036F72C 5400003C */ rlwinm      r0, r0, 0, 0, 0x1e
/* 8036F730 7C040214 */ add         r0, r4, r0
/* 8036F734 901F0034 */ stw         r0, 0x34(r31)
lbl_8036f738:
/* 8036F738 881F0031 */ lbz         r0, 0x31(r31)
/* 8036F73C 28000000 */ cmplwi      r0, 0
/* 8036F740 41820020 */ beq-        lbl_8036f760
/* 8036F744 807F0010 */ lwz         r3, 0x10(r31)
/* 8036F748 54001838 */ slwi        r0, r0, 3
/* 8036F74C 809F0038 */ lwz         r4, 0x38(r31)
/* 8036F750 7C03002E */ lwzx        r0, r3, r0
/* 8036F754 5400003C */ rlwinm      r0, r0, 0, 0, 0x1e
/* 8036F758 7C040214 */ add         r0, r4, r0
/* 8036F75C 901F0038 */ stw         r0, 0x38(r31)
lbl_8036f760:
/* 8036F760 881F0032 */ lbz         r0, 0x32(r31)
/* 8036F764 28000000 */ cmplwi      r0, 0
/* 8036F768 41820020 */ beq-        lbl_8036f788
/* 8036F76C 807F0010 */ lwz         r3, 0x10(r31)
/* 8036F770 54001838 */ slwi        r0, r0, 3
/* 8036F774 809F003C */ lwz         r4, 0x3c(r31)
/* 8036F778 7C03002E */ lwzx        r0, r3, r0
/* 8036F77C 5400003C */ rlwinm      r0, r0, 0, 0, 0x1e
/* 8036F780 7C040214 */ add         r0, r4, r0
/* 8036F784 901F003C */ stw         r0, 0x3c(r31)
lbl_8036f788:
/* 8036F788 3C608000 */ lis         r3, 0x8000
/* 8036F78C 806330D0 */ lwz         r3, 0x30d0(r3)
/* 8036F790 28030000 */ cmplwi      r3, 0
/* 8036F794 41820010 */ beq-        lbl_8036f7a4
/* 8036F798 801F0014 */ lwz         r0, 0x14(r31)
/* 8036F79C 7C001A14 */ add         r0, r0, r3
/* 8036F7A0 901F0014 */ stw         r0, 0x14(r31)
lbl_8036f7a4:
/* 8036F7A4 38600000 */ li          r3, 0x0
/* 8036F7A8 389F0000 */ addi        r4, r31, 0x0
/* 8036F7AC 4BFFFB9D */ bl          func_8036f348
/* 8036F7B0 3C608000 */ lis         r3, 0x8000
/* 8036F7B4 83A330C8 */ lwz         r29, 0x30c8(r3)
/* 8036F7B8 48000028 */ b           lbl_8036f7e0
lbl_8036f7bc:
/* 8036F7BC 387F0000 */ addi        r3, r31, 0x0
/* 8036F7C0 389D0000 */ addi        r4, r29, 0x0
/* 8036F7C4 4BFFFB85 */ bl          func_8036f348
/* 8036F7C8 7C1DF840 */ cmplw       r29, r31
/* 8036F7CC 41820010 */ beq-        lbl_8036f7dc
/* 8036F7D0 387D0000 */ addi        r3, r29, 0x0
/* 8036F7D4 389F0000 */ addi        r4, r31, 0x0
/* 8036F7D8 4BFFFB71 */ bl          func_8036f348
lbl_8036f7dc:
/* 8036F7DC 83BD0004 */ lwz         r29, 4(r29)
lbl_8036f7e0:
/* 8036F7E0 281D0000 */ cmplwi      r29, 0
/* 8036F7E4 4082FFD8 */ bne+        lbl_8036f7bc
/* 8036F7E8 4BFFFB59 */ bl          func_8036f340
/* 8036F7EC 38600001 */ li          r3, 0x1
lbl_8036f7f0:
/* 8036F7F0 80010024 */ lwz         r0, 0x24(r1)
/* 8036F7F4 83E1001C */ lwz         r31, 0x1c(r1)
/* 8036F7F8 83C10018 */ lwz         r30, 0x18(r1)
/* 8036F7FC 83A10014 */ lwz         r29, 0x14(r1)
/* 8036F800 38210020 */ addi        r1, r1, 0x20
/* 8036F804 7C0803A6 */ mtlr        r0
/* 8036F808 4E800020 */ blr         
.size func_8036f5bc, . - func_8036f5bc


.global func_8036f80c
.type func_8036f80c, @function
func_8036f80c:
/* 8036F80C 7C0802A6 */ mflr        r0
/* 8036F810 90010004 */ stw         r0, 4(r1)
/* 8036F814 9421FFC8 */ stwu        r1, -0x38(r1)
/* 8036F818 BF21001C */ stmw        r25, 0x1c(r1)
/* 8036F81C 7C9C2378 */ mr          r28, r4
/* 8036F820 80830000 */ lwz         r4, 0(r3)
/* 8036F824 807C0028 */ lwz         r3, 0x28(r28)
/* 8036F828 801C002C */ lwz         r0, 0x2c(r28)
/* 8036F82C 38A30000 */ addi        r5, r3, 0x0
/* 8036F830 7C630214 */ add         r3, r3, r0
/* 8036F834 38030007 */ addi        r0, r3, 0x7
/* 8036F838 7C050050 */ subf        r0, r5, r0
/* 8036F83C 5400E8FE */ srwi        r0, r0, 3
/* 8036F840 7C051840 */ cmplw       r5, r3
/* 8036F844 7C0903A6 */ mtctr       r0
/* 8036F848 40800018 */ bge-        lbl_8036f860
lbl_8036f84c:
/* 8036F84C 80050000 */ lwz         r0, 0(r5)
/* 8036F850 7C002040 */ cmplw       r0, r4
/* 8036F854 41820014 */ beq-        lbl_8036f868
/* 8036F858 38A50008 */ addi        r5, r5, 0x8
/* 8036F85C 4200FFF0 */ bdnz        lbl_8036f84c
lbl_8036f860:
/* 8036F860 38600000 */ li          r3, 0x0
/* 8036F864 480001A0 */ b           lbl_8036fa04
lbl_8036f868:
/* 8036F868 3C60804F */ lis         r3, lbl_804ef570@ha
/* 8036F86C 83E50004 */ lwz         r31, 4(r5)
/* 8036F870 3B63F570 */ addi        r27, r3, lbl_804ef570@l
/* 8036F874 3BC00000 */ li          r30, 0x0
/* 8036F878 48000154 */ b           lbl_8036f9cc
lbl_8036f87c:
/* 8036F87C A01F0000 */ lhz         r0, 0(r31)
/* 8036F880 2C040006 */ cmpwi       r4, 0x6
/* 8036F884 38600000 */ li          r3, 0x0
/* 8036F888 7FBD0214 */ add         r29, r29, r0
/* 8036F88C 41820098 */ beq-        lbl_8036f924
/* 8036F890 40800030 */ bge-        lbl_8036f8c0
/* 8036F894 2C040002 */ cmpwi       r4, 0x2
/* 8036F898 41820058 */ beq-        lbl_8036f8f0
/* 8036F89C 40800014 */ bge-        lbl_8036f8b0
/* 8036F8A0 2C040000 */ cmpwi       r4, 0x0
/* 8036F8A4 41820124 */ beq-        lbl_8036f9c8
/* 8036F8A8 4080003C */ bge-        lbl_8036f8e4
/* 8036F8AC 48000110 */ b           lbl_8036f9bc
lbl_8036f8b0:
/* 8036F8B0 2C040004 */ cmpwi       r4, 0x4
/* 8036F8B4 41820058 */ beq-        lbl_8036f90c
/* 8036F8B8 40800060 */ bge-        lbl_8036f918
/* 8036F8BC 48000044 */ b           lbl_8036f900
lbl_8036f8c0:
/* 8036F8C0 2C0400C9 */ cmpwi       r4, 0xc9
/* 8036F8C4 41820104 */ beq-        lbl_8036f9c8
/* 8036F8C8 40800010 */ bge-        lbl_8036f8d8
/* 8036F8CC 2C04000A */ cmpwi       r4, 0xa
/* 8036F8D0 41820060 */ beq-        lbl_8036f930
/* 8036F8D4 480000E8 */ b           lbl_8036f9bc
lbl_8036f8d8:
/* 8036F8D8 2C0400CB */ cmpwi       r4, 0xcb
/* 8036F8DC 408000E0 */ bge-        lbl_8036f9bc
/* 8036F8E0 48000078 */ b           lbl_8036f958
lbl_8036f8e4:
/* 8036F8E4 38000000 */ li          r0, 0x0
/* 8036F8E8 901D0000 */ stw         r0, 0(r29)
/* 8036F8EC 480000DC */ b           lbl_8036f9c8
lbl_8036f8f0:
/* 8036F8F0 801D0000 */ lwz         r0, 0(r29)
/* 8036F8F4 5400078A */ rlwinm      r0, r0, 0, 0x1e, 5
/* 8036F8F8 901D0000 */ stw         r0, 0(r29)
/* 8036F8FC 480000CC */ b           lbl_8036f9c8
lbl_8036f900:
/* 8036F900 38000000 */ li          r0, 0x0
/* 8036F904 B01D0000 */ sth         r0, 0(r29)
/* 8036F908 480000C0 */ b           lbl_8036f9c8
lbl_8036f90c:
/* 8036F90C 38000000 */ li          r0, 0x0
/* 8036F910 B01D0000 */ sth         r0, 0(r29)
/* 8036F914 480000B4 */ b           lbl_8036f9c8
lbl_8036f918:
/* 8036F918 38000000 */ li          r0, 0x0
/* 8036F91C B01D0000 */ sth         r0, 0(r29)
/* 8036F920 480000A8 */ b           lbl_8036f9c8
lbl_8036f924:
/* 8036F924 38000000 */ li          r0, 0x0
/* 8036F928 B01D0000 */ sth         r0, 0(r29)
/* 8036F92C 4800009C */ b           lbl_8036f9c8
lbl_8036f930:
/* 8036F930 881C0032 */ lbz         r0, 0x32(r28)
/* 8036F934 28000000 */ cmplwi      r0, 0
/* 8036F938 4182000C */ beq-        lbl_8036f944
/* 8036F93C 801C003C */ lwz         r0, 0x3c(r28)
/* 8036F940 7C7D0050 */ subf        r3, r29, r0
lbl_8036f944:
/* 8036F944 801D0000 */ lwz         r0, 0(r29)
/* 8036F948 5400078A */ rlwinm      r0, r0, 0, 0x1e, 5
/* 8036F94C 506001BA */ rlwimi      r0, r3, 0, 6, 0x1d
/* 8036F950 901D0000 */ stw         r0, 0(r29)
/* 8036F954 48000074 */ b           lbl_8036f9c8
lbl_8036f958:
/* 8036F958 881F0003 */ lbz         r0, 3(r31)
/* 8036F95C 281E0000 */ cmplwi      r30, 0
/* 8036F960 807C0010 */ lwz         r3, 0x10(r28)
/* 8036F964 54001838 */ slwi        r0, r0, 3
/* 8036F968 7C630214 */ add         r3, r3, r0
/* 8036F96C 80030000 */ lwz         r0, 0(r3)
/* 8036F970 3B430000 */ addi        r26, r3, 0x0
/* 8036F974 541D003C */ rlwinm      r29, r0, 0, 0, 0x1e
/* 8036F978 41820024 */ beq-        lbl_8036f99c
/* 8036F97C 801E0000 */ lwz         r0, 0(r30)
/* 8036F980 809E0004 */ lwz         r4, 4(r30)
/* 8036F984 5419003C */ rlwinm      r25, r0, 0, 0, 0x1e
/* 8036F988 38790000 */ addi        r3, r25, 0x0
/* 8036F98C 4BFFDF85 */ bl          func_8036d910
/* 8036F990 7F23CB78 */ mr          r3, r25
/* 8036F994 809E0004 */ lwz         r4, 4(r30)
/* 8036F998 4BFFE041 */ bl          func_8036d9d8
lbl_8036f99c:
/* 8036F99C 801A0000 */ lwz         r0, 0(r26)
/* 8036F9A0 540007FF */ clrlwi.     r0, r0, 0x1f
/* 8036F9A4 4182000C */ beq-        lbl_8036f9b0
/* 8036F9A8 7F40D378 */ mr          r0, r26
/* 8036F9AC 48000008 */ b           lbl_8036f9b4
lbl_8036f9b0:
/* 8036F9B0 38000000 */ li          r0, 0x0
lbl_8036f9b4:
/* 8036F9B4 7C1E0378 */ mr          r30, r0
/* 8036F9B8 48000010 */ b           lbl_8036f9c8
lbl_8036f9bc:
/* 8036F9BC 387B0000 */ addi        r3, r27, 0x0
/* 8036F9C0 4CC63182 */ crclr       6
/* 8036F9C4 4BFFECF1 */ bl          func_8036e6b4
lbl_8036f9c8:
/* 8036F9C8 3BFF0008 */ addi        r31, r31, 0x8
lbl_8036f9cc:
/* 8036F9CC 889F0002 */ lbz         r4, 2(r31)
/* 8036F9D0 280400CB */ cmplwi      r4, 0xcb
/* 8036F9D4 4082FEA8 */ bne+        lbl_8036f87c
/* 8036F9D8 281E0000 */ cmplwi      r30, 0
/* 8036F9DC 41820024 */ beq-        lbl_8036fa00
/* 8036F9E0 801E0000 */ lwz         r0, 0(r30)
/* 8036F9E4 809E0004 */ lwz         r4, 4(r30)
/* 8036F9E8 541B003C */ rlwinm      r27, r0, 0, 0, 0x1e
/* 8036F9EC 387B0000 */ addi        r3, r27, 0x0
/* 8036F9F0 4BFFDF21 */ bl          func_8036d910
/* 8036F9F4 7F63DB78 */ mr          r3, r27
/* 8036F9F8 809E0004 */ lwz         r4, 4(r30)
/* 8036F9FC 4BFFDFDD */ bl          func_8036d9d8
lbl_8036fa00:
/* 8036FA00 38600001 */ li          r3, 0x1
lbl_8036fa04:
/* 8036FA04 BB21001C */ lmw         r25, 0x1c(r1)
/* 8036FA08 8001003C */ lwz         r0, 0x3c(r1)
/* 8036FA0C 38210038 */ addi        r1, r1, 0x38
/* 8036FA10 7C0803A6 */ mtlr        r0
/* 8036FA14 4E800020 */ blr         
.size func_8036f80c, . - func_8036f80c


.global func_8036fa18
.type func_8036fa18, @function
func_8036fa18:
/* 8036FA18 7C0802A6 */ mflr        r0
/* 8036FA1C 90010004 */ stw         r0, 4(r1)
/* 8036FA20 9421FFE8 */ stwu        r1, -0x18(r1)
/* 8036FA24 93E10014 */ stw         r31, 0x14(r1)
/* 8036FA28 7C7F1B78 */ mr          r31, r3
/* 8036FA2C 93C10010 */ stw         r30, 0x10(r1)
/* 8036FA30 80830004 */ lwz         r4, 4(r3)
/* 8036FA34 80A30008 */ lwz         r5, 8(r3)
/* 8036FA38 28040000 */ cmplwi      r4, 0
/* 8036FA3C 40820010 */ bne-        lbl_8036fa4c
/* 8036FA40 3C608000 */ lis         r3, 0x8000
/* 8036FA44 90A330CC */ stw         r5, 0x30cc(r3)
/* 8036FA48 48000008 */ b           lbl_8036fa50
lbl_8036fa4c:
/* 8036FA4C 90A40008 */ stw         r5, 8(r4)
lbl_8036fa50:
/* 8036FA50 28050000 */ cmplwi      r5, 0
/* 8036FA54 40820010 */ bne-        lbl_8036fa64
/* 8036FA58 3C608000 */ lis         r3, 0x8000
/* 8036FA5C 908330C8 */ stw         r4, 0x30c8(r3)
/* 8036FA60 48000008 */ b           lbl_8036fa68
lbl_8036fa64:
/* 8036FA64 90850004 */ stw         r4, 4(r5)
lbl_8036fa68:
/* 8036FA68 3C608000 */ lis         r3, 0x8000
/* 8036FA6C 83C330C8 */ lwz         r30, 0x30c8(r3)
/* 8036FA70 48000014 */ b           lbl_8036fa84
lbl_8036fa74:
/* 8036FA74 387F0000 */ addi        r3, r31, 0x0
/* 8036FA78 389E0000 */ addi        r4, r30, 0x0
/* 8036FA7C 4BFFFD91 */ bl          func_8036f80c
/* 8036FA80 83DE0004 */ lwz         r30, 4(r30)
lbl_8036fa84:
/* 8036FA84 281E0000 */ cmplwi      r30, 0
/* 8036FA88 4082FFEC */ bne+        lbl_8036fa74
/* 8036FA8C 4BFFF8B9 */ bl          func_8036f344
/* 8036FA90 8001001C */ lwz         r0, 0x1c(r1)
/* 8036FA94 38600001 */ li          r3, 0x1
/* 8036FA98 83E10014 */ lwz         r31, 0x14(r1)
/* 8036FA9C 83C10010 */ lwz         r30, 0x10(r1)
/* 8036FAA0 38210018 */ addi        r1, r1, 0x18
/* 8036FAA4 7C0803A6 */ mtlr        r0
/* 8036FAA8 4E800020 */ blr         
.size func_8036fa18, . - func_8036fa18


.global func_8036faac
.type func_8036faac, @function
func_8036faac:
/* 8036FAAC 3C808000 */ lis         r4, 0x8000
/* 8036FAB0 38000000 */ li          r0, 0x0
/* 8036FAB4 900430CC */ stw         r0, 0x30cc(r4)
/* 8036FAB8 900430C8 */ stw         r0, 0x30c8(r4)
/* 8036FABC 900430D0 */ stw         r0, 0x30d0(r4)
/* 8036FAC0 4E800020 */ blr         
.size func_8036faac, . - func_8036faac