summaryrefslogtreecommitdiff
path: root/asm/Dolphin/os/OSLink.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/Dolphin/os/OSLink.s')
-rw-r--r--asm/Dolphin/os/OSLink.s604
1 files changed, 604 insertions, 0 deletions
diff --git a/asm/Dolphin/os/OSLink.s b/asm/Dolphin/os/OSLink.s
new file mode 100644
index 0000000..af86ed2
--- /dev/null
+++ b/asm/Dolphin/os/OSLink.s
@@ -0,0 +1,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
+