summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormrb0nk500 <b0nk@b0nk.xyz>2023-01-31 18:52:49 -0400
committermrb0nk500 <b0nk@b0nk.xyz>2023-01-31 18:52:49 -0400
commit67effb9191423d8e5d9e386eaa0f389267c775ce (patch)
tree578516a147ec8a79c0c4b1ef01c0c134b320a5ea
parent24d879de227c348cc21880f047287f79accb44d1 (diff)
asm: Start work on importing the Dolphin SDK
It's a start, but need to import more.
-rw-r--r--asm/Dolphin/base/PPCArch.s127
-rw-r--r--asm/Dolphin/db/db-data.s17
-rw-r--r--asm/Dolphin/db/db.s93
-rw-r--r--asm/Dolphin/os/OS-data.s123
-rw-r--r--asm/Dolphin/os/OS.s746
-rw-r--r--asm/Dolphin/os/OSAlarm.s503
-rw-r--r--asm/Dolphin/os/OSAlloc.s260
-rw-r--r--asm/Dolphin/os/OSAudioSystem-data.s43
-rw-r--r--asm/Dolphin/os/OSAudioSystem.s199
-rw-r--r--asm/Dolphin/os/OSCache-data.s151
-rw-r--r--asm/Dolphin/os/OSCache.s476
-rw-r--r--asm/Dolphin/os/OSContext-data.s135
-rw-r--r--asm/Dolphin/os/OSContext.s643
-rw-r--r--asm/Dolphin/os/OSError-data.s217
-rw-r--r--asm/Dolphin/os/OSError.s329
-rw-r--r--asm/Dolphin/os/OSInit.s263
-rw-r--r--asm/Dolphin/os/OSInterrupt-data.s23
-rw-r--r--asm/Dolphin/os/OSInterrupt.s696
-rw-r--r--asm/Dolphin/os/OSLink-data.s37
-rw-r--r--asm/Dolphin/os/OSLink.s604
-rw-r--r--asm/Dolphin/os/OSMemory-data.s15
-rw-r--r--asm/Dolphin/os/OSMemory.s229
-rw-r--r--asm/Dolphin/os/OSMessages.s159
-rw-r--r--asm/Dolphin/os/OSMutex.s190
-rw-r--r--asm/Dolphin/os/OSReboot.s173
-rw-r--r--asm/Dolphin/os/OSReset.s330
-rw-r--r--asm/Dolphin/os/OSResetSW.s258
-rw-r--r--asm/Dolphin/os/OSRtc.s785
-rw-r--r--asm/Dolphin/os/OSSync.s54
-rw-r--r--asm/Dolphin/os/OSThread.s1413
-rw-r--r--asm/Dolphin/os/OSTime-data.s41
-rw-r--r--asm/Dolphin/os/OSTime.s312
32 files changed, 9644 insertions, 0 deletions
diff --git a/asm/Dolphin/base/PPCArch.s b/asm/Dolphin/base/PPCArch.s
new file mode 100644
index 0000000..45dc04b
--- /dev/null
+++ b/asm/Dolphin/base/PPCArch.s
@@ -0,0 +1,127 @@
+.include "macros.inc"
+
+.section .text
+
+.global func_8036c178
+.type func_8036c178, @function
+func_8036c178:
+/* 8036C178 7C6000A6 */ mfmsr r3
+/* 8036C17C 4E800020 */ blr
+.size func_8036c178, . - func_8036c178
+
+
+.global func_8036c180
+.type func_8036c180, @function
+func_8036c180:
+/* 8036C180 7C600124 */ mtmsr r3
+/* 8036C184 4E800020 */ blr
+.size func_8036c180, . - func_8036c180
+
+
+.global func_8036c188
+.type func_8036c188, @function
+func_8036c188:
+/* 8036C188 7C70FAA6 */ mfspr r3, 0x3f0
+/* 8036C18C 4E800020 */ blr
+.size func_8036c188, . - func_8036c188
+
+
+.global func_8036c190
+.type func_8036c190, @function
+func_8036c190:
+/* 8036C190 7C70FBA6 */ mtspr 0x3f0, r3
+/* 8036C194 4E800020 */ blr
+.size func_8036c190, . - func_8036c190
+
+
+.global func_8036c198
+.type func_8036c198, @function
+func_8036c198:
+/* 8036C198 7C79FAA6 */ mfspr r3, 0x3f9
+/* 8036C19C 4E800020 */ blr
+.size func_8036c198, . - func_8036c198
+
+
+.global func_8036c1a0
+.type func_8036c1a0, @function
+func_8036c1a0:
+/* 8036C1A0 7C79FBA6 */ mtspr 0x3f9, r3
+/* 8036C1A4 4E800020 */ blr
+.size func_8036c1a0, . - func_8036c1a0
+
+
+.global func_8036c1a8
+.type func_8036c1a8, @function
+func_8036c1a8:
+/* 8036C1A8 7C7603A6 */ mtspr 0x16, r3
+/* 8036C1AC 4E800020 */ blr
+.size func_8036c1a8, . - func_8036c1a8
+
+
+.global func_8036c1b0
+.type func_8036c1b0, @function
+func_8036c1b0:
+/* 8036C1B0 44000002 */ sc
+/* 8036C1B4 4E800020 */ blr
+.size func_8036c1b0, . - func_8036c1b0
+
+
+.global func_8036c1b8
+.type func_8036c1b8, @function
+func_8036c1b8:
+/* 8036C1B8 7C0004AC */ sync 0
+lbl_8036c1bc:
+/* 8036C1BC 60000000 */ nop
+/* 8036C1C0 38600000 */ li r3, 0x0
+/* 8036C1C4 60000000 */ nop
+/* 8036C1C8 4BFFFFF4 */ b lbl_8036c1bc
+.size func_8036c1b8, . - func_8036c1b8
+
+
+.global func_8036c1cc
+.type func_8036c1cc, @function
+func_8036c1cc:
+/* 8036C1CC 7C78E2A6 */ mfspr r3, 0x398
+/* 8036C1D0 4E800020 */ blr
+.size func_8036c1cc, . - func_8036c1cc
+
+
+.global func_8036c1d4
+.type func_8036c1d4, @function
+func_8036c1d4:
+/* 8036C1D4 7C78E3A6 */ mtspr 0x398, r3
+/* 8036C1D8 4E800020 */ blr
+.size func_8036c1d4, . - func_8036c1d4
+
+
+.global func_8036c1dc
+.type func_8036c1dc, @function
+func_8036c1dc:
+/* 8036C1DC 7C79E3A6 */ mtspr 0x399, r3
+/* 8036C1E0 4E800020 */ blr
+.size func_8036c1dc, . - func_8036c1dc
+
+
+.global func_8036c1e4
+.type func_8036c1e4, @function
+func_8036c1e4:
+/* 8036C1E4 7C0802A6 */ mflr r0
+/* 8036C1E8 90010004 */ stw r0, 4(r1)
+/* 8036C1EC 9421FFF8 */ stwu r1, -8(r1)
+/* 8036C1F0 4BFFFF99 */ bl func_8036c188
+/* 8036C1F4 60630200 */ ori r3, r3, 0x200
+/* 8036C1F8 4BFFFF99 */ bl func_8036c190
+/* 8036C1FC 8001000C */ lwz r0, 0xc(r1)
+/* 8036C200 38210008 */ addi r1, r1, 0x8
+/* 8036C204 7C0803A6 */ mtlr r0
+/* 8036C208 4E800020 */ blr
+.size func_8036c1e4, . - func_8036c1e4
+
+
+.global func_8036c20c
+.type func_8036c20c, @function
+func_8036c20c:
+/* 8036C20C FFA0004C */ mtfsb1 0x1d
+/* 8036C210 4E800020 */ blr
+.size func_8036c20c, . - func_8036c20c
+
diff --git a/asm/Dolphin/db/db-data.s b/asm/Dolphin/db/db-data.s
new file mode 100644
index 0000000..5d37baa
--- /dev/null
+++ b/asm/Dolphin/db/db-data.s
@@ -0,0 +1,17 @@
+.include "macros.inc"
+
+.section .data
+
+.balign 8
+
+.global lbl_804eeb98
+.type lbl_804eeb98, @object
+lbl_804eeb98:
+/* 804EEB98 44424578 */ .4byte 0x44424578
+/* 804EEB9C 63657074 */ .4byte 0x63657074
+/* 804EEBA0 696F6E44 */ .4byte 0x696f6e44
+/* 804EEBA4 65737469 */ .4byte 0x65737469
+/* 804EEBA8 6E617469 */ .4byte 0x6e617469
+/* 804EEBAC 6F6E0A00 */ .4byte 0x6f6e0a00
+.size lbl_804eeb98, . - lbl_804eeb98
+
diff --git a/asm/Dolphin/db/db.s b/asm/Dolphin/db/db.s
new file mode 100644
index 0000000..42438f1
--- /dev/null
+++ b/asm/Dolphin/db/db.s
@@ -0,0 +1,93 @@
+.include "macros.inc"
+
+.section .text
+
+.global func_8036c214
+.type func_8036c214, @function
+func_8036c214:
+/* 8036C214 3C808000 */ lis r4, 0x8000
+/* 8036C218 38040040 */ addi r0, r4, 0x40
+/* 8036C21C 3C608037 */ lis r3, func_8036c284@ha
+/* 8036C220 900DC9F0 */ stw r0, lbl_805c6810@sda21(0)
+/* 8036C224 3863C284 */ addi r3, r3, func_8036c284@l
+/* 8036C228 3C038000 */ addis r0, r3, 0x8000
+/* 8036C22C 90040048 */ stw r0, 0x48(r4)
+/* 8036C230 38000001 */ li r0, 0x1
+/* 8036C234 900DC9F4 */ stw r0, lbl_805c6814@sda21(0)
+/* 8036C238 4E800020 */ blr
+.size func_8036c214, . - func_8036c214
+
+
+.global func_8036c23c
+.type func_8036c23c, @function
+func_8036c23c:
+/* 8036C23C 7C0802A6 */ mflr r0
+/* 8036C240 3C60804F */ lis r3, lbl_804eeb98@ha
+/* 8036C244 90010004 */ stw r0, 4(r1)
+/* 8036C248 3863EB98 */ addi r3, r3, lbl_804eeb98@l
+/* 8036C24C 4CC63182 */ crclr 6
+/* 8036C250 9421FFE8 */ stwu r1, -0x18(r1)
+/* 8036C254 93E10014 */ stw r31, 0x14(r1)
+/* 8036C258 808000C0 */ lwz r4, 0xc0(0)
+/* 8036C25C 3FE48000 */ addis r31, r4, 0x8000
+/* 8036C260 48002455 */ bl func_8036e6b4
+/* 8036C264 7FE3FB78 */ mr r3, r31
+/* 8036C268 480020D9 */ bl func_8036e340
+/* 8036C26C 4BFFFF4D */ bl func_8036c1b8
+/* 8036C270 8001001C */ lwz r0, 0x1c(r1)
+/* 8036C274 83E10014 */ lwz r31, 0x14(r1)
+/* 8036C278 38210018 */ addi r1, r1, 0x18
+/* 8036C27C 7C0803A6 */ mtlr r0
+/* 8036C280 4E800020 */ blr
+.size func_8036c23c, . - func_8036c23c
+
+
+.global func_8036c284
+.type func_8036c284, @function
+func_8036c284:
+/* 8036C284 7C6000A6 */ mfmsr r3
+/* 8036C288 60630030 */ ori r3, r3, 0x30
+/* 8036C28C 7C600124 */ mtmsr r3
+/* 8036C290 4BFFFFAC */ b func_8036c23c
+.size func_8036c284, . - func_8036c284
+
+
+.global func_8036c294
+.type func_8036c294, @function
+func_8036c294:
+/* 8036C294 808DC9F0 */ lwz r4, lbl_805c6810@sda21(0)
+/* 8036C298 5460063E */ clrlwi r0, r3, 0x18
+/* 8036C29C 38600001 */ li r3, 0x1
+/* 8036C2A0 80840004 */ lwz r4, 4(r4)
+/* 8036C2A4 7C600030 */ slw r0, r3, r0
+/* 8036C2A8 7C830038 */ and r3, r4, r0
+/* 8036C2AC 4E800020 */ blr
+.size func_8036c294, . - func_8036c294
+
+
+.global func_8036c2b0
+.type func_8036c2b0, @function
+func_8036c2b0:
+/* 8036C2B0 9421FF90 */ stwu r1, -0x70(r1)
+/* 8036C2B4 40860024 */ bne- cr1, lbl_8036c2d8
+/* 8036C2B8 D8210028 */ stfd f1, 0x28(r1)
+/* 8036C2BC D8410030 */ stfd f2, 0x30(r1)
+/* 8036C2C0 D8610038 */ stfd f3, 0x38(r1)
+/* 8036C2C4 D8810040 */ stfd f4, 0x40(r1)
+/* 8036C2C8 D8A10048 */ stfd f5, 0x48(r1)
+/* 8036C2CC D8C10050 */ stfd f6, 0x50(r1)
+/* 8036C2D0 D8E10058 */ stfd f7, 0x58(r1)
+/* 8036C2D4 D9010060 */ stfd f8, 0x60(r1)
+lbl_8036c2d8:
+/* 8036C2D8 90610008 */ stw r3, 8(r1)
+/* 8036C2DC 9081000C */ stw r4, 0xc(r1)
+/* 8036C2E0 90A10010 */ stw r5, 0x10(r1)
+/* 8036C2E4 90C10014 */ stw r6, 0x14(r1)
+/* 8036C2E8 90E10018 */ stw r7, 0x18(r1)
+/* 8036C2EC 9101001C */ stw r8, 0x1c(r1)
+/* 8036C2F0 91210020 */ stw r9, 0x20(r1)
+/* 8036C2F4 91410024 */ stw r10, 0x24(r1)
+/* 8036C2F8 38210070 */ addi r1, r1, 0x70
+/* 8036C2FC 4E800020 */ blr
+.size func_8036c2b0, . - func_8036c2b0
+
diff --git a/asm/Dolphin/os/OS-data.s b/asm/Dolphin/os/OS-data.s
new file mode 100644
index 0000000..18adc6a
--- /dev/null
+++ b/asm/Dolphin/os/OS-data.s
@@ -0,0 +1,123 @@
+.include "macros.inc"
+
+.section .data
+
+.balign 8
+
+.global lbl_804eebb0
+.type lbl_804eebb0, @object
+lbl_804eebb0:
+/* 804EEBB0 0A446F6C */ .4byte 0x0a446f6c
+/* 804EEBB4 7068696E */ .4byte 0x7068696e
+/* 804EEBB8 204F5320 */ .4byte 0x204f5320
+/* 804EEBBC 24526576 */ .4byte 0x24526576
+/* 804EEBC0 6973696F */ .4byte 0x6973696f
+/* 804EEBC4 6E3A2035 */ .4byte 0x6e3a2035
+/* 804EEBC8 3420242E */ .4byte 0x3420242e
+/* 804EEBCC 0A000000 */ .4byte 0x0a000000
+/* 804EEBD0 4B65726E */ .4byte 0x4b65726e
+/* 804EEBD4 656C2062 */ .4byte 0x656c2062
+/* 804EEBD8 75696C74 */ .4byte 0x75696c74
+/* 804EEBDC 203A2025 */ .4byte 0x203a2025
+/* 804EEBE0 73202573 */ .4byte 0x73202573
+/* 804EEBE4 0A000000 */ .4byte 0x0a000000
+/* 804EEBE8 4A756E20 */ .4byte 0x4a756e20
+/* 804EEBEC 20352032 */ .4byte 0x20352032
+/* 804EEBF0 30303200 */ .4byte 0x30303200
+/* 804EEBF4 30323A30 */ .4byte 0x30323a30
+/* 804EEBF8 393A3132 */ .4byte 0x393a3132
+/* 804EEBFC 00000000 */ .4byte 0x00000000
+/* 804EEC00 436F6E73 */ .4byte 0x436f6e73
+/* 804EEC04 6F6C6520 */ .4byte 0x6f6c6520
+/* 804EEC08 54797065 */ .4byte 0x54797065
+/* 804EEC0C 203A2000 */ .4byte 0x203a2000
+/* 804EEC10 52657461 */ .4byte 0x52657461
+/* 804EEC14 696C2025 */ .4byte 0x696c2025
+/* 804EEC18 640A0000 */ .4byte 0x640a0000
+/* 804EEC1C 4D616320 */ .4byte 0x4d616320
+/* 804EEC20 456D756C */ .4byte 0x456d756c
+/* 804EEC24 61746F72 */ .4byte 0x61746f72
+/* 804EEC28 0A000000 */ .4byte 0x0a000000
+/* 804EEC2C 50432045 */ .4byte 0x50432045
+/* 804EEC30 6D756C61 */ .4byte 0x6d756c61
+/* 804EEC34 746F720A */ .4byte 0x746f720a
+/* 804EEC38 00000000 */ .4byte 0x00000000
+/* 804EEC3C 45505043 */ .4byte 0x45505043
+/* 804EEC40 20417274 */ .4byte 0x20417274
+/* 804EEC44 6875720A */ .4byte 0x6875720a
+/* 804EEC48 00000000 */ .4byte 0x00000000
+/* 804EEC4C 45505043 */ .4byte 0x45505043
+/* 804EEC50 204D696E */ .4byte 0x204d696e
+/* 804EEC54 6E6F770A */ .4byte 0x6e6f770a
+/* 804EEC58 00000000 */ .4byte 0x00000000
+/* 804EEC5C 44657665 */ .4byte 0x44657665
+/* 804EEC60 6C6F706D */ .4byte 0x6c6f706d
+/* 804EEC64 656E7420 */ .4byte 0x656e7420
+/* 804EEC68 48572564 */ .4byte 0x48572564
+/* 804EEC6C 0A000000 */ .4byte 0x0a000000
+/* 804EEC70 4D656D6F */ .4byte 0x4d656d6f
+/* 804EEC74 72792025 */ .4byte 0x72792025
+/* 804EEC78 64204D42 */ .4byte 0x64204d42
+/* 804EEC7C 0A000000 */ .4byte 0x0a000000
+/* 804EEC80 4172656E */ .4byte 0x4172656e
+/* 804EEC84 61203A20 */ .4byte 0x61203a20
+/* 804EEC88 30782578 */ .4byte 0x30782578
+/* 804EEC8C 202D2030 */ .4byte 0x202d2030
+/* 804EEC90 7825780A */ .4byte 0x7825780a
+/* 804EEC94 00000000 */ .4byte 0x00000000
+/* 804EEC98 00000100 */ .4byte 0x00000100
+/* 804EEC9C 00000200 */ .4byte 0x00000200
+/* 804EECA0 00000300 */ .4byte 0x00000300
+/* 804EECA4 00000400 */ .4byte 0x00000400
+/* 804EECA8 00000500 */ .4byte 0x00000500
+/* 804EECAC 00000600 */ .4byte 0x00000600
+/* 804EECB0 00000700 */ .4byte 0x00000700
+/* 804EECB4 00000800 */ .4byte 0x00000800
+/* 804EECB8 00000900 */ .4byte 0x00000900
+/* 804EECBC 00000C00 */ .4byte 0x00000c00
+/* 804EECC0 00000D00 */ .4byte 0x00000d00
+/* 804EECC4 00000F00 */ .4byte 0x00000f00
+/* 804EECC8 00001300 */ .4byte 0x00001300
+/* 804EECCC 00001400 */ .4byte 0x00001400
+/* 804EECD0 00001700 */ .4byte 0x00001700
+/* 804EECD4 496E7374 */ .4byte 0x496e7374
+/* 804EECD8 616C6C69 */ .4byte 0x616c6c69
+/* 804EECDC 6E67204F */ .4byte 0x6e67204f
+/* 804EECE0 53444249 */ .4byte 0x53444249
+/* 804EECE4 6E746567 */ .4byte 0x6e746567
+/* 804EECE8 7261746F */ .4byte 0x7261746f
+/* 804EECEC 720A0000 */ .4byte 0x720a0000
+/* 804EECF0 3E3E3E20 */ .4byte 0x3e3e3e20
+/* 804EECF4 4F53494E */ .4byte 0x4f53494e
+/* 804EECF8 49543A20 */ .4byte 0x49543a20
+/* 804EECFC 65786365 */ .4byte 0x65786365
+/* 804EED00 7074696F */ .4byte 0x7074696f
+/* 804EED04 6E202564 */ .4byte 0x6e202564
+/* 804EED08 20636F6D */ .4byte 0x20636f6d
+/* 804EED0C 6D616E64 */ .4byte 0x6d616e64
+/* 804EED10 65657265 */ .4byte 0x65657265
+/* 804EED14 64206279 */ .4byte 0x64206279
+/* 804EED18 2054524B */ .4byte 0x2054524b
+/* 804EED1C 0A000000 */ .4byte 0x0a000000
+/* 804EED20 3E3E3E20 */ .4byte 0x3e3e3e20
+/* 804EED24 4F53494E */ .4byte 0x4f53494e
+/* 804EED28 49543A20 */ .4byte 0x49543a20
+/* 804EED2C 65786365 */ .4byte 0x65786365
+/* 804EED30 7074696F */ .4byte 0x7074696f
+/* 804EED34 6E202564 */ .4byte 0x6e202564
+/* 804EED38 20766563 */ .4byte 0x20766563
+/* 804EED3C 746F7265 */ .4byte 0x746f7265
+/* 804EED40 6420746F */ .4byte 0x6420746f
+/* 804EED44 20646562 */ .4byte 0x20646562
+/* 804EED48 75676765 */ .4byte 0x75676765
+/* 804EED4C 720A0000 */ .4byte 0x720a0000
+/* 804EED50 45786365 */ .4byte 0x45786365
+/* 804EED54 7074696F */ .4byte 0x7074696f
+/* 804EED58 6E732069 */ .4byte 0x6e732069
+/* 804EED5C 6E697469 */ .4byte 0x6e697469
+/* 804EED60 616C697A */ .4byte 0x616c697a
+/* 804EED64 65642E2E */ .4byte 0x65642e2e
+/* 804EED68 2E0A0000 */ .4byte 0x2e0a0000
+/* 804EED6C 00000000 */ .4byte 0x00000000
+.size lbl_804eebb0, . - lbl_804eebb0
+
diff --git a/asm/Dolphin/os/OS.s b/asm/Dolphin/os/OS.s
new file mode 100644
index 0000000..8d30064
--- /dev/null
+++ b/asm/Dolphin/os/OS.s
@@ -0,0 +1,746 @@
+.include "macros.inc"
+
+.section .text
+
+.global func_8036c300
+.type func_8036c300, @function
+func_8036c300:
+/* 8036C300 806DC9F8 */ lwz r3, lbl_805c6818@sda21(0)
+/* 8036C304 28030000 */ cmplwi r3, 0
+/* 8036C308 41820010 */ beq- lbl_8036c318
+/* 8036C30C 8063002C */ lwz r3, 0x2c(r3)
+/* 8036C310 28030000 */ cmplwi r3, 0
+/* 8036C314 40820010 */ bne- lbl_8036c324
+lbl_8036c318:
+/* 8036C318 3C601000 */ lis r3, 0x1000
+/* 8036C31C 38630002 */ addi r3, r3, 0x2
+/* 8036C320 48000004 */ b lbl_8036c324
+lbl_8036c324:
+/* 8036C324 4E800020 */ blr
+.size func_8036c300, . - func_8036c300
+
+
+.global func_8036c328
+.type func_8036c328, @function
+func_8036c328:
+/* 8036C328 7C0802A6 */ mflr r0
+/* 8036C32C 90010004 */ stw r0, 4(r1)
+/* 8036C330 9421FFF0 */ stwu r1, -0x10(r1)
+/* 8036C334 93E1000C */ stw r31, 0xc(r1)
+/* 8036C338 4800447D */ bl func_803707b4
+/* 8036C33C 3C038000 */ addis r0, r3, 0x8000
+/* 8036C340 28000000 */ cmplwi r0, 0
+/* 8036C344 41820034 */ beq- lbl_8036c378
+/* 8036C348 38000000 */ li r0, 0x0
+/* 8036C34C 900DCA14 */ stw r0, lbl_805c6834@sda21(0)
+/* 8036C350 900DCA10 */ stw r0, lbl_805c6830@sda21(0)
+/* 8036C354 480012C5 */ bl func_8036d618
+/* 8036C358 7C7F1B78 */ mr r31, r3
+/* 8036C35C 480012C5 */ bl func_8036d620
+/* 8036C360 7FE3F850 */ subf r31, r3, r31
+/* 8036C364 480012BD */ bl func_8036d620
+/* 8036C368 7FE5FB78 */ mr r5, r31
+/* 8036C36C 38800000 */ li r4, 0x0
+/* 8036C370 4BCA1FC5 */ bl func_8000e334
+/* 8036C374 480000C8 */ b lbl_8036c43c
+lbl_8036c378:
+/* 8036C378 3C808130 */ lis r4, 0x8130
+/* 8036C37C 8064DFF0 */ lwz r3, -0x2010(r4)
+/* 8036C380 8004DFEC */ lwz r0, -0x2014(r4)
+/* 8036C384 28030000 */ cmplwi r3, 0
+/* 8036C388 906DCA14 */ stw r3, lbl_805c6834@sda21(0)
+/* 8036C38C 900DCA10 */ stw r0, lbl_805c6830@sda21(0)
+/* 8036C390 40820028 */ bne- lbl_8036c3b8
+/* 8036C394 48001285 */ bl func_8036d618
+/* 8036C398 7C7F1B78 */ mr r31, r3
+/* 8036C39C 48001285 */ bl func_8036d620
+/* 8036C3A0 7FE3F850 */ subf r31, r3, r31
+/* 8036C3A4 4800127D */ bl func_8036d620
+/* 8036C3A8 7FE5FB78 */ mr r5, r31
+/* 8036C3AC 38800000 */ li r4, 0x0
+/* 8036C3B0 4BCA1F85 */ bl func_8000e334
+/* 8036C3B4 48000088 */ b lbl_8036c43c
+lbl_8036c3b8:
+/* 8036C3B8 48001269 */ bl func_8036d620
+/* 8036C3BC 800DCA14 */ lwz r0, lbl_805c6834@sda21(0)
+/* 8036C3C0 7C030040 */ cmplw r3, r0
+/* 8036C3C4 40800078 */ bge- lbl_8036c43c
+/* 8036C3C8 48001251 */ bl func_8036d618
+/* 8036C3CC 800DCA14 */ lwz r0, lbl_805c6834@sda21(0)
+/* 8036C3D0 7C030040 */ cmplw r3, r0
+/* 8036C3D4 41810028 */ bgt- lbl_8036c3fc
+/* 8036C3D8 48001241 */ bl func_8036d618
+/* 8036C3DC 7C7F1B78 */ mr r31, r3
+/* 8036C3E0 48001241 */ bl func_8036d620
+/* 8036C3E4 7FE3F850 */ subf r31, r3, r31
+/* 8036C3E8 48001239 */ bl func_8036d620
+/* 8036C3EC 7FE5FB78 */ mr r5, r31
+/* 8036C3F0 38800000 */ li r4, 0x0
+/* 8036C3F4 4BCA1F41 */ bl func_8000e334
+/* 8036C3F8 48000044 */ b lbl_8036c43c
+lbl_8036c3fc:
+/* 8036C3FC 48001225 */ bl func_8036d620
+/* 8036C400 800DCA14 */ lwz r0, lbl_805c6834@sda21(0)
+/* 8036C404 7FE30050 */ subf r31, r3, r0
+/* 8036C408 48001219 */ bl func_8036d620
+/* 8036C40C 7FE5FB78 */ mr r5, r31
+/* 8036C410 38800000 */ li r4, 0x0
+/* 8036C414 4BCA1F21 */ bl func_8000e334
+/* 8036C418 48001201 */ bl func_8036d618
+/* 8036C41C 83EDCA10 */ lwz r31, lbl_805c6830@sda21(0)
+/* 8036C420 7C03F840 */ cmplw r3, r31
+/* 8036C424 40810018 */ ble- lbl_8036c43c
+/* 8036C428 480011F1 */ bl func_8036d618
+/* 8036C42C 7CBF1850 */ subf r5, r31, r3
+/* 8036C430 7FE3FB78 */ mr r3, r31
+/* 8036C434 38800000 */ li r4, 0x0
+/* 8036C438 4BCA1EFD */ bl func_8000e334
+lbl_8036c43c:
+/* 8036C43C 80010014 */ lwz r0, 0x14(r1)
+/* 8036C440 83E1000C */ lwz r31, 0xc(r1)
+/* 8036C444 38210010 */ addi r1, r1, 0x10
+/* 8036C448 7C0803A6 */ mtlr r0
+/* 8036C44C 4E800020 */ blr
+.size func_8036c328, . - func_8036c328
+
+
+.global func_8036c450
+.type func_8036c450, @function
+func_8036c450:
+/* 8036C450 8004000C */ lwz r0, 0xc(r4)
+/* 8036C454 2C000000 */ cmpwi r0, 0x0
+/* 8036C458 41820008 */ beq- lbl_8036c460
+/* 8036C45C 48000020 */ b lbl_8036c47c
+lbl_8036c460:
+/* 8036C460 3C608054 */ lis r3, lbl_8053ebe0@ha
+/* 8036C464 3863EBE0 */ addi r3, r3, lbl_8053ebe0@l
+/* 8036C468 A0030002 */ lhz r0, 2(r3)
+/* 8036C46C 3C608000 */ lis r3, 0x8000
+/* 8036C470 60008000 */ ori r0, r0, 0x8000
+/* 8036C474 B00330E6 */ sth r0, 0x30e6(r3)
+/* 8036C478 48000010 */ b lbl_8036c488
+lbl_8036c47c:
+/* 8036C47C 38000001 */ li r0, 0x1
+/* 8036C480 3C608000 */ lis r3, 0x8000
+/* 8036C484 B00330E6 */ sth r0, 0x30e6(r3)
+lbl_8036c488:
+/* 8036C488 4E800020 */ blr
+.size func_8036c450, . - func_8036c450
+
+
+.global func_8036c48c
+.type func_8036c48c, @function
+func_8036c48c:
+/* 8036C48C 7C0802A6 */ mflr r0
+/* 8036C490 90010004 */ stw r0, 4(r1)
+/* 8036C494 9421FFE8 */ stwu r1, -0x18(r1)
+/* 8036C498 93E10014 */ stw r31, 0x14(r1)
+/* 8036C49C 93C10010 */ stw r30, 0x10(r1)
+/* 8036C4A0 93A1000C */ stw r29, 0xc(r1)
+/* 8036C4A4 800DCA08 */ lwz r0, lbl_805c6828@sda21(0)
+/* 8036C4A8 3C808054 */ lis r4, lbl_8053ebe0@ha
+/* 8036C4AC 3C60804F */ lis r3, lbl_804eebb0@ha
+/* 8036C4B0 2C000000 */ cmpwi r0, 0x0
+/* 8036C4B4 3BC4EBE0 */ addi r30, r4, lbl_8053ebe0@l
+/* 8036C4B8 3BE3EBB0 */ addi r31, r3, lbl_804eebb0@l
+/* 8036C4BC 4082036C */ bne- lbl_8036c828
+/* 8036C4C0 38000001 */ li r0, 0x1
+/* 8036C4C4 900DCA08 */ stw r0, lbl_805c6828@sda21(0)
+/* 8036C4C8 4800631D */ bl func_803727e4
+/* 8036C4CC 908DCA24 */ stw r4, lbl_805c6844@sda21(0)
+/* 8036C4D0 906DCA20 */ stw r3, lbl_805c6840@sda21(0)
+/* 8036C4D4 48002601 */ bl func_8036ead4
+/* 8036C4D8 4BFFFD0D */ bl func_8036c1e4
+/* 8036C4DC 4BFFFD31 */ bl func_8036c20c
+/* 8036C4E0 38000000 */ li r0, 0x0
+/* 8036C4E4 3C808000 */ lis r4, 0x8000
+/* 8036C4E8 900DC9FC */ stw r0, lbl_805c681c@sda21(0)
+/* 8036C4EC 908DC9F8 */ stw r4, lbl_805c6818@sda21(0)
+/* 8036C4F0 900DCB04 */ stw r0, lbl_805c6924@sda21(0)
+/* 8036C4F4 806400F4 */ lwz r3, 0xf4(r4)
+/* 8036C4F8 28030000 */ cmplwi r3, 0
+/* 8036C4FC 41820034 */ beq- lbl_8036c530
+/* 8036C500 3803000C */ addi r0, r3, 0xc
+/* 8036C504 900DC9FC */ stw r0, lbl_805c681c@sda21(0)
+/* 8036C508 80030024 */ lwz r0, 0x24(r3)
+/* 8036C50C 806DC9FC */ lwz r3, lbl_805c681c@sda21(0)
+/* 8036C510 900DCBDC */ stw r0, lbl_805c69fc@sda21(0)
+/* 8036C514 80030000 */ lwz r0, 0(r3)
+/* 8036C518 5400063E */ clrlwi r0, r0, 0x18
+/* 8036C51C 980430E8 */ stb r0, 0x30e8(r4)
+/* 8036C520 800DCBDC */ lwz r0, lbl_805c69fc@sda21(0)
+/* 8036C524 5400063E */ clrlwi r0, r0, 0x18
+/* 8036C528 980430E9 */ stb r0, 0x30e9(r4)
+/* 8036C52C 48000028 */ b lbl_8036c554
+lbl_8036c530:
+/* 8036C530 80040034 */ lwz r0, 0x34(r4)
+/* 8036C534 28000000 */ cmplwi r0, 0
+/* 8036C538 4182001C */ beq- lbl_8036c554
+/* 8036C53C 886430E8 */ lbz r3, 0x30e8(r4)
+/* 8036C540 380DCA00 */ addi r0, 0, lbl_805c6820@sda21
+/* 8036C544 906DCA00 */ stw r3, lbl_805c6820@sda21(0)
+/* 8036C548 900DC9FC */ stw r0, lbl_805c681c@sda21(0)
+/* 8036C54C 880430E9 */ lbz r0, 0x30e9(r4)
+/* 8036C550 900DCBDC */ stw r0, lbl_805c69fc@sda21(0)
+lbl_8036c554:
+/* 8036C554 38000001 */ li r0, 0x1
+/* 8036C558 806DC9F8 */ lwz r3, lbl_805c6818@sda21(0)
+/* 8036C55C 900DCB04 */ stw r0, lbl_805c6924@sda21(0)
+/* 8036C560 80630030 */ lwz r3, 0x30(r3)
+/* 8036C564 28030000 */ cmplwi r3, 0
+/* 8036C568 40820010 */ bne- lbl_8036c578
+/* 8036C56C 3C60805E */ lis r3, 0x805e
+/* 8036C570 386329E0 */ addi r3, r3, 0x29e0
+/* 8036C574 48000004 */ b lbl_8036c578
+lbl_8036c578:
+/* 8036C578 480010B9 */ bl func_8036d630
+/* 8036C57C 806DC9F8 */ lwz r3, lbl_805c6818@sda21(0)
+/* 8036C580 80030030 */ lwz r0, 0x30(r3)
+/* 8036C584 28000000 */ cmplwi r0, 0
+/* 8036C588 40820030 */ bne- lbl_8036c5b8
+/* 8036C58C 806DC9FC */ lwz r3, lbl_805c681c@sda21(0)
+/* 8036C590 28030000 */ cmplwi r3, 0
+/* 8036C594 41820024 */ beq- lbl_8036c5b8
+/* 8036C598 80030000 */ lwz r0, 0(r3)
+/* 8036C59C 28000002 */ cmplwi r0, 2
+/* 8036C5A0 40800018 */ bge- lbl_8036c5b8
+/* 8036C5A4 3C60805E */ lis r3, 0x805e
+/* 8036C5A8 386309C8 */ addi r3, r3, 0x9c8
+/* 8036C5AC 3803001F */ addi r0, r3, 0x1f
+/* 8036C5B0 54030034 */ rlwinm r3, r0, 0, 0, 0x1a
+/* 8036C5B4 4800107D */ bl func_8036d630
+lbl_8036c5b8:
+/* 8036C5B8 806DC9F8 */ lwz r3, lbl_805c6818@sda21(0)
+/* 8036C5BC 80630034 */ lwz r3, 0x34(r3)
+/* 8036C5C0 28030000 */ cmplwi r3, 0
+/* 8036C5C4 40820010 */ bne- lbl_8036c5d4
+/* 8036C5C8 3C608170 */ lis r3, 0x8170
+/* 8036C5CC 38630000 */ addi r3, r3, 0x0
+/* 8036C5D0 48000004 */ b lbl_8036c5d4
+lbl_8036c5d4:
+/* 8036C5D4 48001055 */ bl func_8036d628
+/* 8036C5D8 4800026D */ bl func_8036c844
+/* 8036C5DC 48004FE1 */ bl func_803715bc
+/* 8036C5E0 4800067D */ bl func_8036cc5c
+/* 8036C5E4 480034C9 */ bl func_8036faac
+/* 8036C5E8 48002569 */ bl func_8036eb50
+/* 8036C5EC 3C608037 */ lis r3, func_803707e4@ha
+/* 8036C5F0 388307E4 */ addi r4, r3, func_803707e4@l
+/* 8036C5F4 38600016 */ li r3, 0x16
+/* 8036C5F8 48002529 */ bl func_8036eb20
+/* 8036C5FC 48002071 */ bl func_8036e66c
+/* 8036C600 48001759 */ bl func_8036dd58
+/* 8036C604 480C0065 */ bl func_8042c668
+/* 8036C608 480C1315 */ bl func_8042d91c
+/* 8036C60C 480046DD */ bl func_80370ce8
+/* 8036C610 48005011 */ bl func_80371620
+/* 8036C614 48001025 */ bl func_8036d638
+/* 8036C618 4BFFFBB5 */ bl func_8036c1cc
+/* 8036C61C 54630080 */ rlwinm r3, r3, 0, 2, 0
+/* 8036C620 4BFFFBB5 */ bl func_8036c1d4
+/* 8036C624 806DC9F8 */ lwz r3, lbl_805c6818@sda21(0)
+/* 8036C628 3883002C */ addi r4, r3, 0x2c
+/* 8036C62C 80040000 */ lwz r0, 0(r4)
+/* 8036C630 540000C6 */ rlwinm r0, r0, 0, 3, 3
+/* 8036C634 28000000 */ cmplwi r0, 0
+/* 8036C638 41820014 */ beq- lbl_8036c64c
+/* 8036C63C 3C601000 */ lis r3, 0x1000
+/* 8036C640 38030004 */ addi r0, r3, 0x4
+/* 8036C644 90040000 */ stw r0, 0(r4)
+/* 8036C648 4800000C */ b lbl_8036c654
+lbl_8036c64c:
+/* 8036C64C 38000001 */ li r0, 0x1
+/* 8036C650 90040000 */ stw r0, 0(r4)
+lbl_8036c654:
+/* 8036C654 3C60CC00 */ lis r3, 0xcc00
+/* 8036C658 808DC9F8 */ lwz r4, lbl_805c6818@sda21(0)
+/* 8036C65C 38633000 */ addi r3, r3, 0x3000
+/* 8036C660 8003002C */ lwz r0, 0x2c(r3)
+/* 8036C664 8064002C */ lwz r3, 0x2c(r4)
+/* 8036C668 54000006 */ rlwinm r0, r0, 0, 0, 3
+/* 8036C66C 5400273E */ srwi r0, r0, 0x1c
+/* 8036C670 7C030214 */ add r0, r3, r0
+/* 8036C674 9004002C */ stw r0, 0x2c(r4)
+/* 8036C678 800DCA18 */ lwz r0, lbl_805c6838@sda21(0)
+/* 8036C67C 2C000000 */ cmpwi r0, 0x0
+/* 8036C680 40820008 */ bne- lbl_8036c688
+/* 8036C684 48003805 */ bl func_8036fe88
+lbl_8036c688:
+/* 8036C688 7FE3FB78 */ mr r3, r31
+/* 8036C68C 4CC63182 */ crclr 6
+/* 8036C690 48002025 */ bl func_8036e6b4
+/* 8036C694 387F0020 */ addi r3, r31, 0x20
+/* 8036C698 4CC63182 */ crclr 6
+/* 8036C69C 389F0038 */ addi r4, r31, 0x38
+/* 8036C6A0 38BF0044 */ addi r5, r31, 0x44
+/* 8036C6A4 48002011 */ bl func_8036e6b4
+/* 8036C6A8 387F0050 */ addi r3, r31, 0x50
+/* 8036C6AC 4CC63182 */ crclr 6
+/* 8036C6B0 48002005 */ bl func_8036e6b4
+/* 8036C6B4 806DC9F8 */ lwz r3, lbl_805c6818@sda21(0)
+/* 8036C6B8 28030000 */ cmplwi r3, 0
+/* 8036C6BC 41820010 */ beq- lbl_8036c6cc
+/* 8036C6C0 8083002C */ lwz r4, 0x2c(r3)
+/* 8036C6C4 28040000 */ cmplwi r4, 0
+/* 8036C6C8 40820010 */ bne- lbl_8036c6d8
+lbl_8036c6cc:
+/* 8036C6CC 3C601000 */ lis r3, 0x1000
+/* 8036C6D0 38830002 */ addi r4, r3, 0x2
+/* 8036C6D4 48000004 */ b lbl_8036c6d8
+lbl_8036c6d8:
+/* 8036C6D8 548000C6 */ rlwinm r0, r4, 0, 3, 3
+/* 8036C6DC 28000000 */ cmplwi r0, 0
+/* 8036C6E0 40820014 */ bne- lbl_8036c6f4
+/* 8036C6E4 4CC63182 */ crclr 6
+/* 8036C6E8 387F0060 */ addi r3, r31, 0x60
+/* 8036C6EC 48001FC9 */ bl func_8036e6b4
+/* 8036C6F0 4800008C */ b lbl_8036c77c
+lbl_8036c6f4:
+/* 8036C6F4 3C601000 */ lis r3, 0x1000
+/* 8036C6F8 38030002 */ addi r0, r3, 0x2
+/* 8036C6FC 7C040000 */ cmpw r4, r0
+/* 8036C700 41820048 */ beq- lbl_8036c748
+/* 8036C704 40800014 */ bge- lbl_8036c718
+/* 8036C708 7C041800 */ cmpw r4, r3
+/* 8036C70C 4182001C */ beq- lbl_8036c728
+/* 8036C710 40800028 */ bge- lbl_8036c738
+/* 8036C714 48000054 */ b lbl_8036c768
+lbl_8036c718:
+/* 8036C718 38030004 */ addi r0, r3, 0x4
+/* 8036C71C 7C040000 */ cmpw r4, r0
+/* 8036C720 40800048 */ bge- lbl_8036c768
+/* 8036C724 48000034 */ b lbl_8036c758
+lbl_8036c728:
+/* 8036C728 387F006C */ addi r3, r31, 0x6c
+/* 8036C72C 4CC63182 */ crclr 6
+/* 8036C730 48001F85 */ bl func_8036e6b4
+/* 8036C734 48000048 */ b lbl_8036c77c
+lbl_8036c738:
+/* 8036C738 387F007C */ addi r3, r31, 0x7c
+/* 8036C73C 4CC63182 */ crclr 6
+/* 8036C740 48001F75 */ bl func_8036e6b4
+/* 8036C744 48000038 */ b lbl_8036c77c
+lbl_8036c748:
+/* 8036C748 387F008C */ addi r3, r31, 0x8c
+/* 8036C74C 4CC63182 */ crclr 6
+/* 8036C750 48001F65 */ bl func_8036e6b4
+/* 8036C754 48000028 */ b lbl_8036c77c
+lbl_8036c758:
+/* 8036C758 387F009C */ addi r3, r31, 0x9c
+/* 8036C75C 4CC63182 */ crclr 6
+/* 8036C760 48001F55 */ bl func_8036e6b4
+/* 8036C764 48000018 */ b lbl_8036c77c
+lbl_8036c768:
+/* 8036C768 3C84F000 */ addis r4, r4, 0xf000
+/* 8036C76C 4CC63182 */ crclr 6
+/* 8036C770 387F00AC */ addi r3, r31, 0xac
+/* 8036C774 3884FFFD */ addi r4, r4, -0x3
+/* 8036C778 48001F3D */ bl func_8036e6b4
+lbl_8036c77c:
+/* 8036C77C 808DC9F8 */ lwz r4, lbl_805c6818@sda21(0)
+/* 8036C780 387F00C0 */ addi r3, r31, 0xc0
+/* 8036C784 4CC63182 */ crclr 6
+/* 8036C788 80040028 */ lwz r0, 0x28(r4)
+/* 8036C78C 5404653E */ srwi r4, r0, 0x14
+/* 8036C790 48001F25 */ bl func_8036e6b4
+/* 8036C794 48000E85 */ bl func_8036d618
+/* 8036C798 7C7D1B78 */ mr r29, r3
+/* 8036C79C 48000E85 */ bl func_8036d620
+/* 8036C7A0 7C641B78 */ mr r4, r3
+/* 8036C7A4 4CC63182 */ crclr 6
+/* 8036C7A8 7FA5EB78 */ mr r5, r29
+/* 8036C7AC 387F00D0 */ addi r3, r31, 0xd0
+/* 8036C7B0 48001F05 */ bl func_8036e6b4
+/* 8036C7B4 806DC9FC */ lwz r3, lbl_805c681c@sda21(0)
+/* 8036C7B8 28030000 */ cmplwi r3, 0
+/* 8036C7BC 41820014 */ beq- lbl_8036c7d0
+/* 8036C7C0 80030000 */ lwz r0, 0(r3)
+/* 8036C7C4 28000002 */ cmplwi r0, 2
+/* 8036C7C8 41800008 */ blt- lbl_8036c7d0
+/* 8036C7CC 48025B45 */ bl func_80392310
+lbl_8036c7d0:
+/* 8036C7D0 4BFFFB59 */ bl func_8036c328
+/* 8036C7D4 48002315 */ bl func_8036eae8
+/* 8036C7D8 800DCA18 */ lwz r0, lbl_805c6838@sda21(0)
+/* 8036C7DC 2C000000 */ cmpwi r0, 0x0
+/* 8036C7E0 40820048 */ bne- lbl_8036c828
+/* 8036C7E4 48008929 */ bl func_8037510c
+/* 8036C7E8 800DCA04 */ lwz r0, lbl_805c6824@sda21(0)
+/* 8036C7EC 2C000000 */ cmpwi r0, 0x0
+/* 8036C7F0 41820018 */ beq- lbl_8036c808
+/* 8036C7F4 3C600001 */ lis r3, 1
+/* 8036C7F8 38039000 */ addi r0, r3, -0x7000
+/* 8036C7FC 3C608000 */ lis r3, 0x8000
+/* 8036C800 B00330E6 */ sth r0, 0x30e6(r3)
+/* 8036C804 48000024 */ b lbl_8036c828
+lbl_8036c808:
+/* 8036C808 7FC3F378 */ mr r3, r30
+/* 8036C80C 38800020 */ li r4, 0x20
+/* 8036C810 480010D1 */ bl func_8036d8e0
+/* 8036C814 3C608037 */ lis r3, func_8036c450@ha
+/* 8036C818 38A3C450 */ addi r5, r3, func_8036c450@l
+/* 8036C81C 7FC4F378 */ mr r4, r30
+/* 8036C820 387E0020 */ addi r3, r30, 0x20
+/* 8036C824 4800A609 */ bl func_80376e2c
+lbl_8036c828:
+/* 8036C828 8001001C */ lwz r0, 0x1c(r1)
+/* 8036C82C 83E10014 */ lwz r31, 0x14(r1)
+/* 8036C830 83C10010 */ lwz r30, 0x10(r1)
+/* 8036C834 83A1000C */ lwz r29, 0xc(r1)
+/* 8036C838 38210018 */ addi r1, r1, 0x18
+/* 8036C83C 7C0803A6 */ mtlr r0
+/* 8036C840 4E800020 */ blr
+.size func_8036c48c, . - func_8036c48c
+
+
+.global func_8036c844
+.type func_8036c844, @function
+func_8036c844:
+/* 8036C844 7C0802A6 */ mflr r0
+/* 8036C848 90010004 */ stw r0, 4(r1)
+/* 8036C84C 9421FFC8 */ stwu r1, -0x38(r1)
+/* 8036C850 BE810008 */ stmw r20, 8(r1)
+/* 8036C854 3C608000 */ lis r3, 0x8000
+/* 8036C858 80030060 */ lwz r0, 0x60(r3)
+/* 8036C85C 3C808037 */ lis r4, func_8036cb84@ha
+/* 8036C860 3BC4CB84 */ addi r30, r4, func_8036cb84@l
+/* 8036C864 3CA08037 */ lis r5, func_8036cb1c@ha
+/* 8036C868 833E0000 */ lwz r25, 0(r30)
+/* 8036C86C 3C808037 */ lis r4, func_8036cbb4@ha
+/* 8036C870 38A5CB1C */ addi r5, r5, func_8036cb1c@l
+/* 8036C874 3884CBB4 */ addi r4, r4, func_8036cbb4@l
+/* 8036C878 3CC0804F */ lis r6, lbl_804eebb0@ha
+/* 8036C87C 28000000 */ cmplwi r0, 0
+/* 8036C880 7CB82B78 */ mr r24, r5
+/* 8036C884 3BA6EBB0 */ addi r29, r6, lbl_804eebb0@l
+/* 8036C888 7EE52050 */ subf r23, r5, r4
+/* 8036C88C 3A830060 */ addi r20, r3, 0x60
+/* 8036C890 4082004C */ bne- lbl_8036c8dc
+/* 8036C894 387D0124 */ addi r3, r29, 0x124
+/* 8036C898 4CC63182 */ crclr 6
+/* 8036C89C 4BFFFA15 */ bl func_8036c2b0
+/* 8036C8A0 3C808037 */ lis r4, func_8036cac4@ha
+/* 8036C8A4 3C608037 */ lis r3, func_8036cae8@ha
+/* 8036C8A8 3803CAE8 */ addi r0, r3, func_8036cae8@l
+/* 8036C8AC 3884CAC4 */ addi r4, r4, func_8036cac4@l
+/* 8036C8B0 7EA40050 */ subf r21, r4, r0
+/* 8036C8B4 7E83A378 */ mr r3, r20
+/* 8036C8B8 7EA5AB78 */ mr r5, r21
+/* 8036C8BC 4BCA1B61 */ bl func_8000e41c
+/* 8036C8C0 7E83A378 */ mr r3, r20
+/* 8036C8C4 7EA4AB78 */ mr r4, r21
+/* 8036C8C8 480010B1 */ bl func_8036d978
+/* 8036C8CC 7C0004AC */ sync 0
+/* 8036C8D0 7E83A378 */ mr r3, r20
+/* 8036C8D4 7EA4AB78 */ mr r4, r21
+/* 8036C8D8 48001101 */ bl func_8036d9d8
+lbl_8036c8dc:
+/* 8036C8DC 3C808037 */ lis r4, func_8036cae8@ha
+/* 8036C8E0 3C608037 */ lis r3, func_8036caec@ha
+/* 8036C8E4 3BE4CAE8 */ addi r31, r4, func_8036cae8@l
+/* 8036C8E8 3803CAEC */ addi r0, r3, func_8036caec@l
+/* 8036C8EC 3B9D00E8 */ addi r28, r29, 0xe8
+/* 8036C8F0 7F7F0050 */ subf r27, r31, r0
+/* 8036C8F4 3B400000 */ li r26, 0x0
+/* 8036C8F8 48000004 */ b lbl_8036c8fc
+lbl_8036c8fc:
+/* 8036C8FC 3C608037 */ lis r3, func_8036cb74@ha
+/* 8036C900 3AA3CB74 */ addi r21, r3, func_8036cb74@l
+/* 8036C904 3EC06000 */ lis r22, 0x6000
+/* 8036C908 48000004 */ b lbl_8036c90c
+lbl_8036c90c:
+/* 8036C90C 48000148 */ b lbl_8036ca54
+lbl_8036c910:
+/* 8036C910 806DC9FC */ lwz r3, lbl_805c681c@sda21(0)
+/* 8036C914 28030000 */ cmplwi r3, 0
+/* 8036C918 41820034 */ beq- lbl_8036c94c
+/* 8036C91C 80030000 */ lwz r0, 0(r3)
+/* 8036C920 28000002 */ cmplwi r0, 2
+/* 8036C924 41800028 */ blt- lbl_8036c94c
+/* 8036C928 7F43D378 */ mr r3, r26
+/* 8036C92C 4BFFF969 */ bl func_8036c294
+/* 8036C930 2C030000 */ cmpwi r3, 0x0
+/* 8036C934 41820018 */ beq- lbl_8036c94c
+/* 8036C938 387D0140 */ addi r3, r29, 0x140
+/* 8036C93C 4CC63182 */ crclr 6
+/* 8036C940 5744063E */ clrlwi r4, r26, 0x18
+/* 8036C944 4BFFF96D */ bl func_8036c2b0
+/* 8036C948 48000104 */ b lbl_8036ca4c
+lbl_8036c94c:
+/* 8036C94C 5754063E */ clrlwi r20, r26, 0x18
+/* 8036C950 7F20A378 */ or r0, r25, r20
+/* 8036C954 901E0000 */ stw r0, 0(r30)
+/* 8036C958 7F43D378 */ mr r3, r26
+/* 8036C95C 4BFFF939 */ bl func_8036c294
+/* 8036C960 2C030000 */ cmpwi r3, 0x0
+/* 8036C964 41820028 */ beq- lbl_8036c98c
+/* 8036C968 7E84A378 */ mr r4, r20
+/* 8036C96C 4CC63182 */ crclr 6
+/* 8036C970 387D0170 */ addi r3, r29, 0x170
+/* 8036C974 4BFFF93D */ bl func_8036c2b0
+/* 8036C978 7EA3AB78 */ mr r3, r21
+/* 8036C97C 7FE4FB78 */ mr r4, r31
+/* 8036C980 7F65DB78 */ mr r5, r27
+/* 8036C984 4BCA1A99 */ bl func_8000e41c
+/* 8036C988 48000090 */ b lbl_8036ca18
+lbl_8036c98c:
+/* 8036C98C 7EA4AB78 */ mr r4, r21
+/* 8036C990 48000004 */ b lbl_8036c994
+lbl_8036c994:
+/* 8036C994 281B0000 */ cmplwi r27, 0
+/* 8036C998 387B0003 */ addi r3, r27, 0x3
+/* 8036C99C 5463F0BE */ srwi r3, r3, 2
+/* 8036C9A0 40810078 */ ble- lbl_8036ca18
+/* 8036C9A4 5460E8FE */ srwi r0, r3, 3
+/* 8036C9A8 28000000 */ cmplwi r0, 0
+/* 8036C9AC 7C0903A6 */ mtctr r0
+/* 8036C9B0 41820054 */ beq- lbl_8036ca04
+/* 8036C9B4 48000004 */ b lbl_8036c9b8
+lbl_8036c9b8:
+/* 8036C9B8 92C40000 */ stw r22, 0(r4)
+/* 8036C9BC 38840004 */ addi r4, r4, 0x4
+/* 8036C9C0 92C40000 */ stw r22, 0(r4)
+/* 8036C9C4 38840004 */ addi r4, r4, 0x4
+/* 8036C9C8 92C40000 */ stw r22, 0(r4)
+/* 8036C9CC 38840004 */ addi r4, r4, 0x4
+/* 8036C9D0 92C40000 */ stw r22, 0(r4)
+/* 8036C9D4 38840004 */ addi r4, r4, 0x4
+/* 8036C9D8 92C40000 */ stw r22, 0(r4)
+/* 8036C9DC 38840004 */ addi r4, r4, 0x4
+/* 8036C9E0 92C40000 */ stw r22, 0(r4)
+/* 8036C9E4 38840004 */ addi r4, r4, 0x4
+/* 8036C9E8 92C40000 */ stw r22, 0(r4)
+/* 8036C9EC 38840004 */ addi r4, r4, 0x4
+/* 8036C9F0 92C40000 */ stw r22, 0(r4)
+/* 8036C9F4 38840004 */ addi r4, r4, 0x4
+/* 8036C9F8 4200FFC0 */ bdnz lbl_8036c9b8
+/* 8036C9FC 70630007 */ andi. r3, r3, 7
+/* 8036CA00 41820018 */ beq- lbl_8036ca18
+lbl_8036ca04:
+/* 8036CA04 7C6903A6 */ mtctr r3
+/* 8036CA08 48000004 */ b lbl_8036ca0c
+lbl_8036ca0c:
+/* 8036CA0C 92C40000 */ stw r22, 0(r4)
+/* 8036CA10 38840004 */ addi r4, r4, 0x4
+/* 8036CA14 4200FFF8 */ bdnz lbl_8036ca0c
+lbl_8036ca18:
+/* 8036CA18 807C0000 */ lwz r3, 0(r28)
+/* 8036CA1C 7F04C378 */ mr r4, r24
+/* 8036CA20 7EE5BB78 */ mr r5, r23
+/* 8036CA24 3E838000 */ addis r20, r3, 0x8000
+/* 8036CA28 7E83A378 */ mr r3, r20
+/* 8036CA2C 4BCA19F1 */ bl func_8000e41c
+/* 8036CA30 7E83A378 */ mr r3, r20
+/* 8036CA34 7EE4BB78 */ mr r4, r23
+/* 8036CA38 48000F41 */ bl func_8036d978
+/* 8036CA3C 7C0004AC */ sync 0
+/* 8036CA40 7E83A378 */ mr r3, r20
+/* 8036CA44 7EE4BB78 */ mr r4, r23
+/* 8036CA48 48000F91 */ bl func_8036d9d8
+lbl_8036ca4c:
+/* 8036CA4C 3B9C0004 */ addi r28, r28, 0x4
+/* 8036CA50 3B5A0001 */ addi r26, r26, 0x1
+lbl_8036ca54:
+/* 8036CA54 5740063E */ clrlwi r0, r26, 0x18
+/* 8036CA58 2800000F */ cmplwi r0, 0xf
+/* 8036CA5C 4180FEB4 */ blt+ lbl_8036c910
+/* 8036CA60 3C608000 */ lis r3, 0x8000
+/* 8036CA64 38033000 */ addi r0, r3, 0x3000
+/* 8036CA68 900DCA0C */ stw r0, lbl_805c682c@sda21(0)
+/* 8036CA6C 3A800000 */ li r20, 0x0
+/* 8036CA70 48000004 */ b lbl_8036ca74
+lbl_8036ca74:
+/* 8036CA74 3C608037 */ lis r3, func_8036cbb8@ha
+/* 8036CA78 3AE3CBB8 */ addi r23, r3, func_8036cbb8@l
+/* 8036CA7C 48000004 */ b lbl_8036ca80
+lbl_8036ca80:
+/* 8036CA80 48000014 */ b lbl_8036ca94
+lbl_8036ca84:
+/* 8036CA84 7E83A378 */ mr r3, r20
+/* 8036CA88 7EE4BB78 */ mr r4, r23
+/* 8036CA8C 48000061 */ bl func_8036caec
+/* 8036CA90 3A940001 */ addi r20, r20, 0x1
+lbl_8036ca94:
+/* 8036CA94 5680063E */ clrlwi r0, r20, 0x18
+/* 8036CA98 2800000F */ cmplwi r0, 0xf
+/* 8036CA9C 4180FFE8 */ blt+ lbl_8036ca84
+/* 8036CAA0 933E0000 */ stw r25, 0(r30)
+/* 8036CAA4 387D01A0 */ addi r3, r29, 0x1a0
+/* 8036CAA8 4CC63182 */ crclr 6
+/* 8036CAAC 4BFFF805 */ bl func_8036c2b0
+/* 8036CAB0 BA810008 */ lmw r20, 8(r1)
+/* 8036CAB4 8001003C */ lwz r0, 0x3c(r1)
+/* 8036CAB8 38210038 */ addi r1, r1, 0x38
+/* 8036CABC 7C0803A6 */ mtlr r0
+/* 8036CAC0 4E800020 */ blr
+.size func_8036c844, . - func_8036c844
+
+
+.global func_8036cac4
+.type func_8036cac4, @function
+func_8036cac4:
+/* 8036CAC4 38A00040 */ li r5, 0x40
+/* 8036CAC8 7C6802A6 */ mflr r3
+/* 8036CACC 9065000C */ stw r3, 0xc(r5)
+/* 8036CAD0 80650008 */ lwz r3, 8(r5)
+/* 8036CAD4 64638000 */ oris r3, r3, 0x8000
+/* 8036CAD8 7C6803A6 */ mtlr r3
+/* 8036CADC 38600030 */ li r3, 0x30
+/* 8036CAE0 7C600124 */ mtmsr r3
+/* 8036CAE4 4E800020 */ blr
+.size func_8036cac4, . - func_8036cac4
+
+
+.global func_8036cae8
+.type func_8036cae8, @function
+func_8036cae8:
+/* 8036CAE8 48000063 */ bla 0x60
+.size func_8036cae8, . - func_8036cae8
+
+
+.global func_8036caec
+.type func_8036caec, @function
+func_8036caec:
+/* 8036CAEC 5460063E */ clrlwi r0, r3, 0x18
+/* 8036CAF0 806DCA0C */ lwz r3, lbl_805c682c@sda21(0)
+/* 8036CAF4 5400103A */ slwi r0, r0, 2
+/* 8036CAF8 7CA30214 */ add r5, r3, r0
+/* 8036CAFC 80650000 */ lwz r3, 0(r5)
+/* 8036CB00 90850000 */ stw r4, 0(r5)
+/* 8036CB04 4E800020 */ blr
+.size func_8036caec, . - func_8036caec
+
+
+.global func_8036cb08
+.type func_8036cb08, @function
+func_8036cb08:
+/* 8036CB08 5460063E */ clrlwi r0, r3, 0x18
+/* 8036CB0C 806DCA0C */ lwz r3, lbl_805c682c@sda21(0)
+/* 8036CB10 5400103A */ slwi r0, r0, 2
+/* 8036CB14 7C63002E */ lwzx r3, r3, r0
+/* 8036CB18 4E800020 */ blr
+.size func_8036cb08, . - func_8036cb08
+
+
+.global func_8036cb1c
+.type func_8036cb1c, @function
+func_8036cb1c:
+/* 8036CB1C 7C9043A6 */ mtspr 0x110, r4
+/* 8036CB20 808000C0 */ lwz r4, 0xc0(0)
+/* 8036CB24 9064000C */ stw r3, 0xc(r4)
+/* 8036CB28 7C7042A6 */ mfspr r3, 0x110
+/* 8036CB2C 90640010 */ stw r3, 0x10(r4)
+/* 8036CB30 90A40014 */ stw r5, 0x14(r4)
+/* 8036CB34 A06401A2 */ lhz r3, 0x1a2(r4)
+/* 8036CB38 60630002 */ ori r3, r3, 2
+/* 8036CB3C B06401A2 */ sth r3, 0x1a2(r4)
+/* 8036CB40 7C600026 */ mfcr r3
+/* 8036CB44 90640080 */ stw r3, 0x80(r4)
+/* 8036CB48 7C6802A6 */ mflr r3
+/* 8036CB4C 90640084 */ stw r3, 0x84(r4)
+/* 8036CB50 7C6902A6 */ mfctr r3
+/* 8036CB54 90640088 */ stw r3, 0x88(r4)
+/* 8036CB58 7C6102A6 */ mfxer r3
+/* 8036CB5C 9064008C */ stw r3, 0x8c(r4)
+/* 8036CB60 7C7A02A6 */ mfspr r3, 0x1a
+/* 8036CB64 90640198 */ stw r3, 0x198(r4)
+/* 8036CB68 7C7B02A6 */ mfspr r3, 0x1b
+/* 8036CB6C 9064019C */ stw r3, 0x19c(r4)
+/* 8036CB70 7C651B78 */ mr r5, r3
+.size func_8036cb1c, . - func_8036cb1c
+
+
+.global func_8036cb74
+.type func_8036cb74, @function
+func_8036cb74:
+/* 8036CB74 60000000 */ nop
+/* 8036CB78 7C6000A6 */ mfmsr r3
+/* 8036CB7C 60630030 */ ori r3, r3, 0x30
+/* 8036CB80 7C7B03A6 */ mtspr 0x1b, r3
+.size func_8036cb74, . - func_8036cb74
+
+
+.global func_8036cb84
+.type func_8036cb84, @function
+func_8036cb84:
+/* 8036CB84 38600000 */ li r3, 0x0
+/* 8036CB88 808000D4 */ lwz r4, 0xd4(0)
+/* 8036CB8C 54A507BD */ rlwinm. r5, r5, 0, 0x1e, 0x1e
+/* 8036CB90 40820014 */ bne- lbl_8036cba4
+/* 8036CB94 3CA08037 */ lis r5, func_8036cbb8@ha
+/* 8036CB98 38A5CBB8 */ addi r5, r5, func_8036cbb8@l
+/* 8036CB9C 7CBA03A6 */ mtspr 0x1a, r5
+/* 8036CBA0 4C000064 */ rfi
+lbl_8036cba4:
+/* 8036CBA4 546515BA */ rlwinm r5, r3, 2, 0x16, 0x1d
+/* 8036CBA8 80A53000 */ lwz r5, 0x3000(r5)
+/* 8036CBAC 7CBA03A6 */ mtspr 0x1a, r5
+/* 8036CBB0 4C000064 */ rfi
+.size func_8036cb84, . - func_8036cb84
+
+
+.global func_8036cbb4
+.type func_8036cbb4, @function
+func_8036cbb4:
+/* 8036CBB4 60000000 */ nop
+.size func_8036cbb4, . - func_8036cbb4
+
+
+.global func_8036cbb8
+.type func_8036cbb8, @function
+func_8036cbb8:
+/* 8036CBB8 90040000 */ stw r0, 0(r4)
+/* 8036CBBC 90240004 */ stw r1, 4(r4)
+/* 8036CBC0 90440008 */ stw r2, 8(r4)
+/* 8036CBC4 BCC40018 */ stmw r6, 0x18(r4)
+/* 8036CBC8 7C11E2A6 */ mfspr r0, 0x391
+/* 8036CBCC 900401A8 */ stw r0, 0x1a8(r4)
+/* 8036CBD0 7C12E2A6 */ mfspr r0, 0x392
+/* 8036CBD4 900401AC */ stw r0, 0x1ac(r4)
+/* 8036CBD8 7C13E2A6 */ mfspr r0, 0x393
+/* 8036CBDC 900401B0 */ stw r0, 0x1b0(r4)
+/* 8036CBE0 7C14E2A6 */ mfspr r0, 0x394
+/* 8036CBE4 900401B4 */ stw r0, 0x1b4(r4)
+/* 8036CBE8 7C15E2A6 */ mfspr r0, 0x395
+/* 8036CBEC 900401B8 */ stw r0, 0x1b8(r4)
+/* 8036CBF0 7C16E2A6 */ mfspr r0, 0x396
+/* 8036CBF4 900401BC */ stw r0, 0x1bc(r4)
+/* 8036CBF8 7C17E2A6 */ mfspr r0, 0x397
+/* 8036CBFC 900401C0 */ stw r0, 0x1c0(r4)
+/* 8036CC00 7CB202A6 */ mfdsisr r5
+/* 8036CC04 7CD302A6 */ mfdar r6
+/* 8036CC08 9421FFF8 */ stwu r1, -8(r1)
+/* 8036CC0C 48001C70 */ b func_8036e87c
+.size func_8036cbb8, . - func_8036cbb8
+
+
+.global func_8036cc10
+.type func_8036cc10, @function
+func_8036cc10:
+/* 8036CC10 7C0802A6 */ mflr r0
+/* 8036CC14 90010004 */ stw r0, 4(r1)
+/* 8036CC18 9421FFF8 */ stwu r1, -8(r1)
+/* 8036CC1C 4BFFF5B1 */ bl func_8036c1cc
+/* 8036CC20 6463A000 */ oris r3, r3, 0xa000
+/* 8036CC24 4BFFF5B1 */ bl func_8036c1d4
+/* 8036CC28 48000DE9 */ bl func_8036da10
+/* 8036CC2C 7C0004AC */ sync 0
+/* 8036CC30 38600000 */ li r3, 0x0
+/* 8036CC34 7C70E3A6 */ mtspr 0x390, r3
+/* 8036CC38 8001000C */ lwz r0, 0xc(r1)
+/* 8036CC3C 38210008 */ addi r1, r1, 0x8
+/* 8036CC40 7C0803A6 */ mtlr r0
+/* 8036CC44 4E800020 */ blr
+.size func_8036cc10, . - func_8036cc10
+
+
+.global func_8036cc48
+.type func_8036cc48, @function
+func_8036cc48:
+/* 8036CC48 3C60CC00 */ lis r3, 0xcc00
+/* 8036CC4C 38636000 */ addi r3, r3, 0x6000
+/* 8036CC50 80030024 */ lwz r0, 0x24(r3)
+/* 8036CC54 5403063E */ clrlwi r3, r0, 0x18
+/* 8036CC58 4E800020 */ blr
+.size func_8036cc48, . - func_8036cc48
+
diff --git a/asm/Dolphin/os/OSAlarm.s b/asm/Dolphin/os/OSAlarm.s
new file mode 100644
index 0000000..7d9dcff
--- /dev/null
+++ b/asm/Dolphin/os/OSAlarm.s
@@ -0,0 +1,503 @@
+.include "macros.inc"
+
+.section .text
+
+.global func_8036cc5c
+.type func_8036cc5c, @function
+func_8036cc5c:
+/* 8036CC5C 7C0802A6 */ mflr r0
+/* 8036CC60 38600008 */ li r3, 0x8
+/* 8036CC64 90010004 */ stw r0, 4(r1)
+/* 8036CC68 9421FFF8 */ stwu r1, -8(r1)
+/* 8036CC6C 4BFFFE9D */ bl func_8036cb08
+/* 8036CC70 3C808037 */ lis r4, func_8036d2b8@ha
+/* 8036CC74 3884D2B8 */ addi r4, r4, func_8036d2b8@l
+/* 8036CC78 7C032040 */ cmplw r3, r4
+/* 8036CC7C 4182001C */ beq- lbl_8036cc98
+/* 8036CC80 38000000 */ li r0, 0x0
+/* 8036CC84 386DCA28 */ addi r3, 0, lbl_805c6848@sda21
+/* 8036CC88 90030004 */ stw r0, 4(r3)
+/* 8036CC8C 38600008 */ li r3, 0x8
+/* 8036CC90 900DCA28 */ stw r0, lbl_805c6848@sda21(0)
+/* 8036CC94 4BFFFE59 */ bl func_8036caec
+lbl_8036cc98:
+/* 8036CC98 8001000C */ lwz r0, 0xc(r1)
+/* 8036CC9C 38210008 */ addi r1, r1, 0x8
+/* 8036CCA0 7C0803A6 */ mtlr r0
+/* 8036CCA4 4E800020 */ blr
+.size func_8036cc5c, . - func_8036cc5c
+
+
+.global func_8036cca8
+.type func_8036cca8, @function
+func_8036cca8:
+/* 8036CCA8 38000000 */ li r0, 0x0
+/* 8036CCAC 90030000 */ stw r0, 0(r3)
+/* 8036CCB0 4E800020 */ blr
+.size func_8036cca8, . - func_8036cca8
+
+
+.global func_8036ccb4
+.type func_8036ccb4, @function
+func_8036ccb4:
+/* 8036CCB4 7C0802A6 */ mflr r0
+/* 8036CCB8 90010004 */ stw r0, 4(r1)
+/* 8036CCBC 9421FFC0 */ stwu r1, -0x40(r1)
+/* 8036CCC0 BF210024 */ stmw r25, 0x24(r1)
+/* 8036CCC4 3B800000 */ li r28, 0x0
+/* 8036CCC8 7C7D1B78 */ mr r29, r3
+/* 8036CCCC 6F848000 */ xoris r4, r28, 0x8000
+/* 8036CCD0 3B250000 */ addi r25, r5, 0x0
+/* 8036CCD4 3BC60000 */ addi r30, r6, 0x0
+/* 8036CCD8 3BE70000 */ addi r31, r7, 0x0
+/* 8036CCDC 80030018 */ lwz r0, 0x18(r3)
+/* 8036CCE0 8103001C */ lwz r8, 0x1c(r3)
+/* 8036CCE4 6C038000 */ xoris r3, r0, 0x8000
+/* 8036CCE8 7C08E010 */ subfc r0, r8, r28
+/* 8036CCEC 7C632110 */ subfe r3, r3, r4
+/* 8036CCF0 7C642110 */ subfe r3, r4, r4
+/* 8036CCF4 7C6300D1 */ neg. r3, r3
+/* 8036CCF8 4182007C */ beq- lbl_8036cd74
+/* 8036CCFC 48005AE9 */ bl func_803727e4
+/* 8036CD00 80FD0020 */ lwz r7, 0x20(r29)
+/* 8036CD04 6C658000 */ xoris r5, r3, 0x8000
+/* 8036CD08 811D0024 */ lwz r8, 0x24(r29)
+/* 8036CD0C 6CE68000 */ xoris r6, r7, 0x8000
+/* 8036CD10 7C044010 */ subfc r0, r4, r8
+/* 8036CD14 7CA53110 */ subfe r5, r5, r6
+/* 8036CD18 7CA63110 */ subfe r5, r6, r6
+/* 8036CD1C 7CA500D1 */ neg. r5, r5
+/* 8036CD20 3BC80000 */ addi r30, r8, 0x0
+/* 8036CD24 3B270000 */ addi r25, r7, 0x0
+/* 8036CD28 4182004C */ beq- lbl_8036cd74
+/* 8036CD2C 837D0018 */ lwz r27, 0x18(r29)
+/* 8036CD30 7C882010 */ subfc r4, r8, r4
+/* 8036CD34 835D001C */ lwz r26, 0x1c(r29)
+/* 8036CD38 7C671910 */ subfe r3, r7, r3
+/* 8036CD3C 38BB0000 */ addi r5, r27, 0x0
+/* 8036CD40 38DA0000 */ addi r6, r26, 0x0
+/* 8036CD44 4802686D */ bl func_803935b0
+/* 8036CD48 38000001 */ li r0, 0x1
+/* 8036CD4C 7CA40014 */ addc r5, r4, r0
+/* 8036CD50 7C9B29D6 */ mullw r4, r27, r5
+/* 8036CD54 7C1A2816 */ mulhwu r0, r26, r5
+/* 8036CD58 7C63E114 */ adde r3, r3, r28
+/* 8036CD5C 7C840214 */ add r4, r4, r0
+/* 8036CD60 7C1A19D6 */ mullw r0, r26, r3
+/* 8036CD64 7C7A29D6 */ mullw r3, r26, r5
+/* 8036CD68 7C040214 */ add r0, r4, r0
+/* 8036CD6C 7FDE1814 */ addc r30, r30, r3
+/* 8036CD70 7F390114 */ adde r25, r25, r0
+lbl_8036cd74:
+/* 8036CD74 93FD0000 */ stw r31, 0(r29)
+/* 8036CD78 6F248000 */ xoris r4, r25, 0x8000
+/* 8036CD7C 93DD000C */ stw r30, 0xc(r29)
+/* 8036CD80 933D0008 */ stw r25, 8(r29)
+/* 8036CD84 80CDCA28 */ lwz r6, lbl_805c6848@sda21(0)
+/* 8036CD88 480000C4 */ b lbl_8036ce4c
+lbl_8036cd8c:
+/* 8036CD8C 80060008 */ lwz r0, 8(r6)
+/* 8036CD90 80A6000C */ lwz r5, 0xc(r6)
+/* 8036CD94 6C038000 */ xoris r3, r0, 0x8000
+/* 8036CD98 7C05F010 */ subfc r0, r5, r30
+/* 8036CD9C 7C632110 */ subfe r3, r3, r4
+/* 8036CDA0 7C642110 */ subfe r3, r4, r4
+/* 8036CDA4 7C6300D1 */ neg. r3, r3
+/* 8036CDA8 418200A0 */ beq- lbl_8036ce48
+/* 8036CDAC 80060010 */ lwz r0, 0x10(r6)
+/* 8036CDB0 901D0010 */ stw r0, 0x10(r29)
+/* 8036CDB4 93A60010 */ stw r29, 0x10(r6)
+/* 8036CDB8 90DD0014 */ stw r6, 0x14(r29)
+/* 8036CDBC 807D0010 */ lwz r3, 0x10(r29)
+/* 8036CDC0 28030000 */ cmplwi r3, 0
+/* 8036CDC4 4182000C */ beq- lbl_8036cdd0
+/* 8036CDC8 93A30014 */ stw r29, 0x14(r3)
+/* 8036CDCC 48000124 */ b lbl_8036cef0
+lbl_8036cdd0:
+/* 8036CDD0 93ADCA28 */ stw r29, lbl_805c6848@sda21(0)
+/* 8036CDD4 48005A11 */ bl func_803727e4
+/* 8036CDD8 80DD000C */ lwz r6, 0xc(r29)
+/* 8036CDDC 38E00000 */ li r7, 0x0
+/* 8036CDE0 801D0008 */ lwz r0, 8(r29)
+/* 8036CDE4 6CE58000 */ xoris r5, r7, 0x8000
+/* 8036CDE8 7D043010 */ subfc r8, r4, r6
+/* 8036CDEC 7C030110 */ subfe r0, r3, r0
+/* 8036CDF0 6C068000 */ xoris r6, r0, 0x8000
+/* 8036CDF4 7C074010 */ subfc r0, r7, r8
+/* 8036CDF8 7CA53110 */ subfe r5, r5, r6
+/* 8036CDFC 7CA63110 */ subfe r5, r6, r6
+/* 8036CE00 7CA500D1 */ neg. r5, r5
+/* 8036CE04 41820010 */ beq- lbl_8036ce14
+/* 8036CE08 38600000 */ li r3, 0x0
+/* 8036CE0C 4BFFF39D */ bl func_8036c1a8
+/* 8036CE10 480000E0 */ b lbl_8036cef0
+lbl_8036ce14:
+/* 8036CE14 3C808000 */ lis r4, 0x8000
+/* 8036CE18 6CE38000 */ xoris r3, r7, 0x8000
+/* 8036CE1C 7C044010 */ subfc r0, r4, r8
+/* 8036CE20 7C633110 */ subfe r3, r3, r6
+/* 8036CE24 7C663110 */ subfe r3, r6, r6
+/* 8036CE28 7C6300D1 */ neg. r3, r3
+/* 8036CE2C 41820010 */ beq- lbl_8036ce3c
+/* 8036CE30 7D034378 */ mr r3, r8
+/* 8036CE34 4BFFF375 */ bl func_8036c1a8
+/* 8036CE38 480000B8 */ b lbl_8036cef0
+lbl_8036ce3c:
+/* 8036CE3C 3864FFFF */ addi r3, r4, -0x1
+/* 8036CE40 4BFFF369 */ bl func_8036c1a8
+/* 8036CE44 480000AC */ b lbl_8036cef0
+lbl_8036ce48:
+/* 8036CE48 80C60014 */ lwz r6, 0x14(r6)
+lbl_8036ce4c:
+/* 8036CE4C 28060000 */ cmplwi r6, 0
+/* 8036CE50 4082FF3C */ bne+ lbl_8036cd8c
+/* 8036CE54 3BC00000 */ li r30, 0x0
+/* 8036CE58 93DD0014 */ stw r30, 0x14(r29)
+/* 8036CE5C 386DCA28 */ addi r3, 0, lbl_805c6848@sda21
+/* 8036CE60 80830004 */ lwz r4, 4(r3)
+/* 8036CE64 97A30004 */ stwu r29, 4(r3)
+/* 8036CE68 28040000 */ cmplwi r4, 0
+/* 8036CE6C 909D0010 */ stw r4, 0x10(r29)
+/* 8036CE70 4182000C */ beq- lbl_8036ce7c
+/* 8036CE74 93A40014 */ stw r29, 0x14(r4)
+/* 8036CE78 48000078 */ b lbl_8036cef0
+lbl_8036ce7c:
+/* 8036CE7C 93A30000 */ stw r29, 0(r3)
+/* 8036CE80 93ADCA28 */ stw r29, lbl_805c6848@sda21(0)
+/* 8036CE84 48005961 */ bl func_803727e4
+/* 8036CE88 80DD000C */ lwz r6, 0xc(r29)
+/* 8036CE8C 6FC58000 */ xoris r5, r30, 0x8000
+/* 8036CE90 801D0008 */ lwz r0, 8(r29)
+/* 8036CE94 7CE43010 */ subfc r7, r4, r6
+/* 8036CE98 7C030110 */ subfe r0, r3, r0
+/* 8036CE9C 6C068000 */ xoris r6, r0, 0x8000
+/* 8036CEA0 7C1E3810 */ subfc r0, r30, r7
+/* 8036CEA4 7CA53110 */ subfe r5, r5, r6
+/* 8036CEA8 7CA63110 */ subfe r5, r6, r6
+/* 8036CEAC 7CA500D1 */ neg. r5, r5
+/* 8036CEB0 41820010 */ beq- lbl_8036cec0
+/* 8036CEB4 38600000 */ li r3, 0x0
+/* 8036CEB8 4BFFF2F1 */ bl func_8036c1a8
+/* 8036CEBC 48000034 */ b lbl_8036cef0
+lbl_8036cec0:
+/* 8036CEC0 3C808000 */ lis r4, 0x8000
+/* 8036CEC4 6FC38000 */ xoris r3, r30, 0x8000
+/* 8036CEC8 7C043810 */ subfc r0, r4, r7
+/* 8036CECC 7C633110 */ subfe r3, r3, r6
+/* 8036CED0 7C663110 */ subfe r3, r6, r6
+/* 8036CED4 7C6300D1 */ neg. r3, r3
+/* 8036CED8 41820010 */ beq- lbl_8036cee8
+/* 8036CEDC 7CE33B78 */ mr r3, r7
+/* 8036CEE0 4BFFF2C9 */ bl func_8036c1a8
+/* 8036CEE4 4800000C */ b lbl_8036cef0
+lbl_8036cee8:
+/* 8036CEE8 3864FFFF */ addi r3, r4, -0x1
+/* 8036CEEC 4BFFF2BD */ bl func_8036c1a8
+lbl_8036cef0:
+/* 8036CEF0 BB210024 */ lmw r25, 0x24(r1)
+/* 8036CEF4 80010044 */ lwz r0, 0x44(r1)
+/* 8036CEF8 38210040 */ addi r1, r1, 0x40
+/* 8036CEFC 7C0803A6 */ mtlr r0
+/* 8036CF00 4E800020 */ blr
+.size func_8036ccb4, . - func_8036ccb4
+
+
+.global func_8036cf04
+.type func_8036cf04, @function
+func_8036cf04:
+/* 8036CF04 7C0802A6 */ mflr r0
+/* 8036CF08 90010004 */ stw r0, 4(r1)
+/* 8036CF0C 9421FFC8 */ stwu r1, -0x38(r1)
+/* 8036CF10 BF610024 */ stmw r27, 0x24(r1)
+/* 8036CF14 3B630000 */ addi r27, r3, 0x0
+/* 8036CF18 3BA50000 */ addi r29, r5, 0x0
+/* 8036CF1C 3B860000 */ addi r28, r6, 0x0
+/* 8036CF20 3BC70000 */ addi r30, r7, 0x0
+/* 8036CF24 48001BB1 */ bl func_8036ead4
+/* 8036CF28 38000000 */ li r0, 0x0
+/* 8036CF2C 901B001C */ stw r0, 0x1c(r27)
+/* 8036CF30 7C7F1B78 */ mr r31, r3
+/* 8036CF34 901B0018 */ stw r0, 0x18(r27)
+/* 8036CF38 480058AD */ bl func_803727e4
+/* 8036CF3C 7CDC2014 */ addc r6, r28, r4
+/* 8036CF40 7CBD1914 */ adde r5, r29, r3
+/* 8036CF44 387B0000 */ addi r3, r27, 0x0
+/* 8036CF48 38FE0000 */ addi r7, r30, 0x0
+/* 8036CF4C 4BFFFD69 */ bl func_8036ccb4
+/* 8036CF50 7FE3FB78 */ mr r3, r31
+/* 8036CF54 48001BA9 */ bl func_8036eafc
+/* 8036CF58 BB610024 */ lmw r27, 0x24(r1)
+/* 8036CF5C 8001003C */ lwz r0, 0x3c(r1)
+/* 8036CF60 38210038 */ addi r1, r1, 0x38
+/* 8036CF64 7C0803A6 */ mtlr r0
+/* 8036CF68 4E800020 */ blr
+.size func_8036cf04, . - func_8036cf04
+
+
+.global func_8036cf6c
+.type func_8036cf6c, @function
+func_8036cf6c:
+/* 8036CF6C 7C0802A6 */ mflr r0
+/* 8036CF70 90010004 */ stw r0, 4(r1)
+/* 8036CF74 9421FFE0 */ stwu r1, -0x20(r1)
+/* 8036CF78 93E1001C */ stw r31, 0x1c(r1)
+/* 8036CF7C 93C10018 */ stw r30, 0x18(r1)
+/* 8036CF80 7C7E1B78 */ mr r30, r3
+/* 8036CF84 93A10014 */ stw r29, 0x14(r1)
+/* 8036CF88 48001B4D */ bl func_8036ead4
+/* 8036CF8C 801E0000 */ lwz r0, 0(r30)
+/* 8036CF90 3BE30000 */ addi r31, r3, 0x0
+/* 8036CF94 28000000 */ cmplwi r0, 0
+/* 8036CF98 40820010 */ bne- lbl_8036cfa8
+/* 8036CF9C 7FE3FB78 */ mr r3, r31
+/* 8036CFA0 48001B5D */ bl func_8036eafc
+/* 8036CFA4 480000C8 */ b lbl_8036d06c
+lbl_8036cfa8:
+/* 8036CFA8 83BE0014 */ lwz r29, 0x14(r30)
+/* 8036CFAC 281D0000 */ cmplwi r29, 0
+/* 8036CFB0 40820014 */ bne- lbl_8036cfc4
+/* 8036CFB4 801E0010 */ lwz r0, 0x10(r30)
+/* 8036CFB8 386DCA28 */ addi r3, 0, lbl_805c6848@sda21
+/* 8036CFBC 90030004 */ stw r0, 4(r3)
+/* 8036CFC0 4800000C */ b lbl_8036cfcc
+lbl_8036cfc4:
+/* 8036CFC4 801E0010 */ lwz r0, 0x10(r30)
+/* 8036CFC8 901D0010 */ stw r0, 0x10(r29)
+lbl_8036cfcc:
+/* 8036CFCC 807E0010 */ lwz r3, 0x10(r30)
+/* 8036CFD0 28030000 */ cmplwi r3, 0
+/* 8036CFD4 4182000C */ beq- lbl_8036cfe0
+/* 8036CFD8 93A30014 */ stw r29, 0x14(r3)
+/* 8036CFDC 48000080 */ b lbl_8036d05c
+lbl_8036cfe0:
+/* 8036CFE0 281D0000 */ cmplwi r29, 0
+/* 8036CFE4 93ADCA28 */ stw r29, lbl_805c6848@sda21(0)
+/* 8036CFE8 41820074 */ beq- lbl_8036d05c
+/* 8036CFEC 480057F9 */ bl func_803727e4
+/* 8036CFF0 80DD000C */ lwz r6, 0xc(r29)
+/* 8036CFF4 38E00000 */ li r7, 0x0
+/* 8036CFF8 801D0008 */ lwz r0, 8(r29)
+/* 8036CFFC 6CE58000 */ xoris r5, r7, 0x8000
+/* 8036D000 7D043010 */ subfc r8, r4, r6
+/* 8036D004 7C030110 */ subfe r0, r3, r0
+/* 8036D008 6C068000 */ xoris r6, r0, 0x8000
+/* 8036D00C 7C074010 */ subfc r0, r7, r8
+/* 8036D010 7CA53110 */ subfe r5, r5, r6
+/* 8036D014 7CA63110 */ subfe r5, r6, r6
+/* 8036D018 7CA500D1 */ neg. r5, r5
+/* 8036D01C 41820010 */ beq- lbl_8036d02c
+/* 8036D020 38600000 */ li r3, 0x0
+/* 8036D024 4BFFF185 */ bl func_8036c1a8
+/* 8036D028 48000034 */ b lbl_8036d05c
+lbl_8036d02c:
+/* 8036D02C 3C808000 */ lis r4, 0x8000
+/* 8036D030 6CE38000 */ xoris r3, r7, 0x8000
+/* 8036D034 7C044010 */ subfc r0, r4, r8
+/* 8036D038 7C633110 */ subfe r3, r3, r6
+/* 8036D03C 7C663110 */ subfe r3, r6, r6
+/* 8036D040 7C6300D1 */ neg. r3, r3
+/* 8036D044 41820010 */ beq- lbl_8036d054
+/* 8036D048 7D034378 */ mr r3, r8
+/* 8036D04C 4BFFF15D */ bl func_8036c1a8
+/* 8036D050 4800000C */ b lbl_8036d05c
+lbl_8036d054:
+/* 8036D054 3864FFFF */ addi r3, r4, -0x1
+/* 8036D058 4BFFF151 */ bl func_8036c1a8
+lbl_8036d05c:
+/* 8036D05C 38000000 */ li r0, 0x0
+/* 8036D060 901E0000 */ stw r0, 0(r30)
+/* 8036D064 7FE3FB78 */ mr r3, r31
+/* 8036D068 48001A95 */ bl func_8036eafc
+lbl_8036d06c:
+/* 8036D06C 80010024 */ lwz r0, 0x24(r1)
+/* 8036D070 83E1001C */ lwz r31, 0x1c(r1)
+/* 8036D074 83C10018 */ lwz r30, 0x18(r1)
+/* 8036D078 83A10014 */ lwz r29, 0x14(r1)
+/* 8036D07C 38210020 */ addi r1, r1, 0x20
+/* 8036D080 7C0803A6 */ mtlr r0
+/* 8036D084 4E800020 */ blr
+.size func_8036cf6c, . - func_8036cf6c
+
+
+.global func_8036d088
+.type func_8036d088, @function
+func_8036d088:
+/* 8036D088 7C0802A6 */ mflr r0
+/* 8036D08C 90010004 */ stw r0, 4(r1)
+/* 8036D090 9421FD10 */ stwu r1, -0x2f0(r1)
+/* 8036D094 93E102EC */ stw r31, 0x2ec(r1)
+/* 8036D098 93C102E8 */ stw r30, 0x2e8(r1)
+/* 8036D09C 93A102E4 */ stw r29, 0x2e4(r1)
+/* 8036D0A0 7C9D2378 */ mr r29, r4
+/* 8036D0A4 938102E0 */ stw r28, 0x2e0(r1)
+/* 8036D0A8 4800573D */ bl func_803727e4
+/* 8036D0AC 800DCA28 */ lwz r0, lbl_805c6848@sda21(0)
+/* 8036D0B0 3B840000 */ addi r28, r4, 0x0
+/* 8036D0B4 3BC30000 */ addi r30, r3, 0x0
+/* 8036D0B8 28000000 */ cmplwi r0, 0
+/* 8036D0BC 7C1F0378 */ mr r31, r0
+/* 8036D0C0 4082000C */ bne- lbl_8036d0cc
+/* 8036D0C4 7FA3EB78 */ mr r3, r29
+/* 8036D0C8 480010B9 */ bl func_8036e180
+lbl_8036d0cc:
+/* 8036D0CC 801F0008 */ lwz r0, 8(r31)
+/* 8036D0D0 6FC48000 */ xoris r4, r30, 0x8000
+/* 8036D0D4 80BF000C */ lwz r5, 0xc(r31)
+/* 8036D0D8 6C038000 */ xoris r3, r0, 0x8000
+/* 8036D0DC 7C05E010 */ subfc r0, r5, r28
+/* 8036D0E0 7C632110 */ subfe r3, r3, r4
+/* 8036D0E4 7C642110 */ subfe r3, r4, r4
+/* 8036D0E8 7C6300D1 */ neg. r3, r3
+/* 8036D0EC 4182007C */ beq- lbl_8036d168
+/* 8036D0F0 480056F5 */ bl func_803727e4
+/* 8036D0F4 80DF000C */ lwz r6, 0xc(r31)
+/* 8036D0F8 38E00000 */ li r7, 0x0
+/* 8036D0FC 801F0008 */ lwz r0, 8(r31)
+/* 8036D100 6CE58000 */ xoris r5, r7, 0x8000
+/* 8036D104 7D043010 */ subfc r8, r4, r6
+/* 8036D108 7C030110 */ subfe r0, r3, r0
+/* 8036D10C 6C068000 */ xoris r6, r0, 0x8000
+/* 8036D110 7C074010 */ subfc r0, r7, r8
+/* 8036D114 7CA53110 */ subfe r5, r5, r6
+/* 8036D118 7CA63110 */ subfe r5, r6, r6
+/* 8036D11C 7CA500D1 */ neg. r5, r5
+/* 8036D120 41820010 */ beq- lbl_8036d130
+/* 8036D124 38600000 */ li r3, 0x0
+/* 8036D128 4BFFF081 */ bl func_8036c1a8
+/* 8036D12C 48000034 */ b lbl_8036d160
+lbl_8036d130:
+/* 8036D130 3C808000 */ lis r4, 0x8000
+/* 8036D134 6CE38000 */ xoris r3, r7, 0x8000
+/* 8036D138 7C044010 */ subfc r0, r4, r8
+/* 8036D13C 7C633110 */ subfe r3, r3, r6
+/* 8036D140 7C663110 */ subfe r3, r6, r6
+/* 8036D144 7C6300D1 */ neg. r3, r3
+/* 8036D148 41820010 */ beq- lbl_8036d158
+/* 8036D14C 7D034378 */ mr r3, r8
+/* 8036D150 4BFFF059 */ bl func_8036c1a8
+/* 8036D154 4800000C */ b lbl_8036d160
+lbl_8036d158:
+/* 8036D158 3864FFFF */ addi r3, r4, -0x1
+/* 8036D15C 4BFFF04D */ bl func_8036c1a8
+lbl_8036d160:
+/* 8036D160 7FA3EB78 */ mr r3, r29
+/* 8036D164 4800101D */ bl func_8036e180
+lbl_8036d168:
+/* 8036D168 807F0014 */ lwz r3, 0x14(r31)
+/* 8036D16C 28030000 */ cmplwi r3, 0
+/* 8036D170 906DCA28 */ stw r3, lbl_805c6848@sda21(0)
+/* 8036D174 40820014 */ bne- lbl_8036d188
+/* 8036D178 38000000 */ li r0, 0x0
+/* 8036D17C 386DCA28 */ addi r3, 0, lbl_805c6848@sda21
+/* 8036D180 90030004 */ stw r0, 4(r3)
+/* 8036D184 4800000C */ b lbl_8036d190
+lbl_8036d188:
+/* 8036D188 38000000 */ li r0, 0x0
+/* 8036D18C 90030010 */ stw r0, 0x10(r3)
+lbl_8036d190:
+/* 8036D190 83DF0000 */ lwz r30, 0(r31)
+/* 8036D194 38C00000 */ li r6, 0x0
+/* 8036D198 6CC48000 */ xoris r4, r6, 0x8000
+/* 8036D19C 90DF0000 */ stw r6, 0(r31)
+/* 8036D1A0 801F0018 */ lwz r0, 0x18(r31)
+/* 8036D1A4 80BF001C */ lwz r5, 0x1c(r31)
+/* 8036D1A8 6C038000 */ xoris r3, r0, 0x8000
+/* 8036D1AC 7C053010 */ subfc r0, r5, r6
+/* 8036D1B0 7C632110 */ subfe r3, r3, r4
+/* 8036D1B4 7C642110 */ subfe r3, r4, r4
+/* 8036D1B8 7C6300D1 */ neg. r3, r3
+/* 8036D1BC 41820018 */ beq- lbl_8036d1d4
+/* 8036D1C0 387F0000 */ addi r3, r31, 0x0
+/* 8036D1C4 38FE0000 */ addi r7, r30, 0x0
+/* 8036D1C8 38C00000 */ li r6, 0x0
+/* 8036D1CC 38A00000 */ li r5, 0x0
+/* 8036D1D0 4BFFFAE5 */ bl func_8036ccb4
+lbl_8036d1d4:
+/* 8036D1D4 838DCA28 */ lwz r28, lbl_805c6848@sda21(0)
+/* 8036D1D8 281C0000 */ cmplwi r28, 0
+/* 8036D1DC 41820074 */ beq- lbl_8036d250
+/* 8036D1E0 48005605 */ bl func_803727e4
+/* 8036D1E4 80DC000C */ lwz r6, 0xc(r28)
+/* 8036D1E8 38E00000 */ li r7, 0x0
+/* 8036D1EC 801C0008 */ lwz r0, 8(r28)
+/* 8036D1F0 6CE58000 */ xoris r5, r7, 0x8000
+/* 8036D1F4 7D043010 */ subfc r8, r4, r6
+/* 8036D1F8 7C030110 */ subfe r0, r3, r0
+/* 8036D1FC 6C068000 */ xoris r6, r0, 0x8000
+/* 8036D200 7C074010 */ subfc r0, r7, r8
+/* 8036D204 7CA53110 */ subfe r5, r5, r6
+/* 8036D208 7CA63110 */ subfe r5, r6, r6
+/* 8036D20C 7CA500D1 */ neg. r5, r5
+/* 8036D210 41820010 */ beq- lbl_8036d220
+/* 8036D214 38600000 */ li r3, 0x0
+/* 8036D218 4BFFEF91 */ bl func_8036c1a8
+/* 8036D21C 48000034 */ b lbl_8036d250
+lbl_8036d220:
+/* 8036D220 3C808000 */ lis r4, 0x8000
+/* 8036D224 6CE38000 */ xoris r3, r7, 0x8000
+/* 8036D228 7C044010 */ subfc r0, r4, r8
+/* 8036D22C 7C633110 */ subfe r3, r3, r6
+/* 8036D230 7C663110 */ subfe r3, r6, r6
+/* 8036D234 7C6300D1 */ neg. r3, r3
+/* 8036D238 41820010 */ beq- lbl_8036d248
+/* 8036D23C 7D034378 */ mr r3, r8
+/* 8036D240 4BFFEF69 */ bl func_8036c1a8
+/* 8036D244 4800000C */ b lbl_8036d250
+lbl_8036d248:
+/* 8036D248 3864FFFF */ addi r3, r4, -0x1
+/* 8036D24C 4BFFEF5D */ bl func_8036c1a8
+lbl_8036d250:
+/* 8036D250 48004565 */ bl func_803717b4
+/* 8036D254 38610018 */ addi r3, r1, 0x18
+/* 8036D258 48001009 */ bl func_8036e260
+/* 8036D25C 38610018 */ addi r3, r1, 0x18
+/* 8036D260 48000E39 */ bl func_8036e098
+/* 8036D264 399E0000 */ addi r12, r30, 0x0
+/* 8036D268 7D8803A6 */ mtlr r12
+/* 8036D26C 387F0000 */ addi r3, r31, 0x0
+/* 8036D270 389D0000 */ addi r4, r29, 0x0
+/* 8036D274 4E800021 */ blrl
+/* 8036D278 38610018 */ addi r3, r1, 0x18
+/* 8036D27C 48000FE5 */ bl func_8036e260
+/* 8036D280 7FA3EB78 */ mr r3, r29
+/* 8036D284 48000E15 */ bl func_8036e098
+/* 8036D288 4800456D */ bl func_803717f4
+/* 8036D28C 48004A5D */ bl func_80371ce8
+/* 8036D290 7FA3EB78 */ mr r3, r29
+/* 8036D294 48000EED */ bl func_8036e180
+/* 8036D298 800102F4 */ lwz r0, 0x2f4(r1)
+/* 8036D29C 83E102EC */ lwz r31, 0x2ec(r1)
+/* 8036D2A0 83C102E8 */ lwz r30, 0x2e8(r1)
+/* 8036D2A4 83A102E4 */ lwz r29, 0x2e4(r1)
+/* 8036D2A8 838102E0 */ lwz r28, 0x2e0(r1)
+/* 8036D2AC 382102F0 */ addi r1, r1, 0x2f0
+/* 8036D2B0 7C0803A6 */ mtlr r0
+/* 8036D2B4 4E800020 */ blr
+.size func_8036d088, . - func_8036d088
+
+
+.global func_8036d2b8
+.type func_8036d2b8, @function
+func_8036d2b8:
+/* 8036D2B8 90040000 */ stw r0, 0(r4)
+/* 8036D2BC 90240004 */ stw r1, 4(r4)
+/* 8036D2C0 90440008 */ stw r2, 8(r4)
+/* 8036D2C4 BCC40018 */ stmw r6, 0x18(r4)
+/* 8036D2C8 7C11E2A6 */ mfspr r0, 0x391
+/* 8036D2CC 900401A8 */ stw r0, 0x1a8(r4)
+/* 8036D2D0 7C12E2A6 */ mfspr r0, 0x392
+/* 8036D2D4 900401AC */ stw r0, 0x1ac(r4)
+/* 8036D2D8 7C13E2A6 */ mfspr r0, 0x393
+/* 8036D2DC 900401B0 */ stw r0, 0x1b0(r4)
+/* 8036D2E0 7C14E2A6 */ mfspr r0, 0x394
+/* 8036D2E4 900401B4 */ stw r0, 0x1b4(r4)
+/* 8036D2E8 7C15E2A6 */ mfspr r0, 0x395
+/* 8036D2EC 900401B8 */ stw r0, 0x1b8(r4)
+/* 8036D2F0 7C16E2A6 */ mfspr r0, 0x396
+/* 8036D2F4 900401BC */ stw r0, 0x1bc(r4)
+/* 8036D2F8 7C17E2A6 */ mfspr r0, 0x397
+/* 8036D2FC 900401C0 */ stw r0, 0x1c0(r4)
+/* 8036D300 9421FFF8 */ stwu r1, -8(r1)
+/* 8036D304 4BFFFD84 */ b func_8036d088
+.size func_8036d2b8, . - func_8036d2b8
+
diff --git a/asm/Dolphin/os/OSAlloc.s b/asm/Dolphin/os/OSAlloc.s
new file mode 100644
index 0000000..4c5d756
--- /dev/null
+++ b/asm/Dolphin/os/OSAlloc.s
@@ -0,0 +1,260 @@
+.include "macros.inc"
+
+.section .text
+
+.global func_8036d308
+.type func_8036d308, @function
+func_8036d308:
+/* 8036D308 38E30000 */ addi r7, r3, 0x0
+/* 8036D30C 38C00000 */ li r6, 0x0
+/* 8036D310 48000014 */ b lbl_8036d324
+lbl_8036d314:
+/* 8036D314 7C043840 */ cmplw r4, r7
+/* 8036D318 40810014 */ ble- lbl_8036d32c
+/* 8036D31C 7CE63B78 */ mr r6, r7
+/* 8036D320 80E70004 */ lwz r7, 4(r7)
+lbl_8036d324:
+/* 8036D324 28070000 */ cmplwi r7, 0
+/* 8036D328 4082FFEC */ bne+ lbl_8036d314
+lbl_8036d32c:
+/* 8036D32C 90E40004 */ stw r7, 4(r4)
+/* 8036D330 28070000 */ cmplwi r7, 0
+/* 8036D334 90C40000 */ stw r6, 0(r4)
+/* 8036D338 41820038 */ beq- lbl_8036d370
+/* 8036D33C 90870000 */ stw r4, 0(r7)
+/* 8036D340 80A40008 */ lwz r5, 8(r4)
+/* 8036D344 7C042A14 */ add r0, r4, r5
+/* 8036D348 7C003840 */ cmplw r0, r7
+/* 8036D34C 40820024 */ bne- lbl_8036d370
+/* 8036D350 80070008 */ lwz r0, 8(r7)
+/* 8036D354 7C050214 */ add r0, r5, r0
+/* 8036D358 90040008 */ stw r0, 8(r4)
+/* 8036D35C 80E70004 */ lwz r7, 4(r7)
+/* 8036D360 28070000 */ cmplwi r7, 0
+/* 8036D364 90E40004 */ stw r7, 4(r4)
+/* 8036D368 41820008 */ beq- lbl_8036d370
+/* 8036D36C 90870000 */ stw r4, 0(r7)
+lbl_8036d370:
+/* 8036D370 28060000 */ cmplwi r6, 0
+/* 8036D374 41820038 */ beq- lbl_8036d3ac
+/* 8036D378 90860004 */ stw r4, 4(r6)
+/* 8036D37C 80A60008 */ lwz r5, 8(r6)
+/* 8036D380 7C062A14 */ add r0, r6, r5
+/* 8036D384 7C002040 */ cmplw r0, r4
+/* 8036D388 4C820020 */ bnelr-
+/* 8036D38C 80040008 */ lwz r0, 8(r4)
+/* 8036D390 28070000 */ cmplwi r7, 0
+/* 8036D394 7C050214 */ add r0, r5, r0
+/* 8036D398 90060008 */ stw r0, 8(r6)
+/* 8036D39C 90E60004 */ stw r7, 4(r6)
+/* 8036D3A0 4D820020 */ beqlr-
+/* 8036D3A4 90C70000 */ stw r6, 0(r7)
+/* 8036D3A8 4E800020 */ blr
+lbl_8036d3ac:
+/* 8036D3AC 7C832378 */ mr r3, r4
+/* 8036D3B0 4E800020 */ blr
+.size func_8036d308, . - func_8036d308
+
+
+.global func_8036d3b4
+.type func_8036d3b4, @function
+func_8036d3b4:
+/* 8036D3B4 1C03000C */ mulli r0, r3, 0xc
+/* 8036D3B8 806DCA30 */ lwz r3, lbl_805c6850@sda21(0)
+/* 8036D3BC 7CA30214 */ add r5, r3, r0
+/* 8036D3C0 3804003F */ addi r0, r4, 0x3f
+/* 8036D3C4 80C50004 */ lwz r6, 4(r5)
+/* 8036D3C8 54030034 */ rlwinm r3, r0, 0, 0, 0x1a
+/* 8036D3CC 48000014 */ b lbl_8036d3e0
+lbl_8036d3d0:
+/* 8036D3D0 80060008 */ lwz r0, 8(r6)
+/* 8036D3D4 7C030000 */ cmpw r3, r0
+/* 8036D3D8 40810010 */ ble- lbl_8036d3e8
+/* 8036D3DC 80C60004 */ lwz r6, 4(r6)
+lbl_8036d3e0:
+/* 8036D3E0 28060000 */ cmplwi r6, 0
+/* 8036D3E4 4082FFEC */ bne+ lbl_8036d3d0
+lbl_8036d3e8:
+/* 8036D3E8 28060000 */ cmplwi r6, 0
+/* 8036D3EC 4082000C */ bne- lbl_8036d3f8
+/* 8036D3F0 38600000 */ li r3, 0x0
+/* 8036D3F4 4E800020 */ blr
+lbl_8036d3f8:
+/* 8036D3F8 80060008 */ lwz r0, 8(r6)
+/* 8036D3FC 7C030050 */ subf r0, r3, r0
+/* 8036D400 28000040 */ cmplwi r0, 0x40
+/* 8036D404 40800040 */ bge- lbl_8036d444
+/* 8036D408 80860004 */ lwz r4, 4(r6)
+/* 8036D40C 80650004 */ lwz r3, 4(r5)
+/* 8036D410 28040000 */ cmplwi r4, 0
+/* 8036D414 4182000C */ beq- lbl_8036d420
+/* 8036D418 80060000 */ lwz r0, 0(r6)
+/* 8036D41C 90040000 */ stw r0, 0(r4)
+lbl_8036d420:
+/* 8036D420 80860000 */ lwz r4, 0(r6)
+/* 8036D424 28040000 */ cmplwi r4, 0
+/* 8036D428 4082000C */ bne- lbl_8036d434
+/* 8036D42C 80660004 */ lwz r3, 4(r6)
+/* 8036D430 4800000C */ b lbl_8036d43c
+lbl_8036d434:
+/* 8036D434 80060004 */ lwz r0, 4(r6)
+/* 8036D438 90040004 */ stw r0, 4(r4)
+lbl_8036d43c:
+/* 8036D43C 90650004 */ stw r3, 4(r5)
+/* 8036D440 48000048 */ b lbl_8036d488
+lbl_8036d444:
+/* 8036D444 90660008 */ stw r3, 8(r6)
+/* 8036D448 7C861A14 */ add r4, r6, r3
+/* 8036D44C 90040008 */ stw r0, 8(r4)
+/* 8036D450 80060000 */ lwz r0, 0(r6)
+/* 8036D454 90040000 */ stw r0, 0(r4)
+/* 8036D458 80060004 */ lwz r0, 4(r6)
+/* 8036D45C 90040004 */ stw r0, 4(r4)
+/* 8036D460 80640004 */ lwz r3, 4(r4)
+/* 8036D464 28030000 */ cmplwi r3, 0
+/* 8036D468 41820008 */ beq- lbl_8036d470
+/* 8036D46C 90830000 */ stw r4, 0(r3)
+lbl_8036d470:
+/* 8036D470 80640000 */ lwz r3, 0(r4)
+/* 8036D474 28030000 */ cmplwi r3, 0
+/* 8036D478 4182000C */ beq- lbl_8036d484
+/* 8036D47C 90830004 */ stw r4, 4(r3)
+/* 8036D480 48000008 */ b lbl_8036d488
+lbl_8036d484:
+/* 8036D484 90850004 */ stw r4, 4(r5)
+lbl_8036d488:
+/* 8036D488 80650008 */ lwz r3, 8(r5)
+/* 8036D48C 38000000 */ li r0, 0x0
+/* 8036D490 90660004 */ stw r3, 4(r6)
+/* 8036D494 28030000 */ cmplwi r3, 0
+/* 8036D498 90060000 */ stw r0, 0(r6)
+/* 8036D49C 41820008 */ beq- lbl_8036d4a4
+/* 8036D4A0 90C30000 */ stw r6, 0(r3)
+lbl_8036d4a4:
+/* 8036D4A4 90C50008 */ stw r6, 8(r5)
+/* 8036D4A8 38660020 */ addi r3, r6, 0x20
+/* 8036D4AC 4E800020 */ blr
+.size func_8036d3b4, . - func_8036d3b4
+
+
+.global func_8036d4b0
+.type func_8036d4b0, @function
+func_8036d4b0:
+/* 8036D4B0 7C0802A6 */ mflr r0
+/* 8036D4B4 38C4FFE0 */ addi r6, r4, -0x20
+/* 8036D4B8 90010004 */ stw r0, 4(r1)
+/* 8036D4BC 1C03000C */ mulli r0, r3, 0xc
+/* 8036D4C0 9421FFE8 */ stwu r1, -0x18(r1)
+/* 8036D4C4 93E10014 */ stw r31, 0x14(r1)
+/* 8036D4C8 808DCA30 */ lwz r4, lbl_805c6850@sda21(0)
+/* 8036D4CC 80660004 */ lwz r3, 4(r6)
+/* 8036D4D0 7FE40214 */ add r31, r4, r0
+/* 8036D4D4 28030000 */ cmplwi r3, 0
+/* 8036D4D8 80BF0008 */ lwz r5, 8(r31)
+/* 8036D4DC 7CC43378 */ mr r4, r6
+/* 8036D4E0 4182000C */ beq- lbl_8036d4ec
+/* 8036D4E4 80040000 */ lwz r0, 0(r4)
+/* 8036D4E8 90030000 */ stw r0, 0(r3)
+lbl_8036d4ec:
+/* 8036D4EC 80640000 */ lwz r3, 0(r4)
+/* 8036D4F0 28030000 */ cmplwi r3, 0
+/* 8036D4F4 4082000C */ bne- lbl_8036d500
+/* 8036D4F8 80A40004 */ lwz r5, 4(r4)
+/* 8036D4FC 4800000C */ b lbl_8036d508
+lbl_8036d500:
+/* 8036D500 80040004 */ lwz r0, 4(r4)
+/* 8036D504 90030004 */ stw r0, 4(r3)
+lbl_8036d508:
+/* 8036D508 90BF0008 */ stw r5, 8(r31)
+/* 8036D50C 807F0004 */ lwz r3, 4(r31)
+/* 8036D510 4BFFFDF9 */ bl func_8036d308
+/* 8036D514 907F0004 */ stw r3, 4(r31)
+/* 8036D518 8001001C */ lwz r0, 0x1c(r1)
+/* 8036D51C 83E10014 */ lwz r31, 0x14(r1)
+/* 8036D520 38210018 */ addi r1, r1, 0x18
+/* 8036D524 7C0803A6 */ mtlr r0
+/* 8036D528 4E800020 */ blr
+.size func_8036d4b0, . - func_8036d4b0
+
+
+.global func_8036d52c
+.type func_8036d52c, @function
+func_8036d52c:
+/* 8036D52C 800D9EF8 */ lwz r0, lbl_805c3d18@sda21(0)
+/* 8036D530 906D9EF8 */ stw r3, lbl_805c3d18@sda21(0)
+/* 8036D534 7C030378 */ mr r3, r0
+/* 8036D538 4E800020 */ blr
+.size func_8036d52c, . - func_8036d52c
+
+
+.global func_8036d53c
+.type func_8036d53c, @function
+func_8036d53c:
+/* 8036D53C 1CE5000C */ mulli r7, r5, 0xc
+/* 8036D540 906DCA30 */ stw r3, lbl_805c6850@sda21(0)
+/* 8036D544 90ADCA34 */ stw r5, lbl_805c6854@sda21(0)
+/* 8036D548 38C00000 */ li r6, 0x0
+/* 8036D54C 38660000 */ addi r3, r6, 0x0
+/* 8036D550 39000000 */ li r8, 0x0
+/* 8036D554 38A0FFFF */ li r5, -0x1
+/* 8036D558 48000020 */ b lbl_8036d578
+lbl_8036d55c:
+/* 8036D55C 800DCA30 */ lwz r0, lbl_805c6850@sda21(0)
+/* 8036D560 39080001 */ addi r8, r8, 0x1
+/* 8036D564 7D203214 */ add r9, r0, r6
+/* 8036D568 90A90000 */ stw r5, 0(r9)
+/* 8036D56C 38C6000C */ addi r6, r6, 0xc
+/* 8036D570 90690008 */ stw r3, 8(r9)
+/* 8036D574 90690004 */ stw r3, 4(r9)
+lbl_8036d578:
+/* 8036D578 800DCA34 */ lwz r0, lbl_805c6854@sda21(0)
+/* 8036D57C 7C080000 */ cmpw r8, r0
+/* 8036D580 4180FFDC */ blt+ lbl_8036d55c
+/* 8036D584 806DCA30 */ lwz r3, lbl_805c6850@sda21(0)
+/* 8036D588 54800034 */ rlwinm r0, r4, 0, 0, 0x1a
+/* 8036D58C 3880FFFF */ li r4, -0x1
+/* 8036D590 900DCA3C */ stw r0, lbl_805c685c@sda21(0)
+/* 8036D594 7C633A14 */ add r3, r3, r7
+/* 8036D598 3803001F */ addi r0, r3, 0x1f
+/* 8036D59C 908D9EF8 */ stw r4, lbl_805c3d18@sda21(0)
+/* 8036D5A0 54030034 */ rlwinm r3, r0, 0, 0, 0x1a
+/* 8036D5A4 906DCA38 */ stw r3, lbl_805c6858@sda21(0)
+/* 8036D5A8 4E800020 */ blr
+.size func_8036d53c, . - func_8036d53c
+
+
+.global func_8036d5ac
+.type func_8036d5ac, @function
+func_8036d5ac:
+/* 8036D5AC 80CDCA34 */ lwz r6, lbl_805c6854@sda21(0)
+/* 8036D5B0 3803001F */ addi r0, r3, 0x1f
+/* 8036D5B4 80ADCA30 */ lwz r5, lbl_805c6850@sda21(0)
+/* 8036D5B8 54070034 */ rlwinm r7, r0, 0, 0, 0x1a
+/* 8036D5BC 2C060000 */ cmpwi r6, 0x0
+/* 8036D5C0 7CC903A6 */ mtctr r6
+/* 8036D5C4 54840034 */ rlwinm r4, r4, 0, 0, 0x1a
+/* 8036D5C8 38600000 */ li r3, 0x0
+/* 8036D5CC 40810044 */ ble- lbl_8036d610
+lbl_8036d5d0:
+/* 8036D5D0 80050000 */ lwz r0, 0(r5)
+/* 8036D5D4 2C000000 */ cmpwi r0, 0x0
+/* 8036D5D8 4080002C */ bge- lbl_8036d604
+/* 8036D5DC 7C072050 */ subf r0, r7, r4
+/* 8036D5E0 90050000 */ stw r0, 0(r5)
+/* 8036D5E4 38800000 */ li r4, 0x0
+/* 8036D5E8 90870000 */ stw r4, 0(r7)
+/* 8036D5EC 90870004 */ stw r4, 4(r7)
+/* 8036D5F0 80050000 */ lwz r0, 0(r5)
+/* 8036D5F4 90070008 */ stw r0, 8(r7)
+/* 8036D5F8 90E50004 */ stw r7, 4(r5)
+/* 8036D5FC 90850008 */ stw r4, 8(r5)
+/* 8036D600 4E800020 */ blr
+lbl_8036d604:
+/* 8036D604 38A5000C */ addi r5, r5, 0xc
+/* 8036D608 38630001 */ addi r3, r3, 0x1
+/* 8036D60C 4200FFC4 */ bdnz lbl_8036d5d0
+lbl_8036d610:
+/* 8036D610 3860FFFF */ li r3, -0x1
+/* 8036D614 4E800020 */ blr
+.size func_8036d5ac, . - func_8036d5ac
+
diff --git a/asm/Dolphin/os/OSAudioSystem-data.s b/asm/Dolphin/os/OSAudioSystem-data.s
new file mode 100644
index 0000000..bd5e002
--- /dev/null
+++ b/asm/Dolphin/os/OSAudioSystem-data.s
@@ -0,0 +1,43 @@
+.include "macros.inc"
+
+.section .data
+
+.balign 8
+
+.global lbl_804eed70
+.type lbl_804eed70, @object
+lbl_804eed70:
+/* 804EED70 029F0010 */ .4byte 0x029f0010
+/* 804EED74 029F0033 */ .4byte 0x029f0033
+/* 804EED78 029F0034 */ .4byte 0x029f0034
+/* 804EED7C 029F0035 */ .4byte 0x029f0035
+/* 804EED80 029F0036 */ .4byte 0x029f0036
+/* 804EED84 029F0037 */ .4byte 0x029f0037
+/* 804EED88 029F0038 */ .4byte 0x029f0038
+/* 804EED8C 029F0039 */ .4byte 0x029f0039
+/* 804EED90 12061203 */ .4byte 0x12061203
+/* 804EED94 12041205 */ .4byte 0x12041205
+/* 804EED98 00808000 */ .4byte 0x00808000
+/* 804EED9C 0088FFFF */ .4byte 0x0088ffff
+/* 804EEDA0 00841000 */ .4byte 0x00841000
+/* 804EEDA4 0064001D */ .4byte 0x0064001d
+/* 804EEDA8 02180000 */ .4byte 0x02180000
+/* 804EEDAC 81001C1E */ .4byte 0x81001c1e
+/* 804EEDB0 00441B1E */ .4byte 0x00441b1e
+/* 804EEDB4 00840800 */ .4byte 0x00840800
+/* 804EEDB8 00640027 */ .4byte 0x00640027
+/* 804EEDBC 191E0000 */ .4byte 0x191e0000
+/* 804EEDC0 00DEFFFC */ .4byte 0x00defffc
+/* 804EEDC4 02A08000 */ .4byte 0x02a08000
+/* 804EEDC8 029C0028 */ .4byte 0x029c0028
+/* 804EEDCC 16FC0054 */ .4byte 0x16fc0054
+/* 804EEDD0 16FD4348 */ .4byte 0x16fd4348
+/* 804EEDD4 002102FF */ .4byte 0x002102ff
+/* 804EEDD8 02FF02FF */ .4byte 0x02ff02ff
+/* 804EEDDC 02FF02FF */ .4byte 0x02ff02ff
+/* 804EEDE0 02FF02FF */ .4byte 0x02ff02ff
+/* 804EEDE4 00000000 */ .4byte 0x00000000
+/* 804EEDE8 00000000 */ .4byte 0x00000000
+/* 804EEDEC 00000000 */ .4byte 0x00000000
+.size lbl_804eed70, . - lbl_804eed70
+
diff --git a/asm/Dolphin/os/OSAudioSystem.s b/asm/Dolphin/os/OSAudioSystem.s
new file mode 100644
index 0000000..c3aafe4
--- /dev/null
+++ b/asm/Dolphin/os/OSAudioSystem.s
@@ -0,0 +1,199 @@
+.include "macros.inc"
+
+.section .text
+
+.global func_8036d638
+.type func_8036d638, @function
+func_8036d638:
+/* 8036D638 7C0802A6 */ mflr r0
+/* 8036D63C 90010004 */ stw r0, 4(r1)
+/* 8036D640 9421FFD0 */ stwu r1, -0x30(r1)
+/* 8036D644 BF210014 */ stmw r25, 0x14(r1)
+/* 8036D648 4BFFFFD1 */ bl func_8036d618
+/* 8036D64C 3C808100 */ lis r4, 0x8100
+/* 8036D650 38A00080 */ li r5, 0x80
+/* 8036D654 3863FF80 */ addi r3, r3, -0x80
+/* 8036D658 4BCA0DC5 */ bl func_8000e41c
+/* 8036D65C 3C60804F */ lis r3, lbl_804eed70@ha
+/* 8036D660 3883ED70 */ addi r4, r3, lbl_804eed70@l
+/* 8036D664 3C608100 */ lis r3, 0x8100
+/* 8036D668 38A00080 */ li r5, 0x80
+/* 8036D66C 4BCA0DB1 */ bl func_8000e41c
+/* 8036D670 3C608100 */ lis r3, 0x8100
+/* 8036D674 38800080 */ li r4, 0x80
+/* 8036D678 48000299 */ bl func_8036d910
+/* 8036D67C 3C60CC00 */ lis r3, 0xcc00
+/* 8036D680 38635000 */ addi r3, r3, 0x5000
+/* 8036D684 38000043 */ li r0, 0x43
+/* 8036D688 B0030012 */ sth r0, 0x12(r3)
+/* 8036D68C 3BE3000A */ addi r31, r3, 0xa
+/* 8036D690 380008AC */ li r0, 0x8ac
+/* 8036D694 B003000A */ sth r0, 0xa(r3)
+/* 8036D698 A003000A */ lhz r0, 0xa(r3)
+/* 8036D69C 60000001 */ ori r0, r0, 1
+/* 8036D6A0 B003000A */ sth r0, 0xa(r3)
+lbl_8036d6a4:
+/* 8036D6A4 A01F0000 */ lhz r0, 0(r31)
+/* 8036D6A8 540007FF */ clrlwi. r0, r0, 0x1f
+/* 8036D6AC 4082FFF8 */ bne+ lbl_8036d6a4
+/* 8036D6B0 38000000 */ li r0, 0x0
+/* 8036D6B4 3C80CC00 */ lis r4, 0xcc00
+/* 8036D6B8 B0045000 */ sth r0, 0x5000(r4)
+lbl_8036d6bc:
+/* 8036D6BC 3BC45000 */ addi r30, r4, 0x5000
+/* 8036D6C0 A47E0004 */ lhzu r3, 4(r30)
+/* 8036D6C4 3BA45000 */ addi r29, r4, 0x5000
+/* 8036D6C8 A41D0006 */ lhzu r0, 6(r29)
+/* 8036D6CC 5060801E */ rlwimi r0, r3, 0x10, 0, 0xf
+/* 8036D6D0 54000001 */ rlwinm. r0, r0, 0, 0, 0
+/* 8036D6D4 4082FFE8 */ bne+ lbl_8036d6bc
+/* 8036D6D8 3C60CC00 */ lis r3, 0xcc00
+/* 8036D6DC 3C000100 */ lis r0, 0x100
+/* 8036D6E0 3B635000 */ addi r27, r3, 0x5000
+/* 8036D6E4 941B0020 */ stwu r0, 0x20(r27)
+/* 8036D6E8 38000000 */ li r0, 0x0
+/* 8036D6EC 3B435000 */ addi r26, r3, 0x5000
+/* 8036D6F0 941A0024 */ stwu r0, 0x24(r26)
+/* 8036D6F4 38000020 */ li r0, 0x20
+/* 8036D6F8 3B235000 */ addi r25, r3, 0x5000
+/* 8036D6FC 94190028 */ stwu r0, 0x28(r25)
+/* 8036D700 A07F0000 */ lhz r3, 0(r31)
+/* 8036D704 48000008 */ b lbl_8036d70c
+lbl_8036d708:
+/* 8036D708 A07F0000 */ lhz r3, 0(r31)
+lbl_8036d70c:
+/* 8036D70C 546006B5 */ rlwinm. r0, r3, 0, 0x1a, 0x1a
+/* 8036D710 4182FFF8 */ beq+ lbl_8036d708
+/* 8036D714 B07F0000 */ sth r3, 0(r31)
+/* 8036D718 480050C5 */ bl func_803727dc
+/* 8036D71C 7C7C1B78 */ mr r28, r3
+lbl_8036d720:
+/* 8036D720 480050BD */ bl func_803727dc
+/* 8036D724 7C1C1850 */ subf r0, r28, r3
+/* 8036D728 2C000892 */ cmpwi r0, 0x892
+/* 8036D72C 4180FFF4 */ blt+ lbl_8036d720
+/* 8036D730 3C000100 */ lis r0, 0x100
+/* 8036D734 901B0000 */ stw r0, 0(r27)
+/* 8036D738 38600000 */ li r3, 0x0
+/* 8036D73C 38000020 */ li r0, 0x20
+/* 8036D740 907A0000 */ stw r3, 0(r26)
+/* 8036D744 90190000 */ stw r0, 0(r25)
+/* 8036D748 A07F0000 */ lhz r3, 0(r31)
+/* 8036D74C 48000008 */ b lbl_8036d754
+lbl_8036d750:
+/* 8036D750 A07F0000 */ lhz r3, 0(r31)
+lbl_8036d754:
+/* 8036D754 546006B5 */ rlwinm. r0, r3, 0, 0x1a, 0x1a
+/* 8036D758 4182FFF8 */ beq+ lbl_8036d750
+/* 8036D75C B07F0000 */ sth r3, 0(r31)
+/* 8036D760 A01F0000 */ lhz r0, 0(r31)
+/* 8036D764 54000566 */ rlwinm r0, r0, 0, 0x15, 0x13
+/* 8036D768 B01F0000 */ sth r0, 0(r31)
+lbl_8036d76c:
+/* 8036D76C A01F0000 */ lhz r0, 0(r31)
+/* 8036D770 5400056B */ rlwinm. r0, r0, 0, 0x15, 0x15
+/* 8036D774 4082FFF8 */ bne+ lbl_8036d76c
+/* 8036D778 A01F0000 */ lhz r0, 0(r31)
+/* 8036D77C 540007B8 */ rlwinm r0, r0, 0, 0x1e, 0x1c
+/* 8036D780 B01F0000 */ sth r0, 0(r31)
+/* 8036D784 A01E0000 */ lhz r0, 0(r30)
+/* 8036D788 48000008 */ b lbl_8036d790
+lbl_8036d78c:
+/* 8036D78C A01E0000 */ lhz r0, 0(r30)
+lbl_8036d790:
+/* 8036D790 5405043E */ clrlwi r5, r0, 0x10
+/* 8036D794 54000421 */ rlwinm. r0, r0, 0, 0x10, 0x10
+/* 8036D798 4182FFF4 */ beq+ lbl_8036d78c
+/* 8036D79C A01F0000 */ lhz r0, 0(r31)
+/* 8036D7A0 A09D0000 */ lhz r4, 0(r29)
+/* 8036D7A4 60000004 */ ori r0, r0, 4
+/* 8036D7A8 B01F0000 */ sth r0, 0(r31)
+/* 8036D7AC 380008AC */ li r0, 0x8ac
+/* 8036D7B0 B01F0000 */ sth r0, 0(r31)
+/* 8036D7B4 A01F0000 */ lhz r0, 0(r31)
+/* 8036D7B8 60000001 */ ori r0, r0, 1
+/* 8036D7BC B01F0000 */ sth r0, 0(r31)
+lbl_8036d7c0:
+/* 8036D7C0 A01F0000 */ lhz r0, 0(r31)
+/* 8036D7C4 540007FF */ clrlwi. r0, r0, 0x1f
+/* 8036D7C8 4082FFF8 */ bne+ lbl_8036d7c0
+/* 8036D7CC 4BFFFE4D */ bl func_8036d618
+/* 8036D7D0 3883FF80 */ addi r4, r3, -0x80
+/* 8036D7D4 3C608100 */ lis r3, 0x8100
+/* 8036D7D8 38A00080 */ li r5, 0x80
+/* 8036D7DC 4BCA0C41 */ bl func_8000e41c
+/* 8036D7E0 BB210014 */ lmw r25, 0x14(r1)
+/* 8036D7E4 80010034 */ lwz r0, 0x34(r1)
+/* 8036D7E8 38210030 */ addi r1, r1, 0x30
+/* 8036D7EC 7C0803A6 */ mtlr r0
+/* 8036D7F0 4E800020 */ blr
+.size func_8036d638, . - func_8036d638
+
+
+.global func_8036d7f4
+.type func_8036d7f4, @function
+func_8036d7f4:
+/* 8036D7F4 7C0802A6 */ mflr r0
+/* 8036D7F8 3C60CC00 */ lis r3, 0xcc00
+/* 8036D7FC 90010004 */ stw r0, 4(r1)
+/* 8036D800 38000804 */ li r0, 0x804
+/* 8036D804 9421FFF0 */ stwu r1, -0x10(r1)
+/* 8036D808 93E1000C */ stw r31, 0xc(r1)
+/* 8036D80C 3BE35000 */ addi r31, r3, 0x5000
+/* 8036D810 38635000 */ addi r3, r3, 0x5000
+/* 8036D814 93C10008 */ stw r30, 8(r1)
+/* 8036D818 B01F000A */ sth r0, 0xa(r31)
+/* 8036D81C A0030036 */ lhz r0, 0x36(r3)
+/* 8036D820 5400045E */ rlwinm r0, r0, 0, 0x11, 0xf
+/* 8036D824 B0030036 */ sth r0, 0x36(r3)
+/* 8036D828 A41F000A */ lhzu r0, 0xa(r31)
+/* 8036D82C 48000008 */ b lbl_8036d834
+lbl_8036d830:
+/* 8036D830 A01F0000 */ lhz r0, 0(r31)
+lbl_8036d834:
+/* 8036D834 5400056B */ rlwinm. r0, r0, 0, 0x15, 0x15
+/* 8036D838 4082FFF8 */ bne+ lbl_8036d830
+/* 8036D83C A01F0000 */ lhz r0, 0(r31)
+/* 8036D840 48000008 */ b lbl_8036d848
+lbl_8036d844:
+/* 8036D844 A01F0000 */ lhz r0, 0(r31)
+lbl_8036d848:
+/* 8036D848 540005AD */ rlwinm. r0, r0, 0, 0x16, 0x16
+/* 8036D84C 4082FFF8 */ bne+ lbl_8036d844
+/* 8036D850 380008AC */ li r0, 0x8ac
+/* 8036D854 3C60CC00 */ lis r3, 0xcc00
+/* 8036D858 B01F0000 */ sth r0, 0(r31)
+/* 8036D85C 38000000 */ li r0, 0x0
+/* 8036D860 B0035000 */ sth r0, 0x5000(r3)
+/* 8036D864 38835000 */ addi r4, r3, 0x5000
+lbl_8036d868:
+/* 8036D868 A0640004 */ lhz r3, 4(r4)
+/* 8036D86C A0040006 */ lhz r0, 6(r4)
+/* 8036D870 5060801E */ rlwimi r0, r3, 0x10, 0, 0xf
+/* 8036D874 54000001 */ rlwinm. r0, r0, 0, 0, 0
+/* 8036D878 4082FFF0 */ bne+ lbl_8036d868
+/* 8036D87C 48004F61 */ bl func_803727dc
+/* 8036D880 7C7E1B78 */ mr r30, r3
+lbl_8036d884:
+/* 8036D884 48004F59 */ bl func_803727dc
+/* 8036D888 7C1E1850 */ subf r0, r30, r3
+/* 8036D88C 2C00002C */ cmpwi r0, 0x2c
+/* 8036D890 4180FFF4 */ blt+ lbl_8036d884
+/* 8036D894 A01F0000 */ lhz r0, 0(r31)
+/* 8036D898 60000001 */ ori r0, r0, 1
+/* 8036D89C B01F0000 */ sth r0, 0(r31)
+/* 8036D8A0 A01F0000 */ lhz r0, 0(r31)
+/* 8036D8A4 48000008 */ b lbl_8036d8ac
+lbl_8036d8a8:
+/* 8036D8A8 A01F0000 */ lhz r0, 0(r31)
+lbl_8036d8ac:
+/* 8036D8AC 540007FF */ clrlwi. r0, r0, 0x1f
+/* 8036D8B0 4082FFF8 */ bne+ lbl_8036d8a8
+/* 8036D8B4 80010014 */ lwz r0, 0x14(r1)
+/* 8036D8B8 83E1000C */ lwz r31, 0xc(r1)
+/* 8036D8BC 83C10008 */ lwz r30, 8(r1)
+/* 8036D8C0 38210010 */ addi r1, r1, 0x10
+/* 8036D8C4 7C0803A6 */ mtlr r0
+/* 8036D8C8 4E800020 */ blr
+.size func_8036d7f4, . - func_8036d7f4
+
diff --git a/asm/Dolphin/os/OSCache-data.s b/asm/Dolphin/os/OSCache-data.s
new file mode 100644
index 0000000..a04cf5d
--- /dev/null
+++ b/asm/Dolphin/os/OSCache-data.s
@@ -0,0 +1,151 @@
+.include "macros.inc"
+
+.section .data
+
+.balign 8
+
+.global lbl_804eedf0
+.type lbl_804eedf0, @object
+lbl_804eedf0:
+/* 804EEDF0 3E3E3E20 */ .4byte 0x3e3e3e20
+/* 804EEDF4 4C322049 */ .4byte 0x4c322049
+/* 804EEDF8 4E56414C */ .4byte 0x4e56414c
+/* 804EEDFC 49444154 */ .4byte 0x49444154
+/* 804EEE00 45203A20 */ .4byte 0x45203a20
+/* 804EEE04 53484F55 */ .4byte 0x53484f55
+/* 804EEE08 4C44204E */ .4byte 0x4c44204e
+/* 804EEE0C 45564552 */ .4byte 0x45564552
+/* 804EEE10 20484150 */ .4byte 0x20484150
+/* 804EEE14 50454E0A */ .4byte 0x50454e0a
+/* 804EEE18 00000000 */ .4byte 0x00000000
+/* 804EEE1C 4D616368 */ .4byte 0x4d616368
+/* 804EEE20 696E6520 */ .4byte 0x696e6520
+/* 804EEE24 63686563 */ .4byte 0x63686563
+/* 804EEE28 6B207265 */ .4byte 0x6b207265
+/* 804EEE2C 63656976 */ .4byte 0x63656976
+/* 804EEE30 65640A00 */ .4byte 0x65640a00
+/* 804EEE34 48494432 */ .4byte 0x48494432
+/* 804EEE38 203D2030 */ .4byte 0x203d2030
+/* 804EEE3C 78257820 */ .4byte 0x78257820
+/* 804EEE40 20205352 */ .4byte 0x20205352
+/* 804EEE44 5231203D */ .4byte 0x5231203d
+/* 804EEE48 20307825 */ .4byte 0x20307825
+/* 804EEE4C 780A0000 */ .4byte 0x780a0000
+/* 804EEE50 4D616368 */ .4byte 0x4d616368
+/* 804EEE54 696E6520 */ .4byte 0x696e6520
+/* 804EEE58 63686563 */ .4byte 0x63686563
+/* 804EEE5C 6B207761 */ .4byte 0x6b207761
+/* 804EEE60 73206E6F */ .4byte 0x73206e6f
+/* 804EEE64 7420444D */ .4byte 0x7420444d
+/* 804EEE68 412F6C6F */ .4byte 0x412f6c6f
+/* 804EEE6C 636B6564 */ .4byte 0x636b6564
+/* 804EEE70 20636163 */ .4byte 0x20636163
+/* 804EEE74 68652072 */ .4byte 0x68652072
+/* 804EEE78 656C6174 */ .4byte 0x656c6174
+/* 804EEE7C 65640A00 */ .4byte 0x65640a00
+/* 804EEE80 444D4145 */ .4byte 0x444d4145
+/* 804EEE84 72726F72 */ .4byte 0x72726f72
+/* 804EEE88 48616E64 */ .4byte 0x48616e64
+/* 804EEE8C 6C657228 */ .4byte 0x6c657228
+/* 804EEE90 293A2041 */ .4byte 0x293a2041
+/* 804EEE94 6E206572 */ .4byte 0x6e206572
+/* 804EEE98 726F7220 */ .4byte 0x726f7220
+/* 804EEE9C 6F636375 */ .4byte 0x6f636375
+/* 804EEEA0 72726564 */ .4byte 0x72726564
+/* 804EEEA4 20776869 */ .4byte 0x20776869
+/* 804EEEA8 6C652070 */ .4byte 0x6c652070
+/* 804EEEAC 726F6365 */ .4byte 0x726f6365
+/* 804EEEB0 7373696E */ .4byte 0x7373696e
+/* 804EEEB4 6720444D */ .4byte 0x6720444d
+/* 804EEEB8 412E0A00 */ .4byte 0x412e0a00
+/* 804EEEBC 54686520 */ .4byte 0x54686520
+/* 804EEEC0 666F6C6C */ .4byte 0x666f6c6c
+/* 804EEEC4 6F77696E */ .4byte 0x6f77696e
+/* 804EEEC8 67206572 */ .4byte 0x67206572
+/* 804EEECC 726F7273 */ .4byte 0x726f7273
+/* 804EEED0 20686176 */ .4byte 0x20686176
+/* 804EEED4 65206265 */ .4byte 0x65206265
+/* 804EEED8 656E2064 */ .4byte 0x656e2064
+/* 804EEEDC 65746563 */ .4byte 0x65746563
+/* 804EEEE0 74656420 */ .4byte 0x74656420
+/* 804EEEE4 616E6420 */ .4byte 0x616e6420
+/* 804EEEE8 636C6561 */ .4byte 0x636c6561
+/* 804EEEEC 72656420 */ .4byte 0x72656420
+/* 804EEEF0 3A0A0000 */ .4byte 0x3a0a0000
+/* 804EEEF4 092D2052 */ .4byte 0x092d2052
+/* 804EEEF8 65717565 */ .4byte 0x65717565
+/* 804EEEFC 73746564 */ .4byte 0x73746564
+/* 804EEF00 2061206C */ .4byte 0x2061206c
+/* 804EEF04 6F636B65 */ .4byte 0x6f636b65
+/* 804EEF08 64206361 */ .4byte 0x64206361
+/* 804EEF0C 63686520 */ .4byte 0x63686520
+/* 804EEF10 74616720 */ .4byte 0x74616720
+/* 804EEF14 74686174 */ .4byte 0x74686174
+/* 804EEF18 20776173 */ .4byte 0x20776173
+/* 804EEF1C 20616C72 */ .4byte 0x20616c72
+/* 804EEF20 65616479 */ .4byte 0x65616479
+/* 804EEF24 20696E20 */ .4byte 0x20696e20
+/* 804EEF28 74686520 */ .4byte 0x74686520
+/* 804EEF2C 63616368 */ .4byte 0x63616368
+/* 804EEF30 650A0000 */ .4byte 0x650a0000
+/* 804EEF34 092D2044 */ .4byte 0x092d2044
+/* 804EEF38 4D412061 */ .4byte 0x4d412061
+/* 804EEF3C 7474656D */ .4byte 0x7474656d
+/* 804EEF40 70746564 */ .4byte 0x70746564
+/* 804EEF44 20746F20 */ .4byte 0x20746f20
+/* 804EEF48 61636365 */ .4byte 0x61636365
+/* 804EEF4C 7373206E */ .4byte 0x7373206e
+/* 804EEF50 6F726D61 */ .4byte 0x6f726d61
+/* 804EEF54 6C206361 */ .4byte 0x6c206361
+/* 804EEF58 6368650A */ .4byte 0x6368650a
+/* 804EEF5C 00000000 */ .4byte 0x00000000
+/* 804EEF60 092D2044 */ .4byte 0x092d2044
+/* 804EEF64 4D41206D */ .4byte 0x4d41206d
+/* 804EEF68 69737365 */ .4byte 0x69737365
+/* 804EEF6C 6420696E */ .4byte 0x6420696e
+/* 804EEF70 20646174 */ .4byte 0x20646174
+/* 804EEF74 61206361 */ .4byte 0x61206361
+/* 804EEF78 6368650A */ .4byte 0x6368650a
+/* 804EEF7C 00000000 */ .4byte 0x00000000
+/* 804EEF80 092D2044 */ .4byte 0x092d2044
+/* 804EEF84 4D412071 */ .4byte 0x4d412071
+/* 804EEF88 75657565 */ .4byte 0x75657565
+/* 804EEF8C 206F7665 */ .4byte 0x206f7665
+/* 804EEF90 72666C6F */ .4byte 0x72666c6f
+/* 804EEF94 7765640A */ .4byte 0x7765640a
+/* 804EEF98 00000000 */ .4byte 0x00000000
+/* 804EEF9C 4C312069 */ .4byte 0x4c312069
+/* 804EEFA0 2D636163 */ .4byte 0x2d636163
+/* 804EEFA4 68657320 */ .4byte 0x68657320
+/* 804EEFA8 696E6974 */ .4byte 0x696e6974
+/* 804EEFAC 69616C69 */ .4byte 0x69616c69
+/* 804EEFB0 7A65640A */ .4byte 0x7a65640a
+/* 804EEFB4 00000000 */ .4byte 0x00000000
+/* 804EEFB8 4C312064 */ .4byte 0x4c312064
+/* 804EEFBC 2D636163 */ .4byte 0x2d636163
+/* 804EEFC0 68657320 */ .4byte 0x68657320
+/* 804EEFC4 696E6974 */ .4byte 0x696e6974
+/* 804EEFC8 69616C69 */ .4byte 0x69616c69
+/* 804EEFCC 7A65640A */ .4byte 0x7a65640a
+/* 804EEFD0 00000000 */ .4byte 0x00000000
+/* 804EEFD4 4C322063 */ .4byte 0x4c322063
+/* 804EEFD8 61636865 */ .4byte 0x61636865
+/* 804EEFDC 20696E69 */ .4byte 0x20696e69
+/* 804EEFE0 7469616C */ .4byte 0x7469616c
+/* 804EEFE4 697A6564 */ .4byte 0x697a6564
+/* 804EEFE8 0A000000 */ .4byte 0x0a000000
+/* 804EEFEC 4C6F636B */ .4byte 0x4c6f636b
+/* 804EEFF0 65642063 */ .4byte 0x65642063
+/* 804EEFF4 61636865 */ .4byte 0x61636865
+/* 804EEFF8 206D6163 */ .4byte 0x206d6163
+/* 804EEFFC 68696E65 */ .4byte 0x68696e65
+/* 804EF000 20636865 */ .4byte 0x20636865
+/* 804EF004 636B2068 */ .4byte 0x636b2068
+/* 804EF008 616E646C */ .4byte 0x616e646c
+/* 804EF00C 65722069 */ .4byte 0x65722069
+/* 804EF010 6E737461 */ .4byte 0x6e737461
+/* 804EF014 6C6C6564 */ .4byte 0x6c6c6564
+/* 804EF018 0A000000 */ .4byte 0x0a000000
+/* 804EF01C 00000000 */ .4byte 0x00000000
+.size lbl_804eedf0, . - lbl_804eedf0
+
diff --git a/asm/Dolphin/os/OSCache.s b/asm/Dolphin/os/OSCache.s
new file mode 100644
index 0000000..dc8cd69
--- /dev/null
+++ b/asm/Dolphin/os/OSCache.s
@@ -0,0 +1,476 @@
+.include "macros.inc"
+
+.section .text
+
+.global func_8036d8cc
+.type func_8036d8cc, @function
+func_8036d8cc:
+/* 8036D8CC 7C0004AC */ sync 0
+/* 8036D8D0 7C70FAA6 */ mfspr r3, 0x3f0
+/* 8036D8D4 60634000 */ ori r3, r3, 0x4000
+/* 8036D8D8 7C70FBA6 */ mtspr 0x3f0, r3
+/* 8036D8DC 4E800020 */ blr
+.size func_8036d8cc, . - func_8036d8cc
+
+
+.global func_8036d8e0
+.type func_8036d8e0, @function
+func_8036d8e0:
+/* 8036D8E0 28040000 */ cmplwi r4, 0
+/* 8036D8E4 4C810020 */ blelr-
+/* 8036D8E8 546506FF */ clrlwi. r5, r3, 0x1b
+/* 8036D8EC 41820008 */ beq- lbl_8036d8f4
+/* 8036D8F0 38840020 */ addi r4, r4, 0x20
+lbl_8036d8f4:
+/* 8036D8F4 3884001F */ addi r4, r4, 0x1f
+/* 8036D8F8 5484D97E */ srwi r4, r4, 5
+/* 8036D8FC 7C8903A6 */ mtctr r4
+lbl_8036d900:
+/* 8036D900 7C001BAC */ dcbi 0, r3
+/* 8036D904 38630020 */ addi r3, r3, 0x20
+/* 8036D908 4200FFF8 */ bdnz lbl_8036d900
+/* 8036D90C 4E800020 */ blr
+.size func_8036d8e0, . - func_8036d8e0
+
+
+.global func_8036d910
+.type func_8036d910, @function
+func_8036d910:
+/* 8036D910 28040000 */ cmplwi r4, 0
+/* 8036D914 4C810020 */ blelr-
+/* 8036D918 546506FF */ clrlwi. r5, r3, 0x1b
+/* 8036D91C 41820008 */ beq- lbl_8036d924
+/* 8036D920 38840020 */ addi r4, r4, 0x20
+lbl_8036d924:
+/* 8036D924 3884001F */ addi r4, r4, 0x1f
+/* 8036D928 5484D97E */ srwi r4, r4, 5
+/* 8036D92C 7C8903A6 */ mtctr r4
+lbl_8036d930:
+/* 8036D930 7C0018AC */ dcbf 0, r3
+/* 8036D934 38630020 */ addi r3, r3, 0x20
+/* 8036D938 4200FFF8 */ bdnz lbl_8036d930
+/* 8036D93C 44000002 */ sc
+/* 8036D940 4E800020 */ blr
+.size func_8036d910, . - func_8036d910
+
+
+.global func_8036d944
+.type func_8036d944, @function
+func_8036d944:
+/* 8036D944 28040000 */ cmplwi r4, 0
+/* 8036D948 4C810020 */ blelr-
+/* 8036D94C 546506FF */ clrlwi. r5, r3, 0x1b
+/* 8036D950 41820008 */ beq- lbl_8036d958
+/* 8036D954 38840020 */ addi r4, r4, 0x20
+lbl_8036d958:
+/* 8036D958 3884001F */ addi r4, r4, 0x1f
+/* 8036D95C 5484D97E */ srwi r4, r4, 5
+/* 8036D960 7C8903A6 */ mtctr r4
+lbl_8036d964:
+/* 8036D964 7C00186C */ dcbst 0, r3
+/* 8036D968 38630020 */ addi r3, r3, 0x20
+/* 8036D96C 4200FFF8 */ bdnz lbl_8036d964
+/* 8036D970 44000002 */ sc
+/* 8036D974 4E800020 */ blr
+.size func_8036d944, . - func_8036d944
+
+
+.global func_8036d978
+.type func_8036d978, @function
+func_8036d978:
+/* 8036D978 28040000 */ cmplwi r4, 0
+/* 8036D97C 4C810020 */ blelr-
+/* 8036D980 546506FF */ clrlwi. r5, r3, 0x1b
+/* 8036D984 41820008 */ beq- lbl_8036d98c
+/* 8036D988 38840020 */ addi r4, r4, 0x20
+lbl_8036d98c:
+/* 8036D98C 3884001F */ addi r4, r4, 0x1f
+/* 8036D990 5484D97E */ srwi r4, r4, 5
+/* 8036D994 7C8903A6 */ mtctr r4
+lbl_8036d998:
+/* 8036D998 7C0018AC */ dcbf 0, r3
+/* 8036D99C 38630020 */ addi r3, r3, 0x20
+/* 8036D9A0 4200FFF8 */ bdnz lbl_8036d998
+/* 8036D9A4 4E800020 */ blr
+.size func_8036d978, . - func_8036d978
+
+
+.global func_8036d9a8
+.type func_8036d9a8, @function
+func_8036d9a8:
+/* 8036D9A8 28040000 */ cmplwi r4, 0
+/* 8036D9AC 4C810020 */ blelr-
+/* 8036D9B0 546506FF */ clrlwi. r5, r3, 0x1b
+/* 8036D9B4 41820008 */ beq- lbl_8036d9bc
+/* 8036D9B8 38840020 */ addi r4, r4, 0x20
+lbl_8036d9bc:
+/* 8036D9BC 3884001F */ addi r4, r4, 0x1f
+/* 8036D9C0 5484D97E */ srwi r4, r4, 5
+/* 8036D9C4 7C8903A6 */ mtctr r4
+lbl_8036d9c8:
+/* 8036D9C8 7C00186C */ dcbst 0, r3
+/* 8036D9CC 38630020 */ addi r3, r3, 0x20
+/* 8036D9D0 4200FFF8 */ bdnz lbl_8036d9c8
+/* 8036D9D4 4E800020 */ blr
+.size func_8036d9a8, . - func_8036d9a8
+
+
+.global func_8036d9d8
+.type func_8036d9d8, @function
+func_8036d9d8:
+/* 8036D9D8 28040000 */ cmplwi r4, 0
+/* 8036D9DC 4C810020 */ blelr-
+/* 8036D9E0 546506FF */ clrlwi. r5, r3, 0x1b
+/* 8036D9E4 41820008 */ beq- lbl_8036d9ec
+/* 8036D9E8 38840020 */ addi r4, r4, 0x20
+lbl_8036d9ec:
+/* 8036D9EC 3884001F */ addi r4, r4, 0x1f
+/* 8036D9F0 5484D97E */ srwi r4, r4, 5
+/* 8036D9F4 7C8903A6 */ mtctr r4
+lbl_8036d9f8:
+/* 8036D9F8 7C001FAC */ icbi 0, r3
+/* 8036D9FC 38630020 */ addi r3, r3, 0x20
+/* 8036DA00 4200FFF8 */ bdnz lbl_8036d9f8
+/* 8036DA04 7C0004AC */ sync 0
+/* 8036DA08 4C00012C */ isync
+/* 8036DA0C 4E800020 */ blr
+.size func_8036d9d8, . - func_8036d9d8
+
+
+.global func_8036da10
+.type func_8036da10, @function
+func_8036da10:
+/* 8036DA10 7C70FAA6 */ mfspr r3, 0x3f0
+/* 8036DA14 60630800 */ ori r3, r3, 0x800
+/* 8036DA18 7C70FBA6 */ mtspr 0x3f0, r3
+/* 8036DA1C 4E800020 */ blr
+.size func_8036da10, . - func_8036da10
+
+
+.global func_8036da20
+.type func_8036da20, @function
+func_8036da20:
+/* 8036DA20 4C00012C */ isync
+/* 8036DA24 7C70FAA6 */ mfspr r3, 0x3f0
+/* 8036DA28 60638000 */ ori r3, r3, 0x8000
+/* 8036DA2C 7C70FBA6 */ mtspr 0x3f0, r3
+/* 8036DA30 4E800020 */ blr
+.size func_8036da20, . - func_8036da20
+
+
+.global func_8036da34
+.type func_8036da34, @function
+func_8036da34:
+/* 8036DA34 7CA000A6 */ mfmsr r5
+/* 8036DA38 60A51000 */ ori r5, r5, 0x1000
+/* 8036DA3C 7CA00124 */ mtmsr r5
+/* 8036DA40 3C608000 */ lis r3, 0x8000
+/* 8036DA44 38800400 */ li r4, 0x400
+/* 8036DA48 7C8903A6 */ mtctr r4
+lbl_8036da4c:
+/* 8036DA4C 7C001A2C */ dcbt 0, r3
+/* 8036DA50 7C00186C */ dcbst 0, r3
+/* 8036DA54 38630020 */ addi r3, r3, 0x20
+/* 8036DA58 4200FFF4 */ bdnz lbl_8036da4c
+/* 8036DA5C 7C98E2A6 */ mfspr r4, 0x398
+/* 8036DA60 6484100F */ oris r4, r4, 0x100f
+/* 8036DA64 7C98E3A6 */ mtspr 0x398, r4
+/* 8036DA68 60000000 */ nop
+/* 8036DA6C 60000000 */ nop
+/* 8036DA70 60000000 */ nop
+/* 8036DA74 60000000 */ nop
+/* 8036DA78 60000000 */ nop
+/* 8036DA7C 60000000 */ nop
+/* 8036DA80 60000000 */ nop
+/* 8036DA84 60000000 */ nop
+/* 8036DA88 60000000 */ nop
+/* 8036DA8C 60000000 */ nop
+/* 8036DA90 60000000 */ nop
+/* 8036DA94 60000000 */ nop
+/* 8036DA98 3C60E000 */ lis r3, 0xe000
+/* 8036DA9C 60630002 */ ori r3, r3, 2
+/* 8036DAA0 7C7F83A6 */ mtdbatl 3, r3
+/* 8036DAA4 606301FE */ ori r3, r3, 0x1fe
+/* 8036DAA8 7C7E83A6 */ mtdbatu 3, r3
+/* 8036DAAC 4C00012C */ isync
+/* 8036DAB0 3C60E000 */ lis r3, 0xe000
+/* 8036DAB4 38C00200 */ li r6, 0x200
+/* 8036DAB8 7CC903A6 */ mtctr r6
+/* 8036DABC 38C00000 */ li r6, 0x0
+lbl_8036dac0:
+/* 8036DAC0 10061FEC */ .4byte 0x10061fec
+/* 8036DAC4 38630020 */ addi r3, r3, 0x20
+/* 8036DAC8 4200FFF8 */ bdnz lbl_8036dac0
+/* 8036DACC 60000000 */ nop
+/* 8036DAD0 60000000 */ nop
+/* 8036DAD4 60000000 */ nop
+/* 8036DAD8 60000000 */ nop
+/* 8036DADC 60000000 */ nop
+/* 8036DAE0 60000000 */ nop
+/* 8036DAE4 60000000 */ nop
+/* 8036DAE8 60000000 */ nop
+/* 8036DAEC 60000000 */ nop
+/* 8036DAF0 60000000 */ nop
+/* 8036DAF4 60000000 */ nop
+/* 8036DAF8 60000000 */ nop
+/* 8036DAFC 4E800020 */ blr
+.size func_8036da34, . - func_8036da34
+
+
+.global func_8036db00
+.type func_8036db00, @function
+func_8036db00:
+/* 8036DB00 7C0802A6 */ mflr r0
+/* 8036DB04 90010004 */ stw r0, 4(r1)
+/* 8036DB08 9421FFF0 */ stwu r1, -0x10(r1)
+/* 8036DB0C 93E1000C */ stw r31, 0xc(r1)
+/* 8036DB10 48000FC5 */ bl func_8036ead4
+/* 8036DB14 7C7F1B78 */ mr r31, r3
+/* 8036DB18 4BFFFF1D */ bl func_8036da34
+/* 8036DB1C 7FE3FB78 */ mr r3, r31
+/* 8036DB20 48000FDD */ bl func_8036eafc
+/* 8036DB24 80010014 */ lwz r0, 0x14(r1)
+/* 8036DB28 83E1000C */ lwz r31, 0xc(r1)
+/* 8036DB2C 38210010 */ addi r1, r1, 0x10
+/* 8036DB30 7C0803A6 */ mtlr r0
+/* 8036DB34 4E800020 */ blr
+.size func_8036db00, . - func_8036db00
+
+
+.global func_8036db38
+.type func_8036db38, @function
+func_8036db38:
+/* 8036DB38 3C60E000 */ lis r3, 0xe000
+/* 8036DB3C 38800200 */ li r4, 0x200
+/* 8036DB40 7C8903A6 */ mtctr r4
+lbl_8036db44:
+/* 8036DB44 7C001BAC */ dcbi 0, r3
+/* 8036DB48 38630020 */ addi r3, r3, 0x20
+/* 8036DB4C 4200FFF8 */ bdnz lbl_8036db44
+/* 8036DB50 7C98E2A6 */ mfspr r4, 0x398
+/* 8036DB54 54840104 */ rlwinm r4, r4, 0, 4, 2
+/* 8036DB58 7C98E3A6 */ mtspr 0x398, r4
+/* 8036DB5C 4E800020 */ blr
+.size func_8036db38, . - func_8036db38
+
+
+.global func_8036db60
+.type func_8036db60, @function
+func_8036db60:
+/* 8036DB60 7C0802A6 */ mflr r0
+/* 8036DB64 90010004 */ stw r0, 4(r1)
+/* 8036DB68 9421FFF0 */ stwu r1, -0x10(r1)
+/* 8036DB6C 93E1000C */ stw r31, 0xc(r1)
+/* 8036DB70 7C0004AC */ sync 0
+/* 8036DB74 4BFFE625 */ bl func_8036c198
+/* 8036DB78 5463007E */ clrlwi r3, r3, 1
+/* 8036DB7C 4BFFE625 */ bl func_8036c1a0
+/* 8036DB80 7C0004AC */ sync 0
+/* 8036DB84 4BFFE615 */ bl func_8036c198
+/* 8036DB88 64630020 */ oris r3, r3, 0x20
+/* 8036DB8C 4BFFE615 */ bl func_8036c1a0
+/* 8036DB90 48000004 */ b lbl_8036db94
+lbl_8036db94:
+/* 8036DB94 48000004 */ b lbl_8036db98
+lbl_8036db98:
+/* 8036DB98 4BFFE601 */ bl func_8036c198
+/* 8036DB9C 546007FE */ clrlwi r0, r3, 0x1f
+/* 8036DBA0 28000000 */ cmplwi r0, 0
+/* 8036DBA4 4082FFF4 */ bne+ lbl_8036db98
+/* 8036DBA8 4BFFE5F1 */ bl func_8036c198
+/* 8036DBAC 546302D2 */ rlwinm r3, r3, 0, 0xb, 9
+/* 8036DBB0 4BFFE5F1 */ bl func_8036c1a0
+/* 8036DBB4 48000004 */ b lbl_8036dbb8
+lbl_8036dbb8:
+/* 8036DBB8 3C60804F */ lis r3, lbl_804eedf0@ha
+/* 8036DBBC 3BE3EDF0 */ addi r31, r3, lbl_804eedf0@l
+/* 8036DBC0 48000004 */ b lbl_8036dbc4
+lbl_8036dbc4:
+/* 8036DBC4 48000010 */ b lbl_8036dbd4
+lbl_8036dbc8:
+/* 8036DBC8 7FE3FB78 */ mr r3, r31
+/* 8036DBCC 4CC63182 */ crclr 6
+/* 8036DBD0 4BFFE6E1 */ bl func_8036c2b0
+lbl_8036dbd4:
+/* 8036DBD4 4BFFE5C5 */ bl func_8036c198
+/* 8036DBD8 546007FE */ clrlwi r0, r3, 0x1f
+/* 8036DBDC 28000000 */ cmplwi r0, 0
+/* 8036DBE0 4082FFE8 */ bne+ lbl_8036dbc8
+/* 8036DBE4 80010014 */ lwz r0, 0x14(r1)
+/* 8036DBE8 83E1000C */ lwz r31, 0xc(r1)
+/* 8036DBEC 38210010 */ addi r1, r1, 0x10
+/* 8036DBF0 7C0803A6 */ mtlr r0
+/* 8036DBF4 4E800020 */ blr
+.size func_8036db60, . - func_8036db60
+
+
+.global func_8036dbf8
+.type func_8036dbf8, @function
+func_8036dbf8:
+/* 8036DBF8 7C0802A6 */ mflr r0
+/* 8036DBFC 90010004 */ stw r0, 4(r1)
+/* 8036DC00 9421FF80 */ stwu r1, -0x80(r1)
+/* 8036DC04 93E1007C */ stw r31, 0x7c(r1)
+/* 8036DC08 93C10078 */ stw r30, 0x78(r1)
+/* 8036DC0C 93A10074 */ stw r29, 0x74(r1)
+/* 8036DC10 40860024 */ bne- cr1, lbl_8036dc34
+/* 8036DC14 D8210028 */ stfd f1, 0x28(r1)
+/* 8036DC18 D8410030 */ stfd f2, 0x30(r1)
+/* 8036DC1C D8610038 */ stfd f3, 0x38(r1)
+/* 8036DC20 D8810040 */ stfd f4, 0x40(r1)
+/* 8036DC24 D8A10048 */ stfd f5, 0x48(r1)
+/* 8036DC28 D8C10050 */ stfd f6, 0x50(r1)
+/* 8036DC2C D8E10058 */ stfd f7, 0x58(r1)
+/* 8036DC30 D9010060 */ stfd f8, 0x60(r1)
+lbl_8036dc34:
+/* 8036DC34 90610008 */ stw r3, 8(r1)
+/* 8036DC38 9081000C */ stw r4, 0xc(r1)
+/* 8036DC3C 90A10010 */ stw r5, 0x10(r1)
+/* 8036DC40 90C10014 */ stw r6, 0x14(r1)
+/* 8036DC44 90E10018 */ stw r7, 0x18(r1)
+/* 8036DC48 9101001C */ stw r8, 0x1c(r1)
+/* 8036DC4C 91210020 */ stw r9, 0x20(r1)
+/* 8036DC50 91410024 */ stw r10, 0x24(r1)
+/* 8036DC54 7C9D2378 */ mr r29, r4
+/* 8036DC58 3C60804F */ lis r3, lbl_804eedf0@ha
+/* 8036DC5C 3BE3EDF0 */ addi r31, r3, lbl_804eedf0@l
+/* 8036DC60 4BFFE56D */ bl func_8036c1cc
+/* 8036DC64 7C7E1B78 */ mr r30, r3
+/* 8036DC68 4CC63182 */ crclr 6
+/* 8036DC6C 387F002C */ addi r3, r31, 0x2c
+/* 8036DC70 48000A45 */ bl func_8036e6b4
+/* 8036DC74 80BD019C */ lwz r5, 0x19c(r29)
+/* 8036DC78 7FC4F378 */ mr r4, r30
+/* 8036DC7C 387F0044 */ addi r3, r31, 0x44
+/* 8036DC80 4CC63182 */ crclr 6
+/* 8036DC84 48000A31 */ bl func_8036e6b4
+/* 8036DC88 57C00216 */ rlwinm r0, r30, 0, 8, 0xb
+/* 8036DC8C 28000000 */ cmplwi r0, 0
+/* 8036DC90 41820014 */ beq- lbl_8036dca4
+/* 8036DC94 801D019C */ lwz r0, 0x19c(r29)
+/* 8036DC98 54000294 */ rlwinm r0, r0, 0, 0xa, 0xa
+/* 8036DC9C 28000000 */ cmplwi r0, 0
+/* 8036DCA0 4082001C */ bne- lbl_8036dcbc
+lbl_8036dca4:
+/* 8036DCA4 387F0060 */ addi r3, r31, 0x60
+/* 8036DCA8 4CC63182 */ crclr 6
+/* 8036DCAC 48000A09 */ bl func_8036e6b4
+/* 8036DCB0 7FA3EB78 */ mr r3, r29
+/* 8036DCB4 4800068D */ bl func_8036e340
+/* 8036DCB8 4BFFE501 */ bl func_8036c1b8
+lbl_8036dcbc:
+/* 8036DCBC 387F0090 */ addi r3, r31, 0x90
+/* 8036DCC0 4CC63182 */ crclr 6
+/* 8036DCC4 480009F1 */ bl func_8036e6b4
+/* 8036DCC8 387F00CC */ addi r3, r31, 0xcc
+/* 8036DCCC 4CC63182 */ crclr 6
+/* 8036DCD0 480009E5 */ bl func_8036e6b4
+/* 8036DCD4 57C00210 */ rlwinm r0, r30, 0, 8, 8
+/* 8036DCD8 28000000 */ cmplwi r0, 0
+/* 8036DCDC 41820010 */ beq- lbl_8036dcec
+/* 8036DCE0 387F0104 */ addi r3, r31, 0x104
+/* 8036DCE4 4CC63182 */ crclr 6
+/* 8036DCE8 480009CD */ bl func_8036e6b4
+lbl_8036dcec:
+/* 8036DCEC 57C00252 */ rlwinm r0, r30, 0, 9, 9
+/* 8036DCF0 28000000 */ cmplwi r0, 0
+/* 8036DCF4 41820010 */ beq- lbl_8036dd04
+/* 8036DCF8 387F0144 */ addi r3, r31, 0x144
+/* 8036DCFC 4CC63182 */ crclr 6
+/* 8036DD00 480009B5 */ bl func_8036e6b4
+lbl_8036dd04:
+/* 8036DD04 57C00294 */ rlwinm r0, r30, 0, 0xa, 0xa
+/* 8036DD08 28000000 */ cmplwi r0, 0
+/* 8036DD0C 41820010 */ beq- lbl_8036dd1c
+/* 8036DD10 387F0170 */ addi r3, r31, 0x170
+/* 8036DD14 4CC63182 */ crclr 6
+/* 8036DD18 4800099D */ bl func_8036e6b4
+lbl_8036dd1c:
+/* 8036DD1C 57C002D6 */ rlwinm r0, r30, 0, 0xb, 0xb
+/* 8036DD20 28000000 */ cmplwi r0, 0
+/* 8036DD24 41820010 */ beq- lbl_8036dd34
+/* 8036DD28 387F0190 */ addi r3, r31, 0x190
+/* 8036DD2C 4CC63182 */ crclr 6
+/* 8036DD30 48000985 */ bl func_8036e6b4
+lbl_8036dd34:
+/* 8036DD34 7FC3F378 */ mr r3, r30
+/* 8036DD38 4BFFE49D */ bl func_8036c1d4
+/* 8036DD3C 80010084 */ lwz r0, 0x84(r1)
+/* 8036DD40 83E1007C */ lwz r31, 0x7c(r1)
+/* 8036DD44 83C10078 */ lwz r30, 0x78(r1)
+/* 8036DD48 83A10074 */ lwz r29, 0x74(r1)
+/* 8036DD4C 38210080 */ addi r1, r1, 0x80
+/* 8036DD50 7C0803A6 */ mtlr r0
+/* 8036DD54 4E800020 */ blr
+.size func_8036dbf8, . - func_8036dbf8
+
+
+.global func_8036dd58
+.type func_8036dd58, @function
+func_8036dd58:
+/* 8036DD58 7C0802A6 */ mflr r0
+/* 8036DD5C 90010004 */ stw r0, 4(r1)
+/* 8036DD60 9421FFF0 */ stwu r1, -0x10(r1)
+/* 8036DD64 93E1000C */ stw r31, 0xc(r1)
+/* 8036DD68 93C10008 */ stw r30, 8(r1)
+/* 8036DD6C 3C60804F */ lis r3, lbl_804eedf0@ha
+/* 8036DD70 3BE3EDF0 */ addi r31, r3, lbl_804eedf0@l
+/* 8036DD74 4BFFE415 */ bl func_8036c188
+/* 8036DD78 54600420 */ rlwinm r0, r3, 0, 0x10, 0x10
+/* 8036DD7C 28000000 */ cmplwi r0, 0
+/* 8036DD80 40820014 */ bne- lbl_8036dd94
+/* 8036DD84 4BFFFC9D */ bl func_8036da20
+/* 8036DD88 387F01AC */ addi r3, r31, 0x1ac
+/* 8036DD8C 4CC63182 */ crclr 6
+/* 8036DD90 4BFFE521 */ bl func_8036c2b0
+lbl_8036dd94:
+/* 8036DD94 4BFFE3F5 */ bl func_8036c188
+/* 8036DD98 54600462 */ rlwinm r0, r3, 0, 0x11, 0x11
+/* 8036DD9C 28000000 */ cmplwi r0, 0
+/* 8036DDA0 40820014 */ bne- lbl_8036ddb4
+/* 8036DDA4 4BFFFB29 */ bl func_8036d8cc
+/* 8036DDA8 387F01C8 */ addi r3, r31, 0x1c8
+/* 8036DDAC 4CC63182 */ crclr 6
+/* 8036DDB0 4BFFE501 */ bl func_8036c2b0
+lbl_8036ddb4:
+/* 8036DDB4 4BFFE3E5 */ bl func_8036c198
+/* 8036DDB8 54600000 */ rlwinm r0, r3, 0, 0, 0
+/* 8036DDBC 28000000 */ cmplwi r0, 0
+/* 8036DDC0 40820058 */ bne- lbl_8036de18
+/* 8036DDC4 4BFFE3B5 */ bl func_8036c178
+/* 8036DDC8 7C7E1B78 */ mr r30, r3
+/* 8036DDCC 7C0004AC */ sync 0
+/* 8036DDD0 38600030 */ li r3, 0x30
+/* 8036DDD4 4BFFE3AD */ bl func_8036c180
+/* 8036DDD8 7C0004AC */ sync 0
+/* 8036DDDC 7C0004AC */ sync 0
+/* 8036DDE0 4BFFE3B9 */ bl func_8036c198
+/* 8036DDE4 5463007E */ clrlwi r3, r3, 1
+/* 8036DDE8 4BFFE3B9 */ bl func_8036c1a0
+/* 8036DDEC 7C0004AC */ sync 0
+/* 8036DDF0 4BFFFD71 */ bl func_8036db60
+/* 8036DDF4 7FC3F378 */ mr r3, r30
+/* 8036DDF8 4BFFE389 */ bl func_8036c180
+/* 8036DDFC 4BFFE39D */ bl func_8036c198
+/* 8036DE00 64608000 */ oris r0, r3, 0x8000
+/* 8036DE04 540302D2 */ rlwinm r3, r0, 0, 0xb, 9
+/* 8036DE08 4BFFE399 */ bl func_8036c1a0
+/* 8036DE0C 387F01E4 */ addi r3, r31, 0x1e4
+/* 8036DE10 4CC63182 */ crclr 6
+/* 8036DE14 4BFFE49D */ bl func_8036c2b0
+lbl_8036de18:
+/* 8036DE18 3C608037 */ lis r3, func_8036dbf8@ha
+/* 8036DE1C 3883DBF8 */ addi r4, r3, func_8036dbf8@l
+/* 8036DE20 38600001 */ li r3, 0x1
+/* 8036DE24 48000A3D */ bl func_8036e860
+/* 8036DE28 387F01FC */ addi r3, r31, 0x1fc
+/* 8036DE2C 4CC63182 */ crclr 6
+/* 8036DE30 4BFFE481 */ bl func_8036c2b0
+/* 8036DE34 80010014 */ lwz r0, 0x14(r1)
+/* 8036DE38 83E1000C */ lwz r31, 0xc(r1)
+/* 8036DE3C 83C10008 */ lwz r30, 8(r1)
+/* 8036DE40 38210010 */ addi r1, r1, 0x10
+/* 8036DE44 7C0803A6 */ mtlr r0
+/* 8036DE48 4E800020 */ blr
+.size func_8036dd58, . - func_8036dd58
+
diff --git a/asm/Dolphin/os/OSContext-data.s b/asm/Dolphin/os/OSContext-data.s
new file mode 100644
index 0000000..087b4a0
--- /dev/null
+++ b/asm/Dolphin/os/OSContext-data.s
@@ -0,0 +1,135 @@
+.include "macros.inc"
+
+.section .data
+
+.balign 8
+
+.global lbl_804ef020
+.type lbl_804ef020, @object
+lbl_804ef020:
+/* 804EF020 2D2D2D2D */ .4byte 0x2d2d2d2d
+/* 804EF024 2D2D2D2D */ .4byte 0x2d2d2d2d
+/* 804EF028 2D2D2D2D */ .4byte 0x2d2d2d2d
+/* 804EF02C 2D2D2D2D */ .4byte 0x2d2d2d2d
+/* 804EF030 2D2D2D2D */ .4byte 0x2d2d2d2d
+/* 804EF034 2D2D2D2D */ .4byte 0x2d2d2d2d
+/* 804EF038 2D20436F */ .4byte 0x2d20436f
+/* 804EF03C 6E746578 */ .4byte 0x6e746578
+/* 804EF040 74203078 */ .4byte 0x74203078
+/* 804EF044 25303878 */ .4byte 0x25303878
+/* 804EF048 202D2D2D */ .4byte 0x202d2d2d
+/* 804EF04C 2D2D2D2D */ .4byte 0x2d2d2d2d
+/* 804EF050 2D2D2D2D */ .4byte 0x2d2d2d2d
+/* 804EF054 2D2D2D2D */ .4byte 0x2d2d2d2d
+/* 804EF058 2D2D2D2D */ .4byte 0x2d2d2d2d
+/* 804EF05C 2D2D2D2D */ .4byte 0x2d2d2d2d
+/* 804EF060 2D2D0A00 */ .4byte 0x2d2d0a00
+/* 804EF064 72252D32 */ .4byte 0x72252d32
+/* 804EF068 6420203D */ .4byte 0x6420203d
+/* 804EF06C 20307825 */ .4byte 0x20307825
+/* 804EF070 30387820 */ .4byte 0x30387820
+/* 804EF074 28253134 */ .4byte 0x28253134
+/* 804EF078 64292020 */ .4byte 0x64292020
+/* 804EF07C 72252D32 */ .4byte 0x72252d32
+/* 804EF080 6420203D */ .4byte 0x6420203d
+/* 804EF084 20307825 */ .4byte 0x20307825
+/* 804EF088 30387820 */ .4byte 0x30387820
+/* 804EF08C 28253134 */ .4byte 0x28253134
+/* 804EF090 64290A00 */ .4byte 0x64290a00
+/* 804EF094 4C522020 */ .4byte 0x4c522020
+/* 804EF098 203D2030 */ .4byte 0x203d2030
+/* 804EF09C 78253038 */ .4byte 0x78253038
+/* 804EF0A0 78202020 */ .4byte 0x78202020
+/* 804EF0A4 20202020 */ .4byte 0x20202020
+/* 804EF0A8 20202020 */ .4byte 0x20202020
+/* 804EF0AC 20202020 */ .4byte 0x20202020
+/* 804EF0B0 20202020 */ .4byte 0x20202020
+/* 804EF0B4 43522020 */ .4byte 0x43522020
+/* 804EF0B8 203D2030 */ .4byte 0x203d2030
+/* 804EF0BC 78253038 */ .4byte 0x78253038
+/* 804EF0C0 780A0000 */ .4byte 0x780a0000
+/* 804EF0C4 53525230 */ .4byte 0x53525230
+/* 804EF0C8 203D2030 */ .4byte 0x203d2030
+/* 804EF0CC 78253038 */ .4byte 0x78253038
+/* 804EF0D0 78202020 */ .4byte 0x78202020
+/* 804EF0D4 20202020 */ .4byte 0x20202020
+/* 804EF0D8 20202020 */ .4byte 0x20202020
+/* 804EF0DC 20202020 */ .4byte 0x20202020
+/* 804EF0E0 20202020 */ .4byte 0x20202020
+/* 804EF0E4 53525231 */ .4byte 0x53525231
+/* 804EF0E8 203D2030 */ .4byte 0x203d2030
+/* 804EF0EC 78253038 */ .4byte 0x78253038
+/* 804EF0F0 780A0000 */ .4byte 0x780a0000
+/* 804EF0F4 0A475152 */ .4byte 0x0a475152
+/* 804EF0F8 732D2D2D */ .4byte 0x732d2d2d
+/* 804EF0FC 2D2D2D2D */ .4byte 0x2d2d2d2d
+/* 804EF100 2D2D2D0A */ .4byte 0x2d2d2d0a
+/* 804EF104 00000000 */ .4byte 0x00000000
+/* 804EF108 67717225 */ .4byte 0x67717225
+/* 804EF10C 64203D20 */ .4byte 0x64203d20
+/* 804EF110 30782530 */ .4byte 0x30782530
+/* 804EF114 38782009 */ .4byte 0x38782009
+/* 804EF118 20677172 */ .4byte 0x20677172
+/* 804EF11C 2564203D */ .4byte 0x2564203d
+/* 804EF120 20307825 */ .4byte 0x20307825
+/* 804EF124 3038780A */ .4byte 0x3038780a
+/* 804EF128 00000000 */ .4byte 0x00000000
+/* 804EF12C 0A0A4650 */ .4byte 0x0a0a4650
+/* 804EF130 52732D2D */ .4byte 0x52732d2d
+/* 804EF134 2D2D2D2D */ .4byte 0x2d2d2d2d
+/* 804EF138 2D2D2D2D */ .4byte 0x2d2d2d2d
+/* 804EF13C 0A000000 */ .4byte 0x0a000000
+/* 804EF140 66722564 */ .4byte 0x66722564
+/* 804EF144 20093D20 */ .4byte 0x20093d20
+/* 804EF148 25642009 */ .4byte 0x25642009
+/* 804EF14C 20667225 */ .4byte 0x20667225
+/* 804EF150 6420093D */ .4byte 0x6420093d
+/* 804EF154 2025640A */ .4byte 0x2025640a
+/* 804EF158 00000000 */ .4byte 0x00000000
+/* 804EF15C 0A0A5053 */ .4byte 0x0a0a5053
+/* 804EF160 46732D2D */ .4byte 0x46732d2d
+/* 804EF164 2D2D2D2D */ .4byte 0x2d2d2d2d
+/* 804EF168 2D2D2D2D */ .4byte 0x2d2d2d2d
+/* 804EF16C 0A000000 */ .4byte 0x0a000000
+/* 804EF170 70732564 */ .4byte 0x70732564
+/* 804EF174 20093D20 */ .4byte 0x20093d20
+/* 804EF178 30782578 */ .4byte 0x30782578
+/* 804EF17C 20092070 */ .4byte 0x20092070
+/* 804EF180 73256420 */ .4byte 0x73256420
+/* 804EF184 093D2030 */ .4byte 0x093d2030
+/* 804EF188 7825780A */ .4byte 0x7825780a
+/* 804EF18C 00000000 */ .4byte 0x00000000
+/* 804EF190 0A416464 */ .4byte 0x0a416464
+/* 804EF194 72657373 */ .4byte 0x72657373
+/* 804EF198 3A202020 */ .4byte 0x3a202020
+/* 804EF19C 20202042 */ .4byte 0x20202042
+/* 804EF1A0 61636B20 */ .4byte 0x61636b20
+/* 804EF1A4 43686169 */ .4byte 0x43686169
+/* 804EF1A8 6E202020 */ .4byte 0x6e202020
+/* 804EF1AC 204C5220 */ .4byte 0x204c5220
+/* 804EF1B0 53617665 */ .4byte 0x53617665
+/* 804EF1B4 0A000000 */ .4byte 0x0a000000
+/* 804EF1B8 30782530 */ .4byte 0x30782530
+/* 804EF1BC 38783A20 */ .4byte 0x38783a20
+/* 804EF1C0 20203078 */ .4byte 0x20203078
+/* 804EF1C4 25303878 */ .4byte 0x25303878
+/* 804EF1C8 20202020 */ .4byte 0x20202020
+/* 804EF1CC 30782530 */ .4byte 0x30782530
+/* 804EF1D0 38780A00 */ .4byte 0x38780a00
+.size lbl_804ef020, . - lbl_804ef020
+
+
+.global lbl_804ef1d4
+.type lbl_804ef1d4, @object
+lbl_804ef1d4:
+/* 804EF1D4 4650552D */ .4byte 0x4650552d
+/* 804EF1D8 756E6176 */ .4byte 0x756e6176
+/* 804EF1DC 61696C61 */ .4byte 0x61696c61
+/* 804EF1E0 626C6520 */ .4byte 0x626c6520
+/* 804EF1E4 68616E64 */ .4byte 0x68616e64
+/* 804EF1E8 6C657220 */ .4byte 0x6c657220
+/* 804EF1EC 696E7374 */ .4byte 0x696e7374
+/* 804EF1F0 616C6C65 */ .4byte 0x616c6c65
+/* 804EF1F4 640A0000 */ .4byte 0x640a0000
+.size lbl_804ef1d4, . - lbl_804ef1d4
+
diff --git a/asm/Dolphin/os/OSContext.s b/asm/Dolphin/os/OSContext.s
new file mode 100644
index 0000000..23fa01a
--- /dev/null
+++ b/asm/Dolphin/os/OSContext.s
@@ -0,0 +1,643 @@
+.include "macros.inc"
+
+.section .text
+
+.global func_8036de4c
+.type func_8036de4c, @function
+func_8036de4c:
+/* 8036DE4C A0A401A2 */ lhz r5, 0x1a2(r4)
+/* 8036DE50 54A507FF */ clrlwi. r5, r5, 0x1f
+/* 8036DE54 41820118 */ beq- lbl_8036df6c
+/* 8036DE58 C8040190 */ lfd f0, 0x190(r4)
+/* 8036DE5C FDFE058E */ mtfsf 0xff, f0
+/* 8036DE60 7CB8E2A6 */ mfspr r5, 0x398
+/* 8036DE64 54A51FFF */ rlwinm. r5, r5, 3, 0x1f, 0x1f
+/* 8036DE68 41820084 */ beq- lbl_8036deec
+/* 8036DE6C E00401C8 */ .4byte 0xe00401c8
+/* 8036DE70 E02401D0 */ .4byte 0xe02401d0
+/* 8036DE74 E04401D8 */ .4byte 0xe04401d8
+/* 8036DE78 E06401E0 */ .4byte 0xe06401e0
+/* 8036DE7C E08401E8 */ .4byte 0xe08401e8
+/* 8036DE80 E0A401F0 */ .4byte 0xe0a401f0
+/* 8036DE84 E0C401F8 */ .4byte 0xe0c401f8
+/* 8036DE88 E0E40200 */ .4byte 0xe0e40200
+/* 8036DE8C E1040208 */ .4byte 0xe1040208
+/* 8036DE90 E1240210 */ .4byte 0xe1240210
+/* 8036DE94 E1440218 */ .4byte 0xe1440218
+/* 8036DE98 E1640220 */ .4byte 0xe1640220
+/* 8036DE9C E1840228 */ .4byte 0xe1840228
+/* 8036DEA0 E1A40230 */ .4byte 0xe1a40230
+/* 8036DEA4 E1C40238 */ .4byte 0xe1c40238
+/* 8036DEA8 E1E40240 */ .4byte 0xe1e40240
+/* 8036DEAC E2040248 */ .4byte 0xe2040248
+/* 8036DEB0 E2240250 */ .4byte 0xe2240250
+/* 8036DEB4 E2440258 */ .4byte 0xe2440258
+/* 8036DEB8 E2640260 */ .4byte 0xe2640260
+/* 8036DEBC E2840268 */ .4byte 0xe2840268
+/* 8036DEC0 E2A40270 */ .4byte 0xe2a40270
+/* 8036DEC4 E2C40278 */ .4byte 0xe2c40278
+/* 8036DEC8 E2E40280 */ .4byte 0xe2e40280
+/* 8036DECC E3040288 */ .4byte 0xe3040288
+/* 8036DED0 E3240290 */ .4byte 0xe3240290
+/* 8036DED4 E3440298 */ .4byte 0xe3440298
+/* 8036DED8 E36402A0 */ .4byte 0xe36402a0
+/* 8036DEDC E38402A8 */ .4byte 0xe38402a8
+/* 8036DEE0 E3A402B0 */ .4byte 0xe3a402b0
+/* 8036DEE4 E3C402B8 */ .4byte 0xe3c402b8
+/* 8036DEE8 E3E402C0 */ .4byte 0xe3e402c0
+lbl_8036deec:
+/* 8036DEEC C8040090 */ lfd f0, 0x90(r4)
+/* 8036DEF0 C8240098 */ lfd f1, 0x98(r4)
+/* 8036DEF4 C84400A0 */ lfd f2, 0xa0(r4)
+/* 8036DEF8 C86400A8 */ lfd f3, 0xa8(r4)
+/* 8036DEFC C88400B0 */ lfd f4, 0xb0(r4)
+/* 8036DF00 C8A400B8 */ lfd f5, 0xb8(r4)
+/* 8036DF04 C8C400C0 */ lfd f6, 0xc0(r4)
+/* 8036DF08 C8E400C8 */ lfd f7, 0xc8(r4)
+/* 8036DF0C C90400D0 */ lfd f8, 0xd0(r4)
+/* 8036DF10 C92400D8 */ lfd f9, 0xd8(r4)
+/* 8036DF14 C94400E0 */ lfd f10, 0xe0(r4)
+/* 8036DF18 C96400E8 */ lfd f11, 0xe8(r4)
+/* 8036DF1C C98400F0 */ lfd f12, 0xf0(r4)
+/* 8036DF20 C9A400F8 */ lfd f13, 0xf8(r4)
+/* 8036DF24 C9C40100 */ lfd f14, 0x100(r4)
+/* 8036DF28 C9E40108 */ lfd f15, 0x108(r4)
+/* 8036DF2C CA040110 */ lfd f16, 0x110(r4)
+/* 8036DF30 CA240118 */ lfd f17, 0x118(r4)
+/* 8036DF34 CA440120 */ lfd f18, 0x120(r4)
+/* 8036DF38 CA640128 */ lfd f19, 0x128(r4)
+/* 8036DF3C CA840130 */ lfd f20, 0x130(r4)
+/* 8036DF40 CAA40138 */ lfd f21, 0x138(r4)
+/* 8036DF44 CAC40140 */ lfd f22, 0x140(r4)
+/* 8036DF48 CAE40148 */ lfd f23, 0x148(r4)
+/* 8036DF4C CB040150 */ lfd f24, 0x150(r4)
+/* 8036DF50 CB240158 */ lfd f25, 0x158(r4)
+/* 8036DF54 CB440160 */ lfd f26, 0x160(r4)
+/* 8036DF58 CB640168 */ lfd f27, 0x168(r4)
+/* 8036DF5C CB840170 */ lfd f28, 0x170(r4)
+/* 8036DF60 CBA40178 */ lfd f29, 0x178(r4)
+/* 8036DF64 CBC40180 */ lfd f30, 0x180(r4)
+/* 8036DF68 CBE40188 */ lfd f31, 0x188(r4)
+lbl_8036df6c:
+/* 8036DF6C 4E800020 */ blr
+.size func_8036de4c, . - func_8036de4c
+
+
+.global func_8036df70
+.type func_8036df70, @function
+func_8036df70:
+/* 8036DF70 A06501A2 */ lhz r3, 0x1a2(r5)
+/* 8036DF74 60630001 */ ori r3, r3, 1
+/* 8036DF78 B06501A2 */ sth r3, 0x1a2(r5)
+/* 8036DF7C D8050090 */ stfd f0, 0x90(r5)
+/* 8036DF80 D8250098 */ stfd f1, 0x98(r5)
+/* 8036DF84 D84500A0 */ stfd f2, 0xa0(r5)
+/* 8036DF88 D86500A8 */ stfd f3, 0xa8(r5)
+/* 8036DF8C D88500B0 */ stfd f4, 0xb0(r5)
+/* 8036DF90 D8A500B8 */ stfd f5, 0xb8(r5)
+/* 8036DF94 D8C500C0 */ stfd f6, 0xc0(r5)
+/* 8036DF98 D8E500C8 */ stfd f7, 0xc8(r5)
+/* 8036DF9C D90500D0 */ stfd f8, 0xd0(r5)
+/* 8036DFA0 D92500D8 */ stfd f9, 0xd8(r5)
+/* 8036DFA4 D94500E0 */ stfd f10, 0xe0(r5)
+/* 8036DFA8 D96500E8 */ stfd f11, 0xe8(r5)
+/* 8036DFAC D98500F0 */ stfd f12, 0xf0(r5)
+/* 8036DFB0 D9A500F8 */ stfd f13, 0xf8(r5)
+/* 8036DFB4 D9C50100 */ stfd f14, 0x100(r5)
+/* 8036DFB8 D9E50108 */ stfd f15, 0x108(r5)
+/* 8036DFBC DA050110 */ stfd f16, 0x110(r5)
+/* 8036DFC0 DA250118 */ stfd f17, 0x118(r5)
+/* 8036DFC4 DA450120 */ stfd f18, 0x120(r5)
+/* 8036DFC8 DA650128 */ stfd f19, 0x128(r5)
+/* 8036DFCC DA850130 */ stfd f20, 0x130(r5)
+/* 8036DFD0 DAA50138 */ stfd f21, 0x138(r5)
+/* 8036DFD4 DAC50140 */ stfd f22, 0x140(r5)
+/* 8036DFD8 DAE50148 */ stfd f23, 0x148(r5)
+/* 8036DFDC DB050150 */ stfd f24, 0x150(r5)
+/* 8036DFE0 DB250158 */ stfd f25, 0x158(r5)
+/* 8036DFE4 DB450160 */ stfd f26, 0x160(r5)
+/* 8036DFE8 DB650168 */ stfd f27, 0x168(r5)
+/* 8036DFEC DB850170 */ stfd f28, 0x170(r5)
+/* 8036DFF0 DBA50178 */ stfd f29, 0x178(r5)
+/* 8036DFF4 DBC50180 */ stfd f30, 0x180(r5)
+/* 8036DFF8 DBE50188 */ stfd f31, 0x188(r5)
+/* 8036DFFC FC00048E */ mffs f0
+/* 8036E000 D8050190 */ stfd f0, 0x190(r5)
+/* 8036E004 C8050090 */ lfd f0, 0x90(r5)
+/* 8036E008 7C78E2A6 */ mfspr r3, 0x398
+/* 8036E00C 54631FFF */ rlwinm. r3, r3, 3, 0x1f, 0x1f
+/* 8036E010 41820084 */ beq- lbl_8036e094
+/* 8036E014 F00501C8 */ .4byte 0xf00501c8
+/* 8036E018 F02501D0 */ .4byte 0xf02501d0
+/* 8036E01C F04501D8 */ .4byte 0xf04501d8
+/* 8036E020 F06501E0 */ .4byte 0xf06501e0
+/* 8036E024 F08501E8 */ .4byte 0xf08501e8
+/* 8036E028 F0A501F0 */ .4byte 0xf0a501f0
+/* 8036E02C F0C501F8 */ .4byte 0xf0c501f8
+/* 8036E030 F0E50200 */ .4byte 0xf0e50200
+/* 8036E034 F1050208 */ .4byte 0xf1050208
+/* 8036E038 F1250210 */ .4byte 0xf1250210
+/* 8036E03C F1450218 */ .4byte 0xf1450218
+/* 8036E040 F1650220 */ .4byte 0xf1650220
+/* 8036E044 F1850228 */ .4byte 0xf1850228
+/* 8036E048 F1A50230 */ .4byte 0xf1a50230
+/* 8036E04C F1C50238 */ .4byte 0xf1c50238
+/* 8036E050 F1E50240 */ .4byte 0xf1e50240
+/* 8036E054 F2050248 */ .4byte 0xf2050248
+/* 8036E058 F2250250 */ .4byte 0xf2250250
+/* 8036E05C F2450258 */ .4byte 0xf2450258
+/* 8036E060 F2650260 */ .4byte 0xf2650260
+/* 8036E064 F2850268 */ .4byte 0xf2850268
+/* 8036E068 F2A50270 */ .4byte 0xf2a50270
+/* 8036E06C F2C50278 */ .4byte 0xf2c50278
+/* 8036E070 F2E50280 */ .4byte 0xf2e50280
+/* 8036E074 F3050288 */ .4byte 0xf3050288
+/* 8036E078 F3250290 */ .4byte 0xf3250290
+/* 8036E07C F3450298 */ .4byte 0xf3450298
+/* 8036E080 F36502A0 */ .4byte 0xf36502a0
+/* 8036E084 F38502A8 */ .4byte 0xf38502a8
+/* 8036E088 F3A502B0 */ .4byte 0xf3a502b0
+/* 8036E08C F3C502B8 */ .4byte 0xf3c502b8
+/* 8036E090 F3E502C0 */ .4byte 0xf3e502c0
+lbl_8036e094:
+/* 8036E094 4E800020 */ blr
+.size func_8036df70, . - func_8036df70
+
+
+.global func_8036e098
+.type func_8036e098, @function
+func_8036e098:
+/* 8036E098 3C808000 */ lis r4, 0x8000
+/* 8036E09C 906400D4 */ stw r3, 0xd4(r4)
+/* 8036E0A0 546500BE */ clrlwi r5, r3, 2
+/* 8036E0A4 90A400C0 */ stw r5, 0xc0(r4)
+/* 8036E0A8 80A400D8 */ lwz r5, 0xd8(r4)
+/* 8036E0AC 7C051800 */ cmpw r5, r3
+/* 8036E0B0 40820020 */ bne- lbl_8036e0d0
+/* 8036E0B4 80C3019C */ lwz r6, 0x19c(r3)
+/* 8036E0B8 60C62000 */ ori r6, r6, 0x2000
+/* 8036E0BC 90C3019C */ stw r6, 0x19c(r3)
+/* 8036E0C0 7CC000A6 */ mfmsr r6
+/* 8036E0C4 60C60002 */ ori r6, r6, 2
+/* 8036E0C8 7CC00124 */ mtmsr r6
+/* 8036E0CC 4E800020 */ blr
+lbl_8036e0d0:
+/* 8036E0D0 80C3019C */ lwz r6, 0x19c(r3)
+/* 8036E0D4 54C604E2 */ rlwinm r6, r6, 0, 0x13, 0x11
+/* 8036E0D8 90C3019C */ stw r6, 0x19c(r3)
+/* 8036E0DC 7CC000A6 */ mfmsr r6
+/* 8036E0E0 54C604E2 */ rlwinm r6, r6, 0, 0x13, 0x11
+/* 8036E0E4 60C60002 */ ori r6, r6, 2
+/* 8036E0E8 7CC00124 */ mtmsr r6
+/* 8036E0EC 4C00012C */ isync
+/* 8036E0F0 4E800020 */ blr
+.size func_8036e098, . - func_8036e098
+
+
+.global func_8036e0f4
+.type func_8036e0f4, @function
+func_8036e0f4:
+/* 8036E0F4 3C608000 */ lis r3, 0x8000
+/* 8036E0F8 806300D4 */ lwz r3, 0xd4(r3)
+/* 8036E0FC 4E800020 */ blr
+.size func_8036e0f4, . - func_8036e0f4
+
+
+.global func_8036e100
+.type func_8036e100, @function
+func_8036e100:
+/* 8036E100 BDA30034 */ stmw r13, 0x34(r3)
+/* 8036E104 7C11E2A6 */ mfspr r0, 0x391
+/* 8036E108 900301A8 */ stw r0, 0x1a8(r3)
+/* 8036E10C 7C12E2A6 */ mfspr r0, 0x392
+/* 8036E110 900301AC */ stw r0, 0x1ac(r3)
+/* 8036E114 7C13E2A6 */ mfspr r0, 0x393
+/* 8036E118 900301B0 */ stw r0, 0x1b0(r3)
+/* 8036E11C 7C14E2A6 */ mfspr r0, 0x394
+/* 8036E120 900301B4 */ stw r0, 0x1b4(r3)
+/* 8036E124 7C15E2A6 */ mfspr r0, 0x395
+/* 8036E128 900301B8 */ stw r0, 0x1b8(r3)
+/* 8036E12C 7C16E2A6 */ mfspr r0, 0x396
+/* 8036E130 900301BC */ stw r0, 0x1bc(r3)
+/* 8036E134 7C17E2A6 */ mfspr r0, 0x397
+/* 8036E138 900301C0 */ stw r0, 0x1c0(r3)
+/* 8036E13C 7C000026 */ mfcr r0
+/* 8036E140 90030080 */ stw r0, 0x80(r3)
+/* 8036E144 7C0802A6 */ mflr r0
+/* 8036E148 90030084 */ stw r0, 0x84(r3)
+/* 8036E14C 90030198 */ stw r0, 0x198(r3)
+/* 8036E150 7C0000A6 */ mfmsr r0
+/* 8036E154 9003019C */ stw r0, 0x19c(r3)
+/* 8036E158 7C0902A6 */ mfctr r0
+/* 8036E15C 90030088 */ stw r0, 0x88(r3)
+/* 8036E160 7C0102A6 */ mfxer r0
+/* 8036E164 9003008C */ stw r0, 0x8c(r3)
+/* 8036E168 90230004 */ stw r1, 4(r3)
+/* 8036E16C 90430008 */ stw r2, 8(r3)
+/* 8036E170 38000001 */ li r0, 0x1
+/* 8036E174 9003000C */ stw r0, 0xc(r3)
+/* 8036E178 38600000 */ li r3, 0x0
+/* 8036E17C 4E800020 */ blr
+.size func_8036e100, . - func_8036e100
+
+
+.global func_8036e180
+.type func_8036e180, @function
+func_8036e180:
+/* 8036E180 3C808037 */ lis r4, func_8036ead4@ha
+/* 8036E184 80C30198 */ lwz r6, 0x198(r3)
+/* 8036E188 38A4EAD4 */ addi r5, r4, func_8036ead4@l
+/* 8036E18C 7C062840 */ cmplw r6, r5
+/* 8036E190 41800018 */ blt- lbl_8036e1a8
+/* 8036E194 3C808037 */ lis r4, func_8036eae4@ha
+/* 8036E198 3804EAE4 */ addi r0, r4, func_8036eae4@l
+/* 8036E19C 7C060040 */ cmplw r6, r0
+/* 8036E1A0 41810008 */ bgt- lbl_8036e1a8
+/* 8036E1A4 90A30198 */ stw r5, 0x198(r3)
+lbl_8036e1a8:
+/* 8036E1A8 80030000 */ lwz r0, 0(r3)
+/* 8036E1AC 80230004 */ lwz r1, 4(r3)
+/* 8036E1B0 80430008 */ lwz r2, 8(r3)
+/* 8036E1B4 A08301A2 */ lhz r4, 0x1a2(r3)
+/* 8036E1B8 548507BD */ rlwinm. r5, r4, 0, 0x1e, 0x1e
+/* 8036E1BC 41820014 */ beq- lbl_8036e1d0
+/* 8036E1C0 548407FA */ rlwinm r4, r4, 0, 0x1f, 0x1d
+/* 8036E1C4 B08301A2 */ sth r4, 0x1a2(r3)
+/* 8036E1C8 B8A30014 */ lmw r5, 0x14(r3)
+/* 8036E1CC 48000008 */ b lbl_8036e1d4
+lbl_8036e1d0:
+/* 8036E1D0 B9A30034 */ lmw r13, 0x34(r3)
+lbl_8036e1d4:
+/* 8036E1D4 808301A8 */ lwz r4, 0x1a8(r3)
+/* 8036E1D8 7C91E3A6 */ mtspr 0x391, r4
+/* 8036E1DC 808301AC */ lwz r4, 0x1ac(r3)
+/* 8036E1E0 7C92E3A6 */ mtspr 0x392, r4
+/* 8036E1E4 808301B0 */ lwz r4, 0x1b0(r3)
+/* 8036E1E8 7C93E3A6 */ mtspr 0x393, r4
+/* 8036E1EC 808301B4 */ lwz r4, 0x1b4(r3)
+/* 8036E1F0 7C94E3A6 */ mtspr 0x394, r4
+/* 8036E1F4 808301B8 */ lwz r4, 0x1b8(r3)
+/* 8036E1F8 7C95E3A6 */ mtspr 0x395, r4
+/* 8036E1FC 808301BC */ lwz r4, 0x1bc(r3)
+/* 8036E200 7C96E3A6 */ mtspr 0x396, r4
+/* 8036E204 808301C0 */ lwz r4, 0x1c0(r3)
+/* 8036E208 7C97E3A6 */ mtspr 0x397, r4
+/* 8036E20C 80830080 */ lwz r4, 0x80(r3)
+/* 8036E210 7C8FF120 */ mtcrf 0xff, r4
+/* 8036E214 80830084 */ lwz r4, 0x84(r3)
+/* 8036E218 7C8803A6 */ mtlr r4
+/* 8036E21C 80830088 */ lwz r4, 0x88(r3)
+/* 8036E220 7C8903A6 */ mtctr r4
+/* 8036E224 8083008C */ lwz r4, 0x8c(r3)
+/* 8036E228 7C8103A6 */ mtxer r4
+/* 8036E22C 7C8000A6 */ mfmsr r4
+/* 8036E230 5484045E */ rlwinm r4, r4, 0, 0x11, 0xf
+/* 8036E234 548407FA */ rlwinm r4, r4, 0, 0x1f, 0x1d
+/* 8036E238 7C800124 */ mtmsr r4
+/* 8036E23C 80830198 */ lwz r4, 0x198(r3)
+/* 8036E240 7C9A03A6 */ mtspr 0x1a, r4
+/* 8036E244 8083019C */ lwz r4, 0x19c(r3)
+/* 8036E248 7C9B03A6 */ mtspr 0x1b, r4
+/* 8036E24C 80830010 */ lwz r4, 0x10(r3)
+/* 8036E250 8063000C */ lwz r3, 0xc(r3)
+/* 8036E254 4C000064 */ rfi
+.size func_8036e180, . - func_8036e180
+
+
+.global func_8036e258
+.type func_8036e258, @function
+func_8036e258:
+/* 8036E258 7C230B78 */ mr r3, r1
+/* 8036E25C 4E800020 */ blr
+.size func_8036e258, . - func_8036e258
+
+
+.global func_8036e260
+.type func_8036e260, @function
+func_8036e260:
+/* 8036E260 38A00000 */ li r5, 0x0
+/* 8036E264 B0A301A0 */ sth r5, 0x1a0(r3)
+/* 8036E268 3C808000 */ lis r4, 0x8000
+/* 8036E26C B0A301A2 */ sth r5, 0x1a2(r3)
+/* 8036E270 800400D8 */ lwz r0, 0xd8(r4)
+/* 8036E274 7C030040 */ cmplw r3, r0
+/* 8036E278 40820008 */ bne- lbl_8036e280
+/* 8036E27C 90A400D8 */ stw r5, 0xd8(r4)
+lbl_8036e280:
+/* 8036E280 4E800020 */ blr
+.size func_8036e260, . - func_8036e260
+
+
+.global func_8036e284
+.type func_8036e284, @function
+func_8036e284:
+/* 8036E284 90830198 */ stw r4, 0x198(r3)
+/* 8036E288 90A30004 */ stw r5, 4(r3)
+/* 8036E28C 39600000 */ li r11, 0x0
+/* 8036E290 616B9032 */ ori r11, r11, 0x9032
+/* 8036E294 9163019C */ stw r11, 0x19c(r3)
+/* 8036E298 38000000 */ li r0, 0x0
+/* 8036E29C 90030080 */ stw r0, 0x80(r3)
+/* 8036E2A0 9003008C */ stw r0, 0x8c(r3)
+/* 8036E2A4 90430008 */ stw r2, 8(r3)
+/* 8036E2A8 91A30034 */ stw r13, 0x34(r3)
+/* 8036E2AC 9003000C */ stw r0, 0xc(r3)
+/* 8036E2B0 90030010 */ stw r0, 0x10(r3)
+/* 8036E2B4 90030014 */ stw r0, 0x14(r3)
+/* 8036E2B8 90030018 */ stw r0, 0x18(r3)
+/* 8036E2BC 9003001C */ stw r0, 0x1c(r3)
+/* 8036E2C0 90030020 */ stw r0, 0x20(r3)
+/* 8036E2C4 90030024 */ stw r0, 0x24(r3)
+/* 8036E2C8 90030028 */ stw r0, 0x28(r3)
+/* 8036E2CC 9003002C */ stw r0, 0x2c(r3)
+/* 8036E2D0 90030030 */ stw r0, 0x30(r3)
+/* 8036E2D4 90030038 */ stw r0, 0x38(r3)
+/* 8036E2D8 9003003C */ stw r0, 0x3c(r3)
+/* 8036E2DC 90030040 */ stw r0, 0x40(r3)
+/* 8036E2E0 90030044 */ stw r0, 0x44(r3)
+/* 8036E2E4 90030048 */ stw r0, 0x48(r3)
+/* 8036E2E8 9003004C */ stw r0, 0x4c(r3)
+/* 8036E2EC 90030050 */ stw r0, 0x50(r3)
+/* 8036E2F0 90030054 */ stw r0, 0x54(r3)
+/* 8036E2F4 90030058 */ stw r0, 0x58(r3)
+/* 8036E2F8 9003005C */ stw r0, 0x5c(r3)
+/* 8036E2FC 90030060 */ stw r0, 0x60(r3)
+/* 8036E300 90030064 */ stw r0, 0x64(r3)
+/* 8036E304 90030068 */ stw r0, 0x68(r3)
+/* 8036E308 9003006C */ stw r0, 0x6c(r3)
+/* 8036E30C 90030070 */ stw r0, 0x70(r3)
+/* 8036E310 90030074 */ stw r0, 0x74(r3)
+/* 8036E314 90030078 */ stw r0, 0x78(r3)
+/* 8036E318 9003007C */ stw r0, 0x7c(r3)
+/* 8036E31C 900301A4 */ stw r0, 0x1a4(r3)
+/* 8036E320 900301A8 */ stw r0, 0x1a8(r3)
+/* 8036E324 900301AC */ stw r0, 0x1ac(r3)
+/* 8036E328 900301B0 */ stw r0, 0x1b0(r3)
+/* 8036E32C 900301B4 */ stw r0, 0x1b4(r3)
+/* 8036E330 900301B8 */ stw r0, 0x1b8(r3)
+/* 8036E334 900301BC */ stw r0, 0x1bc(r3)
+/* 8036E338 900301C0 */ stw r0, 0x1c0(r3)
+/* 8036E33C 4BFFFF24 */ b func_8036e260
+.size func_8036e284, . - func_8036e284
+
+
+.global func_8036e340
+.type func_8036e340, @function
+func_8036e340:
+/* 8036E340 7C0802A6 */ mflr r0
+/* 8036E344 90010004 */ stw r0, 4(r1)
+/* 8036E348 9421FD08 */ stwu r1, -0x2f8(r1)
+/* 8036E34C BF2102DC */ stmw r25, 0x2dc(r1)
+/* 8036E350 7C7C1B78 */ mr r28, r3
+/* 8036E354 3C60804F */ lis r3, lbl_804ef020@ha
+/* 8036E358 4CC63182 */ crclr 6
+/* 8036E35C 3BE3F020 */ addi r31, r3, lbl_804ef020@l
+/* 8036E360 7FE3FB78 */ mr r3, r31
+/* 8036E364 7F84E378 */ mr r4, r28
+/* 8036E368 4800034D */ bl func_8036e6b4
+/* 8036E36C 3B200000 */ li r25, 0x0
+/* 8036E370 5720103A */ slwi r0, r25, 2
+/* 8036E374 7F7C0214 */ add r27, r28, r0
+/* 8036E378 48000004 */ b lbl_8036e37c
+lbl_8036e37c:
+/* 8036E37C 48000004 */ b lbl_8036e380
+lbl_8036e380:
+/* 8036E380 48000004 */ b lbl_8036e384
+lbl_8036e384:
+/* 8036E384 811B0040 */ lwz r8, 0x40(r27)
+/* 8036E388 7F24CB78 */ mr r4, r25
+/* 8036E38C 80BB0000 */ lwz r5, 0(r27)
+/* 8036E390 387F0044 */ addi r3, r31, 0x44
+/* 8036E394 4CC63182 */ crclr 6
+/* 8036E398 7CA62B78 */ mr r6, r5
+/* 8036E39C 7D094378 */ mr r9, r8
+/* 8036E3A0 38F90010 */ addi r7, r25, 0x10
+/* 8036E3A4 48000311 */ bl func_8036e6b4
+/* 8036E3A8 3B7B0004 */ addi r27, r27, 0x4
+/* 8036E3AC 3B390001 */ addi r25, r25, 0x1
+/* 8036E3B0 28190010 */ cmplwi r25, 0x10
+/* 8036E3B4 4180FFD0 */ blt+ lbl_8036e384
+/* 8036E3B8 809C0084 */ lwz r4, 0x84(r28)
+/* 8036E3BC 387F0074 */ addi r3, r31, 0x74
+/* 8036E3C0 80BC0080 */ lwz r5, 0x80(r28)
+/* 8036E3C4 4CC63182 */ crclr 6
+/* 8036E3C8 480002ED */ bl func_8036e6b4
+/* 8036E3CC 809C0198 */ lwz r4, 0x198(r28)
+/* 8036E3D0 387F00A4 */ addi r3, r31, 0xa4
+/* 8036E3D4 80BC019C */ lwz r5, 0x19c(r28)
+/* 8036E3D8 4CC63182 */ crclr 6
+/* 8036E3DC 480002D9 */ bl func_8036e6b4
+/* 8036E3E0 387F00D4 */ addi r3, r31, 0xd4
+/* 8036E3E4 4CC63182 */ crclr 6
+/* 8036E3E8 480002CD */ bl func_8036e6b4
+/* 8036E3EC 3B200000 */ li r25, 0x0
+/* 8036E3F0 5720103A */ slwi r0, r25, 2
+/* 8036E3F4 7F7C0214 */ add r27, r28, r0
+/* 8036E3F8 48000004 */ b lbl_8036e3fc
+lbl_8036e3fc:
+/* 8036E3FC 48000004 */ b lbl_8036e400
+lbl_8036e400:
+/* 8036E400 48000004 */ b lbl_8036e404
+lbl_8036e404:
+/* 8036E404 80BB01A4 */ lwz r5, 0x1a4(r27)
+/* 8036E408 7F24CB78 */ mr r4, r25
+/* 8036E40C 80FB01B4 */ lwz r7, 0x1b4(r27)
+/* 8036E410 387F00E8 */ addi r3, r31, 0xe8
+/* 8036E414 38D90004 */ addi r6, r25, 0x4
+/* 8036E418 4CC63182 */ crclr 6
+/* 8036E41C 48000299 */ bl func_8036e6b4
+/* 8036E420 3B7B0004 */ addi r27, r27, 0x4
+/* 8036E424 3B390001 */ addi r25, r25, 0x1
+/* 8036E428 28190004 */ cmplwi r25, 4
+/* 8036E42C 4180FFD8 */ blt+ lbl_8036e404
+/* 8036E430 A01C01A2 */ lhz r0, 0x1a2(r28)
+/* 8036E434 540007FE */ clrlwi r0, r0, 0x1f
+/* 8036E438 28000000 */ cmplwi r0, 0
+/* 8036E43C 4182013C */ beq- lbl_8036e578
+/* 8036E440 48000695 */ bl func_8036ead4
+/* 8036E444 3CC08000 */ lis r6, 0x8000
+/* 8036E448 800600D4 */ lwz r0, 0xd4(r6)
+/* 8036E44C 38A00000 */ li r5, 0x0
+/* 8036E450 38810010 */ addi r4, r1, 0x10
+/* 8036E454 B0A101B0 */ sth r5, 0x1b0(r1)
+/* 8036E458 7C1E0378 */ mr r30, r0
+/* 8036E45C 7C7D1B78 */ mr r29, r3
+/* 8036E460 B0A101B2 */ sth r5, 0x1b2(r1)
+/* 8036E464 800600D8 */ lwz r0, 0xd8(r6)
+/* 8036E468 7C040040 */ cmplw r4, r0
+/* 8036E46C 40820008 */ bne- lbl_8036e474
+/* 8036E470 90A600D8 */ stw r5, 0xd8(r6)
+lbl_8036e474:
+/* 8036E474 38610010 */ addi r3, r1, 0x10
+/* 8036E478 4BFFFC21 */ bl func_8036e098
+/* 8036E47C 387F010C */ addi r3, r31, 0x10c
+/* 8036E480 4CC63182 */ crclr 6
+/* 8036E484 48000231 */ bl func_8036e6b4
+/* 8036E488 3B200000 */ li r25, 0x0
+/* 8036E48C 57201838 */ slwi r0, r25, 3
+/* 8036E490 7F5C0214 */ add r26, r28, r0
+/* 8036E494 48000004 */ b lbl_8036e498
+lbl_8036e498:
+/* 8036E498 48000004 */ b lbl_8036e49c
+lbl_8036e49c:
+/* 8036E49C 48000004 */ b lbl_8036e4a0
+lbl_8036e4a0:
+/* 8036E4A0 C83A0098 */ lfd f1, 0x98(r26)
+/* 8036E4A4 48024E95 */ bl func_80393338
+/* 8036E4A8 7C7B1B78 */ mr r27, r3
+/* 8036E4AC C83A0090 */ lfd f1, 0x90(r26)
+/* 8036E4B0 48024E89 */ bl func_80393338
+/* 8036E4B4 7C651B78 */ mr r5, r3
+/* 8036E4B8 4CC63182 */ crclr 6
+/* 8036E4BC 7F24CB78 */ mr r4, r25
+/* 8036E4C0 7F67DB78 */ mr r7, r27
+/* 8036E4C4 387F0120 */ addi r3, r31, 0x120
+/* 8036E4C8 38D90001 */ addi r6, r25, 0x1
+/* 8036E4CC 480001E9 */ bl func_8036e6b4
+/* 8036E4D0 3B5A0010 */ addi r26, r26, 0x10
+/* 8036E4D4 3B390002 */ addi r25, r25, 0x2
+/* 8036E4D8 28190020 */ cmplwi r25, 0x20
+/* 8036E4DC 4180FFC4 */ blt+ lbl_8036e4a0
+/* 8036E4E0 387F013C */ addi r3, r31, 0x13c
+/* 8036E4E4 4CC63182 */ crclr 6
+/* 8036E4E8 480001CD */ bl func_8036e6b4
+/* 8036E4EC 3B200000 */ li r25, 0x0
+/* 8036E4F0 57201838 */ slwi r0, r25, 3
+/* 8036E4F4 7F5C0214 */ add r26, r28, r0
+/* 8036E4F8 48000004 */ b lbl_8036e4fc
+lbl_8036e4fc:
+/* 8036E4FC 48000004 */ b lbl_8036e500
+lbl_8036e500:
+/* 8036E500 48000004 */ b lbl_8036e504
+lbl_8036e504:
+/* 8036E504 C83A01D0 */ lfd f1, 0x1d0(r26)
+/* 8036E508 48024E31 */ bl func_80393338
+/* 8036E50C 7C7B1B78 */ mr r27, r3
+/* 8036E510 C83A01C8 */ lfd f1, 0x1c8(r26)
+/* 8036E514 48024E25 */ bl func_80393338
+/* 8036E518 7C651B78 */ mr r5, r3
+/* 8036E51C 4CC63182 */ crclr 6
+/* 8036E520 7F24CB78 */ mr r4, r25
+/* 8036E524 7F67DB78 */ mr r7, r27
+/* 8036E528 387F0150 */ addi r3, r31, 0x150
+/* 8036E52C 38D90001 */ addi r6, r25, 0x1
+/* 8036E530 48000185 */ bl func_8036e6b4
+/* 8036E534 3B5A0010 */ addi r26, r26, 0x10
+/* 8036E538 3B390002 */ addi r25, r25, 0x2
+/* 8036E53C 28190020 */ cmplwi r25, 0x20
+/* 8036E540 4180FFC4 */ blt+ lbl_8036e504
+/* 8036E544 38A00000 */ li r5, 0x0
+/* 8036E548 B0A101B0 */ sth r5, 0x1b0(r1)
+/* 8036E54C 3C608000 */ lis r3, 0x8000
+/* 8036E550 38810010 */ addi r4, r1, 0x10
+/* 8036E554 B0A101B2 */ sth r5, 0x1b2(r1)
+/* 8036E558 800300D8 */ lwz r0, 0xd8(r3)
+/* 8036E55C 7C040040 */ cmplw r4, r0
+/* 8036E560 40820008 */ bne- lbl_8036e568
+/* 8036E564 90A300D8 */ stw r5, 0xd8(r3)
+lbl_8036e568:
+/* 8036E568 7FC3F378 */ mr r3, r30
+/* 8036E56C 4BFFFB2D */ bl func_8036e098
+/* 8036E570 7FA3EB78 */ mr r3, r29
+/* 8036E574 48000589 */ bl func_8036eafc
+lbl_8036e578:
+/* 8036E578 387F0170 */ addi r3, r31, 0x170
+/* 8036E57C 4CC63182 */ crclr 6
+/* 8036E580 48000135 */ bl func_8036e6b4
+/* 8036E584 833C0004 */ lwz r25, 4(r28)
+/* 8036E588 3B400000 */ li r26, 0x0
+/* 8036E58C 48000004 */ b lbl_8036e590
+lbl_8036e590:
+/* 8036E590 48000004 */ b lbl_8036e594
+lbl_8036e594:
+/* 8036E594 48000020 */ b lbl_8036e5b4
+lbl_8036e598:
+/* 8036E598 80B90000 */ lwz r5, 0(r25)
+/* 8036E59C 7F24CB78 */ mr r4, r25
+/* 8036E5A0 80D90004 */ lwz r6, 4(r25)
+/* 8036E5A4 387F0198 */ addi r3, r31, 0x198
+/* 8036E5A8 4CC63182 */ crclr 6
+/* 8036E5AC 48000109 */ bl func_8036e6b4
+/* 8036E5B0 83390000 */ lwz r25, 0(r25)
+lbl_8036e5b4:
+/* 8036E5B4 28190000 */ cmplwi r25, 0
+/* 8036E5B8 4182001C */ beq- lbl_8036e5d4
+/* 8036E5BC 3C190001 */ addis r0, r25, 1
+/* 8036E5C0 2800FFFF */ cmplwi r0, 0xffff
+/* 8036E5C4 41820010 */ beq- lbl_8036e5d4
+/* 8036E5C8 281A0010 */ cmplwi r26, 0x10
+/* 8036E5CC 3B5A0001 */ addi r26, r26, 0x1
+/* 8036E5D0 4180FFC8 */ blt+ lbl_8036e598
+lbl_8036e5d4:
+/* 8036E5D4 BB2102DC */ lmw r25, 0x2dc(r1)
+/* 8036E5D8 800102FC */ lwz r0, 0x2fc(r1)
+/* 8036E5DC 382102F8 */ addi r1, r1, 0x2f8
+/* 8036E5E0 7C0803A6 */ mtlr r0
+/* 8036E5E4 4E800020 */ blr
+.size func_8036e340, . - func_8036e340
+
+
+.global func_8036e5e8
+.type func_8036e5e8, @function
+func_8036e5e8:
+/* 8036E5E8 7CA000A6 */ mfmsr r5
+/* 8036E5EC 60A52000 */ ori r5, r5, 0x2000
+/* 8036E5F0 7CA00124 */ mtmsr r5
+/* 8036E5F4 4C00012C */ isync
+/* 8036E5F8 80A4019C */ lwz r5, 0x19c(r4)
+/* 8036E5FC 60A52000 */ ori r5, r5, 0x2000
+/* 8036E600 7CBB03A6 */ mtspr 0x1b, r5
+/* 8036E604 3C608000 */ lis r3, 0x8000
+/* 8036E608 80A300D8 */ lwz r5, 0xd8(r3)
+/* 8036E60C 908300D8 */ stw r4, 0xd8(r3)
+/* 8036E610 7C052000 */ cmpw r5, r4
+/* 8036E614 41820014 */ beq- lbl_8036e628
+/* 8036E618 2C050000 */ cmpwi r5, 0x0
+/* 8036E61C 41820008 */ beq- lbl_8036e624
+/* 8036E620 4BFFF951 */ bl func_8036df70
+lbl_8036e624:
+/* 8036E624 4BFFF829 */ bl func_8036de4c
+lbl_8036e628:
+/* 8036E628 80640080 */ lwz r3, 0x80(r4)
+/* 8036E62C 7C6FF120 */ mtcrf 0xff, r3
+/* 8036E630 80640084 */ lwz r3, 0x84(r4)
+/* 8036E634 7C6803A6 */ mtlr r3
+/* 8036E638 80640198 */ lwz r3, 0x198(r4)
+/* 8036E63C 7C7A03A6 */ mtspr 0x1a, r3
+/* 8036E640 80640088 */ lwz r3, 0x88(r4)
+/* 8036E644 7C6903A6 */ mtctr r3
+/* 8036E648 8064008C */ lwz r3, 0x8c(r4)
+/* 8036E64C 7C6103A6 */ mtxer r3
+/* 8036E650 A06401A2 */ lhz r3, 0x1a2(r4)
+/* 8036E654 546307FA */ rlwinm r3, r3, 0, 0x1f, 0x1d
+/* 8036E658 B06401A2 */ sth r3, 0x1a2(r4)
+/* 8036E65C 80A40014 */ lwz r5, 0x14(r4)
+/* 8036E660 8064000C */ lwz r3, 0xc(r4)
+/* 8036E664 80840010 */ lwz r4, 0x10(r4)
+/* 8036E668 4C000064 */ rfi
+.size func_8036e5e8, . - func_8036e5e8
+
+
+.global func_8036e66c
+.type func_8036e66c, @function
+func_8036e66c:
+/* 8036E66C 7C0802A6 */ mflr r0
+/* 8036E670 90010004 */ stw r0, 4(r1)
+/* 8036E674 9421FFF8 */ stwu r1, -8(r1)
+/* 8036E678 3C608037 */ lis r3, func_8036e5e8@ha
+/* 8036E67C 3883E5E8 */ addi r4, r3, func_8036e5e8@l
+/* 8036E680 38600007 */ li r3, 0x7
+/* 8036E684 4BFFE469 */ bl func_8036caec
+/* 8036E688 38000000 */ li r0, 0x0
+/* 8036E68C 4CC63182 */ crclr 6
+/* 8036E690 3C808000 */ lis r4, 0x8000
+/* 8036E694 3C60804F */ lis r3, lbl_804ef1d4@ha
+/* 8036E698 900400D8 */ stw r0, 0xd8(r4)
+/* 8036E69C 3863F1D4 */ addi r3, r3, lbl_804ef1d4@l
+/* 8036E6A0 4BFFDC11 */ bl func_8036c2b0
+/* 8036E6A4 8001000C */ lwz r0, 0xc(r1)
+/* 8036E6A8 38210008 */ addi r1, r1, 0x8
+/* 8036E6AC 7C0803A6 */ mtlr r0
+/* 8036E6B0 4E800020 */ blr
+.size func_8036e66c, . - func_8036e66c
+
diff --git a/asm/Dolphin/os/OSError-data.s b/asm/Dolphin/os/OSError-data.s
new file mode 100644
index 0000000..385cc46
--- /dev/null
+++ b/asm/Dolphin/os/OSError-data.s
@@ -0,0 +1,217 @@
+.include "macros.inc"
+
+.section .data
+
+.balign 8
+
+.global lbl_804ef1f8
+.type lbl_804ef1f8, @object
+lbl_804ef1f8:
+/* 804EF1F8 20696E20 */ .4byte 0x20696e20
+/* 804EF1FC 22257322 */ .4byte 0x22257322
+/* 804EF200 206F6E20 */ .4byte 0x206f6e20
+/* 804EF204 6C696E65 */ .4byte 0x6c696e65
+/* 804EF208 2025642E */ .4byte 0x2025642e
+/* 804EF20C 0A000000 */ .4byte 0x0a000000
+/* 804EF210 0A416464 */ .4byte 0x0a416464
+/* 804EF214 72657373 */ .4byte 0x72657373
+/* 804EF218 3A202020 */ .4byte 0x3a202020
+/* 804EF21C 20202042 */ .4byte 0x20202042
+/* 804EF220 61636B20 */ .4byte 0x61636b20
+/* 804EF224 43686169 */ .4byte 0x43686169
+/* 804EF228 6E202020 */ .4byte 0x6e202020
+/* 804EF22C 204C5220 */ .4byte 0x204c5220
+/* 804EF230 53617665 */ .4byte 0x53617665
+/* 804EF234 0A000000 */ .4byte 0x0a000000
+/* 804EF238 30782530 */ .4byte 0x30782530
+/* 804EF23C 38783A20 */ .4byte 0x38783a20
+/* 804EF240 20203078 */ .4byte 0x20203078
+/* 804EF244 25303878 */ .4byte 0x25303878
+/* 804EF248 20202020 */ .4byte 0x20202020
+/* 804EF24C 30782530 */ .4byte 0x30782530
+/* 804EF250 38780A00 */ .4byte 0x38780a00
+/* 804EF254 4E6F6E2D */ .4byte 0x4e6f6e2d
+/* 804EF258 7265636F */ .4byte 0x7265636f
+/* 804EF25C 76657261 */ .4byte 0x76657261
+/* 804EF260 626C6520 */ .4byte 0x626c6520
+/* 804EF264 45786365 */ .4byte 0x45786365
+/* 804EF268 7074696F */ .4byte 0x7074696f
+/* 804EF26C 6E202564 */ .4byte 0x6e202564
+/* 804EF270 00000000 */ .4byte 0x00000000
+/* 804EF274 556E6861 */ .4byte 0x556e6861
+/* 804EF278 6E646C65 */ .4byte 0x6e646c65
+/* 804EF27C 64204578 */ .4byte 0x64204578
+/* 804EF280 63657074 */ .4byte 0x63657074
+/* 804EF284 696F6E20 */ .4byte 0x696f6e20
+/* 804EF288 25640000 */ .4byte 0x25640000
+/* 804EF28C 0A445349 */ .4byte 0x0a445349
+/* 804EF290 5352203D */ .4byte 0x5352203d
+/* 804EF294 20307825 */ .4byte 0x20307825
+/* 804EF298 30387820 */ .4byte 0x30387820
+/* 804EF29C 20202020 */ .4byte 0x20202020
+/* 804EF2A0 20202020 */ .4byte 0x20202020
+/* 804EF2A4 20202020 */ .4byte 0x20202020
+/* 804EF2A8 20202020 */ .4byte 0x20202020
+/* 804EF2AC 20204441 */ .4byte 0x20204441
+/* 804EF2B0 5220203D */ .4byte 0x5220203d
+/* 804EF2B4 20307825 */ .4byte 0x20307825
+/* 804EF2B8 3038780A */ .4byte 0x3038780a
+/* 804EF2BC 00000000 */ .4byte 0x00000000
+/* 804EF2C0 5442203D */ .4byte 0x5442203d
+/* 804EF2C4 20307825 */ .4byte 0x20307825
+/* 804EF2C8 3031366C */ .4byte 0x3031366c
+/* 804EF2CC 6C780A00 */ .4byte 0x6c780a00
+/* 804EF2D0 0A496E73 */ .4byte 0x0a496e73
+/* 804EF2D4 74727563 */ .4byte 0x74727563
+/* 804EF2D8 74696F6E */ .4byte 0x74696f6e
+/* 804EF2DC 20617420 */ .4byte 0x20617420
+/* 804EF2E0 30782578 */ .4byte 0x30782578
+/* 804EF2E4 20287265 */ .4byte 0x20287265
+/* 804EF2E8 61642066 */ .4byte 0x61642066
+/* 804EF2EC 726F6D20 */ .4byte 0x726f6d20
+/* 804EF2F0 53525230 */ .4byte 0x53525230
+/* 804EF2F4 29206174 */ .4byte 0x29206174
+/* 804EF2F8 74656D70 */ .4byte 0x74656d70
+/* 804EF2FC 74656420 */ .4byte 0x74656420
+/* 804EF300 746F2061 */ .4byte 0x746f2061
+/* 804EF304 63636573 */ .4byte 0x63636573
+/* 804EF308 7320696E */ .4byte 0x7320696e
+/* 804EF30C 76616C69 */ .4byte 0x76616c69
+/* 804EF310 64206164 */ .4byte 0x64206164
+/* 804EF314 64726573 */ .4byte 0x64726573
+/* 804EF318 73203078 */ .4byte 0x73203078
+/* 804EF31C 25782028 */ .4byte 0x25782028
+/* 804EF320 72656164 */ .4byte 0x72656164
+/* 804EF324 2066726F */ .4byte 0x2066726f
+/* 804EF328 6D204441 */ .4byte 0x6d204441
+/* 804EF32C 52290A00 */ .4byte 0x52290a00
+/* 804EF330 0A417474 */ .4byte 0x0a417474
+/* 804EF334 656D7074 */ .4byte 0x656d7074
+/* 804EF338 65642074 */ .4byte 0x65642074
+/* 804EF33C 6F206665 */ .4byte 0x6f206665
+/* 804EF340 74636820 */ .4byte 0x74636820
+/* 804EF344 696E7374 */ .4byte 0x696e7374
+/* 804EF348 72756374 */ .4byte 0x72756374
+/* 804EF34C 696F6E20 */ .4byte 0x696f6e20
+/* 804EF350 66726F6D */ .4byte 0x66726f6d
+/* 804EF354 20696E76 */ .4byte 0x20696e76
+/* 804EF358 616C6964 */ .4byte 0x616c6964
+/* 804EF35C 20616464 */ .4byte 0x20616464
+/* 804EF360 72657373 */ .4byte 0x72657373
+/* 804EF364 20307825 */ .4byte 0x20307825
+/* 804EF368 78202872 */ .4byte 0x78202872
+/* 804EF36C 65616420 */ .4byte 0x65616420
+/* 804EF370 66726F6D */ .4byte 0x66726f6d
+/* 804EF374 20535252 */ .4byte 0x20535252
+/* 804EF378 30290A00 */ .4byte 0x30290a00
+/* 804EF37C 0A496E73 */ .4byte 0x0a496e73
+/* 804EF380 74727563 */ .4byte 0x74727563
+/* 804EF384 74696F6E */ .4byte 0x74696f6e
+/* 804EF388 20617420 */ .4byte 0x20617420
+/* 804EF38C 30782578 */ .4byte 0x30782578
+/* 804EF390 20287265 */ .4byte 0x20287265
+/* 804EF394 61642066 */ .4byte 0x61642066
+/* 804EF398 726F6D20 */ .4byte 0x726f6d20
+/* 804EF39C 53525230 */ .4byte 0x53525230
+/* 804EF3A0 29206174 */ .4byte 0x29206174
+/* 804EF3A4 74656D70 */ .4byte 0x74656d70
+/* 804EF3A8 74656420 */ .4byte 0x74656420
+/* 804EF3AC 746F2061 */ .4byte 0x746f2061
+/* 804EF3B0 63636573 */ .4byte 0x63636573
+/* 804EF3B4 7320756E */ .4byte 0x7320756e
+/* 804EF3B8 616C6967 */ .4byte 0x616c6967
+/* 804EF3BC 6E656420 */ .4byte 0x6e656420
+/* 804EF3C0 61646472 */ .4byte 0x61646472
+/* 804EF3C4 65737320 */ .4byte 0x65737320
+/* 804EF3C8 30782578 */ .4byte 0x30782578
+/* 804EF3CC 20287265 */ .4byte 0x20287265
+/* 804EF3D0 61642066 */ .4byte 0x61642066
+/* 804EF3D4 726F6D20 */ .4byte 0x726f6d20
+/* 804EF3D8 44415229 */ .4byte 0x44415229
+/* 804EF3DC 0A000000 */ .4byte 0x0a000000
+/* 804EF3E0 0A50726F */ .4byte 0x0a50726f
+/* 804EF3E4 6772616D */ .4byte 0x6772616d
+/* 804EF3E8 20657863 */ .4byte 0x20657863
+/* 804EF3EC 65707469 */ .4byte 0x65707469
+/* 804EF3F0 6F6E203A */ .4byte 0x6f6e203a
+/* 804EF3F4 20506F73 */ .4byte 0x20506f73
+/* 804EF3F8 7369626C */ .4byte 0x7369626c
+/* 804EF3FC 6520696C */ .4byte 0x6520696c
+/* 804EF400 6C656761 */ .4byte 0x6c656761
+/* 804EF404 6C20696E */ .4byte 0x6c20696e
+/* 804EF408 73747275 */ .4byte 0x73747275
+/* 804EF40C 6374696F */ .4byte 0x6374696f
+/* 804EF410 6E2F6F70 */ .4byte 0x6e2f6f70
+/* 804EF414 65726174 */ .4byte 0x65726174
+/* 804EF418 696F6E20 */ .4byte 0x696f6e20
+/* 804EF41C 6174206F */ .4byte 0x6174206f
+/* 804EF420 72206172 */ .4byte 0x72206172
+/* 804EF424 6F756E64 */ .4byte 0x6f756e64
+/* 804EF428 20307825 */ .4byte 0x20307825
+/* 804EF42C 78202872 */ .4byte 0x78202872
+/* 804EF430 65616420 */ .4byte 0x65616420
+/* 804EF434 66726F6D */ .4byte 0x66726f6d
+/* 804EF438 20535252 */ .4byte 0x20535252
+/* 804EF43C 30290A00 */ .4byte 0x30290a00
+/* 804EF440 41492044 */ .4byte 0x41492044
+/* 804EF444 4D412041 */ .4byte 0x4d412041
+/* 804EF448 64647265 */ .4byte 0x64647265
+/* 804EF44C 7373203D */ .4byte 0x7373203d
+/* 804EF450 20202030 */ .4byte 0x20202030
+/* 804EF454 78253034 */ .4byte 0x78253034
+/* 804EF458 78253034 */ .4byte 0x78253034
+/* 804EF45C 780A0000 */ .4byte 0x780a0000
+/* 804EF460 4152414D */ .4byte 0x4152414d
+/* 804EF464 20444D41 */ .4byte 0x20444d41
+/* 804EF468 20416464 */ .4byte 0x20416464
+/* 804EF46C 72657373 */ .4byte 0x72657373
+/* 804EF470 203D2030 */ .4byte 0x203d2030
+/* 804EF474 78253034 */ .4byte 0x78253034
+/* 804EF478 78253034 */ .4byte 0x78253034
+/* 804EF47C 780A0000 */ .4byte 0x780a0000
+/* 804EF480 44492044 */ .4byte 0x44492044
+/* 804EF484 4D412041 */ .4byte 0x4d412041
+/* 804EF488 64647265 */ .4byte 0x64647265
+/* 804EF48C 7373203D */ .4byte 0x7373203d
+/* 804EF490 20202030 */ .4byte 0x20202030
+/* 804EF494 78253038 */ .4byte 0x78253038
+/* 804EF498 780A0000 */ .4byte 0x780a0000
+/* 804EF49C 0A4C6173 */ .4byte 0x0a4c6173
+/* 804EF4A0 7420696E */ .4byte 0x7420696e
+/* 804EF4A4 74657272 */ .4byte 0x74657272
+/* 804EF4A8 75707420 */ .4byte 0x75707420
+/* 804EF4AC 28256429 */ .4byte 0x28256429
+/* 804EF4B0 3A205352 */ .4byte 0x3a205352
+/* 804EF4B4 5230203D */ .4byte 0x5230203d
+/* 804EF4B8 20307825 */ .4byte 0x20307825
+/* 804EF4BC 30387820 */ .4byte 0x30387820
+/* 804EF4C0 20544220 */ .4byte 0x20544220
+/* 804EF4C4 3D203078 */ .4byte 0x3d203078
+/* 804EF4C8 25303136 */ .4byte 0x25303136
+/* 804EF4CC 6C6C780A */ .4byte 0x6c6c780a
+/* 804EF4D0 00000000 */ .4byte 0x00000000
+.size lbl_804ef1f8, . - lbl_804ef1f8
+
+
+.global jtbl_804ef4d4
+.type jtbl_804ef4d4, @object
+jtbl_804ef4d4:
+/* 804EF4D4 8036EA48 */ .4byte jump_8036ea48
+/* 804EF4D8 8036EA48 */ .4byte jump_8036ea48
+/* 804EF4DC 8036E9A0 */ .4byte jump_8036e9a0
+/* 804EF4E0 8036E9B8 */ .4byte jump_8036e9b8
+/* 804EF4E4 8036EA48 */ .4byte jump_8036ea48
+/* 804EF4E8 8036E9CC */ .4byte jump_8036e9cc
+/* 804EF4EC 8036E9E4 */ .4byte jump_8036e9e4
+/* 804EF4F0 8036EA48 */ .4byte jump_8036ea48
+/* 804EF4F4 8036EA48 */ .4byte jump_8036ea48
+/* 804EF4F8 8036EA48 */ .4byte jump_8036ea48
+/* 804EF4FC 8036EA48 */ .4byte jump_8036ea48
+/* 804EF500 8036EA48 */ .4byte jump_8036ea48
+/* 804EF504 8036EA48 */ .4byte jump_8036ea48
+/* 804EF508 8036EA48 */ .4byte jump_8036ea48
+/* 804EF50C 8036EA48 */ .4byte jump_8036ea48
+/* 804EF510 8036E9FC */ .4byte jump_8036e9fc
+/* 804EF514 00000000 */ .4byte 0x00000000
+.size jtbl_804ef4d4, . - jtbl_804ef4d4
+
diff --git a/asm/Dolphin/os/OSError.s b/asm/Dolphin/os/OSError.s
new file mode 100644
index 0000000..49c659e
--- /dev/null
+++ b/asm/Dolphin/os/OSError.s
@@ -0,0 +1,329 @@
+.include "macros.inc"
+
+.section .text
+
+.global func_8036e6b4
+.type func_8036e6b4, @function
+func_8036e6b4:
+/* 8036E6B4 7C0802A6 */ mflr r0
+/* 8036E6B8 90010004 */ stw r0, 4(r1)
+/* 8036E6BC 9421FF88 */ stwu r1, -0x78(r1)
+/* 8036E6C0 40860024 */ bne- cr1, lbl_8036e6e4
+/* 8036E6C4 D8210028 */ stfd f1, 0x28(r1)
+/* 8036E6C8 D8410030 */ stfd f2, 0x30(r1)
+/* 8036E6CC D8610038 */ stfd f3, 0x38(r1)
+/* 8036E6D0 D8810040 */ stfd f4, 0x40(r1)
+/* 8036E6D4 D8A10048 */ stfd f5, 0x48(r1)
+/* 8036E6D8 D8C10050 */ stfd f6, 0x50(r1)
+/* 8036E6DC D8E10058 */ stfd f7, 0x58(r1)
+/* 8036E6E0 D9010060 */ stfd f8, 0x60(r1)
+lbl_8036e6e4:
+/* 8036E6E4 90610008 */ stw r3, 8(r1)
+/* 8036E6E8 3C000100 */ lis r0, 0x100
+/* 8036E6EC 9081000C */ stw r4, 0xc(r1)
+/* 8036E6F0 3881006C */ addi r4, r1, 0x6c
+/* 8036E6F4 90A10010 */ stw r5, 0x10(r1)
+/* 8036E6F8 90C10014 */ stw r6, 0x14(r1)
+/* 8036E6FC 90E10018 */ stw r7, 0x18(r1)
+/* 8036E700 9101001C */ stw r8, 0x1c(r1)
+/* 8036E704 91210020 */ stw r9, 0x20(r1)
+/* 8036E708 91410024 */ stw r10, 0x24(r1)
+/* 8036E70C 9001006C */ stw r0, 0x6c(r1)
+/* 8036E710 38010080 */ addi r0, r1, 0x80
+/* 8036E714 90010070 */ stw r0, 0x70(r1)
+/* 8036E718 38010008 */ addi r0, r1, 0x8
+/* 8036E71C 90010074 */ stw r0, 0x74(r1)
+/* 8036E720 48028C05 */ bl func_80397324
+/* 8036E724 8001007C */ lwz r0, 0x7c(r1)
+/* 8036E728 38210078 */ addi r1, r1, 0x78
+/* 8036E72C 7C0803A6 */ mtlr r0
+/* 8036E730 4E800020 */ blr
+.size func_8036e6b4, . - func_8036e6b4
+
+
+.global func_8036e734
+.type func_8036e734, @function
+func_8036e734:
+/* 8036E734 7C0802A6 */ mflr r0
+/* 8036E738 90010004 */ stw r0, 4(r1)
+/* 8036E73C 9421FF70 */ stwu r1, -0x90(r1)
+/* 8036E740 93E1008C */ stw r31, 0x8c(r1)
+/* 8036E744 93C10088 */ stw r30, 0x88(r1)
+/* 8036E748 93A10084 */ stw r29, 0x84(r1)
+/* 8036E74C 93810080 */ stw r28, 0x80(r1)
+/* 8036E750 40860024 */ bne- cr1, lbl_8036e774
+/* 8036E754 D8210028 */ stfd f1, 0x28(r1)
+/* 8036E758 D8410030 */ stfd f2, 0x30(r1)
+/* 8036E75C D8610038 */ stfd f3, 0x38(r1)
+/* 8036E760 D8810040 */ stfd f4, 0x40(r1)
+/* 8036E764 D8A10048 */ stfd f5, 0x48(r1)
+/* 8036E768 D8C10050 */ stfd f6, 0x50(r1)
+/* 8036E76C D8E10058 */ stfd f7, 0x58(r1)
+/* 8036E770 D9010060 */ stfd f8, 0x60(r1)
+lbl_8036e774:
+/* 8036E774 90610008 */ stw r3, 8(r1)
+/* 8036E778 3B830000 */ addi r28, r3, 0x0
+/* 8036E77C 3BC40000 */ addi r30, r4, 0x0
+/* 8036E780 9081000C */ stw r4, 0xc(r1)
+/* 8036E784 3BA50000 */ addi r29, r5, 0x0
+/* 8036E788 90A10010 */ stw r5, 0x10(r1)
+/* 8036E78C 90C10014 */ stw r6, 0x14(r1)
+/* 8036E790 3CC0804F */ lis r6, lbl_804ef1f8@ha
+/* 8036E794 3BE6F1F8 */ addi r31, r6, lbl_804ef1f8@l
+/* 8036E798 90E10018 */ stw r7, 0x18(r1)
+/* 8036E79C 9101001C */ stw r8, 0x1c(r1)
+/* 8036E7A0 91210020 */ stw r9, 0x20(r1)
+/* 8036E7A4 91410024 */ stw r10, 0x24(r1)
+/* 8036E7A8 4800032D */ bl func_8036ead4
+/* 8036E7AC 3C000300 */ lis r0, 0x300
+/* 8036E7B0 90010074 */ stw r0, 0x74(r1)
+/* 8036E7B4 38010098 */ addi r0, r1, 0x98
+/* 8036E7B8 38810074 */ addi r4, r1, 0x74
+/* 8036E7BC 90010078 */ stw r0, 0x78(r1)
+/* 8036E7C0 38010008 */ addi r0, r1, 0x8
+/* 8036E7C4 387D0000 */ addi r3, r29, 0x0
+/* 8036E7C8 9001007C */ stw r0, 0x7c(r1)
+/* 8036E7CC 48028B59 */ bl func_80397324
+/* 8036E7D0 387F0000 */ addi r3, r31, 0x0
+/* 8036E7D4 4CC63182 */ crclr 6
+/* 8036E7D8 389C0000 */ addi r4, r28, 0x0
+/* 8036E7DC 38BE0000 */ addi r5, r30, 0x0
+/* 8036E7E0 4BFFFED5 */ bl func_8036e6b4
+/* 8036E7E4 387F0018 */ addi r3, r31, 0x18
+/* 8036E7E8 4CC63182 */ crclr 6
+/* 8036E7EC 4BFFFEC9 */ bl func_8036e6b4
+/* 8036E7F0 3BC00000 */ li r30, 0x0
+/* 8036E7F4 4BFFFA65 */ bl func_8036e258
+/* 8036E7F8 7C7D1B78 */ mr r29, r3
+/* 8036E7FC 48000020 */ b lbl_8036e81c
+lbl_8036e800:
+/* 8036E800 80BD0000 */ lwz r5, 0(r29)
+/* 8036E804 7FA4EB78 */ mr r4, r29
+/* 8036E808 80DD0004 */ lwz r6, 4(r29)
+/* 8036E80C 387F0040 */ addi r3, r31, 0x40
+/* 8036E810 4CC63182 */ crclr 6
+/* 8036E814 4BFFFEA1 */ bl func_8036e6b4
+/* 8036E818 83BD0000 */ lwz r29, 0(r29)
+lbl_8036e81c:
+/* 8036E81C 281D0000 */ cmplwi r29, 0
+/* 8036E820 4182001C */ beq- lbl_8036e83c
+/* 8036E824 3C1D0001 */ addis r0, r29, 1
+/* 8036E828 2800FFFF */ cmplwi r0, 0xffff
+/* 8036E82C 41820010 */ beq- lbl_8036e83c
+/* 8036E830 281E0010 */ cmplwi r30, 0x10
+/* 8036E834 3BDE0001 */ addi r30, r30, 0x1
+/* 8036E838 4180FFC8 */ blt+ lbl_8036e800
+lbl_8036e83c:
+/* 8036E83C 4BFFD97D */ bl func_8036c1b8
+/* 8036E840 80010094 */ lwz r0, 0x94(r1)
+/* 8036E844 83E1008C */ lwz r31, 0x8c(r1)
+/* 8036E848 83C10088 */ lwz r30, 0x88(r1)
+/* 8036E84C 83A10084 */ lwz r29, 0x84(r1)
+/* 8036E850 83810080 */ lwz r28, 0x80(r1)
+/* 8036E854 38210090 */ addi r1, r1, 0x90
+/* 8036E858 7C0803A6 */ mtlr r0
+/* 8036E85C 4E800020 */ blr
+.size func_8036e734, . - func_8036e734
+
+
+.global func_8036e860
+.type func_8036e860, @function
+func_8036e860:
+/* 8036E860 3CA08054 */ lis r5, lbl_8053ec30@ha
+/* 8036E864 546313BA */ rlwinm r3, r3, 2, 0xe, 0x1d
+/* 8036E868 3805EC30 */ addi r0, r5, lbl_8053ec30@l
+/* 8036E86C 7CA01A14 */ add r5, r0, r3
+/* 8036E870 80650000 */ lwz r3, 0(r5)
+/* 8036E874 90850000 */ stw r4, 0(r5)
+/* 8036E878 4E800020 */ blr
+.size func_8036e860, . - func_8036e860
+
+
+.global func_8036e87c
+.type func_8036e87c, @function
+func_8036e87c:
+/* 8036E87C 7C0802A6 */ mflr r0
+/* 8036E880 90010004 */ stw r0, 4(r1)
+/* 8036E884 9421FFC8 */ stwu r1, -0x38(r1)
+/* 8036E888 BF21001C */ stmw r25, 0x1c(r1)
+/* 8036E88C 7C9F2378 */ mr r31, r4
+/* 8036E890 3B230000 */ addi r25, r3, 0x0
+/* 8036E894 3B450000 */ addi r26, r5, 0x0
+/* 8036E898 3B660000 */ addi r27, r6, 0x0
+/* 8036E89C 8004019C */ lwz r0, 0x19c(r4)
+/* 8036E8A0 3C80804F */ lis r4, lbl_804ef1f8@ha
+/* 8036E8A4 3BA4F1F8 */ addi r29, r4, lbl_804ef1f8@l
+/* 8036E8A8 540007BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 8036E8AC 40820018 */ bne- lbl_8036e8c4
+/* 8036E8B0 387D005C */ addi r3, r29, 0x5c
+/* 8036E8B4 4CC63182 */ crclr 6
+/* 8036E8B8 5724063E */ clrlwi r4, r25, 0x18
+/* 8036E8BC 4BFFFDF9 */ bl func_8036e6b4
+/* 8036E8C0 4800007C */ b lbl_8036e93c
+lbl_8036e8c4:
+/* 8036E8C4 573E063E */ clrlwi r30, r25, 0x18
+/* 8036E8C8 3C608054 */ lis r3, lbl_8053ec30@ha
+/* 8036E8CC 572415BA */ rlwinm r4, r25, 2, 0x16, 0x1d
+/* 8036E8D0 3803EC30 */ addi r0, r3, lbl_8053ec30@l
+/* 8036E8D4 7F802214 */ add r28, r0, r4
+/* 8036E8D8 801C0000 */ lwz r0, 0(r28)
+/* 8036E8DC 28000000 */ cmplwi r0, 0
+/* 8036E8E0 41820038 */ beq- lbl_8036e918
+/* 8036E8E4 48002ED1 */ bl func_803717b4
+/* 8036E8E8 819C0000 */ lwz r12, 0(r28)
+/* 8036E8EC 387E0000 */ addi r3, r30, 0x0
+/* 8036E8F0 389F0000 */ addi r4, r31, 0x0
+/* 8036E8F4 4CC63182 */ crclr 6
+/* 8036E8F8 7D8803A6 */ mtlr r12
+/* 8036E8FC 38BA0000 */ addi r5, r26, 0x0
+/* 8036E900 38DB0000 */ addi r6, r27, 0x0
+/* 8036E904 4E800021 */ blrl
+/* 8036E908 48002EED */ bl func_803717f4
+/* 8036E90C 480033DD */ bl func_80371ce8
+/* 8036E910 7FE3FB78 */ mr r3, r31
+/* 8036E914 4BFFF86D */ bl func_8036e180
+lbl_8036e918:
+/* 8036E918 5720063E */ clrlwi r0, r25, 0x18
+/* 8036E91C 28000008 */ cmplwi r0, 8
+/* 8036E920 4082000C */ bne- lbl_8036e92c
+/* 8036E924 7FE3FB78 */ mr r3, r31
+/* 8036E928 4BFFF859 */ bl func_8036e180
+lbl_8036e92c:
+/* 8036E92C 387D007C */ addi r3, r29, 0x7c
+/* 8036E930 4CC63182 */ crclr 6
+/* 8036E934 5724063E */ clrlwi r4, r25, 0x18
+/* 8036E938 4BFFFD7D */ bl func_8036e6b4
+lbl_8036e93c:
+/* 8036E93C 386D9F08 */ addi r3, 0, lbl_805c3d28@sda21
+/* 8036E940 4CC63182 */ crclr 6
+/* 8036E944 4BFFFD71 */ bl func_8036e6b4
+/* 8036E948 7FE3FB78 */ mr r3, r31
+/* 8036E94C 4BFFF9F5 */ bl func_8036e340
+/* 8036E950 389A0000 */ addi r4, r26, 0x0
+/* 8036E954 4CC63182 */ crclr 6
+/* 8036E958 38BB0000 */ addi r5, r27, 0x0
+/* 8036E95C 387D0094 */ addi r3, r29, 0x94
+/* 8036E960 4BFFFD55 */ bl func_8036e6b4
+/* 8036E964 48003E61 */ bl func_803727c4
+/* 8036E968 38A30000 */ addi r5, r3, 0x0
+/* 8036E96C 4CC63182 */ crclr 6
+/* 8036E970 38C40000 */ addi r6, r4, 0x0
+/* 8036E974 387D00C8 */ addi r3, r29, 0xc8
+/* 8036E978 4BFFFD3D */ bl func_8036e6b4
+/* 8036E97C 5720063E */ clrlwi r0, r25, 0x18
+/* 8036E980 2800000F */ cmplwi r0, 0xf
+/* 8036E984 418100C4 */ bgt- lbl_8036ea48
+/* 8036E988 3C60804F */ lis r3, jtbl_804ef4d4@ha
+/* 8036E98C 3863F4D4 */ addi r3, r3, jtbl_804ef4d4@l
+/* 8036E990 5400103A */ slwi r0, r0, 2
+/* 8036E994 7C03002E */ lwzx r0, r3, r0
+/* 8036E998 7C0903A6 */ mtctr r0
+/* 8036E99C 4E800420 */ bctr
+lbl_8036e9a0:
+.global jump_8036e9a0
+jump_8036e9a0:
+/* 8036E9A0 809F0198 */ lwz r4, 0x198(r31)
+/* 8036E9A4 38BB0000 */ addi r5, r27, 0x0
+/* 8036E9A8 387D00D8 */ addi r3, r29, 0xd8
+/* 8036E9AC 4CC63182 */ crclr 6
+/* 8036E9B0 4BFFFD05 */ bl func_8036e6b4
+/* 8036E9B4 48000094 */ b lbl_8036ea48
+lbl_8036e9b8:
+.global jump_8036e9b8
+jump_8036e9b8:
+/* 8036E9B8 809F0198 */ lwz r4, 0x198(r31)
+/* 8036E9BC 387D0138 */ addi r3, r29, 0x138
+/* 8036E9C0 4CC63182 */ crclr 6
+/* 8036E9C4 4BFFFCF1 */ bl func_8036e6b4
+/* 8036E9C8 48000080 */ b lbl_8036ea48
+lbl_8036e9cc:
+.global jump_8036e9cc
+jump_8036e9cc:
+/* 8036E9CC 809F0198 */ lwz r4, 0x198(r31)
+/* 8036E9D0 38BB0000 */ addi r5, r27, 0x0
+/* 8036E9D4 387D0184 */ addi r3, r29, 0x184
+/* 8036E9D8 4CC63182 */ crclr 6
+/* 8036E9DC 4BFFFCD9 */ bl func_8036e6b4
+/* 8036E9E0 48000068 */ b lbl_8036ea48
+lbl_8036e9e4:
+.global jump_8036e9e4
+jump_8036e9e4:
+/* 8036E9E4 809F0198 */ lwz r4, 0x198(r31)
+/* 8036E9E8 38BB0000 */ addi r5, r27, 0x0
+/* 8036E9EC 387D01E8 */ addi r3, r29, 0x1e8
+/* 8036E9F0 4CC63182 */ crclr 6
+/* 8036E9F4 4BFFFCC1 */ bl func_8036e6b4
+/* 8036E9F8 48000050 */ b lbl_8036ea48
+lbl_8036e9fc:
+.global jump_8036e9fc
+jump_8036e9fc:
+/* 8036E9FC 386D9F08 */ addi r3, 0, lbl_805c3d28@sda21
+/* 8036EA00 4CC63182 */ crclr 6
+/* 8036EA04 4BFFFCB1 */ bl func_8036e6b4
+/* 8036EA08 3FC0CC00 */ lis r30, 0xcc00
+/* 8036EA0C 4CC63182 */ crclr 6
+/* 8036EA10 3BFE5000 */ addi r31, r30, 0x5000
+/* 8036EA14 A09E5030 */ lhz r4, 0x5030(r30)
+/* 8036EA18 387D0248 */ addi r3, r29, 0x248
+/* 8036EA1C A0BE5032 */ lhz r5, 0x5032(r30)
+/* 8036EA20 4BFFFC95 */ bl func_8036e6b4
+/* 8036EA24 A09F0020 */ lhz r4, 0x20(r31)
+/* 8036EA28 387D0268 */ addi r3, r29, 0x268
+/* 8036EA2C A0BF0022 */ lhz r5, 0x22(r31)
+/* 8036EA30 4CC63182 */ crclr 6
+/* 8036EA34 4BFFFC81 */ bl func_8036e6b4
+/* 8036EA38 809E6014 */ lwz r4, 0x6014(r30)
+/* 8036EA3C 4CC63182 */ crclr 6
+/* 8036EA40 387D0288 */ addi r3, r29, 0x288
+/* 8036EA44 4BFFFC71 */ bl func_8036e6b4
+lbl_8036ea48:
+.global jump_8036ea48
+jump_8036ea48:
+/* 8036EA48 A88DCA50 */ lha r4, lbl_805c6870@sda21(0)
+/* 8036EA4C 387D02A4 */ addi r3, r29, 0x2a4
+/* 8036EA50 4CC63182 */ crclr 6
+/* 8036EA54 80ADCA4C */ lwz r5, lbl_805c686c@sda21(0)
+/* 8036EA58 80EDCA58 */ lwz r7, lbl_805c6878@sda21(0)
+/* 8036EA5C 810DCA5C */ lwz r8, lbl_805c687c@sda21(0)
+/* 8036EA60 4BFFFC55 */ bl func_8036e6b4
+/* 8036EA64 4BFFD755 */ bl func_8036c1b8
+/* 8036EA68 BB21001C */ lmw r25, 0x1c(r1)
+/* 8036EA6C 8001003C */ lwz r0, 0x3c(r1)
+/* 8036EA70 38210038 */ addi r1, r1, 0x38
+/* 8036EA74 7C0803A6 */ mtlr r0
+/* 8036EA78 4E800020 */ blr
+.size func_8036e87c, . - func_8036e87c
+
+
+.global func_8036ea7c
+.type func_8036ea7c, @function
+func_8036ea7c:
+/* 8036EA7C A06D9F10 */ lhz r3, lbl_805c3d30@sda21(0)
+/* 8036EA80 28030001 */ cmplwi r3, 1
+/* 8036EA84 4C810020 */ blelr-
+/* 8036EA88 3C608000 */ lis r3, 0x8000
+/* 8036EA8C 800300CC */ lwz r0, 0xcc(r3)
+/* 8036EA90 2C000000 */ cmpwi r0, 0x0
+/* 8036EA94 4182000C */ beq- lbl_8036eaa0
+/* 8036EA98 4180002C */ blt- lbl_8036eac4
+/* 8036EA9C 48000028 */ b lbl_8036eac4
+lbl_8036eaa0:
+/* 8036EAA0 3C60CC00 */ lis r3, 0xcc00
+/* 8036EAA4 A003206E */ lhz r0, 0x206e(r3)
+/* 8036EAA8 540007BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 8036EAAC 4182000C */ beq- lbl_8036eab8
+/* 8036EAB0 38000001 */ li r0, 0x1
+/* 8036EAB4 48000008 */ b lbl_8036eabc
+lbl_8036eab8:
+/* 8036EAB8 38000000 */ li r0, 0x0
+lbl_8036eabc:
+/* 8036EABC B00D9F10 */ sth r0, lbl_805c3d30@sda21(0)
+/* 8036EAC0 4800000C */ b lbl_8036eacc
+lbl_8036eac4:
+/* 8036EAC4 38000000 */ li r0, 0x0
+/* 8036EAC8 B00D9F10 */ sth r0, lbl_805c3d30@sda21(0)
+lbl_8036eacc:
+/* 8036EACC A06D9F10 */ lhz r3, lbl_805c3d30@sda21(0)
+/* 8036EAD0 4E800020 */ blr
+.size func_8036ea7c, . - func_8036ea7c
+
diff --git a/asm/Dolphin/os/OSInit.s b/asm/Dolphin/os/OSInit.s
new file mode 100644
index 0000000..ba4ecba
--- /dev/null
+++ b/asm/Dolphin/os/OSInit.s
@@ -0,0 +1,263 @@
+.global func_8036c48c
+.type func_8036c48c, @function
+func_8036c48c:
+/* 8036C48C 7C0802A6 */ mflr r0
+/* 8036C490 90010004 */ stw r0, 4(r1)
+/* 8036C494 9421FFE8 */ stwu r1, -0x18(r1)
+/* 8036C498 93E10014 */ stw r31, 0x14(r1)
+/* 8036C49C 93C10010 */ stw r30, 0x10(r1)
+/* 8036C4A0 93A1000C */ stw r29, 0xc(r1)
+/* 8036C4A4 800DCA08 */ lwz r0, lbl_805c6828@sda21(0)
+/* 8036C4A8 3C808054 */ lis r4, lbl_8053ebe0@ha
+/* 8036C4AC 3C60804F */ lis r3, lbl_804eebb0@ha
+/* 8036C4B0 2C000000 */ cmpwi r0, 0x0
+/* 8036C4B4 3BC4EBE0 */ addi r30, r4, lbl_8053ebe0@l
+/* 8036C4B8 3BE3EBB0 */ addi r31, r3, lbl_804eebb0@l
+/* 8036C4BC 4082036C */ bne- lbl_8036c828
+/* 8036C4C0 38000001 */ li r0, 0x1
+/* 8036C4C4 900DCA08 */ stw r0, lbl_805c6828@sda21(0)
+/* 8036C4C8 4800631D */ bl func_803727e4
+/* 8036C4CC 908DCA24 */ stw r4, lbl_805c6844@sda21(0)
+/* 8036C4D0 906DCA20 */ stw r3, lbl_805c6840@sda21(0)
+/* 8036C4D4 48002601 */ bl func_8036ead4
+/* 8036C4D8 4BFFFD0D */ bl func_8036c1e4
+/* 8036C4DC 4BFFFD31 */ bl func_8036c20c
+/* 8036C4E0 38000000 */ li r0, 0x0
+/* 8036C4E4 3C808000 */ lis r4, 0x8000
+/* 8036C4E8 900DC9FC */ stw r0, lbl_805c681c@sda21(0)
+/* 8036C4EC 908DC9F8 */ stw r4, lbl_805c6818@sda21(0)
+/* 8036C4F0 900DCB04 */ stw r0, lbl_805c6924@sda21(0)
+/* 8036C4F4 806400F4 */ lwz r3, 0xf4(r4)
+/* 8036C4F8 28030000 */ cmplwi r3, 0
+/* 8036C4FC 41820034 */ beq- lbl_8036c530
+/* 8036C500 3803000C */ addi r0, r3, 0xc
+/* 8036C504 900DC9FC */ stw r0, lbl_805c681c@sda21(0)
+/* 8036C508 80030024 */ lwz r0, 0x24(r3)
+/* 8036C50C 806DC9FC */ lwz r3, lbl_805c681c@sda21(0)
+/* 8036C510 900DCBDC */ stw r0, lbl_805c69fc@sda21(0)
+/* 8036C514 80030000 */ lwz r0, 0(r3)
+/* 8036C518 5400063E */ clrlwi r0, r0, 0x18
+/* 8036C51C 980430E8 */ stb r0, 0x30e8(r4)
+/* 8036C520 800DCBDC */ lwz r0, lbl_805c69fc@sda21(0)
+/* 8036C524 5400063E */ clrlwi r0, r0, 0x18
+/* 8036C528 980430E9 */ stb r0, 0x30e9(r4)
+/* 8036C52C 48000028 */ b lbl_8036c554
+lbl_8036c530:
+/* 8036C530 80040034 */ lwz r0, 0x34(r4)
+/* 8036C534 28000000 */ cmplwi r0, 0
+/* 8036C538 4182001C */ beq- lbl_8036c554
+/* 8036C53C 886430E8 */ lbz r3, 0x30e8(r4)
+/* 8036C540 380DCA00 */ addi r0, 0, lbl_805c6820@sda21
+/* 8036C544 906DCA00 */ stw r3, lbl_805c6820@sda21(0)
+/* 8036C548 900DC9FC */ stw r0, lbl_805c681c@sda21(0)
+/* 8036C54C 880430E9 */ lbz r0, 0x30e9(r4)
+/* 8036C550 900DCBDC */ stw r0, lbl_805c69fc@sda21(0)
+lbl_8036c554:
+/* 8036C554 38000001 */ li r0, 0x1
+/* 8036C558 806DC9F8 */ lwz r3, lbl_805c6818@sda21(0)
+/* 8036C55C 900DCB04 */ stw r0, lbl_805c6924@sda21(0)
+/* 8036C560 80630030 */ lwz r3, 0x30(r3)
+/* 8036C564 28030000 */ cmplwi r3, 0
+/* 8036C568 40820010 */ bne- lbl_8036c578
+/* 8036C56C 3C60805E */ lis r3, 0x805e
+/* 8036C570 386329E0 */ addi r3, r3, 0x29e0
+/* 8036C574 48000004 */ b lbl_8036c578
+lbl_8036c578:
+/* 8036C578 480010B9 */ bl func_8036d630
+/* 8036C57C 806DC9F8 */ lwz r3, lbl_805c6818@sda21(0)
+/* 8036C580 80030030 */ lwz r0, 0x30(r3)
+/* 8036C584 28000000 */ cmplwi r0, 0
+/* 8036C588 40820030 */ bne- lbl_8036c5b8
+/* 8036C58C 806DC9FC */ lwz r3, lbl_805c681c@sda21(0)
+/* 8036C590 28030000 */ cmplwi r3, 0
+/* 8036C594 41820024 */ beq- lbl_8036c5b8
+/* 8036C598 80030000 */ lwz r0, 0(r3)
+/* 8036C59C 28000002 */ cmplwi r0, 2
+/* 8036C5A0 40800018 */ bge- lbl_8036c5b8
+/* 8036C5A4 3C60805E */ lis r3, 0x805e
+/* 8036C5A8 386309C8 */ addi r3, r3, 0x9c8
+/* 8036C5AC 3803001F */ addi r0, r3, 0x1f
+/* 8036C5B0 54030034 */ rlwinm r3, r0, 0, 0, 0x1a
+/* 8036C5B4 4800107D */ bl func_8036d630
+lbl_8036c5b8:
+/* 8036C5B8 806DC9F8 */ lwz r3, lbl_805c6818@sda21(0)
+/* 8036C5BC 80630034 */ lwz r3, 0x34(r3)
+/* 8036C5C0 28030000 */ cmplwi r3, 0
+/* 8036C5C4 40820010 */ bne- lbl_8036c5d4
+/* 8036C5C8 3C608170 */ lis r3, 0x8170
+/* 8036C5CC 38630000 */ addi r3, r3, 0x0
+/* 8036C5D0 48000004 */ b lbl_8036c5d4
+lbl_8036c5d4:
+/* 8036C5D4 48001055 */ bl func_8036d628
+/* 8036C5D8 4800026D */ bl func_8036c844
+/* 8036C5DC 48004FE1 */ bl func_803715bc
+/* 8036C5E0 4800067D */ bl func_8036cc5c
+/* 8036C5E4 480034C9 */ bl func_8036faac
+/* 8036C5E8 48002569 */ bl func_8036eb50
+/* 8036C5EC 3C608037 */ lis r3, func_803707e4@ha
+/* 8036C5F0 388307E4 */ addi r4, r3, func_803707e4@l
+/* 8036C5F4 38600016 */ li r3, 0x16
+/* 8036C5F8 48002529 */ bl func_8036eb20
+/* 8036C5FC 48002071 */ bl func_8036e66c
+/* 8036C600 48001759 */ bl func_8036dd58
+/* 8036C604 480C0065 */ bl func_8042c668
+/* 8036C608 480C1315 */ bl func_8042d91c
+/* 8036C60C 480046DD */ bl func_80370ce8
+/* 8036C610 48005011 */ bl func_80371620
+/* 8036C614 48001025 */ bl func_8036d638
+/* 8036C618 4BFFFBB5 */ bl func_8036c1cc
+/* 8036C61C 54630080 */ rlwinm r3, r3, 0, 2, 0
+/* 8036C620 4BFFFBB5 */ bl func_8036c1d4
+/* 8036C624 806DC9F8 */ lwz r3, lbl_805c6818@sda21(0)
+/* 8036C628 3883002C */ addi r4, r3, 0x2c
+/* 8036C62C 80040000 */ lwz r0, 0(r4)
+/* 8036C630 540000C6 */ rlwinm r0, r0, 0, 3, 3
+/* 8036C634 28000000 */ cmplwi r0, 0
+/* 8036C638 41820014 */ beq- lbl_8036c64c
+/* 8036C63C 3C601000 */ lis r3, 0x1000
+/* 8036C640 38030004 */ addi r0, r3, 0x4
+/* 8036C644 90040000 */ stw r0, 0(r4)
+/* 8036C648 4800000C */ b lbl_8036c654
+lbl_8036c64c:
+/* 8036C64C 38000001 */ li r0, 0x1
+/* 8036C650 90040000 */ stw r0, 0(r4)
+lbl_8036c654:
+/* 8036C654 3C60CC00 */ lis r3, 0xcc00
+/* 8036C658 808DC9F8 */ lwz r4, lbl_805c6818@sda21(0)
+/* 8036C65C 38633000 */ addi r3, r3, 0x3000
+/* 8036C660 8003002C */ lwz r0, 0x2c(r3)
+/* 8036C664 8064002C */ lwz r3, 0x2c(r4)
+/* 8036C668 54000006 */ rlwinm r0, r0, 0, 0, 3
+/* 8036C66C 5400273E */ srwi r0, r0, 0x1c
+/* 8036C670 7C030214 */ add r0, r3, r0
+/* 8036C674 9004002C */ stw r0, 0x2c(r4)
+/* 8036C678 800DCA18 */ lwz r0, lbl_805c6838@sda21(0)
+/* 8036C67C 2C000000 */ cmpwi r0, 0x0
+/* 8036C680 40820008 */ bne- lbl_8036c688
+/* 8036C684 48003805 */ bl func_8036fe88
+lbl_8036c688:
+/* 8036C688 7FE3FB78 */ mr r3, r31
+/* 8036C68C 4CC63182 */ crclr 6
+/* 8036C690 48002025 */ bl func_8036e6b4
+/* 8036C694 387F0020 */ addi r3, r31, 0x20
+/* 8036C698 4CC63182 */ crclr 6
+/* 8036C69C 389F0038 */ addi r4, r31, 0x38
+/* 8036C6A0 38BF0044 */ addi r5, r31, 0x44
+/* 8036C6A4 48002011 */ bl func_8036e6b4
+/* 8036C6A8 387F0050 */ addi r3, r31, 0x50
+/* 8036C6AC 4CC63182 */ crclr 6
+/* 8036C6B0 48002005 */ bl func_8036e6b4
+/* 8036C6B4 806DC9F8 */ lwz r3, lbl_805c6818@sda21(0)
+/* 8036C6B8 28030000 */ cmplwi r3, 0
+/* 8036C6BC 41820010 */ beq- lbl_8036c6cc
+/* 8036C6C0 8083002C */ lwz r4, 0x2c(r3)
+/* 8036C6C4 28040000 */ cmplwi r4, 0
+/* 8036C6C8 40820010 */ bne- lbl_8036c6d8
+lbl_8036c6cc:
+/* 8036C6CC 3C601000 */ lis r3, 0x1000
+/* 8036C6D0 38830002 */ addi r4, r3, 0x2
+/* 8036C6D4 48000004 */ b lbl_8036c6d8
+lbl_8036c6d8:
+/* 8036C6D8 548000C6 */ rlwinm r0, r4, 0, 3, 3
+/* 8036C6DC 28000000 */ cmplwi r0, 0
+/* 8036C6E0 40820014 */ bne- lbl_8036c6f4
+/* 8036C6E4 4CC63182 */ crclr 6
+/* 8036C6E8 387F0060 */ addi r3, r31, 0x60
+/* 8036C6EC 48001FC9 */ bl func_8036e6b4
+/* 8036C6F0 4800008C */ b lbl_8036c77c
+lbl_8036c6f4:
+/* 8036C6F4 3C601000 */ lis r3, 0x1000
+/* 8036C6F8 38030002 */ addi r0, r3, 0x2
+/* 8036C6FC 7C040000 */ cmpw r4, r0
+/* 8036C700 41820048 */ beq- lbl_8036c748
+/* 8036C704 40800014 */ bge- lbl_8036c718
+/* 8036C708 7C041800 */ cmpw r4, r3
+/* 8036C70C 4182001C */ beq- lbl_8036c728
+/* 8036C710 40800028 */ bge- lbl_8036c738
+/* 8036C714 48000054 */ b lbl_8036c768
+lbl_8036c718:
+/* 8036C718 38030004 */ addi r0, r3, 0x4
+/* 8036C71C 7C040000 */ cmpw r4, r0
+/* 8036C720 40800048 */ bge- lbl_8036c768
+/* 8036C724 48000034 */ b lbl_8036c758
+lbl_8036c728:
+/* 8036C728 387F006C */ addi r3, r31, 0x6c
+/* 8036C72C 4CC63182 */ crclr 6
+/* 8036C730 48001F85 */ bl func_8036e6b4
+/* 8036C734 48000048 */ b lbl_8036c77c
+lbl_8036c738:
+/* 8036C738 387F007C */ addi r3, r31, 0x7c
+/* 8036C73C 4CC63182 */ crclr 6
+/* 8036C740 48001F75 */ bl func_8036e6b4
+/* 8036C744 48000038 */ b lbl_8036c77c
+lbl_8036c748:
+/* 8036C748 387F008C */ addi r3, r31, 0x8c
+/* 8036C74C 4CC63182 */ crclr 6
+/* 8036C750 48001F65 */ bl func_8036e6b4
+/* 8036C754 48000028 */ b lbl_8036c77c
+lbl_8036c758:
+/* 8036C758 387F009C */ addi r3, r31, 0x9c
+/* 8036C75C 4CC63182 */ crclr 6
+/* 8036C760 48001F55 */ bl func_8036e6b4
+/* 8036C764 48000018 */ b lbl_8036c77c
+lbl_8036c768:
+/* 8036C768 3C84F000 */ addis r4, r4, 0xf000
+/* 8036C76C 4CC63182 */ crclr 6
+/* 8036C770 387F00AC */ addi r3, r31, 0xac
+/* 8036C774 3884FFFD */ addi r4, r4, -0x3
+/* 8036C778 48001F3D */ bl func_8036e6b4
+lbl_8036c77c:
+/* 8036C77C 808DC9F8 */ lwz r4, lbl_805c6818@sda21(0)
+/* 8036C780 387F00C0 */ addi r3, r31, 0xc0
+/* 8036C784 4CC63182 */ crclr 6
+/* 8036C788 80040028 */ lwz r0, 0x28(r4)
+/* 8036C78C 5404653E */ srwi r4, r0, 0x14
+/* 8036C790 48001F25 */ bl func_8036e6b4
+/* 8036C794 48000E85 */ bl func_8036d618
+/* 8036C798 7C7D1B78 */ mr r29, r3
+/* 8036C79C 48000E85 */ bl func_8036d620
+/* 8036C7A0 7C641B78 */ mr r4, r3
+/* 8036C7A4 4CC63182 */ crclr 6
+/* 8036C7A8 7FA5EB78 */ mr r5, r29
+/* 8036C7AC 387F00D0 */ addi r3, r31, 0xd0
+/* 8036C7B0 48001F05 */ bl func_8036e6b4
+/* 8036C7B4 806DC9FC */ lwz r3, lbl_805c681c@sda21(0)
+/* 8036C7B8 28030000 */ cmplwi r3, 0
+/* 8036C7BC 41820014 */ beq- lbl_8036c7d0
+/* 8036C7C0 80030000 */ lwz r0, 0(r3)
+/* 8036C7C4 28000002 */ cmplwi r0, 2
+/* 8036C7C8 41800008 */ blt- lbl_8036c7d0
+/* 8036C7CC 48025B45 */ bl func_80392310
+lbl_8036c7d0:
+/* 8036C7D0 4BFFFB59 */ bl func_8036c328
+/* 8036C7D4 48002315 */ bl func_8036eae8
+/* 8036C7D8 800DCA18 */ lwz r0, lbl_805c6838@sda21(0)
+/* 8036C7DC 2C000000 */ cmpwi r0, 0x0
+/* 8036C7E0 40820048 */ bne- lbl_8036c828
+/* 8036C7E4 48008929 */ bl func_8037510c
+/* 8036C7E8 800DCA04 */ lwz r0, lbl_805c6824@sda21(0)
+/* 8036C7EC 2C000000 */ cmpwi r0, 0x0
+/* 8036C7F0 41820018 */ beq- lbl_8036c808
+/* 8036C7F4 3C600001 */ lis r3, 1
+/* 8036C7F8 38039000 */ addi r0, r3, -0x7000
+/* 8036C7FC 3C608000 */ lis r3, 0x8000
+/* 8036C800 B00330E6 */ sth r0, 0x30e6(r3)
+/* 8036C804 48000024 */ b lbl_8036c828
+lbl_8036c808:
+/* 8036C808 7FC3F378 */ mr r3, r30
+/* 8036C80C 38800020 */ li r4, 0x20
+/* 8036C810 480010D1 */ bl func_8036d8e0
+/* 8036C814 3C608037 */ lis r3, func_8036c450@ha
+/* 8036C818 38A3C450 */ addi r5, r3, func_8036c450@l
+/* 8036C81C 7FC4F378 */ mr r4, r30
+/* 8036C820 387E0020 */ addi r3, r30, 0x20
+/* 8036C824 4800A609 */ bl func_80376e2c
+lbl_8036c828:
+/* 8036C828 8001001C */ lwz r0, 0x1c(r1)
+/* 8036C82C 83E10014 */ lwz r31, 0x14(r1)
+/* 8036C830 83C10010 */ lwz r30, 0x10(r1)
+/* 8036C834 83A1000C */ lwz r29, 0xc(r1)
+/* 8036C838 38210018 */ addi r1, r1, 0x18
+/* 8036C83C 7C0803A6 */ mtlr r0
+/* 8036C840 4E800020 */ blr
+.size func_8036c48c, . - func_8036c48c
diff --git a/asm/Dolphin/os/OSInterrupt-data.s b/asm/Dolphin/os/OSInterrupt-data.s
new file mode 100644
index 0000000..614d667
--- /dev/null
+++ b/asm/Dolphin/os/OSInterrupt-data.s
@@ -0,0 +1,23 @@
+.include "macros.inc"
+
+.section .data
+
+.balign 8
+
+.global lbl_804ef518
+.type lbl_804ef518, @object
+lbl_804ef518:
+/* 804EF518 00000100 */ .4byte 0x00000100
+/* 804EF51C 00000040 */ .4byte 0x00000040
+/* 804EF520 F8000000 */ .4byte 0xf8000000
+/* 804EF524 00000200 */ .4byte 0x00000200
+/* 804EF528 00000080 */ .4byte 0x00000080
+/* 804EF52C 00003000 */ .4byte 0x00003000
+/* 804EF530 00000020 */ .4byte 0x00000020
+/* 804EF534 03FF8C00 */ .4byte 0x03ff8c00
+/* 804EF538 04000000 */ .4byte 0x04000000
+/* 804EF53C 00004000 */ .4byte 0x00004000
+/* 804EF540 FFFFFFFF */ .4byte 0xffffffff
+/* 804EF544 00000000 */ .4byte 0x00000000
+.size lbl_804ef518, . - lbl_804ef518
+
diff --git a/asm/Dolphin/os/OSInterrupt.s b/asm/Dolphin/os/OSInterrupt.s
new file mode 100644
index 0000000..4578586
--- /dev/null
+++ b/asm/Dolphin/os/OSInterrupt.s
@@ -0,0 +1,696 @@
+.include "macros.inc"
+
+.section .text
+
+.global func_8036ead4
+.type func_8036ead4, @function
+func_8036ead4:
+/* 8036EAD4 7C6000A6 */ mfmsr r3
+/* 8036EAD8 5464045E */ rlwinm r4, r3, 0, 0x11, 0xf
+/* 8036EADC 7C800124 */ mtmsr r4
+/* 8036EAE0 54638FFE */ rlwinm r3, r3, 0x11, 0x1f, 0x1f
+.size func_8036ead4, . - func_8036ead4
+
+
+.global func_8036eae4
+.type func_8036eae4, @function
+func_8036eae4:
+/* 8036EAE4 4E800020 */ blr
+.size func_8036eae4, . - func_8036eae4
+
+
+.global func_8036eae8
+.type func_8036eae8, @function
+func_8036eae8:
+/* 8036EAE8 7C6000A6 */ mfmsr r3
+/* 8036EAEC 60648000 */ ori r4, r3, 0x8000
+/* 8036EAF0 7C800124 */ mtmsr r4
+/* 8036EAF4 54638FFE */ rlwinm r3, r3, 0x11, 0x1f, 0x1f
+/* 8036EAF8 4E800020 */ blr
+.size func_8036eae8, . - func_8036eae8
+
+
+.global func_8036eafc
+.type func_8036eafc, @function
+func_8036eafc:
+/* 8036EAFC 2C030000 */ cmpwi r3, 0x0
+/* 8036EB00 7C8000A6 */ mfmsr r4
+/* 8036EB04 4182000C */ beq- lbl_8036eb10
+/* 8036EB08 60858000 */ ori r5, r4, 0x8000
+/* 8036EB0C 48000008 */ b lbl_8036eb14
+lbl_8036eb10:
+/* 8036EB10 5485045E */ rlwinm r5, r4, 0, 0x11, 0xf
+lbl_8036eb14:
+/* 8036EB14 7CA00124 */ mtmsr r5
+/* 8036EB18 54838FFE */ rlwinm r3, r4, 0x11, 0x1f, 0x1f
+/* 8036EB1C 4E800020 */ blr
+.size func_8036eafc, . - func_8036eafc
+
+
+.global func_8036eb20
+.type func_8036eb20, @function
+func_8036eb20:
+/* 8036EB20 7C600734 */ extsh r0, r3
+/* 8036EB24 806DCA48 */ lwz r3, lbl_805c6868@sda21(0)
+/* 8036EB28 5400103A */ slwi r0, r0, 2
+/* 8036EB2C 7CA30214 */ add r5, r3, r0
+/* 8036EB30 80650000 */ lwz r3, 0(r5)
+/* 8036EB34 90850000 */ stw r4, 0(r5)
+/* 8036EB38 4E800020 */ blr
+.size func_8036eb20, . - func_8036eb20
+
+
+.global func_8036eb3c
+.type func_8036eb3c, @function
+func_8036eb3c:
+/* 8036EB3C 7C600734 */ extsh r0, r3
+/* 8036EB40 806DCA48 */ lwz r3, lbl_805c6868@sda21(0)
+/* 8036EB44 5400103A */ slwi r0, r0, 2
+/* 8036EB48 7C63002E */ lwzx r3, r3, r0
+/* 8036EB4C 4E800020 */ blr
+.size func_8036eb3c, . - func_8036eb3c
+
+
+.global func_8036eb50
+.type func_8036eb50, @function
+func_8036eb50:
+/* 8036EB50 7C0802A6 */ mflr r0
+/* 8036EB54 90010004 */ stw r0, 4(r1)
+/* 8036EB58 9421FFF0 */ stwu r1, -0x10(r1)
+/* 8036EB5C 93E1000C */ stw r31, 0xc(r1)
+/* 8036EB60 3FE08000 */ lis r31, 0x8000
+/* 8036EB64 381F3040 */ addi r0, r31, 0x3040
+/* 8036EB68 900DCA48 */ stw r0, lbl_805c6868@sda21(0)
+/* 8036EB6C 38800000 */ li r4, 0x0
+/* 8036EB70 38A00080 */ li r5, 0x80
+/* 8036EB74 806DCA48 */ lwz r3, lbl_805c6868@sda21(0)
+/* 8036EB78 4BC9F7BD */ bl func_8000e334
+/* 8036EB7C 38000000 */ li r0, 0x0
+/* 8036EB80 901F00C4 */ stw r0, 0xc4(r31)
+/* 8036EB84 3C60CC00 */ lis r3, 0xcc00
+/* 8036EB88 38833000 */ addi r4, r3, 0x3000
+/* 8036EB8C 901F00C8 */ stw r0, 0xc8(r31)
+/* 8036EB90 380000F0 */ li r0, 0xf0
+/* 8036EB94 3860FFE0 */ li r3, -0x20
+/* 8036EB98 90040004 */ stw r0, 4(r4)
+/* 8036EB9C 48000301 */ bl func_8036ee9c
+/* 8036EBA0 3C608037 */ lis r3, func_8036f2f0@ha
+/* 8036EBA4 3883F2F0 */ addi r4, r3, func_8036f2f0@l
+/* 8036EBA8 38600004 */ li r3, 0x4
+/* 8036EBAC 4BFFDF41 */ bl func_8036caec
+/* 8036EBB0 80010014 */ lwz r0, 0x14(r1)
+/* 8036EBB4 83E1000C */ lwz r31, 0xc(r1)
+/* 8036EBB8 38210010 */ addi r1, r1, 0x10
+/* 8036EBBC 7C0803A6 */ mtlr r0
+/* 8036EBC0 4E800020 */ blr
+.size func_8036eb50, . - func_8036eb50
+
+
+.global func_8036ebc4
+.type func_8036ebc4, @function
+func_8036ebc4:
+/* 8036EBC4 7C600034 */ cntlzw r0, r3
+/* 8036EBC8 2C00000C */ cmpwi r0, 0xc
+/* 8036EBCC 40800024 */ bge- lbl_8036ebf0
+/* 8036EBD0 2C000008 */ cmpwi r0, 0x8
+/* 8036EBD4 418200FC */ beq- lbl_8036ecd0
+/* 8036EBD8 40800128 */ bge- lbl_8036ed00
+/* 8036EBDC 2C000005 */ cmpwi r0, 0x5
+/* 8036EBE0 4080009C */ bge- lbl_8036ec7c
+/* 8036EBE4 2C000000 */ cmpwi r0, 0x0
+/* 8036EBE8 40800028 */ bge- lbl_8036ec10
+/* 8036EBEC 480002AC */ b lbl_8036ee98
+lbl_8036ebf0:
+/* 8036EBF0 2C000011 */ cmpwi r0, 0x11
+/* 8036EBF4 40800010 */ bge- lbl_8036ec04
+/* 8036EBF8 2C00000F */ cmpwi r0, 0xf
+/* 8036EBFC 408001A8 */ bge- lbl_8036eda4
+/* 8036EC00 48000150 */ b lbl_8036ed50
+lbl_8036ec04:
+/* 8036EC04 2C00001B */ cmpwi r0, 0x1b
+/* 8036EC08 40800290 */ bge- lbl_8036ee98
+/* 8036EC0C 480001D8 */ b lbl_8036ede4
+lbl_8036ec10:
+/* 8036EC10 54800000 */ rlwinm r0, r4, 0, 0, 0
+/* 8036EC14 28000000 */ cmplwi r0, 0
+/* 8036EC18 38A00000 */ li r5, 0x0
+/* 8036EC1C 40820008 */ bne- lbl_8036ec24
+/* 8036EC20 60A50001 */ ori r5, r5, 1
+lbl_8036ec24:
+/* 8036EC24 54800042 */ rlwinm r0, r4, 0, 1, 1
+/* 8036EC28 28000000 */ cmplwi r0, 0
+/* 8036EC2C 40820008 */ bne- lbl_8036ec34
+/* 8036EC30 60A50002 */ ori r5, r5, 2
+lbl_8036ec34:
+/* 8036EC34 54800084 */ rlwinm r0, r4, 0, 2, 2
+/* 8036EC38 28000000 */ cmplwi r0, 0
+/* 8036EC3C 40820008 */ bne- lbl_8036ec44
+/* 8036EC40 60A50004 */ ori r5, r5, 4
+lbl_8036ec44:
+/* 8036EC44 548000C6 */ rlwinm r0, r4, 0, 3, 3
+/* 8036EC48 28000000 */ cmplwi r0, 0
+/* 8036EC4C 40820008 */ bne- lbl_8036ec54
+/* 8036EC50 60A50008 */ ori r5, r5, 8
+lbl_8036ec54:
+/* 8036EC54 54800108 */ rlwinm r0, r4, 0, 4, 4
+/* 8036EC58 28000000 */ cmplwi r0, 0
+/* 8036EC5C 40820008 */ bne- lbl_8036ec64
+/* 8036EC60 60A50010 */ ori r5, r5, 0x10
+lbl_8036ec64:
+/* 8036EC64 3C80CC00 */ lis r4, 0xcc00
+/* 8036EC68 54A0043E */ clrlwi r0, r5, 0x10
+/* 8036EC6C 38844000 */ addi r4, r4, 0x4000
+/* 8036EC70 B004001C */ sth r0, 0x1c(r4)
+/* 8036EC74 5463017E */ clrlwi r3, r3, 5
+/* 8036EC78 48000220 */ b lbl_8036ee98
+lbl_8036ec7c:
+/* 8036EC7C 3CA0CC00 */ lis r5, 0xcc00
+/* 8036EC80 38A55000 */ addi r5, r5, 0x5000
+/* 8036EC84 38A5000A */ addi r5, r5, 0xa
+/* 8036EC88 5480014A */ rlwinm r0, r4, 0, 5, 5
+/* 8036EC8C A0C50000 */ lhz r6, 0(r5)
+/* 8036EC90 28000000 */ cmplwi r0, 0
+/* 8036EC94 54C6076C */ rlwinm r6, r6, 0, 0x1d, 0x16
+/* 8036EC98 40820008 */ bne- lbl_8036eca0
+/* 8036EC9C 60C60010 */ ori r6, r6, 0x10
+lbl_8036eca0:
+/* 8036ECA0 5480018C */ rlwinm r0, r4, 0, 6, 6
+/* 8036ECA4 28000000 */ cmplwi r0, 0
+/* 8036ECA8 40820008 */ bne- lbl_8036ecb0
+/* 8036ECAC 60C60040 */ ori r6, r6, 0x40
+lbl_8036ecb0:
+/* 8036ECB0 548001CE */ rlwinm r0, r4, 0, 7, 7
+/* 8036ECB4 28000000 */ cmplwi r0, 0
+/* 8036ECB8 40820008 */ bne- lbl_8036ecc0
+/* 8036ECBC 60C60100 */ ori r6, r6, 0x100
+lbl_8036ecc0:
+/* 8036ECC0 54C0043E */ clrlwi r0, r6, 0x10
+/* 8036ECC4 B0050000 */ sth r0, 0(r5)
+/* 8036ECC8 54630208 */ rlwinm r3, r3, 0, 8, 4
+/* 8036ECCC 480001CC */ b lbl_8036ee98
+lbl_8036ecd0:
+/* 8036ECD0 54800210 */ rlwinm r0, r4, 0, 8, 8
+/* 8036ECD4 3C80CC00 */ lis r4, 0xcc00
+/* 8036ECD8 28000000 */ cmplwi r0, 0
+/* 8036ECDC 80A46C00 */ lwz r5, 0x6c00(r4)
+/* 8036ECE0 3800FFD3 */ li r0, -0x2d
+/* 8036ECE4 7CA50038 */ and r5, r5, r0
+/* 8036ECE8 40820008 */ bne- lbl_8036ecf0
+/* 8036ECEC 60A50004 */ ori r5, r5, 4
+lbl_8036ecf0:
+/* 8036ECF0 3C80CC00 */ lis r4, 0xcc00
+/* 8036ECF4 90A46C00 */ stw r5, 0x6c00(r4)
+/* 8036ECF8 5463024E */ rlwinm r3, r3, 0, 9, 7
+/* 8036ECFC 4800019C */ b lbl_8036ee98
+lbl_8036ed00:
+/* 8036ED00 54800252 */ rlwinm r0, r4, 0, 9, 9
+/* 8036ED04 3CA0CC00 */ lis r5, 0xcc00
+/* 8036ED08 28000000 */ cmplwi r0, 0
+/* 8036ED0C 80A56800 */ lwz r5, 0x6800(r5)
+/* 8036ED10 3800D3F0 */ li r0, -0x2c10
+/* 8036ED14 7CA50038 */ and r5, r5, r0
+/* 8036ED18 40820008 */ bne- lbl_8036ed20
+/* 8036ED1C 60A50001 */ ori r5, r5, 1
+lbl_8036ed20:
+/* 8036ED20 54800294 */ rlwinm r0, r4, 0, 0xa, 0xa
+/* 8036ED24 28000000 */ cmplwi r0, 0
+/* 8036ED28 40820008 */ bne- lbl_8036ed30
+/* 8036ED2C 60A50004 */ ori r5, r5, 4
+lbl_8036ed30:
+/* 8036ED30 548002D6 */ rlwinm r0, r4, 0, 0xb, 0xb
+/* 8036ED34 28000000 */ cmplwi r0, 0
+/* 8036ED38 40820008 */ bne- lbl_8036ed40
+/* 8036ED3C 60A50400 */ ori r5, r5, 0x400
+lbl_8036ed40:
+/* 8036ED40 3C80CC00 */ lis r4, 0xcc00
+/* 8036ED44 90A46800 */ stw r5, 0x6800(r4)
+/* 8036ED48 54630310 */ rlwinm r3, r3, 0, 0xc, 8
+/* 8036ED4C 4800014C */ b lbl_8036ee98
+lbl_8036ed50:
+/* 8036ED50 3CA0CC00 */ lis r5, 0xcc00
+/* 8036ED54 38C56800 */ addi r6, r5, 0x6800
+/* 8036ED58 38C60014 */ addi r6, r6, 0x14
+/* 8036ED5C 54800318 */ rlwinm r0, r4, 0, 0xc, 0xc
+/* 8036ED60 80E60000 */ lwz r7, 0(r6)
+/* 8036ED64 38A0F3F0 */ li r5, -0xc10
+/* 8036ED68 28000000 */ cmplwi r0, 0
+/* 8036ED6C 7CE72838 */ and r7, r7, r5
+/* 8036ED70 40820008 */ bne- lbl_8036ed78
+/* 8036ED74 60E70001 */ ori r7, r7, 1
+lbl_8036ed78:
+/* 8036ED78 5480035A */ rlwinm r0, r4, 0, 0xd, 0xd
+/* 8036ED7C 28000000 */ cmplwi r0, 0
+/* 8036ED80 40820008 */ bne- lbl_8036ed88
+/* 8036ED84 60E70004 */ ori r7, r7, 4
+lbl_8036ed88:
+/* 8036ED88 5480039C */ rlwinm r0, r4, 0, 0xe, 0xe
+/* 8036ED8C 28000000 */ cmplwi r0, 0
+/* 8036ED90 40820008 */ bne- lbl_8036ed98
+/* 8036ED94 60E70400 */ ori r7, r7, 0x400
+lbl_8036ed98:
+/* 8036ED98 90E60000 */ stw r7, 0(r6)
+/* 8036ED9C 546303D6 */ rlwinm r3, r3, 0, 0xf, 0xb
+/* 8036EDA0 480000F8 */ b lbl_8036ee98
+lbl_8036eda4:
+/* 8036EDA4 3CA0CC00 */ lis r5, 0xcc00
+/* 8036EDA8 38A56800 */ addi r5, r5, 0x6800
+/* 8036EDAC 38A50028 */ addi r5, r5, 0x28
+/* 8036EDB0 548003DE */ rlwinm r0, r4, 0, 0xf, 0xf
+/* 8036EDB4 80C50000 */ lwz r6, 0(r5)
+/* 8036EDB8 28000000 */ cmplwi r0, 0
+/* 8036EDBC 54C60036 */ rlwinm r6, r6, 0, 0, 0x1b
+/* 8036EDC0 40820008 */ bne- lbl_8036edc8
+/* 8036EDC4 60C60001 */ ori r6, r6, 1
+lbl_8036edc8:
+/* 8036EDC8 54800420 */ rlwinm r0, r4, 0, 0x10, 0x10
+/* 8036EDCC 28000000 */ cmplwi r0, 0
+/* 8036EDD0 40820008 */ bne- lbl_8036edd8
+/* 8036EDD4 60C60004 */ ori r6, r6, 4
+lbl_8036edd8:
+/* 8036EDD8 90C50000 */ stw r6, 0(r5)
+/* 8036EDDC 5463045C */ rlwinm r3, r3, 0, 0x11, 0xe
+/* 8036EDE0 480000B8 */ b lbl_8036ee98
+lbl_8036ede4:
+/* 8036EDE4 54800462 */ rlwinm r0, r4, 0, 0x11, 0x11
+/* 8036EDE8 28000000 */ cmplwi r0, 0
+/* 8036EDEC 38A000F0 */ li r5, 0xf0
+/* 8036EDF0 40820008 */ bne- lbl_8036edf8
+/* 8036EDF4 60A50800 */ ori r5, r5, 0x800
+lbl_8036edf8:
+/* 8036EDF8 54800528 */ rlwinm r0, r4, 0, 0x14, 0x14
+/* 8036EDFC 28000000 */ cmplwi r0, 0
+/* 8036EE00 40820008 */ bne- lbl_8036ee08
+/* 8036EE04 60A50008 */ ori r5, r5, 8
+lbl_8036ee08:
+/* 8036EE08 5480056A */ rlwinm r0, r4, 0, 0x15, 0x15
+/* 8036EE0C 28000000 */ cmplwi r0, 0
+/* 8036EE10 40820008 */ bne- lbl_8036ee18
+/* 8036EE14 60A50004 */ ori r5, r5, 4
+lbl_8036ee18:
+/* 8036EE18 548005AC */ rlwinm r0, r4, 0, 0x16, 0x16
+/* 8036EE1C 28000000 */ cmplwi r0, 0
+/* 8036EE20 40820008 */ bne- lbl_8036ee28
+/* 8036EE24 60A50002 */ ori r5, r5, 2
+lbl_8036ee28:
+/* 8036EE28 548005EE */ rlwinm r0, r4, 0, 0x17, 0x17
+/* 8036EE2C 28000000 */ cmplwi r0, 0
+/* 8036EE30 40820008 */ bne- lbl_8036ee38
+/* 8036EE34 60A50001 */ ori r5, r5, 1
+lbl_8036ee38:
+/* 8036EE38 54800630 */ rlwinm r0, r4, 0, 0x18, 0x18
+/* 8036EE3C 28000000 */ cmplwi r0, 0
+/* 8036EE40 40820008 */ bne- lbl_8036ee48
+/* 8036EE44 60A50100 */ ori r5, r5, 0x100
+lbl_8036ee48:
+/* 8036EE48 54800672 */ rlwinm r0, r4, 0, 0x19, 0x19
+/* 8036EE4C 28000000 */ cmplwi r0, 0
+/* 8036EE50 40820008 */ bne- lbl_8036ee58
+/* 8036EE54 60A51000 */ ori r5, r5, 0x1000
+lbl_8036ee58:
+/* 8036EE58 548004A4 */ rlwinm r0, r4, 0, 0x12, 0x12
+/* 8036EE5C 28000000 */ cmplwi r0, 0
+/* 8036EE60 40820008 */ bne- lbl_8036ee68
+/* 8036EE64 60A50200 */ ori r5, r5, 0x200
+lbl_8036ee68:
+/* 8036EE68 548004E6 */ rlwinm r0, r4, 0, 0x13, 0x13
+/* 8036EE6C 28000000 */ cmplwi r0, 0
+/* 8036EE70 40820008 */ bne- lbl_8036ee78
+/* 8036EE74 60A50400 */ ori r5, r5, 0x400
+lbl_8036ee78:
+/* 8036EE78 548006B4 */ rlwinm r0, r4, 0, 0x1a, 0x1a
+/* 8036EE7C 28000000 */ cmplwi r0, 0
+/* 8036EE80 40820008 */ bne- lbl_8036ee88
+/* 8036EE84 60A52000 */ ori r5, r5, 0x2000
+lbl_8036ee88:
+/* 8036EE88 3C80CC00 */ lis r4, 0xcc00
+/* 8036EE8C 38843000 */ addi r4, r4, 0x3000
+/* 8036EE90 90A40004 */ stw r5, 4(r4)
+/* 8036EE94 546306E0 */ rlwinm r3, r3, 0, 0x1b, 0x10
+lbl_8036ee98:
+/* 8036EE98 4E800020 */ blr
+.size func_8036ebc4, . - func_8036ebc4
+
+
+.global func_8036ee9c
+.type func_8036ee9c, @function
+func_8036ee9c:
+/* 8036EE9C 7C0802A6 */ mflr r0
+/* 8036EEA0 90010004 */ stw r0, 4(r1)
+/* 8036EEA4 9421FFE0 */ stwu r1, -0x20(r1)
+/* 8036EEA8 93E1001C */ stw r31, 0x1c(r1)
+/* 8036EEAC 93C10018 */ stw r30, 0x18(r1)
+/* 8036EEB0 93A10014 */ stw r29, 0x14(r1)
+/* 8036EEB4 7C7F1B78 */ mr r31, r3
+/* 8036EEB8 4BFFFC1D */ bl func_8036ead4
+/* 8036EEBC 3C808000 */ lis r4, 0x8000
+/* 8036EEC0 83A400C4 */ lwz r29, 0xc4(r4)
+/* 8036EEC4 7C7E1B78 */ mr r30, r3
+/* 8036EEC8 80A400C8 */ lwz r5, 0xc8(r4)
+/* 8036EECC 7FA02B78 */ or r0, r29, r5
+/* 8036EED0 7FE30078 */ andc r3, r31, r0
+/* 8036EED4 7FFFEB78 */ or r31, r31, r29
+/* 8036EED8 93E400C4 */ stw r31, 0xc4(r4)
+/* 8036EEDC 7FFF2B78 */ or r31, r31, r5
+/* 8036EEE0 48000004 */ b lbl_8036eee4
+lbl_8036eee4:
+/* 8036EEE4 48000004 */ b lbl_8036eee8
+lbl_8036eee8:
+/* 8036EEE8 4800000C */ b lbl_8036eef4
+lbl_8036eeec:
+/* 8036EEEC 7FE4FB78 */ mr r4, r31
+/* 8036EEF0 4BFFFCD5 */ bl func_8036ebc4
+lbl_8036eef4:
+/* 8036EEF4 28030000 */ cmplwi r3, 0
+/* 8036EEF8 4082FFF4 */ bne+ lbl_8036eeec
+/* 8036EEFC 7FC3F378 */ mr r3, r30
+/* 8036EF00 4BFFFBFD */ bl func_8036eafc
+/* 8036EF04 7FA3EB78 */ mr r3, r29
+/* 8036EF08 80010024 */ lwz r0, 0x24(r1)
+/* 8036EF0C 83E1001C */ lwz r31, 0x1c(r1)
+/* 8036EF10 83C10018 */ lwz r30, 0x18(r1)
+/* 8036EF14 83A10014 */ lwz r29, 0x14(r1)
+/* 8036EF18 38210020 */ addi r1, r1, 0x20
+/* 8036EF1C 7C0803A6 */ mtlr r0
+/* 8036EF20 4E800020 */ blr
+.size func_8036ee9c, . - func_8036ee9c
+
+
+.global func_8036ef24
+.type func_8036ef24, @function
+func_8036ef24:
+/* 8036EF24 7C0802A6 */ mflr r0
+/* 8036EF28 90010004 */ stw r0, 4(r1)
+/* 8036EF2C 9421FFE0 */ stwu r1, -0x20(r1)
+/* 8036EF30 93E1001C */ stw r31, 0x1c(r1)
+/* 8036EF34 93C10018 */ stw r30, 0x18(r1)
+/* 8036EF38 93A10014 */ stw r29, 0x14(r1)
+/* 8036EF3C 7C7F1B78 */ mr r31, r3
+/* 8036EF40 4BFFFB95 */ bl func_8036ead4
+/* 8036EF44 3C808000 */ lis r4, 0x8000
+/* 8036EF48 83A400C4 */ lwz r29, 0xc4(r4)
+/* 8036EF4C 7C7E1B78 */ mr r30, r3
+/* 8036EF50 80A400C8 */ lwz r5, 0xc8(r4)
+/* 8036EF54 7FA02B78 */ or r0, r29, r5
+/* 8036EF58 7FE30038 */ and r3, r31, r0
+/* 8036EF5C 7FBFF878 */ andc r31, r29, r31
+/* 8036EF60 93E400C4 */ stw r31, 0xc4(r4)
+/* 8036EF64 7FFF2B78 */ or r31, r31, r5
+/* 8036EF68 48000004 */ b lbl_8036ef6c
+lbl_8036ef6c:
+/* 8036EF6C 48000004 */ b lbl_8036ef70
+lbl_8036ef70:
+/* 8036EF70 4800000C */ b lbl_8036ef7c
+lbl_8036ef74:
+/* 8036EF74 7FE4FB78 */ mr r4, r31
+/* 8036EF78 4BFFFC4D */ bl func_8036ebc4
+lbl_8036ef7c:
+/* 8036EF7C 28030000 */ cmplwi r3, 0
+/* 8036EF80 4082FFF4 */ bne+ lbl_8036ef74
+/* 8036EF84 7FC3F378 */ mr r3, r30
+/* 8036EF88 4BFFFB75 */ bl func_8036eafc
+/* 8036EF8C 7FA3EB78 */ mr r3, r29
+/* 8036EF90 80010024 */ lwz r0, 0x24(r1)
+/* 8036EF94 83E1001C */ lwz r31, 0x1c(r1)
+/* 8036EF98 83C10018 */ lwz r30, 0x18(r1)
+/* 8036EF9C 83A10014 */ lwz r29, 0x14(r1)
+/* 8036EFA0 38210020 */ addi r1, r1, 0x20
+/* 8036EFA4 7C0803A6 */ mtlr r0
+/* 8036EFA8 4E800020 */ blr
+.size func_8036ef24, . - func_8036ef24
+
+
+.global func_8036efac
+.type func_8036efac, @function
+func_8036efac:
+/* 8036EFAC 7C0802A6 */ mflr r0
+/* 8036EFB0 90010004 */ stw r0, 4(r1)
+/* 8036EFB4 9421FFD8 */ stwu r1, -0x28(r1)
+/* 8036EFB8 93E10024 */ stw r31, 0x24(r1)
+/* 8036EFBC 93C10020 */ stw r30, 0x20(r1)
+/* 8036EFC0 93A1001C */ stw r29, 0x1c(r1)
+/* 8036EFC4 7C9E2378 */ mr r30, r4
+/* 8036EFC8 3C60CC00 */ lis r3, 0xcc00
+/* 8036EFCC 83E33000 */ lwz r31, 0x3000(r3)
+/* 8036EFD0 57FF041C */ rlwinm r31, r31, 0, 0x10, 0xe
+/* 8036EFD4 281F0000 */ cmplwi r31, 0
+/* 8036EFD8 41820018 */ beq- lbl_8036eff0
+/* 8036EFDC 38633000 */ addi r3, r3, 0x3000
+/* 8036EFE0 80030004 */ lwz r0, 4(r3)
+/* 8036EFE4 7FE00038 */ and r0, r31, r0
+/* 8036EFE8 28000000 */ cmplwi r0, 0
+/* 8036EFEC 4082000C */ bne- lbl_8036eff8
+lbl_8036eff0:
+/* 8036EFF0 7FC3F378 */ mr r3, r30
+/* 8036EFF4 4BFFF18D */ bl func_8036e180
+lbl_8036eff8:
+/* 8036EFF8 57E00630 */ rlwinm r0, r31, 0, 0x18, 0x18
+/* 8036EFFC 28000000 */ cmplwi r0, 0
+/* 8036F000 38000000 */ li r0, 0x0
+/* 8036F004 41820060 */ beq- lbl_8036f064
+/* 8036F008 3C60CC00 */ lis r3, 0xcc00
+/* 8036F00C 38634000 */ addi r3, r3, 0x4000
+/* 8036F010 A083001E */ lhz r4, 0x1e(r3)
+/* 8036F014 548307FE */ clrlwi r3, r4, 0x1f
+/* 8036F018 28030000 */ cmplwi r3, 0
+/* 8036F01C 41820008 */ beq- lbl_8036f024
+/* 8036F020 64008000 */ oris r0, r0, 0x8000
+lbl_8036f024:
+/* 8036F024 548307BC */ rlwinm r3, r4, 0, 0x1e, 0x1e
+/* 8036F028 28030000 */ cmplwi r3, 0
+/* 8036F02C 41820008 */ beq- lbl_8036f034
+/* 8036F030 64004000 */ oris r0, r0, 0x4000
+lbl_8036f034:
+/* 8036F034 5483077A */ rlwinm r3, r4, 0, 0x1d, 0x1d
+/* 8036F038 28030000 */ cmplwi r3, 0
+/* 8036F03C 41820008 */ beq- lbl_8036f044
+/* 8036F040 64002000 */ oris r0, r0, 0x2000
+lbl_8036f044:
+/* 8036F044 54830738 */ rlwinm r3, r4, 0, 0x1c, 0x1c
+/* 8036F048 28030000 */ cmplwi r3, 0
+/* 8036F04C 41820008 */ beq- lbl_8036f054
+/* 8036F050 64001000 */ oris r0, r0, 0x1000
+lbl_8036f054:
+/* 8036F054 548306F6 */ rlwinm r3, r4, 0, 0x1b, 0x1b
+/* 8036F058 28030000 */ cmplwi r3, 0
+/* 8036F05C 41820008 */ beq- lbl_8036f064
+/* 8036F060 64000800 */ oris r0, r0, 0x800
+lbl_8036f064:
+/* 8036F064 57E30672 */ rlwinm r3, r31, 0, 0x19, 0x19
+/* 8036F068 28030000 */ cmplwi r3, 0
+/* 8036F06C 41820040 */ beq- lbl_8036f0ac
+/* 8036F070 3C60CC00 */ lis r3, 0xcc00
+/* 8036F074 38635000 */ addi r3, r3, 0x5000
+/* 8036F078 A083000A */ lhz r4, 0xa(r3)
+/* 8036F07C 54830738 */ rlwinm r3, r4, 0, 0x1c, 0x1c
+/* 8036F080 28030000 */ cmplwi r3, 0
+/* 8036F084 41820008 */ beq- lbl_8036f08c
+/* 8036F088 64000400 */ oris r0, r0, 0x400
+lbl_8036f08c:
+/* 8036F08C 548306B4 */ rlwinm r3, r4, 0, 0x1a, 0x1a
+/* 8036F090 28030000 */ cmplwi r3, 0
+/* 8036F094 41820008 */ beq- lbl_8036f09c
+/* 8036F098 64000200 */ oris r0, r0, 0x200
+lbl_8036f09c:
+/* 8036F09C 54830630 */ rlwinm r3, r4, 0, 0x18, 0x18
+/* 8036F0A0 28030000 */ cmplwi r3, 0
+/* 8036F0A4 41820008 */ beq- lbl_8036f0ac
+/* 8036F0A8 64000100 */ oris r0, r0, 0x100
+lbl_8036f0ac:
+/* 8036F0AC 57E306B4 */ rlwinm r3, r31, 0, 0x1a, 0x1a
+/* 8036F0B0 28030000 */ cmplwi r3, 0
+/* 8036F0B4 4182001C */ beq- lbl_8036f0d0
+/* 8036F0B8 3C60CC00 */ lis r3, 0xcc00
+/* 8036F0BC 80636C00 */ lwz r3, 0x6c00(r3)
+/* 8036F0C0 54630738 */ rlwinm r3, r3, 0, 0x1c, 0x1c
+/* 8036F0C4 28030000 */ cmplwi r3, 0
+/* 8036F0C8 41820008 */ beq- lbl_8036f0d0
+/* 8036F0CC 64000080 */ oris r0, r0, 0x80
+lbl_8036f0d0:
+/* 8036F0D0 57E306F6 */ rlwinm r3, r31, 0, 0x1b, 0x1b
+/* 8036F0D4 28030000 */ cmplwi r3, 0
+/* 8036F0D8 418200A4 */ beq- lbl_8036f17c
+/* 8036F0DC 3C60CC00 */ lis r3, 0xcc00
+/* 8036F0E0 80836800 */ lwz r4, 0x6800(r3)
+/* 8036F0E4 548307BC */ rlwinm r3, r4, 0, 0x1e, 0x1e
+/* 8036F0E8 28030000 */ cmplwi r3, 0
+/* 8036F0EC 41820008 */ beq- lbl_8036f0f4
+/* 8036F0F0 64000040 */ oris r0, r0, 0x40
+lbl_8036f0f4:
+/* 8036F0F4 54830738 */ rlwinm r3, r4, 0, 0x1c, 0x1c
+/* 8036F0F8 28030000 */ cmplwi r3, 0
+/* 8036F0FC 41820008 */ beq- lbl_8036f104
+/* 8036F100 64000020 */ oris r0, r0, 0x20
+lbl_8036f104:
+/* 8036F104 54830528 */ rlwinm r3, r4, 0, 0x14, 0x14
+/* 8036F108 28030000 */ cmplwi r3, 0
+/* 8036F10C 41820008 */ beq- lbl_8036f114
+/* 8036F110 64000010 */ oris r0, r0, 0x10
+lbl_8036f114:
+/* 8036F114 3C60CC00 */ lis r3, 0xcc00
+/* 8036F118 38636800 */ addi r3, r3, 0x6800
+/* 8036F11C 80830014 */ lwz r4, 0x14(r3)
+/* 8036F120 548307BC */ rlwinm r3, r4, 0, 0x1e, 0x1e
+/* 8036F124 28030000 */ cmplwi r3, 0
+/* 8036F128 41820008 */ beq- lbl_8036f130
+/* 8036F12C 64000008 */ oris r0, r0, 8
+lbl_8036f130:
+/* 8036F130 54830738 */ rlwinm r3, r4, 0, 0x1c, 0x1c
+/* 8036F134 28030000 */ cmplwi r3, 0
+/* 8036F138 41820008 */ beq- lbl_8036f140
+/* 8036F13C 64000004 */ oris r0, r0, 4
+lbl_8036f140:
+/* 8036F140 54830528 */ rlwinm r3, r4, 0, 0x14, 0x14
+/* 8036F144 28030000 */ cmplwi r3, 0
+/* 8036F148 41820008 */ beq- lbl_8036f150
+/* 8036F14C 64000002 */ oris r0, r0, 2
+lbl_8036f150:
+/* 8036F150 3C60CC00 */ lis r3, 0xcc00
+/* 8036F154 38636800 */ addi r3, r3, 0x6800
+/* 8036F158 80830028 */ lwz r4, 0x28(r3)
+/* 8036F15C 548307BC */ rlwinm r3, r4, 0, 0x1e, 0x1e
+/* 8036F160 28030000 */ cmplwi r3, 0
+/* 8036F164 41820008 */ beq- lbl_8036f16c
+/* 8036F168 64000001 */ oris r0, r0, 1
+lbl_8036f16c:
+/* 8036F16C 54830738 */ rlwinm r3, r4, 0, 0x1c, 0x1c
+/* 8036F170 28030000 */ cmplwi r3, 0
+/* 8036F174 41820008 */ beq- lbl_8036f17c
+/* 8036F178 60008000 */ ori r0, r0, 0x8000
+lbl_8036f17c:
+/* 8036F17C 57E304A4 */ rlwinm r3, r31, 0, 0x12, 0x12
+/* 8036F180 28030000 */ cmplwi r3, 0
+/* 8036F184 41820008 */ beq- lbl_8036f18c
+/* 8036F188 60000020 */ ori r0, r0, 0x20
+lbl_8036f18c:
+/* 8036F18C 57E304E6 */ rlwinm r3, r31, 0, 0x13, 0x13
+/* 8036F190 28030000 */ cmplwi r3, 0
+/* 8036F194 41820008 */ beq- lbl_8036f19c
+/* 8036F198 60000040 */ ori r0, r0, 0x40
+lbl_8036f19c:
+/* 8036F19C 57E3056A */ rlwinm r3, r31, 0, 0x15, 0x15
+/* 8036F1A0 28030000 */ cmplwi r3, 0
+/* 8036F1A4 41820008 */ beq- lbl_8036f1ac
+/* 8036F1A8 60001000 */ ori r0, r0, 0x1000
+lbl_8036f1ac:
+/* 8036F1AC 57E305AC */ rlwinm r3, r31, 0, 0x16, 0x16
+/* 8036F1B0 28030000 */ cmplwi r3, 0
+/* 8036F1B4 41820008 */ beq- lbl_8036f1bc
+/* 8036F1B8 60002000 */ ori r0, r0, 0x2000
+lbl_8036f1bc:
+/* 8036F1BC 57E305EE */ rlwinm r3, r31, 0, 0x17, 0x17
+/* 8036F1C0 28030000 */ cmplwi r3, 0
+/* 8036F1C4 41820008 */ beq- lbl_8036f1cc
+/* 8036F1C8 60000080 */ ori r0, r0, 0x80
+lbl_8036f1cc:
+/* 8036F1CC 57E30738 */ rlwinm r3, r31, 0, 0x1c, 0x1c
+/* 8036F1D0 28030000 */ cmplwi r3, 0
+/* 8036F1D4 41820008 */ beq- lbl_8036f1dc
+/* 8036F1D8 60000800 */ ori r0, r0, 0x800
+lbl_8036f1dc:
+/* 8036F1DC 57E3077A */ rlwinm r3, r31, 0, 0x1d, 0x1d
+/* 8036F1E0 28030000 */ cmplwi r3, 0
+/* 8036F1E4 41820008 */ beq- lbl_8036f1ec
+/* 8036F1E8 60000400 */ ori r0, r0, 0x400
+lbl_8036f1ec:
+/* 8036F1EC 57E307BC */ rlwinm r3, r31, 0, 0x1e, 0x1e
+/* 8036F1F0 28030000 */ cmplwi r3, 0
+/* 8036F1F4 41820008 */ beq- lbl_8036f1fc
+/* 8036F1F8 60000200 */ ori r0, r0, 0x200
+lbl_8036f1fc:
+/* 8036F1FC 57E30528 */ rlwinm r3, r31, 0, 0x14, 0x14
+/* 8036F200 28030000 */ cmplwi r3, 0
+/* 8036F204 41820008 */ beq- lbl_8036f20c
+/* 8036F208 60004000 */ ori r0, r0, 0x4000
+lbl_8036f20c:
+/* 8036F20C 57E307FE */ clrlwi r3, r31, 0x1f
+/* 8036F210 28030000 */ cmplwi r3, 0
+/* 8036F214 41820008 */ beq- lbl_8036f21c
+/* 8036F218 60000100 */ ori r0, r0, 0x100
+lbl_8036f21c:
+/* 8036F21C 3C608000 */ lis r3, 0x8000
+/* 8036F220 808300C4 */ lwz r4, 0xc4(r3)
+/* 8036F224 806300C8 */ lwz r3, 0xc8(r3)
+/* 8036F228 7C831B78 */ or r3, r4, r3
+/* 8036F22C 7C041878 */ andc r4, r0, r3
+/* 8036F230 28040000 */ cmplwi r4, 0
+/* 8036F234 41820098 */ beq- lbl_8036f2cc
+/* 8036F238 3C60804F */ lis r3, lbl_804ef518@ha
+/* 8036F23C 3803F518 */ addi r0, r3, lbl_804ef518@l
+/* 8036F240 7C030378 */ mr r3, r0
+/* 8036F244 48000004 */ b lbl_8036f248
+lbl_8036f248:
+/* 8036F248 48000004 */ b lbl_8036f24c
+lbl_8036f24c:
+/* 8036F24C 80030000 */ lwz r0, 0(r3)
+/* 8036F250 7C800038 */ and r0, r4, r0
+/* 8036F254 28000000 */ cmplwi r0, 0
+/* 8036F258 41820010 */ beq- lbl_8036f268
+/* 8036F25C 7C000034 */ cntlzw r0, r0
+/* 8036F260 7C1D0734 */ extsh r29, r0
+/* 8036F264 4800000C */ b lbl_8036f270
+lbl_8036f268:
+/* 8036F268 38630004 */ addi r3, r3, 0x4
+/* 8036F26C 4BFFFFE0 */ b lbl_8036f24c
+lbl_8036f270:
+/* 8036F270 806DCA48 */ lwz r3, lbl_805c6868@sda21(0)
+/* 8036F274 57A0103A */ slwi r0, r29, 2
+/* 8036F278 7FE3002E */ lwzx r31, r3, r0
+/* 8036F27C 281F0000 */ cmplwi r31, 0
+/* 8036F280 4182004C */ beq- lbl_8036f2cc
+/* 8036F284 2C1D0004 */ cmpwi r29, 0x4
+/* 8036F288 4081001C */ ble- lbl_8036f2a4
+/* 8036F28C B3ADCA50 */ sth r29, lbl_805c6870@sda21(0)
+/* 8036F290 48003535 */ bl func_803727c4
+/* 8036F294 908DCA5C */ stw r4, lbl_805c687c@sda21(0)
+/* 8036F298 906DCA58 */ stw r3, lbl_805c6878@sda21(0)
+/* 8036F29C 801E0198 */ lwz r0, 0x198(r30)
+/* 8036F2A0 900DCA4C */ stw r0, lbl_805c686c@sda21(0)
+lbl_8036f2a4:
+/* 8036F2A4 48002511 */ bl func_803717b4
+/* 8036F2A8 7FA3EB78 */ mr r3, r29
+/* 8036F2AC 7FC4F378 */ mr r4, r30
+/* 8036F2B0 7FECFB78 */ mr r12, r31
+/* 8036F2B4 7D8803A6 */ mtlr r12
+/* 8036F2B8 4E800021 */ blrl
+/* 8036F2BC 48002539 */ bl func_803717f4
+/* 8036F2C0 48002A29 */ bl func_80371ce8
+/* 8036F2C4 7FC3F378 */ mr r3, r30
+/* 8036F2C8 4BFFEEB9 */ bl func_8036e180
+lbl_8036f2cc:
+/* 8036F2CC 7FC3F378 */ mr r3, r30
+/* 8036F2D0 4BFFEEB1 */ bl func_8036e180
+/* 8036F2D4 8001002C */ lwz r0, 0x2c(r1)
+/* 8036F2D8 83E10024 */ lwz r31, 0x24(r1)
+/* 8036F2DC 83C10020 */ lwz r30, 0x20(r1)
+/* 8036F2E0 83A1001C */ lwz r29, 0x1c(r1)
+/* 8036F2E4 38210028 */ addi r1, r1, 0x28
+/* 8036F2E8 7C0803A6 */ mtlr r0
+/* 8036F2EC 4E800020 */ blr
+.size func_8036efac, . - func_8036efac
+
+
+.global func_8036f2f0
+.type func_8036f2f0, @function
+func_8036f2f0:
+/* 8036F2F0 90040000 */ stw r0, 0(r4)
+/* 8036F2F4 90240004 */ stw r1, 4(r4)
+/* 8036F2F8 90440008 */ stw r2, 8(r4)
+/* 8036F2FC BCC40018 */ stmw r6, 0x18(r4)
+/* 8036F300 7C11E2A6 */ mfspr r0, 0x391
+/* 8036F304 900401A8 */ stw r0, 0x1a8(r4)
+/* 8036F308 7C12E2A6 */ mfspr r0, 0x392
+/* 8036F30C 900401AC */ stw r0, 0x1ac(r4)
+/* 8036F310 7C13E2A6 */ mfspr r0, 0x393
+/* 8036F314 900401B0 */ stw r0, 0x1b0(r4)
+/* 8036F318 7C14E2A6 */ mfspr r0, 0x394
+/* 8036F31C 900401B4 */ stw r0, 0x1b4(r4)
+/* 8036F320 7C15E2A6 */ mfspr r0, 0x395
+/* 8036F324 900401B8 */ stw r0, 0x1b8(r4)
+/* 8036F328 7C16E2A6 */ mfspr r0, 0x396
+/* 8036F32C 900401BC */ stw r0, 0x1bc(r4)
+/* 8036F330 7C17E2A6 */ mfspr r0, 0x397
+/* 8036F334 900401C0 */ stw r0, 0x1c0(r4)
+/* 8036F338 9421FFF8 */ stwu r1, -8(r1)
+/* 8036F33C 4BFFFC70 */ b func_8036efac
+.size func_8036f2f0, . - func_8036f2f0
+
diff --git a/asm/Dolphin/os/OSLink-data.s b/asm/Dolphin/os/OSLink-data.s
new file mode 100644
index 0000000..0a23f10
--- /dev/null
+++ b/asm/Dolphin/os/OSLink-data.s
@@ -0,0 +1,37 @@
+.include "macros.inc"
+
+.section .data
+
+.balign 8
+
+.global lbl_804ef548
+.type lbl_804ef548, @object
+lbl_804ef548:
+/* 804EF548 4F534C69 */ .4byte 0x4f534c69
+/* 804EF54C 6E6B3A20 */ .4byte 0x6e6b3a20
+/* 804EF550 756E6B6E */ .4byte 0x756e6b6e
+/* 804EF554 6F776E20 */ .4byte 0x6f776e20
+/* 804EF558 72656C6F */ .4byte 0x72656c6f
+/* 804EF55C 63617469 */ .4byte 0x63617469
+/* 804EF560 6F6E2074 */ .4byte 0x6f6e2074
+/* 804EF564 79706520 */ .4byte 0x79706520
+/* 804EF568 2533640A */ .4byte 0x2533640a
+/* 804EF56C 00000000 */ .4byte 0x00000000
+.size lbl_804ef548, . - lbl_804ef548
+
+
+.global lbl_804ef570
+.type lbl_804ef570, @object
+lbl_804ef570:
+/* 804EF570 4F53556E */ .4byte 0x4f53556e
+/* 804EF574 6C696E6B */ .4byte 0x6c696e6b
+/* 804EF578 3A20756E */ .4byte 0x3a20756e
+/* 804EF57C 6B6E6F77 */ .4byte 0x6b6e6f77
+/* 804EF580 6E207265 */ .4byte 0x6e207265
+/* 804EF584 6C6F6361 */ .4byte 0x6c6f6361
+/* 804EF588 74696F6E */ .4byte 0x74696f6e
+/* 804EF58C 20747970 */ .4byte 0x20747970
+/* 804EF590 65202533 */ .4byte 0x65202533
+/* 804EF594 640A0000 */ .4byte 0x640a0000
+.size lbl_804ef570, . - lbl_804ef570
+
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
+
diff --git a/asm/Dolphin/os/OSMemory-data.s b/asm/Dolphin/os/OSMemory-data.s
new file mode 100644
index 0000000..1b4ff0c
--- /dev/null
+++ b/asm/Dolphin/os/OSMemory-data.s
@@ -0,0 +1,15 @@
+.include "macros.inc"
+
+.section .data
+
+.balign 8
+
+.global lbl_804ef598
+.type lbl_804ef598, @object
+lbl_804ef598:
+/* 804EF598 8036FCC8 */ .4byte func_8036fcc8
+/* 804EF59C 0000007F */ .4byte 0x0000007f
+/* 804EF5A0 00000000 */ .4byte 0x00000000
+/* 804EF5A4 00000000 */ .4byte 0x00000000
+.size lbl_804ef598, . - lbl_804ef598
+
diff --git a/asm/Dolphin/os/OSMemory.s b/asm/Dolphin/os/OSMemory.s
new file mode 100644
index 0000000..d7c9a45
--- /dev/null
+++ b/asm/Dolphin/os/OSMemory.s
@@ -0,0 +1,229 @@
+.include "macros.inc"
+
+.section .text
+
+.global func_8036fcc8
+.type func_8036fcc8, @function
+func_8036fcc8:
+/* 8036FCC8 7C0802A6 */ mflr r0
+/* 8036FCCC 2C030000 */ cmpwi r3, 0x0
+/* 8036FCD0 90010004 */ stw r0, 4(r1)
+/* 8036FCD4 9421FFF8 */ stwu r1, -8(r1)
+/* 8036FCD8 41820018 */ beq- lbl_8036fcf0
+/* 8036FCDC 3C60CC00 */ lis r3, 0xcc00
+/* 8036FCE0 380000FF */ li r0, 0xff
+/* 8036FCE4 B0034010 */ sth r0, 0x4010(r3)
+/* 8036FCE8 3C60F000 */ lis r3, 0xf000
+/* 8036FCEC 4BFFF1B1 */ bl func_8036ee9c
+lbl_8036fcf0:
+/* 8036FCF0 38600001 */ li r3, 0x1
+/* 8036FCF4 8001000C */ lwz r0, 0xc(r1)
+/* 8036FCF8 38210008 */ addi r1, r1, 0x8
+/* 8036FCFC 7C0803A6 */ mtlr r0
+/* 8036FD00 4E800020 */ blr
+.size func_8036fcc8, . - func_8036fcc8
+
+
+.global func_8036fd04
+.type func_8036fd04, @function
+func_8036fd04:
+/* 8036FD04 7C0802A6 */ mflr r0
+/* 8036FD08 3C60CC00 */ lis r3, 0xcc00
+/* 8036FD0C 90010004 */ stw r0, 4(r1)
+/* 8036FD10 39034000 */ addi r8, r3, 0x4000
+/* 8036FD14 38000000 */ li r0, 0x0
+/* 8036FD18 9421FFF8 */ stwu r1, -8(r1)
+/* 8036FD1C A0E34024 */ lhz r7, 0x4024(r3)
+/* 8036FD20 3C608054 */ lis r3, lbl_8053ec30@ha
+/* 8036FD24 A0C80022 */ lhz r6, 0x22(r8)
+/* 8036FD28 3863EC30 */ addi r3, r3, lbl_8053ec30@l
+/* 8036FD2C A0A8001E */ lhz r5, 0x1e(r8)
+/* 8036FD30 50E6819E */ rlwimi r6, r7, 0x10, 6, 0xf
+/* 8036FD34 B0080020 */ sth r0, 0x20(r8)
+/* 8036FD38 8183003C */ lwz r12, 0x3c(r3)
+/* 8036FD3C 280C0000 */ cmplwi r12, 0
+/* 8036FD40 41820018 */ beq- lbl_8036fd58
+/* 8036FD44 7D8803A6 */ mtlr r12
+/* 8036FD48 3860000F */ li r3, 0xf
+/* 8036FD4C 4CC63182 */ crclr 6
+/* 8036FD50 4E800021 */ blrl
+/* 8036FD54 4800000C */ b lbl_8036fd60
+lbl_8036fd58:
+/* 8036FD58 3860000F */ li r3, 0xf
+/* 8036FD5C 4BFFEB21 */ bl func_8036e87c
+lbl_8036fd60:
+/* 8036FD60 8001000C */ lwz r0, 0xc(r1)
+/* 8036FD64 38210008 */ addi r1, r1, 0x8
+/* 8036FD68 7C0803A6 */ mtlr r0
+/* 8036FD6C 4E800020 */ blr
+.size func_8036fd04, . - func_8036fd04
+
+
+.global func_8036fd70
+.type func_8036fd70, @function
+func_8036fd70:
+/* 8036FD70 38E00000 */ li r7, 0x0
+/* 8036FD74 3C800000 */ lis r4, 0
+/* 8036FD78 38840002 */ addi r4, r4, 0x2
+/* 8036FD7C 3C608000 */ lis r3, 0x8000
+/* 8036FD80 386301FF */ addi r3, r3, 0x1ff
+/* 8036FD84 3CC00100 */ lis r6, 0x100
+/* 8036FD88 38C60002 */ addi r6, r6, 0x2
+/* 8036FD8C 3CA08100 */ lis r5, 0x8100
+/* 8036FD90 38A500FF */ addi r5, r5, 0xff
+/* 8036FD94 4C00012C */ isync
+/* 8036FD98 7CF883A6 */ mtdbatu 0, r7
+/* 8036FD9C 7C9983A6 */ mtdbatl 0, r4
+/* 8036FDA0 7C7883A6 */ mtdbatu 0, r3
+/* 8036FDA4 4C00012C */ isync
+/* 8036FDA8 7CF083A6 */ mtibatu 0, r7
+/* 8036FDAC 7C9183A6 */ mtibatl 0, r4
+/* 8036FDB0 7C7083A6 */ mtibatu 0, r3
+/* 8036FDB4 4C00012C */ isync
+/* 8036FDB8 7CFC83A6 */ mtdbatu 2, r7
+/* 8036FDBC 7CDD83A6 */ mtdbatl 2, r6
+/* 8036FDC0 7CBC83A6 */ mtdbatu 2, r5
+/* 8036FDC4 4C00012C */ isync
+/* 8036FDC8 7CF483A6 */ mtibatu 2, r7
+/* 8036FDCC 7CD583A6 */ mtibatl 2, r6
+/* 8036FDD0 7CB483A6 */ mtibatu 2, r5
+/* 8036FDD4 4C00012C */ isync
+/* 8036FDD8 7C6000A6 */ mfmsr r3
+/* 8036FDDC 60630030 */ ori r3, r3, 0x30
+/* 8036FDE0 7C7B03A6 */ mtspr 0x1b, r3
+/* 8036FDE4 7C6802A6 */ mflr r3
+/* 8036FDE8 7C7A03A6 */ mtspr 0x1a, r3
+/* 8036FDEC 4C000064 */ rfi
+.size func_8036fd70, . - func_8036fd70
+
+
+.global func_8036fdf0
+.type func_8036fdf0, @function
+func_8036fdf0:
+/* 8036FDF0 38E00000 */ li r7, 0x0
+/* 8036FDF4 3C800000 */ lis r4, 0
+/* 8036FDF8 38840002 */ addi r4, r4, 0x2
+/* 8036FDFC 3C608000 */ lis r3, 0x8000
+/* 8036FE00 386303FF */ addi r3, r3, 0x3ff
+/* 8036FE04 3CC00200 */ lis r6, 0x200
+/* 8036FE08 38C60002 */ addi r6, r6, 0x2
+/* 8036FE0C 3CA08200 */ lis r5, 0x8200
+/* 8036FE10 38A501FF */ addi r5, r5, 0x1ff
+/* 8036FE14 4C00012C */ isync
+/* 8036FE18 7CF883A6 */ mtdbatu 0, r7
+/* 8036FE1C 7C9983A6 */ mtdbatl 0, r4
+/* 8036FE20 7C7883A6 */ mtdbatu 0, r3
+/* 8036FE24 4C00012C */ isync
+/* 8036FE28 7CF083A6 */ mtibatu 0, r7
+/* 8036FE2C 7C9183A6 */ mtibatl 0, r4
+/* 8036FE30 7C7083A6 */ mtibatu 0, r3
+/* 8036FE34 4C00012C */ isync
+/* 8036FE38 7CFC83A6 */ mtdbatu 2, r7
+/* 8036FE3C 7CDD83A6 */ mtdbatl 2, r6
+/* 8036FE40 7CBC83A6 */ mtdbatu 2, r5
+/* 8036FE44 4C00012C */ isync
+/* 8036FE48 7CF483A6 */ mtibatu 2, r7
+/* 8036FE4C 7CD583A6 */ mtibatl 2, r6
+/* 8036FE50 7CB483A6 */ mtibatu 2, r5
+/* 8036FE54 4C00012C */ isync
+/* 8036FE58 7C6000A6 */ mfmsr r3
+/* 8036FE5C 60630030 */ ori r3, r3, 0x30
+/* 8036FE60 7C7B03A6 */ mtspr 0x1b, r3
+/* 8036FE64 7C6802A6 */ mflr r3
+/* 8036FE68 7C7A03A6 */ mtspr 0x1a, r3
+/* 8036FE6C 4C000064 */ rfi
+.size func_8036fdf0, . - func_8036fdf0
+
+
+.global func_8036fe70
+.type func_8036fe70, @function
+func_8036fe70:
+/* 8036FE70 546300BE */ clrlwi r3, r3, 2
+/* 8036FE74 7C7A03A6 */ mtspr 0x1a, r3
+/* 8036FE78 7C6000A6 */ mfmsr r3
+/* 8036FE7C 54630732 */ rlwinm r3, r3, 0, 0x1c, 0x19
+/* 8036FE80 7C7B03A6 */ mtspr 0x1b, r3
+/* 8036FE84 4C000064 */ rfi
+.size func_8036fe70, . - func_8036fe70
+
+
+.global func_8036fe88
+.type func_8036fe88, @function
+func_8036fe88:
+/* 8036FE88 7C0802A6 */ mflr r0
+/* 8036FE8C 90010004 */ stw r0, 4(r1)
+/* 8036FE90 9421FFB8 */ stwu r1, -0x48(r1)
+/* 8036FE94 93E10044 */ stw r31, 0x44(r1)
+/* 8036FE98 93C10040 */ stw r30, 0x40(r1)
+/* 8036FE9C 93A1003C */ stw r29, 0x3c(r1)
+/* 8036FEA0 3C608000 */ lis r3, 0x8000
+/* 8036FEA4 83A300F0 */ lwz r29, 0xf0(r3)
+/* 8036FEA8 4BFFEC2D */ bl func_8036ead4
+/* 8036FEAC 3C000180 */ lis r0, 0x180
+/* 8036FEB0 7C1D0040 */ cmplw r29, r0
+/* 8036FEB4 7C7F1B78 */ mr r31, r3
+/* 8036FEB8 41810014 */ bgt- lbl_8036fecc
+/* 8036FEBC 3C608037 */ lis r3, func_8036fd70@ha
+/* 8036FEC0 3863FD70 */ addi r3, r3, func_8036fd70@l
+/* 8036FEC4 4BFFFFAD */ bl func_8036fe70
+/* 8036FEC8 4800001C */ b lbl_8036fee4
+lbl_8036fecc:
+/* 8036FECC 3C000300 */ lis r0, 0x300
+/* 8036FED0 7C1D0040 */ cmplw r29, r0
+/* 8036FED4 41810010 */ bgt- lbl_8036fee4
+/* 8036FED8 3C608037 */ lis r3, func_8036fdf0@ha
+/* 8036FEDC 3863FDF0 */ addi r3, r3, func_8036fdf0@l
+/* 8036FEE0 4BFFFF91 */ bl func_8036fe70
+lbl_8036fee4:
+/* 8036FEE4 3C60CC00 */ lis r3, 0xcc00
+/* 8036FEE8 3BA34000 */ addi r29, r3, 0x4000
+/* 8036FEEC 38000000 */ li r0, 0x0
+/* 8036FEF0 B01D0020 */ sth r0, 0x20(r29)
+/* 8036FEF4 380000FF */ li r0, 0xff
+/* 8036FEF8 3C60F000 */ lis r3, 0xf000
+/* 8036FEFC B01D0010 */ sth r0, 0x10(r29)
+/* 8036FF00 4BFFEF9D */ bl func_8036ee9c
+/* 8036FF04 3C608037 */ lis r3, func_8036fd04@ha
+/* 8036FF08 3BC3FD04 */ addi r30, r3, func_8036fd04@l
+/* 8036FF0C 7FC4F378 */ mr r4, r30
+/* 8036FF10 38600000 */ li r3, 0x0
+/* 8036FF14 4BFFEC0D */ bl func_8036eb20
+/* 8036FF18 7FC4F378 */ mr r4, r30
+/* 8036FF1C 38600001 */ li r3, 0x1
+/* 8036FF20 4BFFEC01 */ bl func_8036eb20
+/* 8036FF24 7FC4F378 */ mr r4, r30
+/* 8036FF28 38600002 */ li r3, 0x2
+/* 8036FF2C 4BFFEBF5 */ bl func_8036eb20
+/* 8036FF30 7FC4F378 */ mr r4, r30
+/* 8036FF34 38600003 */ li r3, 0x3
+/* 8036FF38 4BFFEBE9 */ bl func_8036eb20
+/* 8036FF3C 7FC4F378 */ mr r4, r30
+/* 8036FF40 38600004 */ li r3, 0x4
+/* 8036FF44 4BFFEBDD */ bl func_8036eb20
+/* 8036FF48 3C60804F */ lis r3, lbl_804ef598@ha
+/* 8036FF4C 3863F598 */ addi r3, r3, lbl_804ef598@l
+/* 8036FF50 480004B1 */ bl func_80370400
+/* 8036FF54 3C608000 */ lis r3, 0x8000
+/* 8036FF58 808300F0 */ lwz r4, 0xf0(r3)
+/* 8036FF5C 80030028 */ lwz r0, 0x28(r3)
+/* 8036FF60 7C040040 */ cmplw r4, r0
+/* 8036FF64 40800018 */ bge- lbl_8036ff7c
+/* 8036FF68 3C04FE80 */ addis r0, r4, 0xfe80
+/* 8036FF6C 28000000 */ cmplwi r0, 0
+/* 8036FF70 4082000C */ bne- lbl_8036ff7c
+/* 8036FF74 38000002 */ li r0, 0x2
+/* 8036FF78 B01D0028 */ sth r0, 0x28(r29)
+lbl_8036ff7c:
+/* 8036FF7C 3C600800 */ lis r3, 0x800
+/* 8036FF80 4BFFEFA5 */ bl func_8036ef24
+/* 8036FF84 7FE3FB78 */ mr r3, r31
+/* 8036FF88 4BFFEB75 */ bl func_8036eafc
+/* 8036FF8C 8001004C */ lwz r0, 0x4c(r1)
+/* 8036FF90 83E10044 */ lwz r31, 0x44(r1)
+/* 8036FF94 83C10040 */ lwz r30, 0x40(r1)
+/* 8036FF98 83A1003C */ lwz r29, 0x3c(r1)
+/* 8036FF9C 38210048 */ addi r1, r1, 0x48
+/* 8036FFA0 7C0803A6 */ mtlr r0
+/* 8036FFA4 4E800020 */ blr
+.size func_8036fe88, . - func_8036fe88
+
diff --git a/asm/Dolphin/os/OSMessages.s b/asm/Dolphin/os/OSMessages.s
new file mode 100644
index 0000000..1e7d350
--- /dev/null
+++ b/asm/Dolphin/os/OSMessages.s
@@ -0,0 +1,159 @@
+.include "macros.inc"
+
+.section .text
+
+.global func_8036fac4
+.type func_8036fac4, @function
+func_8036fac4:
+/* 8036FAC4 7C0802A6 */ mflr r0
+/* 8036FAC8 90010004 */ stw r0, 4(r1)
+/* 8036FACC 9421FFD8 */ stwu r1, -0x28(r1)
+/* 8036FAD0 93E10024 */ stw r31, 0x24(r1)
+/* 8036FAD4 3BE50000 */ addi r31, r5, 0x0
+/* 8036FAD8 93C10020 */ stw r30, 0x20(r1)
+/* 8036FADC 3BC40000 */ addi r30, r4, 0x0
+/* 8036FAE0 93A1001C */ stw r29, 0x1c(r1)
+/* 8036FAE4 3BA30000 */ addi r29, r3, 0x0
+/* 8036FAE8 48001C61 */ bl func_80371748
+/* 8036FAEC 387D0008 */ addi r3, r29, 0x8
+/* 8036FAF0 48001C59 */ bl func_80371748
+/* 8036FAF4 93DD0010 */ stw r30, 0x10(r29)
+/* 8036FAF8 38000000 */ li r0, 0x0
+/* 8036FAFC 93FD0014 */ stw r31, 0x14(r29)
+/* 8036FB00 901D0018 */ stw r0, 0x18(r29)
+/* 8036FB04 901D001C */ stw r0, 0x1c(r29)
+/* 8036FB08 8001002C */ lwz r0, 0x2c(r1)
+/* 8036FB0C 83E10024 */ lwz r31, 0x24(r1)
+/* 8036FB10 83C10020 */ lwz r30, 0x20(r1)
+/* 8036FB14 83A1001C */ lwz r29, 0x1c(r1)
+/* 8036FB18 38210028 */ addi r1, r1, 0x28
+/* 8036FB1C 7C0803A6 */ mtlr r0
+/* 8036FB20 4E800020 */ blr
+.size func_8036fac4, . - func_8036fac4
+
+
+.global func_8036fb24
+.type func_8036fb24, @function
+func_8036fb24:
+/* 8036FB24 7C0802A6 */ mflr r0
+/* 8036FB28 90010004 */ stw r0, 4(r1)
+/* 8036FB2C 9421FFD8 */ stwu r1, -0x28(r1)
+/* 8036FB30 93E10024 */ stw r31, 0x24(r1)
+/* 8036FB34 3BE50000 */ addi r31, r5, 0x0
+/* 8036FB38 93C10020 */ stw r30, 0x20(r1)
+/* 8036FB3C 93A1001C */ stw r29, 0x1c(r1)
+/* 8036FB40 3BA40000 */ addi r29, r4, 0x0
+/* 8036FB44 93810018 */ stw r28, 0x18(r1)
+/* 8036FB48 3B830000 */ addi r28, r3, 0x0
+/* 8036FB4C 4BFFEF89 */ bl func_8036ead4
+/* 8036FB50 3BC30000 */ addi r30, r3, 0x0
+/* 8036FB54 57FF07FE */ clrlwi r31, r31, 0x1f
+/* 8036FB58 48000024 */ b lbl_8036fb7c
+lbl_8036fb5c:
+/* 8036FB5C 2C1F0000 */ cmpwi r31, 0x0
+/* 8036FB60 40820014 */ bne- lbl_8036fb74
+/* 8036FB64 7FC3F378 */ mr r3, r30
+/* 8036FB68 4BFFEF95 */ bl func_8036eafc
+/* 8036FB6C 38600000 */ li r3, 0x0
+/* 8036FB70 4800005C */ b lbl_8036fbcc
+lbl_8036fb74:
+/* 8036FB74 7F83E378 */ mr r3, r28
+/* 8036FB78 48002995 */ bl func_8037250c
+lbl_8036fb7c:
+/* 8036FB7C 80DC0014 */ lwz r6, 0x14(r28)
+/* 8036FB80 809C001C */ lwz r4, 0x1c(r28)
+/* 8036FB84 7C062000 */ cmpw r6, r4
+/* 8036FB88 4081FFD4 */ ble+ lbl_8036fb5c
+/* 8036FB8C 801C0018 */ lwz r0, 0x18(r28)
+/* 8036FB90 387C0008 */ addi r3, r28, 0x8
+/* 8036FB94 80BC0010 */ lwz r5, 0x10(r28)
+/* 8036FB98 7C802214 */ add r4, r0, r4
+/* 8036FB9C 7C0433D6 */ divw r0, r4, r6
+/* 8036FBA0 7C0031D6 */ mullw r0, r0, r6
+/* 8036FBA4 7C002050 */ subf r0, r0, r4
+/* 8036FBA8 5400103A */ slwi r0, r0, 2
+/* 8036FBAC 7FA5012E */ stwx r29, r5, r0
+/* 8036FBB0 809C001C */ lwz r4, 0x1c(r28)
+/* 8036FBB4 38040001 */ addi r0, r4, 0x1
+/* 8036FBB8 901C001C */ stw r0, 0x1c(r28)
+/* 8036FBBC 48002A3D */ bl func_803725f8
+/* 8036FBC0 7FC3F378 */ mr r3, r30
+/* 8036FBC4 4BFFEF39 */ bl func_8036eafc
+/* 8036FBC8 38600001 */ li r3, 0x1
+lbl_8036fbcc:
+/* 8036FBCC 8001002C */ lwz r0, 0x2c(r1)
+/* 8036FBD0 83E10024 */ lwz r31, 0x24(r1)
+/* 8036FBD4 83C10020 */ lwz r30, 0x20(r1)
+/* 8036FBD8 83A1001C */ lwz r29, 0x1c(r1)
+/* 8036FBDC 83810018 */ lwz r28, 0x18(r1)
+/* 8036FBE0 38210028 */ addi r1, r1, 0x28
+/* 8036FBE4 7C0803A6 */ mtlr r0
+/* 8036FBE8 4E800020 */ blr
+.size func_8036fb24, . - func_8036fb24
+
+
+.global func_8036fbec
+.type func_8036fbec, @function
+func_8036fbec:
+/* 8036FBEC 7C0802A6 */ mflr r0
+/* 8036FBF0 90010004 */ stw r0, 4(r1)
+/* 8036FBF4 9421FFD8 */ stwu r1, -0x28(r1)
+/* 8036FBF8 93E10024 */ stw r31, 0x24(r1)
+/* 8036FBFC 3BE30000 */ addi r31, r3, 0x0
+/* 8036FC00 93C10020 */ stw r30, 0x20(r1)
+/* 8036FC04 3BC50000 */ addi r30, r5, 0x0
+/* 8036FC08 93A1001C */ stw r29, 0x1c(r1)
+/* 8036FC0C 93810018 */ stw r28, 0x18(r1)
+/* 8036FC10 3B840000 */ addi r28, r4, 0x0
+/* 8036FC14 4BFFEEC1 */ bl func_8036ead4
+/* 8036FC18 3BA30000 */ addi r29, r3, 0x0
+/* 8036FC1C 57DE07FE */ clrlwi r30, r30, 0x1f
+/* 8036FC20 48000024 */ b lbl_8036fc44
+lbl_8036fc24:
+/* 8036FC24 2C1E0000 */ cmpwi r30, 0x0
+/* 8036FC28 40820014 */ bne- lbl_8036fc3c
+/* 8036FC2C 7FA3EB78 */ mr r3, r29
+/* 8036FC30 4BFFEECD */ bl func_8036eafc
+/* 8036FC34 38600000 */ li r3, 0x0
+/* 8036FC38 48000070 */ b lbl_8036fca8
+lbl_8036fc3c:
+/* 8036FC3C 387F0008 */ addi r3, r31, 0x8
+/* 8036FC40 480028CD */ bl func_8037250c
+lbl_8036fc44:
+/* 8036FC44 801F001C */ lwz r0, 0x1c(r31)
+/* 8036FC48 2C000000 */ cmpwi r0, 0x0
+/* 8036FC4C 4182FFD8 */ beq+ lbl_8036fc24
+/* 8036FC50 281C0000 */ cmplwi r28, 0
+/* 8036FC54 41820018 */ beq- lbl_8036fc6c
+/* 8036FC58 801F0018 */ lwz r0, 0x18(r31)
+/* 8036FC5C 807F0010 */ lwz r3, 0x10(r31)
+/* 8036FC60 5400103A */ slwi r0, r0, 2
+/* 8036FC64 7C03002E */ lwzx r0, r3, r0
+/* 8036FC68 901C0000 */ stw r0, 0(r28)
+lbl_8036fc6c:
+/* 8036FC6C 80BF0018 */ lwz r5, 0x18(r31)
+/* 8036FC70 7FE3FB78 */ mr r3, r31
+/* 8036FC74 809F0014 */ lwz r4, 0x14(r31)
+/* 8036FC78 38A50001 */ addi r5, r5, 0x1
+/* 8036FC7C 7C0523D6 */ divw r0, r5, r4
+/* 8036FC80 7C0021D6 */ mullw r0, r0, r4
+/* 8036FC84 7C002850 */ subf r0, r0, r5
+/* 8036FC88 901F0018 */ stw r0, 0x18(r31)
+/* 8036FC8C 809F001C */ lwz r4, 0x1c(r31)
+/* 8036FC90 3804FFFF */ addi r0, r4, -0x1
+/* 8036FC94 901F001C */ stw r0, 0x1c(r31)
+/* 8036FC98 48002961 */ bl func_803725f8
+/* 8036FC9C 7FA3EB78 */ mr r3, r29
+/* 8036FCA0 4BFFEE5D */ bl func_8036eafc
+/* 8036FCA4 38600001 */ li r3, 0x1
+lbl_8036fca8:
+/* 8036FCA8 8001002C */ lwz r0, 0x2c(r1)
+/* 8036FCAC 83E10024 */ lwz r31, 0x24(r1)
+/* 8036FCB0 83C10020 */ lwz r30, 0x20(r1)
+/* 8036FCB4 83A1001C */ lwz r29, 0x1c(r1)
+/* 8036FCB8 83810018 */ lwz r28, 0x18(r1)
+/* 8036FCBC 38210028 */ addi r1, r1, 0x28
+/* 8036FCC0 7C0803A6 */ mtlr r0
+/* 8036FCC4 4E800020 */ blr
+.size func_8036fbec, . - func_8036fbec
+
diff --git a/asm/Dolphin/os/OSMutex.s b/asm/Dolphin/os/OSMutex.s
new file mode 100644
index 0000000..a5d8a48
--- /dev/null
+++ b/asm/Dolphin/os/OSMutex.s
@@ -0,0 +1,190 @@
+.include "macros.inc"
+
+.section .text
+
+.global func_8036ffa8
+.type func_8036ffa8, @function
+func_8036ffa8:
+/* 8036FFA8 7C0802A6 */ mflr r0
+/* 8036FFAC 90010004 */ stw r0, 4(r1)
+/* 8036FFB0 9421FFE8 */ stwu r1, -0x18(r1)
+/* 8036FFB4 93E10014 */ stw r31, 0x14(r1)
+/* 8036FFB8 7C7F1B78 */ mr r31, r3
+/* 8036FFBC 4800178D */ bl func_80371748
+/* 8036FFC0 38000000 */ li r0, 0x0
+/* 8036FFC4 901F0008 */ stw r0, 8(r31)
+/* 8036FFC8 901F000C */ stw r0, 0xc(r31)
+/* 8036FFCC 8001001C */ lwz r0, 0x1c(r1)
+/* 8036FFD0 83E10014 */ lwz r31, 0x14(r1)
+/* 8036FFD4 38210018 */ addi r1, r1, 0x18
+/* 8036FFD8 7C0803A6 */ mtlr r0
+/* 8036FFDC 4E800020 */ blr
+.size func_8036ffa8, . - func_8036ffa8
+
+
+.global func_8036ffe0
+.type func_8036ffe0, @function
+func_8036ffe0:
+/* 8036FFE0 7C0802A6 */ mflr r0
+/* 8036FFE4 90010004 */ stw r0, 4(r1)
+/* 8036FFE8 9421FFE0 */ stwu r1, -0x20(r1)
+/* 8036FFEC 93E1001C */ stw r31, 0x1c(r1)
+/* 8036FFF0 93C10018 */ stw r30, 0x18(r1)
+/* 8036FFF4 93A10014 */ stw r29, 0x14(r1)
+/* 8036FFF8 93810010 */ stw r28, 0x10(r1)
+/* 8036FFFC 7C7C1B78 */ mr r28, r3
+/* 80370000 4BFFEAD5 */ bl func_8036ead4
+/* 80370004 7C7D1B78 */ mr r29, r3
+/* 80370008 48001751 */ bl func_80371758
+/* 8037000C 3BC30000 */ addi r30, r3, 0x0
+/* 80370010 3BE00000 */ li r31, 0x0
+lbl_80370014:
+/* 80370014 801C0008 */ lwz r0, 8(r28)
+/* 80370018 28000000 */ cmplwi r0, 0
+/* 8037001C 40820040 */ bne- lbl_8037005c
+/* 80370020 93DC0008 */ stw r30, 8(r28)
+/* 80370024 807C000C */ lwz r3, 0xc(r28)
+/* 80370028 38030001 */ addi r0, r3, 0x1
+/* 8037002C 901C000C */ stw r0, 0xc(r28)
+/* 80370030 807E02F8 */ lwz r3, 0x2f8(r30)
+/* 80370034 28030000 */ cmplwi r3, 0
+/* 80370038 4082000C */ bne- lbl_80370044
+/* 8037003C 939E02F4 */ stw r28, 0x2f4(r30)
+/* 80370040 48000008 */ b lbl_80370048
+lbl_80370044:
+/* 80370044 93830010 */ stw r28, 0x10(r3)
+lbl_80370048:
+/* 80370048 907C0014 */ stw r3, 0x14(r28)
+/* 8037004C 38000000 */ li r0, 0x0
+/* 80370050 901C0010 */ stw r0, 0x10(r28)
+/* 80370054 939E02F8 */ stw r28, 0x2f8(r30)
+/* 80370058 4800003C */ b lbl_80370094
+lbl_8037005c:
+/* 8037005C 7C00F040 */ cmplw r0, r30
+/* 80370060 40820014 */ bne- lbl_80370074
+/* 80370064 807C000C */ lwz r3, 0xc(r28)
+/* 80370068 38030001 */ addi r0, r3, 0x1
+/* 8037006C 901C000C */ stw r0, 0xc(r28)
+/* 80370070 48000024 */ b lbl_80370094
+lbl_80370074:
+/* 80370074 939E02F0 */ stw r28, 0x2f0(r30)
+/* 80370078 807C0008 */ lwz r3, 8(r28)
+/* 8037007C 809E02D0 */ lwz r4, 0x2d0(r30)
+/* 80370080 48001A19 */ bl func_80371a98
+/* 80370084 7F83E378 */ mr r3, r28
+/* 80370088 48002485 */ bl func_8037250c
+/* 8037008C 93FE02F0 */ stw r31, 0x2f0(r30)
+/* 80370090 4BFFFF84 */ b lbl_80370014
+lbl_80370094:
+/* 80370094 7FA3EB78 */ mr r3, r29
+/* 80370098 4BFFEA65 */ bl func_8036eafc
+/* 8037009C 80010024 */ lwz r0, 0x24(r1)
+/* 803700A0 83E1001C */ lwz r31, 0x1c(r1)
+/* 803700A4 83C10018 */ lwz r30, 0x18(r1)
+/* 803700A8 83A10014 */ lwz r29, 0x14(r1)
+/* 803700AC 83810010 */ lwz r28, 0x10(r1)
+/* 803700B0 38210020 */ addi r1, r1, 0x20
+/* 803700B4 7C0803A6 */ mtlr r0
+/* 803700B8 4E800020 */ blr
+.size func_8036ffe0, . - func_8036ffe0
+
+
+.global func_803700bc
+.type func_803700bc, @function
+func_803700bc:
+/* 803700BC 7C0802A6 */ mflr r0
+/* 803700C0 90010004 */ stw r0, 4(r1)
+/* 803700C4 9421FFE0 */ stwu r1, -0x20(r1)
+/* 803700C8 93E1001C */ stw r31, 0x1c(r1)
+/* 803700CC 93C10018 */ stw r30, 0x18(r1)
+/* 803700D0 93A10014 */ stw r29, 0x14(r1)
+/* 803700D4 7C7D1B78 */ mr r29, r3
+/* 803700D8 4BFFE9FD */ bl func_8036ead4
+/* 803700DC 7C7F1B78 */ mr r31, r3
+/* 803700E0 48001679 */ bl func_80371758
+/* 803700E4 801D0008 */ lwz r0, 8(r29)
+/* 803700E8 3BC30000 */ addi r30, r3, 0x0
+/* 803700EC 7C00F040 */ cmplw r0, r30
+/* 803700F0 40820070 */ bne- lbl_80370160
+/* 803700F4 807D000C */ lwz r3, 0xc(r29)
+/* 803700F8 3403FFFF */ addic. r0, r3, -0x1
+/* 803700FC 901D000C */ stw r0, 0xc(r29)
+/* 80370100 40820060 */ bne- lbl_80370160
+/* 80370104 807D0010 */ lwz r3, 0x10(r29)
+/* 80370108 809D0014 */ lwz r4, 0x14(r29)
+/* 8037010C 28030000 */ cmplwi r3, 0
+/* 80370110 4082000C */ bne- lbl_8037011c
+/* 80370114 909E02F8 */ stw r4, 0x2f8(r30)
+/* 80370118 48000008 */ b lbl_80370120
+lbl_8037011c:
+/* 8037011C 90830014 */ stw r4, 0x14(r3)
+lbl_80370120:
+/* 80370120 28040000 */ cmplwi r4, 0
+/* 80370124 4082000C */ bne- lbl_80370130
+/* 80370128 907E02F4 */ stw r3, 0x2f4(r30)
+/* 8037012C 48000008 */ b lbl_80370134
+lbl_80370130:
+/* 80370130 90640010 */ stw r3, 0x10(r4)
+lbl_80370134:
+/* 80370134 38000000 */ li r0, 0x0
+/* 80370138 901D0008 */ stw r0, 8(r29)
+/* 8037013C 807E02D0 */ lwz r3, 0x2d0(r30)
+/* 80370140 801E02D4 */ lwz r0, 0x2d4(r30)
+/* 80370144 7C030000 */ cmpw r3, r0
+/* 80370148 40800010 */ bge- lbl_80370158
+/* 8037014C 7FC3F378 */ mr r3, r30
+/* 80370150 4800174D */ bl func_8037189c
+/* 80370154 907E02D0 */ stw r3, 0x2d0(r30)
+lbl_80370158:
+/* 80370158 7FA3EB78 */ mr r3, r29
+/* 8037015C 4800249D */ bl func_803725f8
+lbl_80370160:
+/* 80370160 7FE3FB78 */ mr r3, r31
+/* 80370164 4BFFE999 */ bl func_8036eafc
+/* 80370168 80010024 */ lwz r0, 0x24(r1)
+/* 8037016C 83E1001C */ lwz r31, 0x1c(r1)
+/* 80370170 83C10018 */ lwz r30, 0x18(r1)
+/* 80370174 83A10014 */ lwz r29, 0x14(r1)
+/* 80370178 38210020 */ addi r1, r1, 0x20
+/* 8037017C 7C0803A6 */ mtlr r0
+/* 80370180 4E800020 */ blr
+.size func_803700bc, . - func_803700bc
+
+
+.global func_80370184
+.type func_80370184, @function
+func_80370184:
+/* 80370184 7C0802A6 */ mflr r0
+/* 80370188 90010004 */ stw r0, 4(r1)
+/* 8037018C 9421FFE8 */ stwu r1, -0x18(r1)
+/* 80370190 93E10014 */ stw r31, 0x14(r1)
+/* 80370194 3BE00000 */ li r31, 0x0
+/* 80370198 93C10010 */ stw r30, 0x10(r1)
+/* 8037019C 3BC30000 */ addi r30, r3, 0x0
+/* 803701A0 48000030 */ b lbl_803701d0
+lbl_803701a4:
+/* 803701A4 80A40010 */ lwz r5, 0x10(r4)
+/* 803701A8 38640000 */ addi r3, r4, 0x0
+/* 803701AC 28050000 */ cmplwi r5, 0
+/* 803701B0 4082000C */ bne- lbl_803701bc
+/* 803701B4 93FE02F8 */ stw r31, 0x2f8(r30)
+/* 803701B8 48000008 */ b lbl_803701c0
+lbl_803701bc:
+/* 803701BC 93E50014 */ stw r31, 0x14(r5)
+lbl_803701c0:
+/* 803701C0 90BE02F4 */ stw r5, 0x2f4(r30)
+/* 803701C4 93E4000C */ stw r31, 0xc(r4)
+/* 803701C8 93E40008 */ stw r31, 8(r4)
+/* 803701CC 4800242D */ bl func_803725f8
+lbl_803701d0:
+/* 803701D0 809E02F4 */ lwz r4, 0x2f4(r30)
+/* 803701D4 28040000 */ cmplwi r4, 0
+/* 803701D8 4082FFCC */ bne+ lbl_803701a4
+/* 803701DC 8001001C */ lwz r0, 0x1c(r1)
+/* 803701E0 83E10014 */ lwz r31, 0x14(r1)
+/* 803701E4 83C10010 */ lwz r30, 0x10(r1)
+/* 803701E8 38210018 */ addi r1, r1, 0x18
+/* 803701EC 7C0803A6 */ mtlr r0
+/* 803701F0 4E800020 */ blr
+.size func_80370184, . - func_80370184
+
diff --git a/asm/Dolphin/os/OSReboot.s b/asm/Dolphin/os/OSReboot.s
new file mode 100644
index 0000000..dded641
--- /dev/null
+++ b/asm/Dolphin/os/OSReboot.s
@@ -0,0 +1,173 @@
+.include "macros.inc"
+
+.section .text
+
+.global func_803701f4
+.type func_803701f4, @function
+func_803701f4:
+/* 803701F4 7C0802A6 */ mflr r0
+/* 803701F8 90010004 */ stw r0, 4(r1)
+/* 803701FC 9421FFE8 */ stwu r1, -0x18(r1)
+/* 80370200 93E10014 */ stw r31, 0x14(r1)
+/* 80370204 7C7F1B78 */ mr r31, r3
+/* 80370208 4BFFE8CD */ bl func_8036ead4
+/* 8037020C 4BFFD805 */ bl func_8036da10
+/* 80370210 7C0004AC */ sync 0
+/* 80370214 4C00012C */ isync
+/* 80370218 7FE803A6 */ mtlr r31
+/* 8037021C 4E800020 */ blr
+.size func_803701f4, . - func_803701f4
+
+
+.global func_80370220
+.type func_80370220, @function
+func_80370220:
+/* 80370220 8001001C */ lwz r0, 0x1c(r1)
+/* 80370224 83E10014 */ lwz r31, 0x14(r1)
+/* 80370228 38210018 */ addi r1, r1, 0x18
+/* 8037022C 7C0803A6 */ mtlr r0
+/* 80370230 4E800020 */ blr
+.size func_80370220, . - func_80370220
+
+
+.global func_80370234
+.type func_80370234, @function
+func_80370234:
+/* 80370234 38000001 */ li r0, 0x1
+/* 80370238 900DCA68 */ stw r0, lbl_805c6888@sda21(0)
+/* 8037023C 4E800020 */ blr
+.size func_80370234, . - func_80370234
+
+
+.global func_80370240
+.type func_80370240, @function
+func_80370240:
+/* 80370240 7C0802A6 */ mflr r0
+/* 80370244 90010004 */ stw r0, 4(r1)
+/* 80370248 9421FCC0 */ stwu r1, -0x340(r1)
+/* 8037024C 93E1033C */ stw r31, 0x33c(r1)
+/* 80370250 93C10338 */ stw r30, 0x338(r1)
+/* 80370254 3C608054 */ lis r3, lbl_8053ec80@ha
+/* 80370258 3BC3EC80 */ addi r30, r3, lbl_8053ec80@l
+/* 8037025C 4BFFE879 */ bl func_8036ead4
+/* 80370260 80ADCA60 */ lwz r5, lbl_805c6880@sda21(0)
+/* 80370264 3C808130 */ lis r4, 0x8130
+/* 80370268 800DCA64 */ lwz r0, lbl_805c6884@sda21(0)
+/* 8037026C 38600000 */ li r3, 0x0
+/* 80370270 3FE08180 */ lis r31, 0x8180
+/* 80370274 38E00001 */ li r7, 0x1
+/* 80370278 907FFFFC */ stw r3, -4(r31)
+/* 8037027C 3CC08000 */ lis r6, 0x8000
+/* 80370280 907FFFF8 */ stw r3, -8(r31)
+/* 80370284 38610070 */ addi r3, r1, 0x70
+/* 80370288 98E630E2 */ stb r7, 0x30e2(r6)
+/* 8037028C 90A4DFF0 */ stw r5, -0x2010(r4)
+/* 80370290 9004DFEC */ stw r0, -0x2014(r4)
+/* 80370294 4BFFDFCD */ bl func_8036e260
+/* 80370298 38610070 */ addi r3, r1, 0x70
+/* 8037029C 4BFFDDFD */ bl func_8036e098
+/* 803702A0 48004E6D */ bl func_8037510c
+/* 803702A4 38600001 */ li r3, 0x1
+/* 803702A8 48006D91 */ bl func_80377038
+/* 803702AC 3C608037 */ lis r3, func_80370234@ha
+/* 803702B0 38630234 */ addi r3, r3, func_80370234@l
+/* 803702B4 480071C1 */ bl func_80377474
+/* 803702B8 480070D9 */ bl func_80377390
+/* 803702BC 2C030000 */ cmpwi r3, 0x0
+/* 803702C0 4082000C */ bne- lbl_803702cc
+/* 803702C4 807FFFFC */ lwz r3, -4(r31)
+/* 803702C8 4800022D */ bl func_803704f4
+lbl_803702cc:
+/* 803702CC 3860FFE0 */ li r3, -0x20
+/* 803702D0 4BFFEBCD */ bl func_8036ee9c
+/* 803702D4 38600400 */ li r3, 0x400
+/* 803702D8 4BFFEC4D */ bl func_8036ef24
+/* 803702DC 4BFFE80D */ bl func_8036eae8
+/* 803702E0 48000004 */ b lbl_803702e4
+lbl_803702e4:
+/* 803702E4 48000004 */ b lbl_803702e8
+lbl_803702e8:
+/* 803702E8 800DCA68 */ lwz r0, lbl_805c6888@sda21(0)
+/* 803702EC 2C000000 */ cmpwi r0, 0x0
+/* 803702F0 4182FFF8 */ beq+ lbl_803702e8
+/* 803702F4 7FC4F378 */ mr r4, r30
+/* 803702F8 38610040 */ addi r3, r1, 0x40
+/* 803702FC 38A00020 */ li r5, 0x20
+/* 80370300 38C02440 */ li r6, 0x2440
+/* 80370304 38E00000 */ li r7, 0x0
+/* 80370308 48006981 */ bl func_80376c88
+/* 8037030C 3FE08180 */ lis r31, 0x8180
+/* 80370310 48000004 */ b lbl_80370314
+lbl_80370314:
+/* 80370314 48000004 */ b lbl_80370318
+lbl_80370318:
+/* 80370318 8001004C */ lwz r0, 0x4c(r1)
+/* 8037031C 2C000001 */ cmpwi r0, 0x1
+/* 80370320 4182FFF8 */ beq+ lbl_80370318
+/* 80370324 40800014 */ bge- lbl_80370338
+/* 80370328 2C00FFFF */ cmpwi r0, -0x1
+/* 8037032C 41820018 */ beq- lbl_80370344
+/* 80370330 40800020 */ bge- lbl_80370350
+/* 80370334 4BFFFFE4 */ b lbl_80370318
+lbl_80370338:
+/* 80370338 2C00000C */ cmpwi r0, 0xc
+/* 8037033C 4080FFDC */ bge+ lbl_80370318
+/* 80370340 48000004 */ b lbl_80370344
+lbl_80370344:
+/* 80370344 807FFFFC */ lwz r3, -4(r31)
+/* 80370348 480001AD */ bl func_803704f4
+/* 8037034C 4BFFFFCC */ b lbl_80370318
+lbl_80370350:
+/* 80370350 807E0018 */ lwz r3, 0x18(r30)
+/* 80370354 809E0014 */ lwz r4, 0x14(r30)
+/* 80370358 3803001F */ addi r0, r3, 0x1f
+/* 8037035C 38840020 */ addi r4, r4, 0x20
+/* 80370360 541E0034 */ rlwinm r30, r0, 0, 0, 0x1a
+/* 80370364 48000004 */ b lbl_80370368
+lbl_80370368:
+/* 80370368 48000004 */ b lbl_8037036c
+lbl_8037036c:
+/* 8037036C 800DCA68 */ lwz r0, lbl_805c6888@sda21(0)
+/* 80370370 2C000000 */ cmpwi r0, 0x0
+/* 80370374 4182FFF8 */ beq+ lbl_8037036c
+/* 80370378 7FC5F378 */ mr r5, r30
+/* 8037037C 38610010 */ addi r3, r1, 0x10
+/* 80370380 38C42440 */ addi r6, r4, 0x2440
+/* 80370384 3C808130 */ lis r4, 0x8130
+/* 80370388 38E00000 */ li r7, 0x0
+/* 8037038C 480068FD */ bl func_80376c88
+/* 80370390 3FE08180 */ lis r31, 0x8180
+/* 80370394 48000004 */ b lbl_80370398
+lbl_80370398:
+/* 80370398 48000004 */ b lbl_8037039c
+lbl_8037039c:
+/* 8037039C 8001001C */ lwz r0, 0x1c(r1)
+/* 803703A0 2C000001 */ cmpwi r0, 0x1
+/* 803703A4 4182FFF8 */ beq+ lbl_8037039c
+/* 803703A8 40800014 */ bge- lbl_803703bc
+/* 803703AC 2C00FFFF */ cmpwi r0, -0x1
+/* 803703B0 41820018 */ beq- lbl_803703c8
+/* 803703B4 40800020 */ bge- lbl_803703d4
+/* 803703B8 4BFFFFE4 */ b lbl_8037039c
+lbl_803703bc:
+/* 803703BC 2C00000C */ cmpwi r0, 0xc
+/* 803703C0 4080FFDC */ bge+ lbl_8037039c
+/* 803703C4 48000004 */ b lbl_803703c8
+lbl_803703c8:
+/* 803703C8 807FFFFC */ lwz r3, -4(r31)
+/* 803703CC 48000129 */ bl func_803704f4
+/* 803703D0 4BFFFFCC */ b lbl_8037039c
+lbl_803703d4:
+/* 803703D4 3C608130 */ lis r3, 0x8130
+/* 803703D8 7FC4F378 */ mr r4, r30
+/* 803703DC 4BFFD5FD */ bl func_8036d9d8
+/* 803703E0 3C608130 */ lis r3, 0x8130
+/* 803703E4 4BFFFE11 */ bl func_803701f4
+/* 803703E8 80010344 */ lwz r0, 0x344(r1)
+/* 803703EC 83E1033C */ lwz r31, 0x33c(r1)
+/* 803703F0 83C10338 */ lwz r30, 0x338(r1)
+/* 803703F4 38210340 */ addi r1, r1, 0x340
+/* 803703F8 7C0803A6 */ mtlr r0
+/* 803703FC 4E800020 */ blr
+.size func_80370240, . - func_80370240
+
diff --git a/asm/Dolphin/os/OSReset.s b/asm/Dolphin/os/OSReset.s
new file mode 100644
index 0000000..a7b42f7
--- /dev/null
+++ b/asm/Dolphin/os/OSReset.s
@@ -0,0 +1,330 @@
+.include "macros.inc"
+
+.section .text
+
+.global func_80370400
+.type func_80370400, @function
+func_80370400:
+/* 80370400 80ADCA70 */ lwz r5, lbl_805c6890@sda21(0)
+/* 80370404 48000008 */ b lbl_8037040c
+lbl_80370408:
+/* 80370408 80A50008 */ lwz r5, 8(r5)
+lbl_8037040c:
+/* 8037040C 28050000 */ cmplwi r5, 0
+/* 80370410 41820014 */ beq- lbl_80370424
+/* 80370414 80850004 */ lwz r4, 4(r5)
+/* 80370418 80030004 */ lwz r0, 4(r3)
+/* 8037041C 7C040040 */ cmplw r4, r0
+/* 80370420 4081FFE8 */ ble+ lbl_80370408
+lbl_80370424:
+/* 80370424 28050000 */ cmplwi r5, 0
+/* 80370428 40820034 */ bne- lbl_8037045c
+/* 8037042C 38ADCA70 */ addi r5, 0, lbl_805c6890@sda21
+/* 80370430 84850004 */ lwzu r4, 4(r5)
+/* 80370434 28040000 */ cmplwi r4, 0
+/* 80370438 4082000C */ bne- lbl_80370444
+/* 8037043C 906DCA70 */ stw r3, lbl_805c6890@sda21(0)
+/* 80370440 48000008 */ b lbl_80370448
+lbl_80370444:
+/* 80370444 90640008 */ stw r3, 8(r4)
+lbl_80370448:
+/* 80370448 9083000C */ stw r4, 0xc(r3)
+/* 8037044C 38000000 */ li r0, 0x0
+/* 80370450 90030008 */ stw r0, 8(r3)
+/* 80370454 90650000 */ stw r3, 0(r5)
+/* 80370458 4E800020 */ blr
+lbl_8037045c:
+/* 8037045C 90A30008 */ stw r5, 8(r3)
+/* 80370460 8085000C */ lwz r4, 0xc(r5)
+/* 80370464 9065000C */ stw r3, 0xc(r5)
+/* 80370468 28040000 */ cmplwi r4, 0
+/* 8037046C 9083000C */ stw r4, 0xc(r3)
+/* 80370470 4082000C */ bne- lbl_8037047c
+/* 80370474 906DCA70 */ stw r3, lbl_805c6890@sda21(0)
+/* 80370478 4E800020 */ blr
+lbl_8037047c:
+/* 8037047C 90640008 */ stw r3, 8(r4)
+/* 80370480 4E800020 */ blr
+.size func_80370400, . - func_80370400
+
+
+.global func_80370484
+.type func_80370484, @function
+func_80370484:
+/* 80370484 48000020 */ b lbl_803704a4
+lbl_80370488:
+/* 80370488 7D10FAA6 */ mfspr r8, 0x3f0
+/* 8037048C 61080008 */ ori r8, r8, 8
+/* 80370490 7D10FBA6 */ mtspr 0x3f0, r8
+/* 80370494 4C00012C */ isync
+/* 80370498 7C0004AC */ sync 0
+/* 8037049C 60000000 */ nop
+/* 803704A0 48000008 */ b lbl_803704a8
+lbl_803704a4:
+/* 803704A4 48000020 */ b lbl_803704c4
+lbl_803704a8:
+/* 803704A8 7CAC42E6 */ mftb r5, 0x10c
+lbl_803704ac:
+/* 803704AC 7CCC42E6 */ mftb r6, 0x10c
+/* 803704B0 7CE53050 */ subf r7, r5, r6
+/* 803704B4 28071124 */ cmplwi r7, 0x1124
+/* 803704B8 4180FFF4 */ blt+ lbl_803704ac
+/* 803704BC 60000000 */ nop
+/* 803704C0 48000008 */ b lbl_803704c8
+lbl_803704c4:
+/* 803704C4 48000020 */ b lbl_803704e4
+lbl_803704c8:
+/* 803704C8 3D00CC00 */ lis r8, 0xcc00
+/* 803704CC 61083000 */ ori r8, r8, 0x3000
+/* 803704D0 38800003 */ li r4, 0x3
+/* 803704D4 90880024 */ stw r4, 0x24(r8)
+/* 803704D8 90680024 */ stw r3, 0x24(r8)
+/* 803704DC 60000000 */ nop
+/* 803704E0 48000008 */ b lbl_803704e8
+lbl_803704e4:
+/* 803704E4 4800000C */ b lbl_803704f0
+lbl_803704e8:
+/* 803704E8 60000000 */ nop
+/* 803704EC 4BFFFFFC */ b lbl_803704e8
+lbl_803704f0:
+/* 803704F0 4BFFFF98 */ b lbl_80370488
+.size func_80370484, . - func_80370484
+
+
+.global func_803704f4
+.type func_803704f4, @function
+func_803704f4:
+/* 803704F4 7C0802A6 */ mflr r0
+/* 803704F8 90010004 */ stw r0, 4(r1)
+/* 803704FC 9421FFE8 */ stwu r1, -0x18(r1)
+/* 80370500 93E10014 */ stw r31, 0x14(r1)
+/* 80370504 7C7F1B78 */ mr r31, r3
+/* 80370508 4BFFE5CD */ bl func_8036ead4
+/* 8037050C 3C60CC00 */ lis r3, 0xcc00
+/* 80370510 38632000 */ addi r3, r3, 0x2000
+/* 80370514 38000000 */ li r0, 0x0
+/* 80370518 B0030002 */ sth r0, 2(r3)
+/* 8037051C 4BFFD4F5 */ bl func_8036da10
+/* 80370520 57E31838 */ slwi r3, r31, 3
+/* 80370524 4BFFFF61 */ bl func_80370484
+/* 80370528 8001001C */ lwz r0, 0x1c(r1)
+/* 8037052C 83E10014 */ lwz r31, 0x14(r1)
+/* 80370530 38210018 */ addi r1, r1, 0x18
+/* 80370534 7C0803A6 */ mtlr r0
+/* 80370538 4E800020 */ blr
+.size func_803704f4, . - func_803704f4
+
+
+.global func_8037053c
+.type func_8037053c, @function
+func_8037053c:
+/* 8037053C 7C0802A6 */ mflr r0
+/* 80370540 90010004 */ stw r0, 4(r1)
+/* 80370544 9421FFC0 */ stwu r1, -0x40(r1)
+/* 80370548 BF410028 */ stmw r26, 0x28(r1)
+/* 8037054C 7C7A1B78 */ mr r26, r3
+/* 80370550 7C9D2378 */ mr r29, r4
+/* 80370554 7CBE2B78 */ mr r30, r5
+/* 80370558 4800125D */ bl func_803717b4
+/* 8037055C 4BFFD299 */ bl func_8036d7f4
+/* 80370560 2C1A0002 */ cmpwi r26, 0x2
+/* 80370564 40820010 */ bne- lbl_80370574
+/* 80370568 38600001 */ li r3, 0x1
+/* 8037056C 4800AAC1 */ bl func_8037b02c
+/* 80370570 7C7F1B78 */ mr r31, r3
+lbl_80370574:
+/* 80370574 48000004 */ b lbl_80370578
+lbl_80370578:
+/* 80370578 48000004 */ b lbl_8037057c
+lbl_8037057c:
+/* 8037057C 836DCA70 */ lwz r27, lbl_805c6890@sda21(0)
+/* 80370580 3B800000 */ li r28, 0x0
+/* 80370584 48000004 */ b lbl_80370588
+lbl_80370588:
+/* 80370588 48000004 */ b lbl_8037058c
+lbl_8037058c:
+/* 8037058C 48000024 */ b lbl_803705b0
+lbl_80370590:
+/* 80370590 38600000 */ li r3, 0x0
+/* 80370594 819B0000 */ lwz r12, 0(r27)
+/* 80370598 7D8803A6 */ mtlr r12
+/* 8037059C 4E800021 */ blrl
+/* 803705A0 7C600034 */ cntlzw r0, r3
+/* 803705A4 837B0008 */ lwz r27, 8(r27)
+/* 803705A8 5400D97E */ srwi r0, r0, 5
+/* 803705AC 7F9C0378 */ or r28, r28, r0
+lbl_803705b0:
+/* 803705B0 281B0000 */ cmplwi r27, 0
+/* 803705B4 4082FFDC */ bne+ lbl_80370590
+/* 803705B8 48000C6D */ bl func_80371224
+/* 803705BC 7C600034 */ cntlzw r0, r3
+/* 803705C0 5400D97E */ srwi r0, r0, 5
+/* 803705C4 7F9C0378 */ or r28, r28, r0
+/* 803705C8 2C1C0000 */ cmpwi r28, 0x0
+/* 803705CC 4182000C */ beq- lbl_803705d8
+/* 803705D0 38000000 */ li r0, 0x0
+/* 803705D4 48000008 */ b lbl_803705dc
+lbl_803705d8:
+/* 803705D8 38000001 */ li r0, 0x1
+lbl_803705dc:
+/* 803705DC 2C000000 */ cmpwi r0, 0x0
+/* 803705E0 4182FF9C */ beq+ lbl_8037057c
+/* 803705E4 2C1A0001 */ cmpwi r26, 0x1
+/* 803705E8 40820038 */ bne- lbl_80370620
+/* 803705EC 2C1E0000 */ cmpwi r30, 0x0
+/* 803705F0 41820030 */ beq- lbl_80370620
+/* 803705F4 48000829 */ bl func_80370e1c
+/* 803705F8 88030013 */ lbz r0, 0x13(r3)
+/* 803705FC 60000040 */ ori r0, r0, 0x40
+/* 80370600 98030013 */ stb r0, 0x13(r3)
+/* 80370604 38600001 */ li r3, 0x1
+/* 80370608 48000BD5 */ bl func_803711dc
+/* 8037060C 48000004 */ b lbl_80370610
+lbl_80370610:
+/* 80370610 48000004 */ b lbl_80370614
+lbl_80370614:
+/* 80370614 48000C11 */ bl func_80371224
+/* 80370618 2C030000 */ cmpwi r3, 0x0
+/* 8037061C 4182FFF8 */ beq+ lbl_80370614
+lbl_80370620:
+/* 80370620 4BFFE4B5 */ bl func_8036ead4
+/* 80370624 838DCA70 */ lwz r28, lbl_805c6890@sda21(0)
+/* 80370628 3B600000 */ li r27, 0x0
+/* 8037062C 48000004 */ b lbl_80370630
+lbl_80370630:
+/* 80370630 48000004 */ b lbl_80370634
+lbl_80370634:
+/* 80370634 48000024 */ b lbl_80370658
+lbl_80370638:
+/* 80370638 38600001 */ li r3, 0x1
+/* 8037063C 819C0000 */ lwz r12, 0(r28)
+/* 80370640 7D8803A6 */ mtlr r12
+/* 80370644 4E800021 */ blrl
+/* 80370648 7C600034 */ cntlzw r0, r3
+/* 8037064C 839C0008 */ lwz r28, 8(r28)
+/* 80370650 5400D97E */ srwi r0, r0, 5
+/* 80370654 7F7B0378 */ or r27, r27, r0
+lbl_80370658:
+/* 80370658 281C0000 */ cmplwi r28, 0
+/* 8037065C 4082FFDC */ bne+ lbl_80370638
+/* 80370660 48000BC5 */ bl func_80371224
+/* 80370664 4BFFD4D5 */ bl func_8036db38
+/* 80370668 2C1A0001 */ cmpwi r26, 0x1
+/* 8037066C 40820028 */ bne- lbl_80370694
+/* 80370670 4BFFE465 */ bl func_8036ead4
+/* 80370674 3C60CC00 */ lis r3, 0xcc00
+/* 80370678 38632000 */ addi r3, r3, 0x2000
+/* 8037067C 38000000 */ li r0, 0x0
+/* 80370680 B0030002 */ sth r0, 2(r3)
+/* 80370684 4BFFD38D */ bl func_8036da10
+/* 80370688 57A31838 */ slwi r3, r29, 3
+/* 8037068C 4BFFFDF9 */ bl func_80370484
+/* 80370690 48000060 */ b lbl_803706f0
+lbl_80370694:
+/* 80370694 2C1A0000 */ cmpwi r26, 0x0
+/* 80370698 40820058 */ bne- lbl_803706f0
+/* 8037069C 3C608000 */ lis r3, 0x8000
+/* 803706A0 806300DC */ lwz r3, 0xdc(r3)
+/* 803706A4 48000004 */ b lbl_803706a8
+lbl_803706a8:
+/* 803706A8 48000004 */ b lbl_803706ac
+lbl_803706ac:
+/* 803706AC 4800002C */ b lbl_803706d8
+lbl_803706b0:
+/* 803706B0 A00302C8 */ lhz r0, 0x2c8(r3)
+/* 803706B4 836302FC */ lwz r27, 0x2fc(r3)
+/* 803706B8 2C000004 */ cmpwi r0, 0x4
+/* 803706BC 41820014 */ beq- lbl_803706d0
+/* 803706C0 40800014 */ bge- lbl_803706d4
+/* 803706C4 2C000001 */ cmpwi r0, 0x1
+/* 803706C8 41820008 */ beq- lbl_803706d0
+/* 803706CC 48000008 */ b lbl_803706d4
+lbl_803706d0:
+/* 803706D0 48001889 */ bl func_80371f58
+lbl_803706d4:
+/* 803706D4 7F63DB78 */ mr r3, r27
+lbl_803706d8:
+/* 803706D8 28030000 */ cmplwi r3, 0
+/* 803706DC 4082FFD4 */ bne+ lbl_803706b0
+/* 803706E0 48001115 */ bl func_803717f4
+/* 803706E4 7FA3EB78 */ mr r3, r29
+/* 803706E8 7FC4F378 */ mr r4, r30
+/* 803706EC 4BFFFB55 */ bl func_80370240
+lbl_803706f0:
+/* 803706F0 3C608000 */ lis r3, 0x8000
+/* 803706F4 806300DC */ lwz r3, 0xdc(r3)
+/* 803706F8 48000004 */ b lbl_803706fc
+lbl_803706fc:
+/* 803706FC 48000004 */ b lbl_80370700
+lbl_80370700:
+/* 80370700 4800002C */ b lbl_8037072c
+lbl_80370704:
+/* 80370704 A00302C8 */ lhz r0, 0x2c8(r3)
+/* 80370708 836302FC */ lwz r27, 0x2fc(r3)
+/* 8037070C 2C000004 */ cmpwi r0, 0x4
+/* 80370710 41820014 */ beq- lbl_80370724
+/* 80370714 40800014 */ bge- lbl_80370728
+/* 80370718 2C000001 */ cmpwi r0, 0x1
+/* 8037071C 41820008 */ beq- lbl_80370724
+/* 80370720 48000008 */ b lbl_80370728
+lbl_80370724:
+/* 80370724 48001835 */ bl func_80371f58
+lbl_80370728:
+/* 80370728 7F63DB78 */ mr r3, r27
+lbl_8037072c:
+/* 8037072C 28030000 */ cmplwi r3, 0
+/* 80370730 4082FFD4 */ bne+ lbl_80370704
+/* 80370734 3FA08000 */ lis r29, 0x8000
+/* 80370738 387D0040 */ addi r3, r29, 0x40
+/* 8037073C 38800000 */ li r4, 0x0
+/* 80370740 38A0008C */ li r5, 0x8c
+/* 80370744 4BC9DBF1 */ bl func_8000e334
+/* 80370748 387D00D4 */ addi r3, r29, 0xd4
+/* 8037074C 38800000 */ li r4, 0x0
+/* 80370750 38A00014 */ li r5, 0x14
+/* 80370754 4BC9DBE1 */ bl func_8000e334
+/* 80370758 387D00F4 */ addi r3, r29, 0xf4
+/* 8037075C 38800000 */ li r4, 0x0
+/* 80370760 38A00004 */ li r5, 0x4
+/* 80370764 4BC9DBD1 */ bl func_8000e334
+/* 80370768 387D3000 */ addi r3, r29, 0x3000
+/* 8037076C 38800000 */ li r4, 0x0
+/* 80370770 38A000C0 */ li r5, 0xc0
+/* 80370774 4BC9DBC1 */ bl func_8000e334
+/* 80370778 387D30C8 */ addi r3, r29, 0x30c8
+/* 8037077C 38800000 */ li r4, 0x0
+/* 80370780 38A0000C */ li r5, 0xc
+/* 80370784 4BC9DBB1 */ bl func_8000e334
+/* 80370788 387D30E2 */ addi r3, r29, 0x30e2
+/* 8037078C 38800000 */ li r4, 0x0
+/* 80370790 38A00001 */ li r5, 0x1
+/* 80370794 4BC9DBA1 */ bl func_8000e334
+/* 80370798 7FE3FB78 */ mr r3, r31
+/* 8037079C 4800A891 */ bl func_8037b02c
+/* 803707A0 BB410028 */ lmw r26, 0x28(r1)
+/* 803707A4 80010044 */ lwz r0, 0x44(r1)
+/* 803707A8 38210040 */ addi r1, r1, 0x40
+/* 803707AC 7C0803A6 */ mtlr r0
+/* 803707B0 4E800020 */ blr
+.size func_8037053c, . - func_8037053c
+
+
+.global func_803707b4
+.type func_803707b4, @function
+func_803707b4:
+/* 803707B4 3C608000 */ lis r3, 0x8000
+/* 803707B8 880330E2 */ lbz r0, 0x30e2(r3)
+/* 803707BC 28000000 */ cmplwi r0, 0
+/* 803707C0 4182000C */ beq- lbl_803707cc
+/* 803707C4 3C608000 */ lis r3, 0x8000
+/* 803707C8 48000018 */ b lbl_803707e0
+lbl_803707cc:
+/* 803707CC 3C60CC00 */ lis r3, 0xcc00
+/* 803707D0 38633000 */ addi r3, r3, 0x3000
+/* 803707D4 80030024 */ lwz r0, 0x24(r3)
+/* 803707D8 54000038 */ rlwinm r0, r0, 0, 0, 0x1c
+/* 803707DC 5403E8FE */ srwi r3, r0, 3
+lbl_803707e0:
+/* 803707E0 4E800020 */ blr
+.size func_803707b4, . - func_803707b4
+
diff --git a/asm/Dolphin/os/OSResetSW.s b/asm/Dolphin/os/OSResetSW.s
new file mode 100644
index 0000000..33dd3ce
--- /dev/null
+++ b/asm/Dolphin/os/OSResetSW.s
@@ -0,0 +1,258 @@
+.include "macros.inc"
+
+.section .text
+
+.global func_803707e4
+.type func_803707e4, @function
+func_803707e4:
+/* 803707E4 7C0802A6 */ mflr r0
+/* 803707E8 90010004 */ stw r0, 4(r1)
+/* 803707EC 9421FFD8 */ stwu r1, -0x28(r1)
+/* 803707F0 93E10024 */ stw r31, 0x24(r1)
+/* 803707F4 93C10020 */ stw r30, 0x20(r1)
+/* 803707F8 93A1001C */ stw r29, 0x1c(r1)
+/* 803707FC 48001FE9 */ bl func_803727e4
+/* 80370800 3CA08000 */ lis r5, 0x8000
+/* 80370804 908DCA94 */ stw r4, lbl_805c68b4@sda21(0)
+/* 80370808 800500F8 */ lwz r0, 0xf8(r5)
+/* 8037080C 3C80431C */ lis r4, 0x431c
+/* 80370810 3884DE83 */ addi r4, r4, -0x217d
+/* 80370814 906DCA90 */ stw r3, lbl_805c68b0@sda21(0)
+/* 80370818 5400F0BE */ srwi r0, r0, 2
+/* 8037081C 7C040016 */ mulhwu r0, r4, r0
+/* 80370820 54008BFE */ srwi r0, r0, 0xf
+/* 80370824 1C000064 */ mulli r0, r0, 0x64
+/* 80370828 541DE8FE */ srwi r29, r0, 3
+/* 8037082C 3BC00000 */ li r30, 0x0
+/* 80370830 3FE0CC00 */ lis r31, 0xcc00
+lbl_80370834:
+/* 80370834 48001FB1 */ bl func_803727e4
+/* 80370838 80CDCA94 */ lwz r6, lbl_805c68b4@sda21(0)
+/* 8037083C 6FC58000 */ xoris r5, r30, 0x8000
+/* 80370840 800DCA90 */ lwz r0, lbl_805c68b0@sda21(0)
+/* 80370844 7C862010 */ subfc r4, r6, r4
+/* 80370848 7C001910 */ subfe r0, r0, r3
+/* 8037084C 6C038000 */ xoris r3, r0, 0x8000
+/* 80370850 7C1D2010 */ subfc r0, r29, r4
+/* 80370854 7CA51910 */ subfe r5, r5, r3
+/* 80370858 7CA31910 */ subfe r5, r3, r3
+/* 8037085C 7CA500D1 */ neg. r5, r5
+/* 80370860 41820010 */ beq- lbl_80370870
+/* 80370864 801F3000 */ lwz r0, 0x3000(r31)
+/* 80370868 540003DF */ rlwinm. r0, r0, 0, 0xf, 0xf
+/* 8037086C 4182FFC8 */ beq+ lbl_80370834
+lbl_80370870:
+/* 80370870 3C60CC00 */ lis r3, 0xcc00
+/* 80370874 80033000 */ lwz r0, 0x3000(r3)
+/* 80370878 540003DF */ rlwinm. r0, r0, 0, 0xf, 0xf
+/* 8037087C 40820034 */ bne- lbl_803708b0
+/* 80370880 38000001 */ li r0, 0x1
+/* 80370884 900DCA7C */ stw r0, lbl_805c689c@sda21(0)
+/* 80370888 38600200 */ li r3, 0x200
+/* 8037088C 900DCA80 */ stw r0, lbl_805c68a0@sda21(0)
+/* 80370890 4BFFE60D */ bl func_8036ee9c
+/* 80370894 818DCA78 */ lwz r12, lbl_805c6898@sda21(0)
+/* 80370898 280C0000 */ cmplwi r12, 0
+/* 8037089C 41820014 */ beq- lbl_803708b0
+/* 803708A0 38000000 */ li r0, 0x0
+/* 803708A4 7D8803A6 */ mtlr r12
+/* 803708A8 900DCA78 */ stw r0, lbl_805c6898@sda21(0)
+/* 803708AC 4E800021 */ blrl
+lbl_803708b0:
+/* 803708B0 38000002 */ li r0, 0x2
+/* 803708B4 3C60CC00 */ lis r3, 0xcc00
+/* 803708B8 90033000 */ stw r0, 0x3000(r3)
+/* 803708BC 8001002C */ lwz r0, 0x2c(r1)
+/* 803708C0 83E10024 */ lwz r31, 0x24(r1)
+/* 803708C4 83C10020 */ lwz r30, 0x20(r1)
+/* 803708C8 83A1001C */ lwz r29, 0x1c(r1)
+/* 803708CC 38210028 */ addi r1, r1, 0x28
+/* 803708D0 7C0803A6 */ mtlr r0
+/* 803708D4 4E800020 */ blr
+.size func_803707e4, . - func_803707e4
+
+
+.global func_803708d8
+.type func_803708d8, @function
+func_803708d8:
+/* 803708D8 7C0802A6 */ mflr r0
+/* 803708DC 90010004 */ stw r0, 4(r1)
+/* 803708E0 9421FFE8 */ stwu r1, -0x18(r1)
+/* 803708E4 93E10014 */ stw r31, 0x14(r1)
+/* 803708E8 93C10010 */ stw r30, 0x10(r1)
+/* 803708EC 93A1000C */ stw r29, 0xc(r1)
+/* 803708F0 4BFFE1E5 */ bl func_8036ead4
+/* 803708F4 7C7E1B78 */ mr r30, r3
+/* 803708F8 48001EED */ bl func_803727e4
+/* 803708FC 3CA0CC00 */ lis r5, 0xcc00
+/* 80370900 80053000 */ lwz r0, 0x3000(r5)
+/* 80370904 540003DF */ rlwinm. r0, r0, 0, 0xf, 0xf
+/* 80370908 408200DC */ bne- lbl_803709e4
+/* 8037090C 800DCA7C */ lwz r0, lbl_805c689c@sda21(0)
+/* 80370910 2C000000 */ cmpwi r0, 0x0
+/* 80370914 40820040 */ bne- lbl_80370954
+/* 80370918 800DCA88 */ lwz r0, lbl_805c68a8@sda21(0)
+/* 8037091C 38C00000 */ li r6, 0x0
+/* 80370920 80ADCA8C */ lwz r5, lbl_805c68ac@sda21(0)
+/* 80370924 38E00001 */ li r7, 0x1
+/* 80370928 7C003278 */ xor r0, r0, r6
+/* 8037092C 7CA53278 */ xor r5, r5, r6
+/* 80370930 90EDCA7C */ stw r7, lbl_805c689c@sda21(0)
+/* 80370934 7CA00379 */ or. r0, r5, r0
+/* 80370938 41820008 */ beq- lbl_80370940
+/* 8037093C 48000008 */ b lbl_80370944
+lbl_80370940:
+/* 80370940 7CC73378 */ mr r7, r6
+lbl_80370944:
+/* 80370944 908DCA94 */ stw r4, lbl_805c68b4@sda21(0)
+/* 80370948 7CFD3B78 */ mr r29, r7
+/* 8037094C 906DCA90 */ stw r3, lbl_805c68b0@sda21(0)
+/* 80370950 48000148 */ b lbl_80370a98
+lbl_80370954:
+/* 80370954 800DCA88 */ lwz r0, lbl_805c68a8@sda21(0)
+/* 80370958 39200000 */ li r9, 0x0
+/* 8037095C 80ADCA8C */ lwz r5, lbl_805c68ac@sda21(0)
+/* 80370960 39400001 */ li r10, 0x1
+/* 80370964 7C004A78 */ xor r0, r0, r9
+/* 80370968 7CA54A78 */ xor r5, r5, r9
+/* 8037096C 7CA00379 */ or. r0, r5, r0
+/* 80370970 40820058 */ bne- lbl_803709c8
+/* 80370974 3CC08000 */ lis r6, 0x8000
+/* 80370978 80ADCA94 */ lwz r5, lbl_805c68b4@sda21(0)
+/* 8037097C 80E600F8 */ lwz r7, 0xf8(r6)
+/* 80370980 3CC0431C */ lis r6, 0x431c
+/* 80370984 3906DE83 */ addi r8, r6, -0x217d
+/* 80370988 800DCA90 */ lwz r0, lbl_805c68b0@sda21(0)
+/* 8037098C 54E6F0BE */ srwi r6, r7, 2
+/* 80370990 7CC83016 */ mulhwu r6, r8, r6
+/* 80370994 54C68BFE */ srwi r6, r6, 0xf
+/* 80370998 1CC60064 */ mulli r6, r6, 0x64
+/* 8037099C 7CE52010 */ subfc r7, r5, r4
+/* 803709A0 7C001910 */ subfe r0, r0, r3
+/* 803709A4 54C8E8FE */ srwi r8, r6, 3
+/* 803709A8 6C058000 */ xoris r5, r0, 0x8000
+/* 803709AC 6D268000 */ xoris r6, r9, 0x8000
+/* 803709B0 7C074010 */ subfc r0, r7, r8
+/* 803709B4 7CA53110 */ subfe r5, r5, r6
+/* 803709B8 7CA63110 */ subfe r5, r6, r6
+/* 803709BC 7CA500D1 */ neg. r5, r5
+/* 803709C0 40820008 */ bne- lbl_803709c8
+/* 803709C4 7D2A4B78 */ mr r10, r9
+lbl_803709c8:
+/* 803709C8 2C0A0000 */ cmpwi r10, 0x0
+/* 803709CC 4182000C */ beq- lbl_803709d8
+/* 803709D0 38000001 */ li r0, 0x1
+/* 803709D4 48000008 */ b lbl_803709dc
+lbl_803709d8:
+/* 803709D8 38000000 */ li r0, 0x0
+lbl_803709dc:
+/* 803709DC 7C1D0378 */ mr r29, r0
+/* 803709E0 480000B8 */ b lbl_80370a98
+lbl_803709e4:
+/* 803709E4 800DCA7C */ lwz r0, lbl_805c689c@sda21(0)
+/* 803709E8 2C000000 */ cmpwi r0, 0x0
+/* 803709EC 41820034 */ beq- lbl_80370a20
+/* 803709F0 80ADCA80 */ lwz r5, lbl_805c68a0@sda21(0)
+/* 803709F4 38000000 */ li r0, 0x0
+/* 803709F8 900DCA7C */ stw r0, lbl_805c689c@sda21(0)
+/* 803709FC 2C050000 */ cmpwi r5, 0x0
+/* 80370A00 3BA50000 */ addi r29, r5, 0x0
+/* 80370A04 41820010 */ beq- lbl_80370a14
+/* 80370A08 908DCA8C */ stw r4, lbl_805c68ac@sda21(0)
+/* 80370A0C 906DCA88 */ stw r3, lbl_805c68a8@sda21(0)
+/* 80370A10 48000088 */ b lbl_80370a98
+lbl_80370a14:
+/* 80370A14 900DCA8C */ stw r0, lbl_805c68ac@sda21(0)
+/* 80370A18 900DCA88 */ stw r0, lbl_805c68a8@sda21(0)
+/* 80370A1C 4800007C */ b lbl_80370a98
+lbl_80370a20:
+/* 80370A20 80CDCA88 */ lwz r6, lbl_805c68a8@sda21(0)
+/* 80370A24 39000000 */ li r8, 0x0
+/* 80370A28 80EDCA8C */ lwz r7, lbl_805c68ac@sda21(0)
+/* 80370A2C 7CC04278 */ xor r0, r6, r8
+/* 80370A30 7CE54278 */ xor r5, r7, r8
+/* 80370A34 7CA00379 */ or. r0, r5, r0
+/* 80370A38 41820050 */ beq- lbl_80370a88
+/* 80370A3C 3CA08000 */ lis r5, 0x8000
+/* 80370A40 800500F8 */ lwz r0, 0xf8(r5)
+/* 80370A44 3CA01062 */ lis r5, 0x1062
+/* 80370A48 38A54DD3 */ addi r5, r5, 0x4dd3
+/* 80370A4C 5400F0BE */ srwi r0, r0, 2
+/* 80370A50 7C050016 */ mulhwu r0, r5, r0
+/* 80370A54 5400D1BE */ srwi r0, r0, 6
+/* 80370A58 1C000028 */ mulli r0, r0, 0x28
+/* 80370A5C 7CE72010 */ subfc r7, r7, r4
+/* 80370A60 7CA61910 */ subfe r5, r6, r3
+/* 80370A64 6CA68000 */ xoris r6, r5, 0x8000
+/* 80370A68 6D058000 */ xoris r5, r8, 0x8000
+/* 80370A6C 7C003810 */ subfc r0, r0, r7
+/* 80370A70 7CA53110 */ subfe r5, r5, r6
+/* 80370A74 7CA63110 */ subfe r5, r6, r6
+/* 80370A78 7CA500D1 */ neg. r5, r5
+/* 80370A7C 4182000C */ beq- lbl_80370a88
+/* 80370A80 3BA00001 */ li r29, 0x1
+/* 80370A84 48000014 */ b lbl_80370a98
+lbl_80370a88:
+/* 80370A88 38000000 */ li r0, 0x0
+/* 80370A8C 900DCA8C */ stw r0, lbl_805c68ac@sda21(0)
+/* 80370A90 3BA00000 */ li r29, 0x0
+/* 80370A94 900DCA88 */ stw r0, lbl_805c68a8@sda21(0)
+lbl_80370a98:
+/* 80370A98 3CA08000 */ lis r5, 0x8000
+/* 80370A9C 93ADCA80 */ stw r29, lbl_805c68a0@sda21(0)
+/* 80370AA0 880530E3 */ lbz r0, 0x30e3(r5)
+/* 80370AA4 540006BF */ clrlwi. r0, r0, 0x1a
+/* 80370AA8 418200A0 */ beq- lbl_80370b48
+/* 80370AAC 1D40003C */ mulli r10, r0, 0x3c
+/* 80370AB0 800500F8 */ lwz r0, 0xf8(r5)
+/* 80370AB4 812DCA24 */ lwz r9, lbl_805c6844@sda21(0)
+/* 80370AB8 810DCA20 */ lwz r8, lbl_805c6840@sda21(0)
+/* 80370ABC 5406F0BE */ srwi r6, r0, 2
+/* 80370AC0 7D40FE70 */ srawi r0, r10, 0x1f
+/* 80370AC4 7CE031D6 */ mullw r7, r0, r6
+/* 80370AC8 7C0A3016 */ mulhwu r0, r10, r6
+/* 80370ACC 7CAA31D6 */ mullw r5, r10, r6
+/* 80370AD0 7D292814 */ addc r9, r9, r5
+/* 80370AD4 3BE00000 */ li r31, 0x0
+/* 80370AD8 7CE70214 */ add r7, r7, r0
+/* 80370ADC 7C0AF9D6 */ mullw r0, r10, r31
+/* 80370AE0 7C070214 */ add r0, r7, r0
+/* 80370AE4 7D080114 */ adde r8, r8, r0
+/* 80370AE8 6D078000 */ xoris r7, r8, 0x8000
+/* 80370AEC 6C658000 */ xoris r5, r3, 0x8000
+/* 80370AF0 7C044810 */ subfc r0, r4, r9
+/* 80370AF4 7CA53910 */ subfe r5, r5, r7
+/* 80370AF8 7CA73910 */ subfe r5, r7, r7
+/* 80370AFC 7CA500D1 */ neg. r5, r5
+/* 80370B00 41820048 */ beq- lbl_80370b48
+/* 80370B04 7C892010 */ subfc r4, r9, r4
+/* 80370B08 7C681910 */ subfe r3, r8, r3
+/* 80370B0C 38A00000 */ li r5, 0x0
+/* 80370B10 48022AA1 */ bl func_803935b0
+/* 80370B14 38A00000 */ li r5, 0x0
+/* 80370B18 38C00002 */ li r6, 0x2
+/* 80370B1C 48022A95 */ bl func_803935b0
+/* 80370B20 38000001 */ li r0, 0x1
+/* 80370B24 7C840038 */ and r4, r4, r0
+/* 80370B28 7C60F838 */ and r0, r3, r31
+/* 80370B2C 7C83FA78 */ xor r3, r4, r31
+/* 80370B30 7C00FA78 */ xor r0, r0, r31
+/* 80370B34 7C600379 */ or. r0, r3, r0
+/* 80370B38 4082000C */ bne- lbl_80370b44
+/* 80370B3C 3BA00001 */ li r29, 0x1
+/* 80370B40 48000008 */ b lbl_80370b48
+lbl_80370b44:
+/* 80370B44 3BA00000 */ li r29, 0x0
+lbl_80370b48:
+/* 80370B48 7FC3F378 */ mr r3, r30
+/* 80370B4C 4BFFDFB1 */ bl func_8036eafc
+/* 80370B50 7FA3EB78 */ mr r3, r29
+/* 80370B54 8001001C */ lwz r0, 0x1c(r1)
+/* 80370B58 83E10014 */ lwz r31, 0x14(r1)
+/* 80370B5C 83C10010 */ lwz r30, 0x10(r1)
+/* 80370B60 83A1000C */ lwz r29, 0xc(r1)
+/* 80370B64 38210018 */ addi r1, r1, 0x18
+/* 80370B68 7C0803A6 */ mtlr r0
+/* 80370B6C 4E800020 */ blr
+.size func_803708d8, . - func_803708d8
+
diff --git a/asm/Dolphin/os/OSRtc.s b/asm/Dolphin/os/OSRtc.s
new file mode 100644
index 0000000..f355f2d
--- /dev/null
+++ b/asm/Dolphin/os/OSRtc.s
@@ -0,0 +1,785 @@
+.include "macros.inc"
+
+.section .text
+
+.global func_80370b70
+.type func_80370b70, @function
+func_80370b70:
+/* 80370B70 7C0802A6 */ mflr r0
+/* 80370B74 3C608054 */ lis r3, lbl_8053eca0@ha
+/* 80370B78 90010004 */ stw r0, 4(r1)
+/* 80370B7C 9421FFE8 */ stwu r1, -0x18(r1)
+/* 80370B80 93E10014 */ stw r31, 0x14(r1)
+/* 80370B84 3BE3ECA0 */ addi r31, r3, lbl_8053eca0@l
+/* 80370B88 93C10010 */ stw r30, 0x10(r1)
+/* 80370B8C 3BDF0040 */ addi r30, r31, 0x40
+/* 80370B90 809F0040 */ lwz r4, 0x40(r31)
+/* 80370B94 7C7F2214 */ add r3, r31, r4
+/* 80370B98 20A40040 */ subfic r5, r4, 0x40
+/* 80370B9C 48000035 */ bl func_80370bd0
+/* 80370BA0 907F004C */ stw r3, 0x4c(r31)
+/* 80370BA4 801F004C */ lwz r0, 0x4c(r31)
+/* 80370BA8 2C000000 */ cmpwi r0, 0x0
+/* 80370BAC 4182000C */ beq- lbl_80370bb8
+/* 80370BB0 38000040 */ li r0, 0x40
+/* 80370BB4 901E0000 */ stw r0, 0(r30)
+lbl_80370bb8:
+/* 80370BB8 8001001C */ lwz r0, 0x1c(r1)
+/* 80370BBC 83E10014 */ lwz r31, 0x14(r1)
+/* 80370BC0 83C10010 */ lwz r30, 0x10(r1)
+/* 80370BC4 38210018 */ addi r1, r1, 0x18
+/* 80370BC8 7C0803A6 */ mtlr r0
+/* 80370BCC 4E800020 */ blr
+.size func_80370b70, . - func_80370b70
+
+
+.global func_80370bd0
+.type func_80370bd0, @function
+func_80370bd0:
+/* 80370BD0 7C0802A6 */ mflr r0
+/* 80370BD4 3CC08037 */ lis r6, func_80370b70@ha
+/* 80370BD8 90010004 */ stw r0, 4(r1)
+/* 80370BDC 38060B70 */ addi r0, r6, func_80370b70@l
+/* 80370BE0 9421FFD8 */ stwu r1, -0x28(r1)
+/* 80370BE4 93E10024 */ stw r31, 0x24(r1)
+/* 80370BE8 3BE40000 */ addi r31, r4, 0x0
+/* 80370BEC 38800001 */ li r4, 0x1
+/* 80370BF0 93C10020 */ stw r30, 0x20(r1)
+/* 80370BF4 3BC50000 */ addi r30, r5, 0x0
+/* 80370BF8 7C050378 */ mr r5, r0
+/* 80370BFC 93A1001C */ stw r29, 0x1c(r1)
+/* 80370C00 3BA30000 */ addi r29, r3, 0x0
+/* 80370C04 38600000 */ li r3, 0x0
+/* 80370C08 480BBB75 */ bl func_8042c77c
+/* 80370C0C 2C030000 */ cmpwi r3, 0x0
+/* 80370C10 4082000C */ bne- lbl_80370c1c
+/* 80370C14 38600000 */ li r3, 0x0
+/* 80370C18 480000B4 */ b lbl_80370ccc
+lbl_80370c1c:
+/* 80370C1C 38600000 */ li r3, 0x0
+/* 80370C20 38800001 */ li r4, 0x1
+/* 80370C24 38A00003 */ li r5, 0x3
+/* 80370C28 480BB455 */ bl func_8042c07c
+/* 80370C2C 2C030000 */ cmpwi r3, 0x0
+/* 80370C30 40820014 */ bne- lbl_80370c44
+/* 80370C34 38600000 */ li r3, 0x0
+/* 80370C38 480BBC39 */ bl func_8042c870
+/* 80370C3C 38600000 */ li r3, 0x0
+/* 80370C40 4800008C */ b lbl_80370ccc
+lbl_80370c44:
+/* 80370C44 57FF3032 */ slwi r31, r31, 6
+/* 80370C48 381F0100 */ addi r0, r31, 0x100
+/* 80370C4C 6400A000 */ oris r0, r0, 0xa000
+/* 80370C50 90010014 */ stw r0, 0x14(r1)
+/* 80370C54 38810014 */ addi r4, r1, 0x14
+/* 80370C58 38600000 */ li r3, 0x0
+/* 80370C5C 38A00004 */ li r5, 0x4
+/* 80370C60 38C00001 */ li r6, 0x1
+/* 80370C64 38E00000 */ li r7, 0x0
+/* 80370C68 480BA8C1 */ bl func_8042b528
+/* 80370C6C 7C600034 */ cntlzw r0, r3
+/* 80370C70 541FD97E */ srwi r31, r0, 5
+/* 80370C74 38600000 */ li r3, 0x0
+/* 80370C78 480BAC99 */ bl func_8042b910
+/* 80370C7C 7C600034 */ cntlzw r0, r3
+/* 80370C80 5400D97E */ srwi r0, r0, 5
+/* 80370C84 389D0000 */ addi r4, r29, 0x0
+/* 80370C88 38BE0000 */ addi r5, r30, 0x0
+/* 80370C8C 7FFF0378 */ or r31, r31, r0
+/* 80370C90 38600000 */ li r3, 0x0
+/* 80370C94 38C00001 */ li r6, 0x1
+/* 80370C98 480BAAED */ bl func_8042b784
+/* 80370C9C 7C600034 */ cntlzw r0, r3
+/* 80370CA0 5400D97E */ srwi r0, r0, 5
+/* 80370CA4 7FFF0378 */ or r31, r31, r0
+/* 80370CA8 38600000 */ li r3, 0x0
+/* 80370CAC 480BB4FD */ bl func_8042c1a8
+/* 80370CB0 7C600034 */ cntlzw r0, r3
+/* 80370CB4 5400D97E */ srwi r0, r0, 5
+/* 80370CB8 7FFF0378 */ or r31, r31, r0
+/* 80370CBC 38600000 */ li r3, 0x0
+/* 80370CC0 480BBBB1 */ bl func_8042c870
+/* 80370CC4 7FE00034 */ cntlzw r0, r31
+/* 80370CC8 5403D97E */ srwi r3, r0, 5
+lbl_80370ccc:
+/* 80370CCC 8001002C */ lwz r0, 0x2c(r1)
+/* 80370CD0 83E10024 */ lwz r31, 0x24(r1)
+/* 80370CD4 83C10020 */ lwz r30, 0x20(r1)
+/* 80370CD8 83A1001C */ lwz r29, 0x1c(r1)
+/* 80370CDC 38210028 */ addi r1, r1, 0x28
+/* 80370CE0 7C0803A6 */ mtlr r0
+/* 80370CE4 4E800020 */ blr
+.size func_80370bd0, . - func_80370bd0
+
+
+.global func_80370ce8
+.type func_80370ce8, @function
+func_80370ce8:
+/* 80370CE8 7C0802A6 */ mflr r0
+/* 80370CEC 3C608054 */ lis r3, lbl_8053eca0@ha
+/* 80370CF0 90010004 */ stw r0, 4(r1)
+/* 80370CF4 38800040 */ li r4, 0x40
+/* 80370CF8 9421FFE8 */ stwu r1, -0x18(r1)
+/* 80370CFC 93E10014 */ stw r31, 0x14(r1)
+/* 80370D00 3BE00000 */ li r31, 0x0
+/* 80370D04 93C10010 */ stw r30, 0x10(r1)
+/* 80370D08 3BC3ECA0 */ addi r30, r3, lbl_8053eca0@l
+/* 80370D0C 387E0000 */ addi r3, r30, 0x0
+/* 80370D10 93FE0044 */ stw r31, 0x44(r30)
+/* 80370D14 93FE0048 */ stw r31, 0x48(r30)
+/* 80370D18 4BFFCBC9 */ bl func_8036d8e0
+/* 80370D1C 38600000 */ li r3, 0x0
+/* 80370D20 38800001 */ li r4, 0x1
+/* 80370D24 38A00000 */ li r5, 0x0
+/* 80370D28 480BBA55 */ bl func_8042c77c
+/* 80370D2C 2C030000 */ cmpwi r3, 0x0
+/* 80370D30 40820008 */ bne- lbl_80370d38
+/* 80370D34 480000C4 */ b lbl_80370df8
+lbl_80370d38:
+/* 80370D38 38600000 */ li r3, 0x0
+/* 80370D3C 38800001 */ li r4, 0x1
+/* 80370D40 38A00003 */ li r5, 0x3
+/* 80370D44 480BB339 */ bl func_8042c07c
+/* 80370D48 2C030000 */ cmpwi r3, 0x0
+/* 80370D4C 40820010 */ bne- lbl_80370d5c
+/* 80370D50 38600000 */ li r3, 0x0
+/* 80370D54 480BBB1D */ bl func_8042c870
+/* 80370D58 480000A0 */ b lbl_80370df8
+lbl_80370d5c:
+/* 80370D5C 3C602000 */ lis r3, 0x2000
+/* 80370D60 38030100 */ addi r0, r3, 0x100
+/* 80370D64 90010008 */ stw r0, 8(r1)
+/* 80370D68 38810008 */ addi r4, r1, 0x8
+/* 80370D6C 38600000 */ li r3, 0x0
+/* 80370D70 38A00004 */ li r5, 0x4
+/* 80370D74 38C00001 */ li r6, 0x1
+/* 80370D78 38E00000 */ li r7, 0x0
+/* 80370D7C 480BA7AD */ bl func_8042b528
+/* 80370D80 7C600034 */ cntlzw r0, r3
+/* 80370D84 541FD97E */ srwi r31, r0, 5
+/* 80370D88 38600000 */ li r3, 0x0
+/* 80370D8C 480BAB85 */ bl func_8042b910
+/* 80370D90 7C600034 */ cntlzw r0, r3
+/* 80370D94 5400D97E */ srwi r0, r0, 5
+/* 80370D98 389E0000 */ addi r4, r30, 0x0
+/* 80370D9C 7FFF0378 */ or r31, r31, r0
+/* 80370DA0 38600000 */ li r3, 0x0
+/* 80370DA4 38A00040 */ li r5, 0x40
+/* 80370DA8 38C00000 */ li r6, 0x0
+/* 80370DAC 38E00000 */ li r7, 0x0
+/* 80370DB0 480BAA75 */ bl func_8042b824
+/* 80370DB4 7C600034 */ cntlzw r0, r3
+/* 80370DB8 5400D97E */ srwi r0, r0, 5
+/* 80370DBC 7FFF0378 */ or r31, r31, r0
+/* 80370DC0 38600000 */ li r3, 0x0
+/* 80370DC4 480BAB4D */ bl func_8042b910
+/* 80370DC8 7C600034 */ cntlzw r0, r3
+/* 80370DCC 5400D97E */ srwi r0, r0, 5
+/* 80370DD0 7FFF0378 */ or r31, r31, r0
+/* 80370DD4 38600000 */ li r3, 0x0
+/* 80370DD8 480BB3D1 */ bl func_8042c1a8
+/* 80370DDC 7C600034 */ cntlzw r0, r3
+/* 80370DE0 5400D97E */ srwi r0, r0, 5
+/* 80370DE4 7FFF0378 */ or r31, r31, r0
+/* 80370DE8 38600000 */ li r3, 0x0
+/* 80370DEC 480BBA85 */ bl func_8042c870
+/* 80370DF0 7FE00034 */ cntlzw r0, r31
+/* 80370DF4 541FD97E */ srwi r31, r0, 5
+lbl_80370df8:
+/* 80370DF8 93FE004C */ stw r31, 0x4c(r30)
+/* 80370DFC 38000040 */ li r0, 0x40
+/* 80370E00 901E0040 */ stw r0, 0x40(r30)
+/* 80370E04 8001001C */ lwz r0, 0x1c(r1)
+/* 80370E08 83E10014 */ lwz r31, 0x14(r1)
+/* 80370E0C 83C10010 */ lwz r30, 0x10(r1)
+/* 80370E10 38210018 */ addi r1, r1, 0x18
+/* 80370E14 7C0803A6 */ mtlr r0
+/* 80370E18 4E800020 */ blr
+.size func_80370ce8, . - func_80370ce8
+
+
+.global func_80370e1c
+.type func_80370e1c, @function
+func_80370e1c:
+/* 80370E1C 7C0802A6 */ mflr r0
+/* 80370E20 3C608054 */ lis r3, lbl_8053eca0@ha
+/* 80370E24 90010004 */ stw r0, 4(r1)
+/* 80370E28 9421FFF0 */ stwu r1, -0x10(r1)
+/* 80370E2C 93E1000C */ stw r31, 0xc(r1)
+/* 80370E30 3BE3ECA0 */ addi r31, r3, lbl_8053eca0@l
+/* 80370E34 4BFFDCA1 */ bl func_8036ead4
+/* 80370E38 801F0048 */ lwz r0, 0x48(r31)
+/* 80370E3C 389F0048 */ addi r4, r31, 0x48
+/* 80370E40 2C000000 */ cmpwi r0, 0x0
+/* 80370E44 41820010 */ beq- lbl_80370e54
+/* 80370E48 4BFFDCB5 */ bl func_8036eafc
+/* 80370E4C 3BE00000 */ li r31, 0x0
+/* 80370E50 48000010 */ b lbl_80370e60
+lbl_80370e54:
+/* 80370E54 907F0044 */ stw r3, 0x44(r31)
+/* 80370E58 38000001 */ li r0, 0x1
+/* 80370E5C 90040000 */ stw r0, 0(r4)
+lbl_80370e60:
+/* 80370E60 7FE3FB78 */ mr r3, r31
+/* 80370E64 80010014 */ lwz r0, 0x14(r1)
+/* 80370E68 83E1000C */ lwz r31, 0xc(r1)
+/* 80370E6C 38210010 */ addi r1, r1, 0x10
+/* 80370E70 7C0803A6 */ mtlr r0
+/* 80370E74 4E800020 */ blr
+.size func_80370e1c, . - func_80370e1c
+
+
+.global func_80370e78
+.type func_80370e78, @function
+func_80370e78:
+/* 80370E78 7C0802A6 */ mflr r0
+/* 80370E7C 3C608054 */ lis r3, lbl_8053eca0@ha
+/* 80370E80 90010004 */ stw r0, 4(r1)
+/* 80370E84 9421FFF0 */ stwu r1, -0x10(r1)
+/* 80370E88 93E1000C */ stw r31, 0xc(r1)
+/* 80370E8C 3BE3ECA0 */ addi r31, r3, lbl_8053eca0@l
+/* 80370E90 4BFFDC45 */ bl func_8036ead4
+/* 80370E94 801F0048 */ lwz r0, 0x48(r31)
+/* 80370E98 389F0048 */ addi r4, r31, 0x48
+/* 80370E9C 2C000000 */ cmpwi r0, 0x0
+/* 80370EA0 41820010 */ beq- lbl_80370eb0
+/* 80370EA4 4BFFDC59 */ bl func_8036eafc
+/* 80370EA8 38600000 */ li r3, 0x0
+/* 80370EAC 48000014 */ b lbl_80370ec0
+lbl_80370eb0:
+/* 80370EB0 907F0044 */ stw r3, 0x44(r31)
+/* 80370EB4 38000001 */ li r0, 0x1
+/* 80370EB8 387F0014 */ addi r3, r31, 0x14
+/* 80370EBC 90040000 */ stw r0, 0(r4)
+lbl_80370ec0:
+/* 80370EC0 80010014 */ lwz r0, 0x14(r1)
+/* 80370EC4 83E1000C */ lwz r31, 0xc(r1)
+/* 80370EC8 38210010 */ addi r1, r1, 0x10
+/* 80370ECC 7C0803A6 */ mtlr r0
+/* 80370ED0 4E800020 */ blr
+.size func_80370e78, . - func_80370e78
+
+
+.global func_80370ed4
+.type func_80370ed4, @function
+func_80370ed4:
+/* 80370ED4 7C0802A6 */ mflr r0
+/* 80370ED8 2C030000 */ cmpwi r3, 0x0
+/* 80370EDC 90010004 */ stw r0, 4(r1)
+/* 80370EE0 3C608054 */ lis r3, lbl_8053eca0@ha
+/* 80370EE4 9421FFD0 */ stwu r1, -0x30(r1)
+/* 80370EE8 BF61001C */ stmw r27, 0x1c(r1)
+/* 80370EEC 3BE3ECA0 */ addi r31, r3, lbl_8053eca0@l
+/* 80370EF0 418202C4 */ beq- lbl_803711b4
+/* 80370EF4 28040000 */ cmplwi r4, 0
+/* 80370EF8 408201B0 */ bne- lbl_803710a8
+/* 80370EFC 887F0013 */ lbz r3, 0x13(r31)
+/* 80370F00 546007BE */ clrlwi r0, r3, 0x1e
+/* 80370F04 28000002 */ cmplwi r0, 2
+/* 80370F08 4081000C */ ble- lbl_80370f14
+/* 80370F0C 5460003A */ rlwinm r0, r3, 0, 0, 0x1d
+/* 80370F10 981F0013 */ stb r0, 0x13(r31)
+lbl_80370f14:
+/* 80370F14 38000000 */ li r0, 0x0
+/* 80370F18 B01F0002 */ sth r0, 2(r31)
+/* 80370F1C 38BF0014 */ addi r5, r31, 0x14
+/* 80370F20 38DF000C */ addi r6, r31, 0xc
+/* 80370F24 38650001 */ addi r3, r5, 0x1
+/* 80370F28 B01F0000 */ sth r0, 0(r31)
+/* 80370F2C 7C661850 */ subf r3, r6, r3
+/* 80370F30 7C062840 */ cmplw r6, r5
+/* 80370F34 5463F87E */ srwi r3, r3, 1
+/* 80370F38 40800170 */ bge- lbl_803710a8
+/* 80370F3C 5460E8FF */ rlwinm. r0, r3, 0x1d, 3, 0x1f
+/* 80370F40 7C0903A6 */ mtctr r0
+/* 80370F44 41820134 */ beq- lbl_80371078
+lbl_80370f48:
+/* 80370F48 A0BF0000 */ lhz r5, 0(r31)
+/* 80370F4C A0060000 */ lhz r0, 0(r6)
+/* 80370F50 7C050214 */ add r0, r5, r0
+/* 80370F54 B01F0000 */ sth r0, 0(r31)
+/* 80370F58 A0060000 */ lhz r0, 0(r6)
+/* 80370F5C A0BF0002 */ lhz r5, 2(r31)
+/* 80370F60 7C0000F8 */ nor r0, r0, r0
+/* 80370F64 7C050214 */ add r0, r5, r0
+/* 80370F68 B01F0002 */ sth r0, 2(r31)
+/* 80370F6C A0BF0000 */ lhz r5, 0(r31)
+/* 80370F70 A0060002 */ lhz r0, 2(r6)
+/* 80370F74 7C050214 */ add r0, r5, r0
+/* 80370F78 B01F0000 */ sth r0, 0(r31)
+/* 80370F7C A0060002 */ lhz r0, 2(r6)
+/* 80370F80 A0BF0002 */ lhz r5, 2(r31)
+/* 80370F84 7C0000F8 */ nor r0, r0, r0
+/* 80370F88 7C050214 */ add r0, r5, r0
+/* 80370F8C B01F0002 */ sth r0, 2(r31)
+/* 80370F90 A0BF0000 */ lhz r5, 0(r31)
+/* 80370F94 A0060004 */ lhz r0, 4(r6)
+/* 80370F98 7C050214 */ add r0, r5, r0
+/* 80370F9C B01F0000 */ sth r0, 0(r31)
+/* 80370FA0 A0060004 */ lhz r0, 4(r6)
+/* 80370FA4 A0BF0002 */ lhz r5, 2(r31)
+/* 80370FA8 7C0000F8 */ nor r0, r0, r0
+/* 80370FAC 7C050214 */ add r0, r5, r0
+/* 80370FB0 B01F0002 */ sth r0, 2(r31)
+/* 80370FB4 A0BF0000 */ lhz r5, 0(r31)
+/* 80370FB8 A0060006 */ lhz r0, 6(r6)
+/* 80370FBC 7C050214 */ add r0, r5, r0
+/* 80370FC0 B01F0000 */ sth r0, 0(r31)
+/* 80370FC4 A0060006 */ lhz r0, 6(r6)
+/* 80370FC8 A0BF0002 */ lhz r5, 2(r31)
+/* 80370FCC 7C0000F8 */ nor r0, r0, r0
+/* 80370FD0 7C050214 */ add r0, r5, r0
+/* 80370FD4 B01F0002 */ sth r0, 2(r31)
+/* 80370FD8 A0BF0000 */ lhz r5, 0(r31)
+/* 80370FDC A0060008 */ lhz r0, 8(r6)
+/* 80370FE0 7C050214 */ add r0, r5, r0
+/* 80370FE4 B01F0000 */ sth r0, 0(r31)
+/* 80370FE8 A0060008 */ lhz r0, 8(r6)
+/* 80370FEC A0BF0002 */ lhz r5, 2(r31)
+/* 80370FF0 7C0000F8 */ nor r0, r0, r0
+/* 80370FF4 7C050214 */ add r0, r5, r0
+/* 80370FF8 B01F0002 */ sth r0, 2(r31)
+/* 80370FFC A0BF0000 */ lhz r5, 0(r31)
+/* 80371000 A006000A */ lhz r0, 0xa(r6)
+/* 80371004 7C050214 */ add r0, r5, r0
+/* 80371008 B01F0000 */ sth r0, 0(r31)
+/* 8037100C A006000A */ lhz r0, 0xa(r6)
+/* 80371010 A0BF0002 */ lhz r5, 2(r31)
+/* 80371014 7C0000F8 */ nor r0, r0, r0
+/* 80371018 7C050214 */ add r0, r5, r0
+/* 8037101C B01F0002 */ sth r0, 2(r31)
+/* 80371020 A0BF0000 */ lhz r5, 0(r31)
+/* 80371024 A006000C */ lhz r0, 0xc(r6)
+/* 80371028 7C050214 */ add r0, r5, r0
+/* 8037102C B01F0000 */ sth r0, 0(r31)
+/* 80371030 A006000C */ lhz r0, 0xc(r6)
+/* 80371034 A0BF0002 */ lhz r5, 2(r31)
+/* 80371038 7C0000F8 */ nor r0, r0, r0
+/* 8037103C 7C050214 */ add r0, r5, r0
+/* 80371040 B01F0002 */ sth r0, 2(r31)
+/* 80371044 A0BF0000 */ lhz r5, 0(r31)
+/* 80371048 A006000E */ lhz r0, 0xe(r6)
+/* 8037104C 7C050214 */ add r0, r5, r0
+/* 80371050 B01F0000 */ sth r0, 0(r31)
+/* 80371054 A006000E */ lhz r0, 0xe(r6)
+/* 80371058 38C60010 */ addi r6, r6, 0x10
+/* 8037105C A0BF0002 */ lhz r5, 2(r31)
+/* 80371060 7C0000F8 */ nor r0, r0, r0
+/* 80371064 7C050214 */ add r0, r5, r0
+/* 80371068 B01F0002 */ sth r0, 2(r31)
+/* 8037106C 4200FEDC */ bdnz lbl_80370f48
+/* 80371070 70630007 */ andi. r3, r3, 7
+/* 80371074 41820034 */ beq- lbl_803710a8
+lbl_80371078:
+/* 80371078 7C6903A6 */ mtctr r3
+lbl_8037107c:
+/* 8037107C A0BF0000 */ lhz r5, 0(r31)
+/* 80371080 A0060000 */ lhz r0, 0(r6)
+/* 80371084 7C050214 */ add r0, r5, r0
+/* 80371088 B01F0000 */ sth r0, 0(r31)
+/* 8037108C A0060000 */ lhz r0, 0(r6)
+/* 80371090 38C60002 */ addi r6, r6, 0x2
+/* 80371094 A0BF0002 */ lhz r5, 2(r31)
+/* 80371098 7C0000F8 */ nor r0, r0, r0
+/* 8037109C 7C050214 */ add r0, r5, r0
+/* 803710A0 B01F0002 */ sth r0, 2(r31)
+/* 803710A4 4200FFD8 */ bdnz lbl_8037107c
+lbl_803710a8:
+/* 803710A8 3BDF0040 */ addi r30, r31, 0x40
+/* 803710AC 801F0040 */ lwz r0, 0x40(r31)
+/* 803710B0 7C040040 */ cmplw r4, r0
+/* 803710B4 40800008 */ bge- lbl_803710bc
+/* 803710B8 909E0000 */ stw r4, 0(r30)
+lbl_803710bc:
+/* 803710BC 83BE0000 */ lwz r29, 0(r30)
+/* 803710C0 3C608037 */ lis r3, func_80370b70@ha
+/* 803710C4 38A30B70 */ addi r5, r3, func_80370b70@l
+/* 803710C8 237D0040 */ subfic r27, r29, 0x40
+/* 803710CC 7F9FEA14 */ add r28, r31, r29
+/* 803710D0 38600000 */ li r3, 0x0
+/* 803710D4 38800001 */ li r4, 0x1
+/* 803710D8 480BB6A5 */ bl func_8042c77c
+/* 803710DC 2C030000 */ cmpwi r3, 0x0
+/* 803710E0 4082000C */ bne- lbl_803710ec
+/* 803710E4 38000000 */ li r0, 0x0
+/* 803710E8 480000B4 */ b lbl_8037119c
+lbl_803710ec:
+/* 803710EC 38600000 */ li r3, 0x0
+/* 803710F0 38800001 */ li r4, 0x1
+/* 803710F4 38A00003 */ li r5, 0x3
+/* 803710F8 480BAF85 */ bl func_8042c07c
+/* 803710FC 2C030000 */ cmpwi r3, 0x0
+/* 80371100 40820014 */ bne- lbl_80371114
+/* 80371104 38600000 */ li r3, 0x0
+/* 80371108 480BB769 */ bl func_8042c870
+/* 8037110C 38000000 */ li r0, 0x0
+/* 80371110 4800008C */ b lbl_8037119c
+lbl_80371114:
+/* 80371114 57A33032 */ slwi r3, r29, 6
+/* 80371118 38030100 */ addi r0, r3, 0x100
+/* 8037111C 6400A000 */ oris r0, r0, 0xa000
+/* 80371120 90010010 */ stw r0, 0x10(r1)
+/* 80371124 38810010 */ addi r4, r1, 0x10
+/* 80371128 38600000 */ li r3, 0x0
+/* 8037112C 38A00004 */ li r5, 0x4
+/* 80371130 38C00001 */ li r6, 0x1
+/* 80371134 38E00000 */ li r7, 0x0
+/* 80371138 480BA3F1 */ bl func_8042b528
+/* 8037113C 7C600034 */ cntlzw r0, r3
+/* 80371140 541DD97E */ srwi r29, r0, 5
+/* 80371144 38600000 */ li r3, 0x0
+/* 80371148 480BA7C9 */ bl func_8042b910
+/* 8037114C 7C600034 */ cntlzw r0, r3
+/* 80371150 5400D97E */ srwi r0, r0, 5
+/* 80371154 389C0000 */ addi r4, r28, 0x0
+/* 80371158 38BB0000 */ addi r5, r27, 0x0
+/* 8037115C 7FBD0378 */ or r29, r29, r0
+/* 80371160 38600000 */ li r3, 0x0
+/* 80371164 38C00001 */ li r6, 0x1
+/* 80371168 480BA61D */ bl func_8042b784
+/* 8037116C 7C600034 */ cntlzw r0, r3
+/* 80371170 5400D97E */ srwi r0, r0, 5
+/* 80371174 7FBD0378 */ or r29, r29, r0
+/* 80371178 38600000 */ li r3, 0x0
+/* 8037117C 480BB02D */ bl func_8042c1a8
+/* 80371180 7C600034 */ cntlzw r0, r3
+/* 80371184 5400D97E */ srwi r0, r0, 5
+/* 80371188 7FBD0378 */ or r29, r29, r0
+/* 8037118C 38600000 */ li r3, 0x0
+/* 80371190 480BB6E1 */ bl func_8042c870
+/* 80371194 7FA00034 */ cntlzw r0, r29
+/* 80371198 5400D97E */ srwi r0, r0, 5
+lbl_8037119c:
+/* 8037119C 901F004C */ stw r0, 0x4c(r31)
+/* 803711A0 801F004C */ lwz r0, 0x4c(r31)
+/* 803711A4 2C000000 */ cmpwi r0, 0x0
+/* 803711A8 4182000C */ beq- lbl_803711b4
+/* 803711AC 38000040 */ li r0, 0x40
+/* 803711B0 901E0000 */ stw r0, 0(r30)
+lbl_803711b4:
+/* 803711B4 38000000 */ li r0, 0x0
+/* 803711B8 901F0048 */ stw r0, 0x48(r31)
+/* 803711BC 807F0044 */ lwz r3, 0x44(r31)
+/* 803711C0 4BFFD93D */ bl func_8036eafc
+/* 803711C4 807F004C */ lwz r3, 0x4c(r31)
+/* 803711C8 BB61001C */ lmw r27, 0x1c(r1)
+/* 803711CC 80010034 */ lwz r0, 0x34(r1)
+/* 803711D0 38210030 */ addi r1, r1, 0x30
+/* 803711D4 7C0803A6 */ mtlr r0
+/* 803711D8 4E800020 */ blr
+.size func_80370ed4, . - func_80370ed4
+
+
+.global func_803711dc
+.type func_803711dc, @function
+func_803711dc:
+/* 803711DC 7C0802A6 */ mflr r0
+/* 803711E0 38800000 */ li r4, 0x0
+/* 803711E4 90010004 */ stw r0, 4(r1)
+/* 803711E8 9421FFF8 */ stwu r1, -8(r1)
+/* 803711EC 4BFFFCE9 */ bl func_80370ed4
+/* 803711F0 8001000C */ lwz r0, 0xc(r1)
+/* 803711F4 38210008 */ addi r1, r1, 0x8
+/* 803711F8 7C0803A6 */ mtlr r0
+/* 803711FC 4E800020 */ blr
+.size func_803711dc, . - func_803711dc
+
+
+.global func_80371200
+.type func_80371200, @function
+func_80371200:
+/* 80371200 7C0802A6 */ mflr r0
+/* 80371204 38800014 */ li r4, 0x14
+/* 80371208 90010004 */ stw r0, 4(r1)
+/* 8037120C 9421FFF8 */ stwu r1, -8(r1)
+/* 80371210 4BFFFCC5 */ bl func_80370ed4
+/* 80371214 8001000C */ lwz r0, 0xc(r1)
+/* 80371218 38210008 */ addi r1, r1, 0x8
+/* 8037121C 7C0803A6 */ mtlr r0
+/* 80371220 4E800020 */ blr
+.size func_80371200, . - func_80371200
+
+
+.global func_80371224
+.type func_80371224, @function
+func_80371224:
+/* 80371224 3C608054 */ lis r3, lbl_8053eca0@ha
+/* 80371228 3863ECA0 */ addi r3, r3, lbl_8053eca0@l
+/* 8037122C 8063004C */ lwz r3, 0x4c(r3)
+/* 80371230 4E800020 */ blr
+.size func_80371224, . - func_80371224
+
+
+.global func_80371234
+.type func_80371234, @function
+func_80371234:
+/* 80371234 7C0802A6 */ mflr r0
+/* 80371238 3C608054 */ lis r3, lbl_8053eca0@ha
+/* 8037123C 90010004 */ stw r0, 4(r1)
+/* 80371240 9421FFE0 */ stwu r1, -0x20(r1)
+/* 80371244 93E1001C */ stw r31, 0x1c(r1)
+/* 80371248 3BE3ECA0 */ addi r31, r3, lbl_8053eca0@l
+/* 8037124C 4BFFD889 */ bl func_8036ead4
+/* 80371250 801F0048 */ lwz r0, 0x48(r31)
+/* 80371254 389F0048 */ addi r4, r31, 0x48
+/* 80371258 2C000000 */ cmpwi r0, 0x0
+/* 8037125C 41820010 */ beq- lbl_8037126c
+/* 80371260 4BFFD89D */ bl func_8036eafc
+/* 80371264 3BE00000 */ li r31, 0x0
+/* 80371268 48000010 */ b lbl_80371278
+lbl_8037126c:
+/* 8037126C 907F0044 */ stw r3, 0x44(r31)
+/* 80371270 38000001 */ li r0, 0x1
+/* 80371274 90040000 */ stw r0, 0(r4)
+lbl_80371278:
+/* 80371278 881F0013 */ lbz r0, 0x13(r31)
+/* 8037127C 5400077B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
+/* 80371280 4182000C */ beq- lbl_8037128c
+/* 80371284 3BE00001 */ li r31, 0x1
+/* 80371288 48000008 */ b lbl_80371290
+lbl_8037128c:
+/* 8037128C 3BE00000 */ li r31, 0x0
+lbl_80371290:
+/* 80371290 38600000 */ li r3, 0x0
+/* 80371294 38800000 */ li r4, 0x0
+/* 80371298 4BFFFC3D */ bl func_80370ed4
+/* 8037129C 7FE3FB78 */ mr r3, r31
+/* 803712A0 80010024 */ lwz r0, 0x24(r1)
+/* 803712A4 83E1001C */ lwz r31, 0x1c(r1)
+/* 803712A8 38210020 */ addi r1, r1, 0x20
+/* 803712AC 7C0803A6 */ mtlr r0
+/* 803712B0 4E800020 */ blr
+.size func_80371234, . - func_80371234
+
+
+.global func_803712b4
+.type func_803712b4, @function
+func_803712b4:
+/* 803712B4 7C0802A6 */ mflr r0
+/* 803712B8 3C808054 */ lis r4, lbl_8053eca0@ha
+/* 803712BC 90010004 */ stw r0, 4(r1)
+/* 803712C0 9421FFE0 */ stwu r1, -0x20(r1)
+/* 803712C4 93E1001C */ stw r31, 0x1c(r1)
+/* 803712C8 3BE4ECA0 */ addi r31, r4, lbl_8053eca0@l
+/* 803712CC 93C10018 */ stw r30, 0x18(r1)
+/* 803712D0 547E177A */ rlwinm r30, r3, 2, 0x1d, 0x1d
+/* 803712D4 4BFFD801 */ bl func_8036ead4
+/* 803712D8 801F0048 */ lwz r0, 0x48(r31)
+/* 803712DC 389F0048 */ addi r4, r31, 0x48
+/* 803712E0 2C000000 */ cmpwi r0, 0x0
+/* 803712E4 41820010 */ beq- lbl_803712f4
+/* 803712E8 4BFFD815 */ bl func_8036eafc
+/* 803712EC 3BE00000 */ li r31, 0x0
+/* 803712F0 48000010 */ b lbl_80371300
+lbl_803712f4:
+/* 803712F4 907F0044 */ stw r3, 0x44(r31)
+/* 803712F8 38000001 */ li r0, 0x1
+/* 803712FC 90040000 */ stw r0, 0(r4)
+lbl_80371300:
+/* 80371300 887F0013 */ lbz r3, 0x13(r31)
+/* 80371304 5460077A */ rlwinm r0, r3, 0, 0x1d, 0x1d
+/* 80371308 7C1E0040 */ cmplw r30, r0
+/* 8037130C 40820014 */ bne- lbl_80371320
+/* 80371310 38600000 */ li r3, 0x0
+/* 80371314 38800000 */ li r4, 0x0
+/* 80371318 4BFFFBBD */ bl func_80370ed4
+/* 8037131C 48000024 */ b lbl_80371340
+lbl_80371320:
+/* 80371320 546007B8 */ rlwinm r0, r3, 0, 0x1e, 0x1c
+/* 80371324 981F0013 */ stb r0, 0x13(r31)
+/* 80371328 38600001 */ li r3, 0x1
+/* 8037132C 38800000 */ li r4, 0x0
+/* 80371330 881F0013 */ lbz r0, 0x13(r31)
+/* 80371334 7C00F378 */ or r0, r0, r30
+/* 80371338 981F0013 */ stb r0, 0x13(r31)
+/* 8037133C 4BFFFB99 */ bl func_80370ed4
+lbl_80371340:
+/* 80371340 80010024 */ lwz r0, 0x24(r1)
+/* 80371344 83E1001C */ lwz r31, 0x1c(r1)
+/* 80371348 83C10018 */ lwz r30, 0x18(r1)
+/* 8037134C 38210020 */ addi r1, r1, 0x20
+/* 80371350 7C0803A6 */ mtlr r0
+/* 80371354 4E800020 */ blr
+.size func_803712b4, . - func_803712b4
+
+
+.global func_80371358
+.type func_80371358, @function
+func_80371358:
+/* 80371358 7C0802A6 */ mflr r0
+/* 8037135C 3C608054 */ lis r3, lbl_8053eca0@ha
+/* 80371360 90010004 */ stw r0, 4(r1)
+/* 80371364 9421FFE8 */ stwu r1, -0x18(r1)
+/* 80371368 93E10014 */ stw r31, 0x14(r1)
+/* 8037136C 3BE3ECA0 */ addi r31, r3, lbl_8053eca0@l
+/* 80371370 4BFFD765 */ bl func_8036ead4
+/* 80371374 801F0048 */ lwz r0, 0x48(r31)
+/* 80371378 389F0048 */ addi r4, r31, 0x48
+/* 8037137C 2C000000 */ cmpwi r0, 0x0
+/* 80371380 41820010 */ beq- lbl_80371390
+/* 80371384 4BFFD779 */ bl func_8036eafc
+/* 80371388 3BE00000 */ li r31, 0x0
+/* 8037138C 48000010 */ b lbl_8037139c
+lbl_80371390:
+/* 80371390 907F0044 */ stw r3, 0x44(r31)
+/* 80371394 38000001 */ li r0, 0x1
+/* 80371398 90040000 */ stw r0, 0(r4)
+lbl_8037139c:
+/* 8037139C 881F0013 */ lbz r0, 0x13(r31)
+/* 803713A0 38600000 */ li r3, 0x0
+/* 803713A4 38800000 */ li r4, 0x0
+/* 803713A8 541FCFFE */ rlwinm r31, r0, 0x19, 0x1f, 0x1f
+/* 803713AC 4BFFFB29 */ bl func_80370ed4
+/* 803713B0 7FE3FB78 */ mr r3, r31
+/* 803713B4 8001001C */ lwz r0, 0x1c(r1)
+/* 803713B8 83E10014 */ lwz r31, 0x14(r1)
+/* 803713BC 38210018 */ addi r1, r1, 0x18
+/* 803713C0 7C0803A6 */ mtlr r0
+/* 803713C4 4E800020 */ blr
+.size func_80371358, . - func_80371358
+
+
+.global func_803713c8
+.type func_803713c8, @function
+func_803713c8:
+/* 803713C8 7C0802A6 */ mflr r0
+/* 803713CC 3C808054 */ lis r4, lbl_8053eca0@ha
+/* 803713D0 90010004 */ stw r0, 4(r1)
+/* 803713D4 9421FFE0 */ stwu r1, -0x20(r1)
+/* 803713D8 93E1001C */ stw r31, 0x1c(r1)
+/* 803713DC 3BE4ECA0 */ addi r31, r4, lbl_8053eca0@l
+/* 803713E0 93C10018 */ stw r30, 0x18(r1)
+/* 803713E4 547E3E30 */ rlwinm r30, r3, 7, 0x18, 0x18
+/* 803713E8 4BFFD6ED */ bl func_8036ead4
+/* 803713EC 801F0048 */ lwz r0, 0x48(r31)
+/* 803713F0 389F0048 */ addi r4, r31, 0x48
+/* 803713F4 2C000000 */ cmpwi r0, 0x0
+/* 803713F8 41820010 */ beq- lbl_80371408
+/* 803713FC 4BFFD701 */ bl func_8036eafc
+/* 80371400 3BE00000 */ li r31, 0x0
+/* 80371404 48000010 */ b lbl_80371414
+lbl_80371408:
+/* 80371408 907F0044 */ stw r3, 0x44(r31)
+/* 8037140C 38000001 */ li r0, 0x1
+/* 80371410 90040000 */ stw r0, 0(r4)
+lbl_80371414:
+/* 80371414 887F0013 */ lbz r3, 0x13(r31)
+/* 80371418 54600630 */ rlwinm r0, r3, 0, 0x18, 0x18
+/* 8037141C 7C1E0040 */ cmplw r30, r0
+/* 80371420 40820014 */ bne- lbl_80371434
+/* 80371424 38600000 */ li r3, 0x0
+/* 80371428 38800000 */ li r4, 0x0
+/* 8037142C 4BFFFAA9 */ bl func_80370ed4
+/* 80371430 48000024 */ b lbl_80371454
+lbl_80371434:
+/* 80371434 5460066E */ rlwinm r0, r3, 0, 0x19, 0x17
+/* 80371438 981F0013 */ stb r0, 0x13(r31)
+/* 8037143C 38600001 */ li r3, 0x1
+/* 80371440 38800000 */ li r4, 0x0
+/* 80371444 881F0013 */ lbz r0, 0x13(r31)
+/* 80371448 7C00F378 */ or r0, r0, r30
+/* 8037144C 981F0013 */ stb r0, 0x13(r31)
+/* 80371450 4BFFFA85 */ bl func_80370ed4
+lbl_80371454:
+/* 80371454 80010024 */ lwz r0, 0x24(r1)
+/* 80371458 83E1001C */ lwz r31, 0x1c(r1)
+/* 8037145C 83C10018 */ lwz r30, 0x18(r1)
+/* 80371460 38210020 */ addi r1, r1, 0x20
+/* 80371464 7C0803A6 */ mtlr r0
+/* 80371468 4E800020 */ blr
+.size func_803713c8, . - func_803713c8
+
+
+.global func_8037146c
+.type func_8037146c, @function
+func_8037146c:
+/* 8037146C 7C0802A6 */ mflr r0
+/* 80371470 3C808054 */ lis r4, lbl_8053eca0@ha
+/* 80371474 90010004 */ stw r0, 4(r1)
+/* 80371478 9421FFE0 */ stwu r1, -0x20(r1)
+/* 8037147C 93E1001C */ stw r31, 0x1c(r1)
+/* 80371480 3BE4ECA0 */ addi r31, r4, lbl_8053eca0@l
+/* 80371484 93C10018 */ stw r30, 0x18(r1)
+/* 80371488 3BC30000 */ addi r30, r3, 0x0
+/* 8037148C 4BFFD649 */ bl func_8036ead4
+/* 80371490 801F0048 */ lwz r0, 0x48(r31)
+/* 80371494 389F0048 */ addi r4, r31, 0x48
+/* 80371498 2C000000 */ cmpwi r0, 0x0
+/* 8037149C 41820010 */ beq- lbl_803714ac
+/* 803714A0 4BFFD65D */ bl func_8036eafc
+/* 803714A4 38600000 */ li r3, 0x0
+/* 803714A8 48000014 */ b lbl_803714bc
+lbl_803714ac:
+/* 803714AC 907F0044 */ stw r3, 0x44(r31)
+/* 803714B0 38000001 */ li r0, 0x1
+/* 803714B4 387F0014 */ addi r3, r31, 0x14
+/* 803714B8 90040000 */ stw r0, 0(r4)
+lbl_803714bc:
+/* 803714BC 57C0083C */ slwi r0, r30, 1
+/* 803714C0 7C630214 */ add r3, r3, r0
+/* 803714C4 A3E3001C */ lhz r31, 0x1c(r3)
+/* 803714C8 38600000 */ li r3, 0x0
+/* 803714CC 38800014 */ li r4, 0x14
+/* 803714D0 4BFFFA05 */ bl func_80370ed4
+/* 803714D4 7FE3FB78 */ mr r3, r31
+/* 803714D8 80010024 */ lwz r0, 0x24(r1)
+/* 803714DC 83E1001C */ lwz r31, 0x1c(r1)
+/* 803714E0 83C10018 */ lwz r30, 0x18(r1)
+/* 803714E4 38210020 */ addi r1, r1, 0x20
+/* 803714E8 7C0803A6 */ mtlr r0
+/* 803714EC 4E800020 */ blr
+.size func_8037146c, . - func_8037146c
+
+
+.global func_803714f0
+.type func_803714f0, @function
+func_803714f0:
+/* 803714F0 7C0802A6 */ mflr r0
+/* 803714F4 3CA08054 */ lis r5, lbl_8053eca0@ha
+/* 803714F8 90010004 */ stw r0, 4(r1)
+/* 803714FC 9421FFD8 */ stwu r1, -0x28(r1)
+/* 80371500 93E10024 */ stw r31, 0x24(r1)
+/* 80371504 3BE5ECA0 */ addi r31, r5, lbl_8053eca0@l
+/* 80371508 93C10020 */ stw r30, 0x20(r1)
+/* 8037150C 3BC40000 */ addi r30, r4, 0x0
+/* 80371510 93A1001C */ stw r29, 0x1c(r1)
+/* 80371514 3BA30000 */ addi r29, r3, 0x0
+/* 80371518 4BFFD5BD */ bl func_8036ead4
+/* 8037151C 801F0048 */ lwz r0, 0x48(r31)
+/* 80371520 389F0048 */ addi r4, r31, 0x48
+/* 80371524 2C000000 */ cmpwi r0, 0x0
+/* 80371528 41820010 */ beq- lbl_80371538
+/* 8037152C 4BFFD5D1 */ bl func_8036eafc
+/* 80371530 38600000 */ li r3, 0x0
+/* 80371534 48000014 */ b lbl_80371548
+lbl_80371538:
+/* 80371538 907F0044 */ stw r3, 0x44(r31)
+/* 8037153C 38000001 */ li r0, 0x1
+/* 80371540 387F0014 */ addi r3, r31, 0x14
+/* 80371544 90040000 */ stw r0, 0(r4)
+lbl_80371548:
+/* 80371548 57A0083C */ slwi r0, r29, 1
+/* 8037154C 7C830214 */ add r4, r3, r0
+/* 80371550 A464001C */ lhzu r3, 0x1c(r4)
+/* 80371554 57C0043E */ clrlwi r0, r30, 0x10
+/* 80371558 7C030040 */ cmplw r3, r0
+/* 8037155C 41820018 */ beq- lbl_80371574
+/* 80371560 B3C40000 */ sth r30, 0(r4)
+/* 80371564 38600001 */ li r3, 0x1
+/* 80371568 38800014 */ li r4, 0x14
+/* 8037156C 4BFFF969 */ bl func_80370ed4
+/* 80371570 48000010 */ b lbl_80371580
+lbl_80371574:
+/* 80371574 38600000 */ li r3, 0x0
+/* 80371578 38800014 */ li r4, 0x14
+/* 8037157C 4BFFF959 */ bl func_80370ed4
+lbl_80371580:
+/* 80371580 8001002C */ lwz r0, 0x2c(r1)
+/* 80371584 83E10024 */ lwz r31, 0x24(r1)
+/* 80371588 83C10020 */ lwz r30, 0x20(r1)
+/* 8037158C 83A1001C */ lwz r29, 0x1c(r1)
+/* 80371590 38210028 */ addi r1, r1, 0x28
+/* 80371594 7C0803A6 */ mtlr r0
+/* 80371598 4E800020 */ blr
+.size func_803714f0, . - func_803714f0
+
diff --git a/asm/Dolphin/os/OSSync.s b/asm/Dolphin/os/OSSync.s
new file mode 100644
index 0000000..f284b42
--- /dev/null
+++ b/asm/Dolphin/os/OSSync.s
@@ -0,0 +1,54 @@
+.include "macros.inc"
+
+.section .text
+
+.global func_8037159c
+.type func_8037159c, @function
+func_8037159c:
+/* 8037159C 7D30FAA6 */ mfspr r9, 0x3f0
+/* 803715A0 612A0008 */ ori r10, r9, 8
+/* 803715A4 7D50FBA6 */ mtspr 0x3f0, r10
+/* 803715A8 4C00012C */ isync
+/* 803715AC 7C0004AC */ sync 0
+/* 803715B0 7D30FBA6 */ mtspr 0x3f0, r9
+/* 803715B4 4C000064 */ rfi
+.size func_8037159c, . - func_8037159c
+
+
+.global func_803715b8
+.type func_803715b8, @function
+func_803715b8:
+/* 803715B8 60000000 */ nop
+.size func_803715b8, . - func_803715b8
+
+
+.global func_803715bc
+.type func_803715bc, @function
+func_803715bc:
+/* 803715BC 7C0802A6 */ mflr r0
+/* 803715C0 90010004 */ stw r0, 4(r1)
+/* 803715C4 9421FFF0 */ stwu r1, -0x10(r1)
+/* 803715C8 93E1000C */ stw r31, 0xc(r1)
+/* 803715CC 3CA08000 */ lis r5, 0x8000
+/* 803715D0 3C808037 */ lis r4, func_8037159c@ha
+/* 803715D4 3C608037 */ lis r3, func_803715b8@ha
+/* 803715D8 3BE50C00 */ addi r31, r5, 0xc00
+/* 803715DC 380315B8 */ addi r0, r3, func_803715b8@l
+/* 803715E0 3884159C */ addi r4, r4, func_8037159c@l
+/* 803715E4 7FE3FB78 */ mr r3, r31
+/* 803715E8 7CA40050 */ subf r5, r4, r0
+/* 803715EC 4BC9CE31 */ bl func_8000e41c
+/* 803715F0 7FE3FB78 */ mr r3, r31
+/* 803715F4 38800100 */ li r4, 0x100
+/* 803715F8 4BFFC381 */ bl func_8036d978
+/* 803715FC 7C0004AC */ sync 0
+/* 80371600 7FE3FB78 */ mr r3, r31
+/* 80371604 38800100 */ li r4, 0x100
+/* 80371608 4BFFC3D1 */ bl func_8036d9d8
+/* 8037160C 80010014 */ lwz r0, 0x14(r1)
+/* 80371610 83E1000C */ lwz r31, 0xc(r1)
+/* 80371614 38210010 */ addi r1, r1, 0x10
+/* 80371618 7C0803A6 */ mtlr r0
+/* 8037161C 4E800020 */ blr
+.size func_803715bc, . - func_803715bc
+
diff --git a/asm/Dolphin/os/OSThread.s b/asm/Dolphin/os/OSThread.s
new file mode 100644
index 0000000..2880583
--- /dev/null
+++ b/asm/Dolphin/os/OSThread.s
@@ -0,0 +1,1413 @@
+.include "macros.inc"
+
+.section .text
+
+.global func_80371620
+.type func_80371620, @function
+func_80371620:
+/* 80371620 7C0802A6 */ mflr r0
+/* 80371624 3C608054 */ lis r3, lbl_8053ecf8@ha
+/* 80371628 90010004 */ stw r0, 4(r1)
+/* 8037162C 38000002 */ li r0, 0x2
+/* 80371630 38800010 */ li r4, 0x10
+/* 80371634 9421FFE0 */ stwu r1, -0x20(r1)
+/* 80371638 BF410008 */ stmw r26, 8(r1)
+/* 8037163C 3B83ECF8 */ addi r28, r3, lbl_8053ecf8@l
+/* 80371640 3BFC0410 */ addi r31, r28, 0x410
+/* 80371644 3BA00000 */ li r29, 0x0
+/* 80371648 387F02E8 */ addi r3, r31, 0x2e8
+/* 8037164C B01C06D8 */ sth r0, 0x6d8(r28)
+/* 80371650 38000001 */ li r0, 0x1
+/* 80371654 B01C06DA */ sth r0, 0x6da(r28)
+/* 80371658 3800FFFF */ li r0, -0x1
+/* 8037165C 909C06E4 */ stw r4, 0x6e4(r28)
+/* 80371660 909C06E0 */ stw r4, 0x6e0(r28)
+/* 80371664 93BC06DC */ stw r29, 0x6dc(r28)
+/* 80371668 901C06E8 */ stw r0, 0x6e8(r28)
+/* 8037166C 93BC0700 */ stw r29, 0x700(r28)
+/* 80371670 480000D9 */ bl func_80371748
+/* 80371674 93BC0708 */ stw r29, 0x708(r28)
+/* 80371678 3FC08000 */ lis r30, 0x8000
+/* 8037167C 387F0000 */ addi r3, r31, 0x0
+/* 80371680 93BC0704 */ stw r29, 0x704(r28)
+/* 80371684 93FE00D8 */ stw r31, 0xd8(r30)
+/* 80371688 4BFFCBD9 */ bl func_8036e260
+/* 8037168C 7FE3FB78 */ mr r3, r31
+/* 80371690 4BFFCA09 */ bl func_8036e098
+/* 80371694 3C60805E */ lis r3, 0x805e
+/* 80371698 380309C8 */ addi r0, r3, 0x9c8
+/* 8037169C 3C60805D */ lis r3, 0x805d
+/* 803716A0 901C0714 */ stw r0, 0x714(r28)
+/* 803716A4 380309C4 */ addi r0, r3, 0x9c4
+/* 803716A8 387C0718 */ addi r3, r28, 0x718
+/* 803716AC 901C0718 */ stw r0, 0x718(r28)
+/* 803716B0 3C80DEAE */ lis r4, 0xdeae
+/* 803716B4 3B400000 */ li r26, 0x0
+/* 803716B8 80630000 */ lwz r3, 0(r3)
+/* 803716BC 3884BABE */ addi r4, r4, -0x4542
+/* 803716C0 57401838 */ slwi r0, r26, 3
+/* 803716C4 90830000 */ stw r4, 0(r3)
+/* 803716C8 7F7C0214 */ add r27, r28, r0
+/* 803716CC 93ADCA98 */ stw r29, lbl_805c68b8@sda21(0)
+/* 803716D0 93FE00E4 */ stw r31, 0xe4(r30)
+/* 803716D4 93ADCA9C */ stw r29, lbl_805c68bc@sda21(0)
+lbl_803716d8:
+/* 803716D8 7F63DB78 */ mr r3, r27
+/* 803716DC 4800006D */ bl func_80371748
+/* 803716E0 3B5A0001 */ addi r26, r26, 0x1
+/* 803716E4 2C1A001F */ cmpwi r26, 0x1f
+/* 803716E8 3B7B0008 */ addi r27, r27, 0x8
+/* 803716EC 4081FFEC */ ble+ lbl_803716d8
+/* 803716F0 3FC08000 */ lis r30, 0x8000
+/* 803716F4 387E00DC */ addi r3, r30, 0xdc
+/* 803716F8 48000051 */ bl func_80371748
+/* 803716FC 389E00DC */ addi r4, r30, 0xdc
+/* 80371700 84640004 */ lwzu r3, 4(r4)
+/* 80371704 28030000 */ cmplwi r3, 0
+/* 80371708 4082000C */ bne- lbl_80371714
+/* 8037170C 93FE00DC */ stw r31, 0xdc(r30)
+/* 80371710 48000008 */ b lbl_80371718
+lbl_80371714:
+/* 80371714 93E302FC */ stw r31, 0x2fc(r3)
+lbl_80371718:
+/* 80371718 907F0300 */ stw r3, 0x300(r31)
+/* 8037171C 3BC00000 */ li r30, 0x0
+/* 80371720 387C0720 */ addi r3, r28, 0x720
+/* 80371724 93DF02FC */ stw r30, 0x2fc(r31)
+/* 80371728 93E40000 */ stw r31, 0(r4)
+/* 8037172C 4BFFCB35 */ bl func_8036e260
+/* 80371730 93CDCAA0 */ stw r30, lbl_805c68c0@sda21(0)
+/* 80371734 BB410008 */ lmw r26, 8(r1)
+/* 80371738 80010024 */ lwz r0, 0x24(r1)
+/* 8037173C 38210020 */ addi r1, r1, 0x20
+/* 80371740 7C0803A6 */ mtlr r0
+/* 80371744 4E800020 */ blr
+.size func_80371620, . - func_80371620
+
+
+.global func_80371748
+.type func_80371748, @function
+func_80371748:
+/* 80371748 38000000 */ li r0, 0x0
+/* 8037174C 90030004 */ stw r0, 4(r3)
+/* 80371750 90030000 */ stw r0, 0(r3)
+/* 80371754 4E800020 */ blr
+.size func_80371748, . - func_80371748
+
+
+.global func_80371758
+.type func_80371758, @function
+func_80371758:
+/* 80371758 3C608000 */ lis r3, 0x8000
+/* 8037175C 806300E4 */ lwz r3, 0xe4(r3)
+/* 80371760 4E800020 */ blr
+.size func_80371758, . - func_80371758
+
+
+.global func_80371764
+.type func_80371764, @function
+func_80371764:
+/* 80371764 800302CC */ lwz r0, 0x2cc(r3)
+/* 80371768 2C000000 */ cmpwi r0, 0x0
+/* 8037176C 4081000C */ ble- lbl_80371778
+/* 80371770 38600001 */ li r3, 0x1
+/* 80371774 4E800020 */ blr
+lbl_80371778:
+/* 80371778 38600000 */ li r3, 0x0
+/* 8037177C 4E800020 */ blr
+.size func_80371764, . - func_80371764
+
+
+.global func_80371780
+.type func_80371780, @function
+func_80371780:
+/* 80371780 A06302C8 */ lhz r3, 0x2c8(r3)
+/* 80371784 38000001 */ li r0, 0x1
+/* 80371788 28030008 */ cmplwi r3, 8
+/* 8037178C 41820010 */ beq- lbl_8037179c
+/* 80371790 28030000 */ cmplwi r3, 0
+/* 80371794 41820008 */ beq- lbl_8037179c
+/* 80371798 38000000 */ li r0, 0x0
+lbl_8037179c:
+/* 8037179C 2C000000 */ cmpwi r0, 0x0
+/* 803717A0 4182000C */ beq- lbl_803717ac
+/* 803717A4 38600001 */ li r3, 0x1
+/* 803717A8 4E800020 */ blr
+lbl_803717ac:
+/* 803717AC 38600000 */ li r3, 0x0
+/* 803717B0 4E800020 */ blr
+.size func_80371780, . - func_80371780
+
+
+.global func_803717b4
+.type func_803717b4, @function
+func_803717b4:
+/* 803717B4 7C0802A6 */ mflr r0
+/* 803717B8 90010004 */ stw r0, 4(r1)
+/* 803717BC 9421FFF0 */ stwu r1, -0x10(r1)
+/* 803717C0 93E1000C */ stw r31, 0xc(r1)
+/* 803717C4 4BFFD311 */ bl func_8036ead4
+/* 803717C8 808DCAA0 */ lwz r4, lbl_805c68c0@sda21(0)
+/* 803717CC 38040001 */ addi r0, r4, 0x1
+/* 803717D0 900DCAA0 */ stw r0, lbl_805c68c0@sda21(0)
+/* 803717D4 7C9F2378 */ mr r31, r4
+/* 803717D8 4BFFD325 */ bl func_8036eafc
+/* 803717DC 7FE3FB78 */ mr r3, r31
+/* 803717E0 80010014 */ lwz r0, 0x14(r1)
+/* 803717E4 83E1000C */ lwz r31, 0xc(r1)
+/* 803717E8 38210010 */ addi r1, r1, 0x10
+/* 803717EC 7C0803A6 */ mtlr r0
+/* 803717F0 4E800020 */ blr
+.size func_803717b4, . - func_803717b4
+
+
+.global func_803717f4
+.type func_803717f4, @function
+func_803717f4:
+/* 803717F4 7C0802A6 */ mflr r0
+/* 803717F8 90010004 */ stw r0, 4(r1)
+/* 803717FC 9421FFF0 */ stwu r1, -0x10(r1)
+/* 80371800 93E1000C */ stw r31, 0xc(r1)
+/* 80371804 4BFFD2D1 */ bl func_8036ead4
+/* 80371808 808DCAA0 */ lwz r4, lbl_805c68c0@sda21(0)
+/* 8037180C 3804FFFF */ addi r0, r4, -0x1
+/* 80371810 900DCAA0 */ stw r0, lbl_805c68c0@sda21(0)
+/* 80371814 7C9F2378 */ mr r31, r4
+/* 80371818 4BFFD2E5 */ bl func_8036eafc
+/* 8037181C 7FE3FB78 */ mr r3, r31
+/* 80371820 80010014 */ lwz r0, 0x14(r1)
+/* 80371824 83E1000C */ lwz r31, 0xc(r1)
+/* 80371828 38210010 */ addi r1, r1, 0x10
+/* 8037182C 7C0803A6 */ mtlr r0
+/* 80371830 4E800020 */ blr
+.size func_803717f4, . - func_803717f4
+
+
+.global func_80371834
+.type func_80371834, @function
+func_80371834:
+/* 80371834 808302E0 */ lwz r4, 0x2e0(r3)
+/* 80371838 80A302DC */ lwz r5, 0x2dc(r3)
+/* 8037183C 28040000 */ cmplwi r4, 0
+/* 80371840 80C302E4 */ lwz r6, 0x2e4(r3)
+/* 80371844 4082000C */ bne- lbl_80371850
+/* 80371848 90C50004 */ stw r6, 4(r5)
+/* 8037184C 48000008 */ b lbl_80371854
+lbl_80371850:
+/* 80371850 90C402E4 */ stw r6, 0x2e4(r4)
+lbl_80371854:
+/* 80371854 28060000 */ cmplwi r6, 0
+/* 80371858 4082000C */ bne- lbl_80371864
+/* 8037185C 90850000 */ stw r4, 0(r5)
+/* 80371860 48000008 */ b lbl_80371868
+lbl_80371864:
+/* 80371864 908602E0 */ stw r4, 0x2e0(r6)
+lbl_80371868:
+/* 80371868 80050000 */ lwz r0, 0(r5)
+/* 8037186C 28000000 */ cmplwi r0, 0
+/* 80371870 40820020 */ bne- lbl_80371890
+/* 80371874 800302D0 */ lwz r0, 0x2d0(r3)
+/* 80371878 38800001 */ li r4, 0x1
+/* 8037187C 80ADCA98 */ lwz r5, lbl_805c68b8@sda21(0)
+/* 80371880 2000001F */ subfic r0, r0, 0x1f
+/* 80371884 7C800030 */ slw r0, r4, r0
+/* 80371888 7CA00078 */ andc r0, r5, r0
+/* 8037188C 900DCA98 */ stw r0, lbl_805c68b8@sda21(0)
+lbl_80371890:
+/* 80371890 38000000 */ li r0, 0x0
+/* 80371894 900302DC */ stw r0, 0x2dc(r3)
+/* 80371898 4E800020 */ blr
+.size func_80371834, . - func_80371834
+
+
+.global func_8037189c
+.type func_8037189c, @function
+func_8037189c:
+/* 8037189C 808302D4 */ lwz r4, 0x2d4(r3)
+/* 803718A0 80A302F4 */ lwz r5, 0x2f4(r3)
+/* 803718A4 48000024 */ b lbl_803718c8
+lbl_803718a8:
+/* 803718A8 80650000 */ lwz r3, 0(r5)
+/* 803718AC 28030000 */ cmplwi r3, 0
+/* 803718B0 41820014 */ beq- lbl_803718c4
+/* 803718B4 800302D0 */ lwz r0, 0x2d0(r3)
+/* 803718B8 7C002000 */ cmpw r0, r4
+/* 803718BC 40800008 */ bge- lbl_803718c4
+/* 803718C0 7C040378 */ mr r4, r0
+lbl_803718c4:
+/* 803718C4 80A50010 */ lwz r5, 0x10(r5)
+lbl_803718c8:
+/* 803718C8 28050000 */ cmplwi r5, 0
+/* 803718CC 4082FFDC */ bne+ lbl_803718a8
+/* 803718D0 7C832378 */ mr r3, r4
+/* 803718D4 4E800020 */ blr
+.size func_8037189c, . - func_8037189c
+
+
+.global func_803718d8
+.type func_803718d8, @function
+func_803718d8:
+/* 803718D8 7C0802A6 */ mflr r0
+/* 803718DC 90010004 */ stw r0, 4(r1)
+/* 803718E0 9421FFE8 */ stwu r1, -0x18(r1)
+/* 803718E4 93E10014 */ stw r31, 0x14(r1)
+/* 803718E8 7C7F1B78 */ mr r31, r3
+/* 803718EC 93C10010 */ stw r30, 0x10(r1)
+/* 803718F0 3BC40000 */ addi r30, r4, 0x0
+/* 803718F4 A00302C8 */ lhz r0, 0x2c8(r3)
+/* 803718F8 2C000003 */ cmpwi r0, 0x3
+/* 803718FC 41820180 */ beq- lbl_80371a7c
+/* 80371900 40800014 */ bge- lbl_80371914
+/* 80371904 2C000001 */ cmpwi r0, 0x1
+/* 80371908 41820018 */ beq- lbl_80371920
+/* 8037190C 40800164 */ bge- lbl_80371a70
+/* 80371910 4800016C */ b lbl_80371a7c
+lbl_80371914:
+/* 80371914 2C000005 */ cmpwi r0, 0x5
+/* 80371918 40800164 */ bge- lbl_80371a7c
+/* 8037191C 4800007C */ b lbl_80371998
+lbl_80371920:
+/* 80371920 7FE3FB78 */ mr r3, r31
+/* 80371924 4BFFFF11 */ bl func_80371834
+/* 80371928 93DF02D0 */ stw r30, 0x2d0(r31)
+/* 8037192C 3C608054 */ lis r3, lbl_8053ecf8@ha
+/* 80371930 3803ECF8 */ addi r0, r3, lbl_8053ecf8@l
+/* 80371934 807F02D0 */ lwz r3, 0x2d0(r31)
+/* 80371938 54631838 */ slwi r3, r3, 3
+/* 8037193C 7C001A14 */ add r0, r0, r3
+/* 80371940 901F02DC */ stw r0, 0x2dc(r31)
+/* 80371944 809F02DC */ lwz r4, 0x2dc(r31)
+/* 80371948 80640004 */ lwz r3, 4(r4)
+/* 8037194C 28030000 */ cmplwi r3, 0
+/* 80371950 4082000C */ bne- lbl_8037195c
+/* 80371954 93E40000 */ stw r31, 0(r4)
+/* 80371958 48000008 */ b lbl_80371960
+lbl_8037195c:
+/* 8037195C 93E302E0 */ stw r31, 0x2e0(r3)
+lbl_80371960:
+/* 80371960 907F02E4 */ stw r3, 0x2e4(r31)
+/* 80371964 38000000 */ li r0, 0x0
+/* 80371968 38600001 */ li r3, 0x1
+/* 8037196C 901F02E0 */ stw r0, 0x2e0(r31)
+/* 80371970 809F02DC */ lwz r4, 0x2dc(r31)
+/* 80371974 93E40004 */ stw r31, 4(r4)
+/* 80371978 801F02D0 */ lwz r0, 0x2d0(r31)
+/* 8037197C 808DCA98 */ lwz r4, lbl_805c68b8@sda21(0)
+/* 80371980 2000001F */ subfic r0, r0, 0x1f
+/* 80371984 7C600030 */ slw r0, r3, r0
+/* 80371988 7C800378 */ or r0, r4, r0
+/* 8037198C 900DCA98 */ stw r0, lbl_805c68b8@sda21(0)
+/* 80371990 906DCA9C */ stw r3, lbl_805c68bc@sda21(0)
+/* 80371994 480000E8 */ b lbl_80371a7c
+lbl_80371998:
+/* 80371998 809F02E0 */ lwz r4, 0x2e0(r31)
+/* 8037199C 80BF02E4 */ lwz r5, 0x2e4(r31)
+/* 803719A0 28040000 */ cmplwi r4, 0
+/* 803719A4 40820010 */ bne- lbl_803719b4
+/* 803719A8 807F02DC */ lwz r3, 0x2dc(r31)
+/* 803719AC 90A30004 */ stw r5, 4(r3)
+/* 803719B0 48000008 */ b lbl_803719b8
+lbl_803719b4:
+/* 803719B4 90A402E4 */ stw r5, 0x2e4(r4)
+lbl_803719b8:
+/* 803719B8 28050000 */ cmplwi r5, 0
+/* 803719BC 40820010 */ bne- lbl_803719cc
+/* 803719C0 807F02DC */ lwz r3, 0x2dc(r31)
+/* 803719C4 90830000 */ stw r4, 0(r3)
+/* 803719C8 48000008 */ b lbl_803719d0
+lbl_803719cc:
+/* 803719CC 908502E0 */ stw r4, 0x2e0(r5)
+lbl_803719d0:
+/* 803719D0 93DF02D0 */ stw r30, 0x2d0(r31)
+/* 803719D4 809F02DC */ lwz r4, 0x2dc(r31)
+/* 803719D8 80A40000 */ lwz r5, 0(r4)
+/* 803719DC 48000008 */ b lbl_803719e4
+lbl_803719e0:
+/* 803719E0 80A502E0 */ lwz r5, 0x2e0(r5)
+lbl_803719e4:
+/* 803719E4 28050000 */ cmplwi r5, 0
+/* 803719E8 41820014 */ beq- lbl_803719fc
+/* 803719EC 806502D0 */ lwz r3, 0x2d0(r5)
+/* 803719F0 801F02D0 */ lwz r0, 0x2d0(r31)
+/* 803719F4 7C030000 */ cmpw r3, r0
+/* 803719F8 4081FFE8 */ ble+ lbl_803719e0
+lbl_803719fc:
+/* 803719FC 28050000 */ cmplwi r5, 0
+/* 80371A00 40820034 */ bne- lbl_80371a34
+/* 80371A04 80640004 */ lwz r3, 4(r4)
+/* 80371A08 28030000 */ cmplwi r3, 0
+/* 80371A0C 4082000C */ bne- lbl_80371a18
+/* 80371A10 93E40000 */ stw r31, 0(r4)
+/* 80371A14 48000008 */ b lbl_80371a1c
+lbl_80371a18:
+/* 80371A18 93E302E0 */ stw r31, 0x2e0(r3)
+lbl_80371a1c:
+/* 80371A1C 907F02E4 */ stw r3, 0x2e4(r31)
+/* 80371A20 38000000 */ li r0, 0x0
+/* 80371A24 901F02E0 */ stw r0, 0x2e0(r31)
+/* 80371A28 807F02DC */ lwz r3, 0x2dc(r31)
+/* 80371A2C 93E30004 */ stw r31, 4(r3)
+/* 80371A30 4800002C */ b lbl_80371a5c
+lbl_80371a34:
+/* 80371A34 90BF02E0 */ stw r5, 0x2e0(r31)
+/* 80371A38 806502E4 */ lwz r3, 0x2e4(r5)
+/* 80371A3C 93E502E4 */ stw r31, 0x2e4(r5)
+/* 80371A40 28030000 */ cmplwi r3, 0
+/* 80371A44 907F02E4 */ stw r3, 0x2e4(r31)
+/* 80371A48 40820010 */ bne- lbl_80371a58
+/* 80371A4C 807F02DC */ lwz r3, 0x2dc(r31)
+/* 80371A50 93E30000 */ stw r31, 0(r3)
+/* 80371A54 48000008 */ b lbl_80371a5c
+lbl_80371a58:
+/* 80371A58 93E302E0 */ stw r31, 0x2e0(r3)
+lbl_80371a5c:
+/* 80371A5C 807F02F0 */ lwz r3, 0x2f0(r31)
+/* 80371A60 28030000 */ cmplwi r3, 0
+/* 80371A64 41820018 */ beq- lbl_80371a7c
+/* 80371A68 80630008 */ lwz r3, 8(r3)
+/* 80371A6C 48000014 */ b lbl_80371a80
+lbl_80371a70:
+/* 80371A70 38000001 */ li r0, 0x1
+/* 80371A74 900DCA9C */ stw r0, lbl_805c68bc@sda21(0)
+/* 80371A78 93DF02D0 */ stw r30, 0x2d0(r31)
+lbl_80371a7c:
+/* 80371A7C 38600000 */ li r3, 0x0
+lbl_80371a80:
+/* 80371A80 8001001C */ lwz r0, 0x1c(r1)
+/* 80371A84 83E10014 */ lwz r31, 0x14(r1)
+/* 80371A88 83C10010 */ lwz r30, 0x10(r1)
+/* 80371A8C 38210018 */ addi r1, r1, 0x18
+/* 80371A90 7C0803A6 */ mtlr r0
+/* 80371A94 4E800020 */ blr
+.size func_803718d8, . - func_803718d8
+
+
+.global func_80371a98
+.type func_80371a98, @function
+func_80371a98:
+/* 80371A98 7C0802A6 */ mflr r0
+/* 80371A9C 90010004 */ stw r0, 4(r1)
+/* 80371AA0 9421FFE8 */ stwu r1, -0x18(r1)
+/* 80371AA4 93E10014 */ stw r31, 0x14(r1)
+/* 80371AA8 7C9F2378 */ mr r31, r4
+lbl_80371aac:
+/* 80371AAC 800302CC */ lwz r0, 0x2cc(r3)
+/* 80371AB0 2C000000 */ cmpwi r0, 0x0
+/* 80371AB4 41810020 */ bgt- lbl_80371ad4
+/* 80371AB8 800302D0 */ lwz r0, 0x2d0(r3)
+/* 80371ABC 7C00F800 */ cmpw r0, r31
+/* 80371AC0 40810014 */ ble- lbl_80371ad4
+/* 80371AC4 7FE4FB78 */ mr r4, r31
+/* 80371AC8 4BFFFE11 */ bl func_803718d8
+/* 80371ACC 28030000 */ cmplwi r3, 0
+/* 80371AD0 4082FFDC */ bne+ lbl_80371aac
+lbl_80371ad4:
+/* 80371AD4 8001001C */ lwz r0, 0x1c(r1)
+/* 80371AD8 83E10014 */ lwz r31, 0x14(r1)
+/* 80371ADC 38210018 */ addi r1, r1, 0x18
+/* 80371AE0 7C0803A6 */ mtlr r0
+/* 80371AE4 4E800020 */ blr
+.size func_80371a98, . - func_80371a98
+
+
+.global func_80371ae8
+.type func_80371ae8, @function
+func_80371ae8:
+/* 80371AE8 7C0802A6 */ mflr r0
+/* 80371AEC 3C808054 */ lis r4, lbl_8053ecf8@ha
+/* 80371AF0 90010004 */ stw r0, 4(r1)
+/* 80371AF4 9421FFE8 */ stwu r1, -0x18(r1)
+/* 80371AF8 93E10014 */ stw r31, 0x14(r1)
+/* 80371AFC 3BE4ECF8 */ addi r31, r4, lbl_8053ecf8@l
+/* 80371B00 93C10010 */ stw r30, 0x10(r1)
+/* 80371B04 3BC30000 */ addi r30, r3, 0x0
+/* 80371B08 800DCAA0 */ lwz r0, lbl_805c68c0@sda21(0)
+/* 80371B0C 2C000000 */ cmpwi r0, 0x0
+/* 80371B10 4081000C */ ble- lbl_80371b1c
+/* 80371B14 38600000 */ li r3, 0x0
+/* 80371B18 480001B8 */ b lbl_80371cd0
+lbl_80371b1c:
+/* 80371B1C 4BFFC5D9 */ bl func_8036e0f4
+/* 80371B20 3C808000 */ lis r4, 0x8000
+/* 80371B24 80C400E4 */ lwz r6, 0xe4(r4)
+/* 80371B28 7C033040 */ cmplw r3, r6
+/* 80371B2C 38660000 */ addi r3, r6, 0x0
+/* 80371B30 4182000C */ beq- lbl_80371b3c
+/* 80371B34 38600000 */ li r3, 0x0
+/* 80371B38 48000198 */ b lbl_80371cd0
+lbl_80371b3c:
+/* 80371B3C 28060000 */ cmplwi r6, 0
+/* 80371B40 418200BC */ beq- lbl_80371bfc
+/* 80371B44 A00602C8 */ lhz r0, 0x2c8(r6)
+/* 80371B48 28000002 */ cmplwi r0, 2
+/* 80371B4C 40820090 */ bne- lbl_80371bdc
+/* 80371B50 2C1E0000 */ cmpwi r30, 0x0
+/* 80371B54 40820020 */ bne- lbl_80371b74
+/* 80371B58 808DCA98 */ lwz r4, lbl_805c68b8@sda21(0)
+/* 80371B5C 800602D0 */ lwz r0, 0x2d0(r6)
+/* 80371B60 7C840034 */ cntlzw r4, r4
+/* 80371B64 7C002000 */ cmpw r0, r4
+/* 80371B68 4181000C */ bgt- lbl_80371b74
+/* 80371B6C 38600000 */ li r3, 0x0
+/* 80371B70 48000160 */ b lbl_80371cd0
+lbl_80371b74:
+/* 80371B74 38000001 */ li r0, 0x1
+/* 80371B78 B00602C8 */ sth r0, 0x2c8(r6)
+/* 80371B7C 800602D0 */ lwz r0, 0x2d0(r6)
+/* 80371B80 54001838 */ slwi r0, r0, 3
+/* 80371B84 7C1F0214 */ add r0, r31, r0
+/* 80371B88 900602DC */ stw r0, 0x2dc(r6)
+/* 80371B8C 80A602DC */ lwz r5, 0x2dc(r6)
+/* 80371B90 80850004 */ lwz r4, 4(r5)
+/* 80371B94 28040000 */ cmplwi r4, 0
+/* 80371B98 4082000C */ bne- lbl_80371ba4
+/* 80371B9C 90C50000 */ stw r6, 0(r5)
+/* 80371BA0 48000008 */ b lbl_80371ba8
+lbl_80371ba4:
+/* 80371BA4 90C402E0 */ stw r6, 0x2e0(r4)
+lbl_80371ba8:
+/* 80371BA8 908602E4 */ stw r4, 0x2e4(r6)
+/* 80371BAC 38000000 */ li r0, 0x0
+/* 80371BB0 38800001 */ li r4, 0x1
+/* 80371BB4 900602E0 */ stw r0, 0x2e0(r6)
+/* 80371BB8 80A602DC */ lwz r5, 0x2dc(r6)
+/* 80371BBC 90C50004 */ stw r6, 4(r5)
+/* 80371BC0 800602D0 */ lwz r0, 0x2d0(r6)
+/* 80371BC4 80ADCA98 */ lwz r5, lbl_805c68b8@sda21(0)
+/* 80371BC8 2000001F */ subfic r0, r0, 0x1f
+/* 80371BCC 7C800030 */ slw r0, r4, r0
+/* 80371BD0 7CA00378 */ or r0, r5, r0
+/* 80371BD4 900DCA98 */ stw r0, lbl_805c68b8@sda21(0)
+/* 80371BD8 908DCA9C */ stw r4, lbl_805c68bc@sda21(0)
+lbl_80371bdc:
+/* 80371BDC A00601A2 */ lhz r0, 0x1a2(r6)
+/* 80371BE0 540007BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 80371BE4 40820018 */ bne- lbl_80371bfc
+/* 80371BE8 4BFFC519 */ bl func_8036e100
+/* 80371BEC 28030000 */ cmplwi r3, 0
+/* 80371BF0 4182000C */ beq- lbl_80371bfc
+/* 80371BF4 38600000 */ li r3, 0x0
+/* 80371BF8 480000D8 */ b lbl_80371cd0
+lbl_80371bfc:
+/* 80371BFC 800DCA98 */ lwz r0, lbl_805c68b8@sda21(0)
+/* 80371C00 38800000 */ li r4, 0x0
+/* 80371C04 3C608000 */ lis r3, 0x8000
+/* 80371C08 28000000 */ cmplwi r0, 0
+/* 80371C0C 908300E4 */ stw r4, 0xe4(r3)
+/* 80371C10 40820034 */ bne- lbl_80371c44
+/* 80371C14 387F0720 */ addi r3, r31, 0x720
+/* 80371C18 4BFFC481 */ bl func_8036e098
+lbl_80371c1c:
+/* 80371C1C 4BFFCECD */ bl func_8036eae8
+lbl_80371c20:
+/* 80371C20 800DCA98 */ lwz r0, lbl_805c68b8@sda21(0)
+/* 80371C24 28000000 */ cmplwi r0, 0
+/* 80371C28 4182FFF8 */ beq+ lbl_80371c20
+/* 80371C2C 4BFFCEA9 */ bl func_8036ead4
+/* 80371C30 800DCA98 */ lwz r0, lbl_805c68b8@sda21(0)
+/* 80371C34 28000000 */ cmplwi r0, 0
+/* 80371C38 4182FFE4 */ beq+ lbl_80371c1c
+/* 80371C3C 387F0720 */ addi r3, r31, 0x720
+/* 80371C40 4BFFC621 */ bl func_8036e260
+lbl_80371c44:
+/* 80371C44 38600000 */ li r3, 0x0
+/* 80371C48 906DCA9C */ stw r3, lbl_805c68bc@sda21(0)
+/* 80371C4C 800DCA98 */ lwz r0, lbl_805c68b8@sda21(0)
+/* 80371C50 7C070034 */ cntlzw r7, r0
+/* 80371C54 54E01838 */ slwi r0, r7, 3
+/* 80371C58 7C9F0214 */ add r4, r31, r0
+/* 80371C5C 80A40000 */ lwz r5, 0(r4)
+/* 80371C60 80C502E0 */ lwz r6, 0x2e0(r5)
+/* 80371C64 3BE50000 */ addi r31, r5, 0x0
+/* 80371C68 28060000 */ cmplwi r6, 0
+/* 80371C6C 4082000C */ bne- lbl_80371c78
+/* 80371C70 90640004 */ stw r3, 4(r4)
+/* 80371C74 48000008 */ b lbl_80371c7c
+lbl_80371c78:
+/* 80371C78 906602E4 */ stw r3, 0x2e4(r6)
+lbl_80371c7c:
+/* 80371C7C 90C40000 */ stw r6, 0(r4)
+/* 80371C80 80040000 */ lwz r0, 0(r4)
+/* 80371C84 28000000 */ cmplwi r0, 0
+/* 80371C88 4082001C */ bne- lbl_80371ca4
+/* 80371C8C 2007001F */ subfic r0, r7, 0x1f
+/* 80371C90 808DCA98 */ lwz r4, lbl_805c68b8@sda21(0)
+/* 80371C94 38600001 */ li r3, 0x1
+/* 80371C98 7C600030 */ slw r0, r3, r0
+/* 80371C9C 7C800078 */ andc r0, r4, r0
+/* 80371CA0 900DCA98 */ stw r0, lbl_805c68b8@sda21(0)
+lbl_80371ca4:
+/* 80371CA4 38000000 */ li r0, 0x0
+/* 80371CA8 901F02DC */ stw r0, 0x2dc(r31)
+/* 80371CAC 38000002 */ li r0, 0x2
+/* 80371CB0 3C808000 */ lis r4, 0x8000
+/* 80371CB4 B01F02C8 */ sth r0, 0x2c8(r31)
+/* 80371CB8 7FE3FB78 */ mr r3, r31
+/* 80371CBC 93E400E4 */ stw r31, 0xe4(r4)
+/* 80371CC0 4BFFC3D9 */ bl func_8036e098
+/* 80371CC4 7FE3FB78 */ mr r3, r31
+/* 80371CC8 4BFFC4B9 */ bl func_8036e180
+/* 80371CCC 7FE3FB78 */ mr r3, r31
+lbl_80371cd0:
+/* 80371CD0 8001001C */ lwz r0, 0x1c(r1)
+/* 80371CD4 83E10014 */ lwz r31, 0x14(r1)
+/* 80371CD8 83C10010 */ lwz r30, 0x10(r1)
+/* 80371CDC 38210018 */ addi r1, r1, 0x18
+/* 80371CE0 7C0803A6 */ mtlr r0
+/* 80371CE4 4E800020 */ blr
+.size func_80371ae8, . - func_80371ae8
+
+
+.global func_80371ce8
+.type func_80371ce8, @function
+func_80371ce8:
+/* 80371CE8 7C0802A6 */ mflr r0
+/* 80371CEC 90010004 */ stw r0, 4(r1)
+/* 80371CF0 9421FFF8 */ stwu r1, -8(r1)
+/* 80371CF4 800DCA9C */ lwz r0, lbl_805c68bc@sda21(0)
+/* 80371CF8 2C000000 */ cmpwi r0, 0x0
+/* 80371CFC 4182000C */ beq- lbl_80371d08
+/* 80371D00 38600000 */ li r3, 0x0
+/* 80371D04 4BFFFDE5 */ bl func_80371ae8
+lbl_80371d08:
+/* 80371D08 8001000C */ lwz r0, 0xc(r1)
+/* 80371D0C 38210008 */ addi r1, r1, 0x8
+/* 80371D10 7C0803A6 */ mtlr r0
+/* 80371D14 4E800020 */ blr
+.size func_80371ce8, . - func_80371ce8
+
+
+.global func_80371d18
+.type func_80371d18, @function
+func_80371d18:
+/* 80371D18 7C0802A6 */ mflr r0
+/* 80371D1C 90010004 */ stw r0, 4(r1)
+/* 80371D20 9421FFF0 */ stwu r1, -0x10(r1)
+/* 80371D24 93E1000C */ stw r31, 0xc(r1)
+/* 80371D28 4BFFCDAD */ bl func_8036ead4
+/* 80371D2C 3BE30000 */ addi r31, r3, 0x0
+/* 80371D30 38600001 */ li r3, 0x1
+/* 80371D34 4BFFFDB5 */ bl func_80371ae8
+/* 80371D38 7FE3FB78 */ mr r3, r31
+/* 80371D3C 4BFFCDC1 */ bl func_8036eafc
+/* 80371D40 80010014 */ lwz r0, 0x14(r1)
+/* 80371D44 83E1000C */ lwz r31, 0xc(r1)
+/* 80371D48 38210010 */ addi r1, r1, 0x10
+/* 80371D4C 7C0803A6 */ mtlr r0
+/* 80371D50 4E800020 */ blr
+.size func_80371d18, . - func_80371d18
+
+
+.global func_80371d54
+.type func_80371d54, @function
+func_80371d54:
+/* 80371D54 7C0802A6 */ mflr r0
+/* 80371D58 2C080000 */ cmpwi r8, 0x0
+/* 80371D5C 90010004 */ stw r0, 4(r1)
+/* 80371D60 9421FFC8 */ stwu r1, -0x38(r1)
+/* 80371D64 93E10034 */ stw r31, 0x34(r1)
+/* 80371D68 3BE30000 */ addi r31, r3, 0x0
+/* 80371D6C 93C10030 */ stw r30, 0x30(r1)
+/* 80371D70 3BC70000 */ addi r30, r7, 0x0
+/* 80371D74 93A1002C */ stw r29, 0x2c(r1)
+/* 80371D78 3BA60000 */ addi r29, r6, 0x0
+/* 80371D7C 93810028 */ stw r28, 0x28(r1)
+/* 80371D80 3B850000 */ addi r28, r5, 0x0
+/* 80371D84 4180000C */ blt- lbl_80371d90
+/* 80371D88 2C08001F */ cmpwi r8, 0x1f
+/* 80371D8C 4081000C */ ble- lbl_80371d98
+lbl_80371d90:
+/* 80371D90 38600000 */ li r3, 0x0
+/* 80371D94 480000C0 */ b lbl_80371e54
+lbl_80371d98:
+/* 80371D98 38E00001 */ li r7, 0x1
+/* 80371D9C B0FF02C8 */ sth r7, 0x2c8(r31)
+/* 80371DA0 552007FE */ clrlwi r0, r9, 0x1f
+/* 80371DA4 57A90038 */ rlwinm r9, r29, 0, 0, 0x1c
+/* 80371DA8 B01F02CA */ sth r0, 0x2ca(r31)
+/* 80371DAC 38C0FFFF */ li r6, -0x1
+/* 80371DB0 38000000 */ li r0, 0x0
+/* 80371DB4 911F02D4 */ stw r8, 0x2d4(r31)
+/* 80371DB8 387F0000 */ addi r3, r31, 0x0
+/* 80371DBC 38A9FFF8 */ addi r5, r9, -0x8
+/* 80371DC0 911F02D0 */ stw r8, 0x2d0(r31)
+/* 80371DC4 90FF02CC */ stw r7, 0x2cc(r31)
+/* 80371DC8 90DF02D8 */ stw r6, 0x2d8(r31)
+/* 80371DCC 901F02F0 */ stw r0, 0x2f0(r31)
+/* 80371DD0 901F02EC */ stw r0, 0x2ec(r31)
+/* 80371DD4 901F02E8 */ stw r0, 0x2e8(r31)
+/* 80371DD8 901F02F8 */ stw r0, 0x2f8(r31)
+/* 80371DDC 901F02F4 */ stw r0, 0x2f4(r31)
+/* 80371DE0 9009FFF8 */ stw r0, -8(r9)
+/* 80371DE4 9009FFFC */ stw r0, -4(r9)
+/* 80371DE8 4BFFC49D */ bl func_8036e284
+/* 80371DEC 3C608037 */ lis r3, func_80371e74@ha
+/* 80371DF0 38031E74 */ addi r0, r3, func_80371e74@l
+/* 80371DF4 901F0084 */ stw r0, 0x84(r31)
+/* 80371DF8 3C60DEAE */ lis r3, 0xdeae
+/* 80371DFC 7C9EE850 */ subf r4, r30, r29
+/* 80371E00 939F000C */ stw r28, 0xc(r31)
+/* 80371E04 3803BABE */ addi r0, r3, -0x4542
+/* 80371E08 93BF0304 */ stw r29, 0x304(r31)
+/* 80371E0C 909F0308 */ stw r4, 0x308(r31)
+/* 80371E10 807F0308 */ lwz r3, 0x308(r31)
+/* 80371E14 90030000 */ stw r0, 0(r3)
+/* 80371E18 4BFFCCBD */ bl func_8036ead4
+/* 80371E1C 3C808000 */ lis r4, 0x8000
+/* 80371E20 38A400DC */ addi r5, r4, 0xdc
+/* 80371E24 84C50004 */ lwzu r6, 4(r5)
+/* 80371E28 28060000 */ cmplwi r6, 0
+/* 80371E2C 4082000C */ bne- lbl_80371e38
+/* 80371E30 93E400DC */ stw r31, 0xdc(r4)
+/* 80371E34 48000008 */ b lbl_80371e3c
+lbl_80371e38:
+/* 80371E38 93E602FC */ stw r31, 0x2fc(r6)
+lbl_80371e3c:
+/* 80371E3C 90DF0300 */ stw r6, 0x300(r31)
+/* 80371E40 38000000 */ li r0, 0x0
+/* 80371E44 901F02FC */ stw r0, 0x2fc(r31)
+/* 80371E48 93E50000 */ stw r31, 0(r5)
+/* 80371E4C 4BFFCCB1 */ bl func_8036eafc
+/* 80371E50 38600001 */ li r3, 0x1
+lbl_80371e54:
+/* 80371E54 8001003C */ lwz r0, 0x3c(r1)
+/* 80371E58 83E10034 */ lwz r31, 0x34(r1)
+/* 80371E5C 83C10030 */ lwz r30, 0x30(r1)
+/* 80371E60 83A1002C */ lwz r29, 0x2c(r1)
+/* 80371E64 83810028 */ lwz r28, 0x28(r1)
+/* 80371E68 38210038 */ addi r1, r1, 0x38
+/* 80371E6C 7C0803A6 */ mtlr r0
+/* 80371E70 4E800020 */ blr
+.size func_80371d54, . - func_80371d54
+
+
+.global func_80371e74
+.type func_80371e74, @function
+func_80371e74:
+/* 80371E74 7C0802A6 */ mflr r0
+/* 80371E78 90010004 */ stw r0, 4(r1)
+/* 80371E7C 9421FFE0 */ stwu r1, -0x20(r1)
+/* 80371E80 93E1001C */ stw r31, 0x1c(r1)
+/* 80371E84 93C10018 */ stw r30, 0x18(r1)
+/* 80371E88 93A10014 */ stw r29, 0x14(r1)
+/* 80371E8C 93810010 */ stw r28, 0x10(r1)
+/* 80371E90 7C7C1B78 */ mr r28, r3
+/* 80371E94 4BFFCC41 */ bl func_8036ead4
+/* 80371E98 3FE08000 */ lis r31, 0x8000
+/* 80371E9C 83DF00E4 */ lwz r30, 0xe4(r31)
+/* 80371EA0 3BA30000 */ addi r29, r3, 0x0
+/* 80371EA4 387E0000 */ addi r3, r30, 0x0
+/* 80371EA8 4BFFC3B9 */ bl func_8036e260
+/* 80371EAC A01E02CA */ lhz r0, 0x2ca(r30)
+/* 80371EB0 540007FF */ clrlwi. r0, r0, 0x1f
+/* 80371EB4 41820044 */ beq- lbl_80371ef8
+/* 80371EB8 809E02FC */ lwz r4, 0x2fc(r30)
+/* 80371EBC 80BE0300 */ lwz r5, 0x300(r30)
+/* 80371EC0 28040000 */ cmplwi r4, 0
+/* 80371EC4 4082000C */ bne- lbl_80371ed0
+/* 80371EC8 90BF00E0 */ stw r5, 0xe0(r31)
+/* 80371ECC 48000008 */ b lbl_80371ed4
+lbl_80371ed0:
+/* 80371ED0 90A40300 */ stw r5, 0x300(r4)
+lbl_80371ed4:
+/* 80371ED4 28050000 */ cmplwi r5, 0
+/* 80371ED8 40820010 */ bne- lbl_80371ee8
+/* 80371EDC 3C608000 */ lis r3, 0x8000
+/* 80371EE0 908300DC */ stw r4, 0xdc(r3)
+/* 80371EE4 48000008 */ b lbl_80371eec
+lbl_80371ee8:
+/* 80371EE8 908502FC */ stw r4, 0x2fc(r5)
+lbl_80371eec:
+/* 80371EEC 38000000 */ li r0, 0x0
+/* 80371EF0 B01E02C8 */ sth r0, 0x2c8(r30)
+/* 80371EF4 48000010 */ b lbl_80371f04
+lbl_80371ef8:
+/* 80371EF8 38000008 */ li r0, 0x8
+/* 80371EFC B01E02C8 */ sth r0, 0x2c8(r30)
+/* 80371F00 939E02D8 */ stw r28, 0x2d8(r30)
+lbl_80371f04:
+/* 80371F04 7FC3F378 */ mr r3, r30
+/* 80371F08 4BFFE27D */ bl func_80370184
+/* 80371F0C 387E02E8 */ addi r3, r30, 0x2e8
+/* 80371F10 480006E9 */ bl func_803725f8
+/* 80371F14 38000001 */ li r0, 0x1
+/* 80371F18 900DCA9C */ stw r0, lbl_805c68bc@sda21(0)
+/* 80371F1C 800DCA9C */ lwz r0, lbl_805c68bc@sda21(0)
+/* 80371F20 2C000000 */ cmpwi r0, 0x0
+/* 80371F24 4182000C */ beq- lbl_80371f30
+/* 80371F28 38600000 */ li r3, 0x0
+/* 80371F2C 4BFFFBBD */ bl func_80371ae8
+lbl_80371f30:
+/* 80371F30 7FA3EB78 */ mr r3, r29
+/* 80371F34 4BFFCBC9 */ bl func_8036eafc
+/* 80371F38 80010024 */ lwz r0, 0x24(r1)
+/* 80371F3C 83E1001C */ lwz r31, 0x1c(r1)
+/* 80371F40 83C10018 */ lwz r30, 0x18(r1)
+/* 80371F44 83A10014 */ lwz r29, 0x14(r1)
+/* 80371F48 83810010 */ lwz r28, 0x10(r1)
+/* 80371F4C 38210020 */ addi r1, r1, 0x20
+/* 80371F50 7C0803A6 */ mtlr r0
+/* 80371F54 4E800020 */ blr
+.size func_80371e74, . - func_80371e74
+
+
+.global func_80371f58
+.type func_80371f58, @function
+func_80371f58:
+/* 80371F58 7C0802A6 */ mflr r0
+/* 80371F5C 90010004 */ stw r0, 4(r1)
+/* 80371F60 9421FFE0 */ stwu r1, -0x20(r1)
+/* 80371F64 93E1001C */ stw r31, 0x1c(r1)
+/* 80371F68 93C10018 */ stw r30, 0x18(r1)
+/* 80371F6C 7C7E1B78 */ mr r30, r3
+/* 80371F70 93A10014 */ stw r29, 0x14(r1)
+/* 80371F74 4BFFCB61 */ bl func_8036ead4
+/* 80371F78 A01E02C8 */ lhz r0, 0x2c8(r30)
+/* 80371F7C 3BE30000 */ addi r31, r3, 0x0
+/* 80371F80 2C000003 */ cmpwi r0, 0x3
+/* 80371F84 418200DC */ beq- lbl_80372060
+/* 80371F88 40800014 */ bge- lbl_80371f9c
+/* 80371F8C 2C000001 */ cmpwi r0, 0x1
+/* 80371F90 41820018 */ beq- lbl_80371fa8
+/* 80371F94 4080002C */ bge- lbl_80371fc0
+/* 80371F98 480000C8 */ b lbl_80372060
+lbl_80371f9c:
+/* 80371F9C 2C000005 */ cmpwi r0, 0x5
+/* 80371FA0 408000C0 */ bge- lbl_80372060
+/* 80371FA4 48000028 */ b lbl_80371fcc
+lbl_80371fa8:
+/* 80371FA8 801E02CC */ lwz r0, 0x2cc(r30)
+/* 80371FAC 2C000000 */ cmpwi r0, 0x0
+/* 80371FB0 418100BC */ bgt- lbl_8037206c
+/* 80371FB4 7FC3F378 */ mr r3, r30
+/* 80371FB8 4BFFF87D */ bl func_80371834
+/* 80371FBC 480000B0 */ b lbl_8037206c
+lbl_80371fc0:
+/* 80371FC0 38000001 */ li r0, 0x1
+/* 80371FC4 900DCA9C */ stw r0, lbl_805c68bc@sda21(0)
+/* 80371FC8 480000A4 */ b lbl_8037206c
+lbl_80371fcc:
+/* 80371FCC 809E02E0 */ lwz r4, 0x2e0(r30)
+/* 80371FD0 80BE02E4 */ lwz r5, 0x2e4(r30)
+/* 80371FD4 28040000 */ cmplwi r4, 0
+/* 80371FD8 40820010 */ bne- lbl_80371fe8
+/* 80371FDC 807E02DC */ lwz r3, 0x2dc(r30)
+/* 80371FE0 90A30004 */ stw r5, 4(r3)
+/* 80371FE4 48000008 */ b lbl_80371fec
+lbl_80371fe8:
+/* 80371FE8 90A402E4 */ stw r5, 0x2e4(r4)
+lbl_80371fec:
+/* 80371FEC 28050000 */ cmplwi r5, 0
+/* 80371FF0 40820010 */ bne- lbl_80372000
+/* 80371FF4 807E02DC */ lwz r3, 0x2dc(r30)
+/* 80371FF8 90830000 */ stw r4, 0(r3)
+/* 80371FFC 48000008 */ b lbl_80372004
+lbl_80372000:
+/* 80372000 908502E0 */ stw r4, 0x2e0(r5)
+lbl_80372004:
+/* 80372004 38000000 */ li r0, 0x0
+/* 80372008 901E02DC */ stw r0, 0x2dc(r30)
+/* 8037200C 801E02CC */ lwz r0, 0x2cc(r30)
+/* 80372010 2C000000 */ cmpwi r0, 0x0
+/* 80372014 41810058 */ bgt- lbl_8037206c
+/* 80372018 807E02F0 */ lwz r3, 0x2f0(r30)
+/* 8037201C 28030000 */ cmplwi r3, 0
+/* 80372020 4182004C */ beq- lbl_8037206c
+/* 80372024 83A30008 */ lwz r29, 8(r3)
+lbl_80372028:
+/* 80372028 801D02CC */ lwz r0, 0x2cc(r29)
+/* 8037202C 2C000000 */ cmpwi r0, 0x0
+/* 80372030 4181003C */ bgt- lbl_8037206c
+/* 80372034 7FA3EB78 */ mr r3, r29
+/* 80372038 4BFFF865 */ bl func_8037189c
+/* 8037203C 801D02D0 */ lwz r0, 0x2d0(r29)
+/* 80372040 38830000 */ addi r4, r3, 0x0
+/* 80372044 7C002000 */ cmpw r0, r4
+/* 80372048 41820024 */ beq- lbl_8037206c
+/* 8037204C 7FA3EB78 */ mr r3, r29
+/* 80372050 4BFFF889 */ bl func_803718d8
+/* 80372054 7C7D1B79 */ or. r29, r3, r3
+/* 80372058 4082FFD0 */ bne+ lbl_80372028
+/* 8037205C 48000010 */ b lbl_8037206c
+lbl_80372060:
+/* 80372060 7FE3FB78 */ mr r3, r31
+/* 80372064 4BFFCA99 */ bl func_8036eafc
+/* 80372068 48000090 */ b lbl_803720f8
+lbl_8037206c:
+/* 8037206C 7FC3F378 */ mr r3, r30
+/* 80372070 4BFFC1F1 */ bl func_8036e260
+/* 80372074 A01E02CA */ lhz r0, 0x2ca(r30)
+/* 80372078 540007FF */ clrlwi. r0, r0, 0x1f
+/* 8037207C 41820048 */ beq- lbl_803720c4
+/* 80372080 809E02FC */ lwz r4, 0x2fc(r30)
+/* 80372084 80BE0300 */ lwz r5, 0x300(r30)
+/* 80372088 28040000 */ cmplwi r4, 0
+/* 8037208C 40820010 */ bne- lbl_8037209c
+/* 80372090 3C608000 */ lis r3, 0x8000
+/* 80372094 90A300E0 */ stw r5, 0xe0(r3)
+/* 80372098 48000008 */ b lbl_803720a0
+lbl_8037209c:
+/* 8037209C 90A40300 */ stw r5, 0x300(r4)
+lbl_803720a0:
+/* 803720A0 28050000 */ cmplwi r5, 0
+/* 803720A4 40820010 */ bne- lbl_803720b4
+/* 803720A8 3C608000 */ lis r3, 0x8000
+/* 803720AC 908300DC */ stw r4, 0xdc(r3)
+/* 803720B0 48000008 */ b lbl_803720b8
+lbl_803720b4:
+/* 803720B4 908502FC */ stw r4, 0x2fc(r5)
+lbl_803720b8:
+/* 803720B8 38000000 */ li r0, 0x0
+/* 803720BC B01E02C8 */ sth r0, 0x2c8(r30)
+/* 803720C0 4800000C */ b lbl_803720cc
+lbl_803720c4:
+/* 803720C4 38000008 */ li r0, 0x8
+/* 803720C8 B01E02C8 */ sth r0, 0x2c8(r30)
+lbl_803720cc:
+/* 803720CC 7FC3F378 */ mr r3, r30
+/* 803720D0 4BFFE0B5 */ bl func_80370184
+/* 803720D4 387E02E8 */ addi r3, r30, 0x2e8
+/* 803720D8 48000521 */ bl func_803725f8
+/* 803720DC 800DCA9C */ lwz r0, lbl_805c68bc@sda21(0)
+/* 803720E0 2C000000 */ cmpwi r0, 0x0
+/* 803720E4 4182000C */ beq- lbl_803720f0
+/* 803720E8 38600000 */ li r3, 0x0
+/* 803720EC 4BFFF9FD */ bl func_80371ae8
+lbl_803720f0:
+/* 803720F0 7FE3FB78 */ mr r3, r31
+/* 803720F4 4BFFCA09 */ bl func_8036eafc
+lbl_803720f8:
+/* 803720F8 80010024 */ lwz r0, 0x24(r1)
+/* 803720FC 83E1001C */ lwz r31, 0x1c(r1)
+/* 80372100 83C10018 */ lwz r30, 0x18(r1)
+/* 80372104 83A10014 */ lwz r29, 0x14(r1)
+/* 80372108 38210020 */ addi r1, r1, 0x20
+/* 8037210C 7C0803A6 */ mtlr r0
+/* 80372110 4E800020 */ blr
+.size func_80371f58, . - func_80371f58
+
+
+.global func_80372114
+.type func_80372114, @function
+func_80372114:
+/* 80372114 7C0802A6 */ mflr r0
+/* 80372118 90010004 */ stw r0, 4(r1)
+/* 8037211C 9421FFD8 */ stwu r1, -0x28(r1)
+/* 80372120 93E10024 */ stw r31, 0x24(r1)
+/* 80372124 93C10020 */ stw r30, 0x20(r1)
+/* 80372128 93A1001C */ stw r29, 0x1c(r1)
+/* 8037212C 7C7D1B78 */ mr r29, r3
+/* 80372130 4BFFC9A5 */ bl func_8036ead4
+/* 80372134 809D02CC */ lwz r4, 0x2cc(r29)
+/* 80372138 3BE30000 */ addi r31, r3, 0x0
+/* 8037213C 3804FFFF */ addi r0, r4, -0x1
+/* 80372140 901D02CC */ stw r0, 0x2cc(r29)
+/* 80372144 7C9E2378 */ mr r30, r4
+/* 80372148 801D02CC */ lwz r0, 0x2cc(r29)
+/* 8037214C 2C000000 */ cmpwi r0, 0x0
+/* 80372150 40800010 */ bge- lbl_80372160
+/* 80372154 38000000 */ li r0, 0x0
+/* 80372158 901D02CC */ stw r0, 0x2cc(r29)
+/* 8037215C 48000218 */ b lbl_80372374
+lbl_80372160:
+/* 80372160 40820214 */ bne- lbl_80372374
+/* 80372164 A01D02C8 */ lhz r0, 0x2c8(r29)
+/* 80372168 2C000004 */ cmpwi r0, 0x4
+/* 8037216C 418200B8 */ beq- lbl_80372224
+/* 80372170 408001F0 */ bge- lbl_80372360
+/* 80372174 2C000001 */ cmpwi r0, 0x1
+/* 80372178 41820008 */ beq- lbl_80372180
+/* 8037217C 480001E4 */ b lbl_80372360
+lbl_80372180:
+/* 80372180 801D02D4 */ lwz r0, 0x2d4(r29)
+/* 80372184 807D02F4 */ lwz r3, 0x2f4(r29)
+/* 80372188 48000024 */ b lbl_803721ac
+lbl_8037218c:
+/* 8037218C 80830000 */ lwz r4, 0(r3)
+/* 80372190 28040000 */ cmplwi r4, 0
+/* 80372194 41820014 */ beq- lbl_803721a8
+/* 80372198 808402D0 */ lwz r4, 0x2d0(r4)
+/* 8037219C 7C040000 */ cmpw r4, r0
+/* 803721A0 40800008 */ bge- lbl_803721a8
+/* 803721A4 7C802378 */ mr r0, r4
+lbl_803721a8:
+/* 803721A8 80630010 */ lwz r3, 0x10(r3)
+lbl_803721ac:
+/* 803721AC 28030000 */ cmplwi r3, 0
+/* 803721B0 4082FFDC */ bne+ lbl_8037218c
+/* 803721B4 901D02D0 */ stw r0, 0x2d0(r29)
+/* 803721B8 3C608054 */ lis r3, lbl_8053ecf8@ha
+/* 803721BC 3803ECF8 */ addi r0, r3, lbl_8053ecf8@l
+/* 803721C0 807D02D0 */ lwz r3, 0x2d0(r29)
+/* 803721C4 54631838 */ slwi r3, r3, 3
+/* 803721C8 7C001A14 */ add r0, r0, r3
+/* 803721CC 901D02DC */ stw r0, 0x2dc(r29)
+/* 803721D0 809D02DC */ lwz r4, 0x2dc(r29)
+/* 803721D4 80640004 */ lwz r3, 4(r4)
+/* 803721D8 28030000 */ cmplwi r3, 0
+/* 803721DC 4082000C */ bne- lbl_803721e8
+/* 803721E0 93A40000 */ stw r29, 0(r4)
+/* 803721E4 48000008 */ b lbl_803721ec
+lbl_803721e8:
+/* 803721E8 93A302E0 */ stw r29, 0x2e0(r3)
+lbl_803721ec:
+/* 803721EC 907D02E4 */ stw r3, 0x2e4(r29)
+/* 803721F0 38000000 */ li r0, 0x0
+/* 803721F4 38600001 */ li r3, 0x1
+/* 803721F8 901D02E0 */ stw r0, 0x2e0(r29)
+/* 803721FC 809D02DC */ lwz r4, 0x2dc(r29)
+/* 80372200 93A40004 */ stw r29, 4(r4)
+/* 80372204 801D02D0 */ lwz r0, 0x2d0(r29)
+/* 80372208 808DCA98 */ lwz r4, lbl_805c68b8@sda21(0)
+/* 8037220C 2000001F */ subfic r0, r0, 0x1f
+/* 80372210 7C600030 */ slw r0, r3, r0
+/* 80372214 7C800378 */ or r0, r4, r0
+/* 80372218 900DCA98 */ stw r0, lbl_805c68b8@sda21(0)
+/* 8037221C 906DCA9C */ stw r3, lbl_805c68bc@sda21(0)
+/* 80372220 48000140 */ b lbl_80372360
+lbl_80372224:
+/* 80372224 809D02E0 */ lwz r4, 0x2e0(r29)
+/* 80372228 80BD02E4 */ lwz r5, 0x2e4(r29)
+/* 8037222C 28040000 */ cmplwi r4, 0
+/* 80372230 40820010 */ bne- lbl_80372240
+/* 80372234 807D02DC */ lwz r3, 0x2dc(r29)
+/* 80372238 90A30004 */ stw r5, 4(r3)
+/* 8037223C 48000008 */ b lbl_80372244
+lbl_80372240:
+/* 80372240 90A402E4 */ stw r5, 0x2e4(r4)
+lbl_80372244:
+/* 80372244 28050000 */ cmplwi r5, 0
+/* 80372248 40820010 */ bne- lbl_80372258
+/* 8037224C 807D02DC */ lwz r3, 0x2dc(r29)
+/* 80372250 90830000 */ stw r4, 0(r3)
+/* 80372254 48000008 */ b lbl_8037225c
+lbl_80372258:
+/* 80372258 908502E0 */ stw r4, 0x2e0(r5)
+lbl_8037225c:
+/* 8037225C 801D02D4 */ lwz r0, 0x2d4(r29)
+/* 80372260 807D02F4 */ lwz r3, 0x2f4(r29)
+/* 80372264 48000024 */ b lbl_80372288
+lbl_80372268:
+/* 80372268 80830000 */ lwz r4, 0(r3)
+/* 8037226C 28040000 */ cmplwi r4, 0
+/* 80372270 41820014 */ beq- lbl_80372284
+/* 80372274 808402D0 */ lwz r4, 0x2d0(r4)
+/* 80372278 7C040000 */ cmpw r4, r0
+/* 8037227C 40800008 */ bge- lbl_80372284
+/* 80372280 7C802378 */ mr r0, r4
+lbl_80372284:
+/* 80372284 80630010 */ lwz r3, 0x10(r3)
+lbl_80372288:
+/* 80372288 28030000 */ cmplwi r3, 0
+/* 8037228C 4082FFDC */ bne+ lbl_80372268
+/* 80372290 901D02D0 */ stw r0, 0x2d0(r29)
+/* 80372294 809D02DC */ lwz r4, 0x2dc(r29)
+/* 80372298 80A40000 */ lwz r5, 0(r4)
+/* 8037229C 48000008 */ b lbl_803722a4
+lbl_803722a0:
+/* 803722A0 80A502E0 */ lwz r5, 0x2e0(r5)
+lbl_803722a4:
+/* 803722A4 28050000 */ cmplwi r5, 0
+/* 803722A8 41820014 */ beq- lbl_803722bc
+/* 803722AC 806502D0 */ lwz r3, 0x2d0(r5)
+/* 803722B0 801D02D0 */ lwz r0, 0x2d0(r29)
+/* 803722B4 7C030000 */ cmpw r3, r0
+/* 803722B8 4081FFE8 */ ble+ lbl_803722a0
+lbl_803722bc:
+/* 803722BC 28050000 */ cmplwi r5, 0
+/* 803722C0 40820034 */ bne- lbl_803722f4
+/* 803722C4 80640004 */ lwz r3, 4(r4)
+/* 803722C8 28030000 */ cmplwi r3, 0
+/* 803722CC 4082000C */ bne- lbl_803722d8
+/* 803722D0 93A40000 */ stw r29, 0(r4)
+/* 803722D4 48000008 */ b lbl_803722dc
+lbl_803722d8:
+/* 803722D8 93A302E0 */ stw r29, 0x2e0(r3)
+lbl_803722dc:
+/* 803722DC 907D02E4 */ stw r3, 0x2e4(r29)
+/* 803722E0 38000000 */ li r0, 0x0
+/* 803722E4 901D02E0 */ stw r0, 0x2e0(r29)
+/* 803722E8 807D02DC */ lwz r3, 0x2dc(r29)
+/* 803722EC 93A30004 */ stw r29, 4(r3)
+/* 803722F0 4800002C */ b lbl_8037231c
+lbl_803722f4:
+/* 803722F4 90BD02E0 */ stw r5, 0x2e0(r29)
+/* 803722F8 806502E4 */ lwz r3, 0x2e4(r5)
+/* 803722FC 93A502E4 */ stw r29, 0x2e4(r5)
+/* 80372300 28030000 */ cmplwi r3, 0
+/* 80372304 907D02E4 */ stw r3, 0x2e4(r29)
+/* 80372308 40820010 */ bne- lbl_80372318
+/* 8037230C 807D02DC */ lwz r3, 0x2dc(r29)
+/* 80372310 93A30000 */ stw r29, 0(r3)
+/* 80372314 48000008 */ b lbl_8037231c
+lbl_80372318:
+/* 80372318 93A302E0 */ stw r29, 0x2e0(r3)
+lbl_8037231c:
+/* 8037231C 807D02F0 */ lwz r3, 0x2f0(r29)
+/* 80372320 28030000 */ cmplwi r3, 0
+/* 80372324 4182003C */ beq- lbl_80372360
+/* 80372328 83A30008 */ lwz r29, 8(r3)
+lbl_8037232c:
+/* 8037232C 801D02CC */ lwz r0, 0x2cc(r29)
+/* 80372330 2C000000 */ cmpwi r0, 0x0
+/* 80372334 4181002C */ bgt- lbl_80372360
+/* 80372338 7FA3EB78 */ mr r3, r29
+/* 8037233C 4BFFF561 */ bl func_8037189c
+/* 80372340 801D02D0 */ lwz r0, 0x2d0(r29)
+/* 80372344 38830000 */ addi r4, r3, 0x0
+/* 80372348 7C002000 */ cmpw r0, r4
+/* 8037234C 41820014 */ beq- lbl_80372360
+/* 80372350 7FA3EB78 */ mr r3, r29
+/* 80372354 4BFFF585 */ bl func_803718d8
+/* 80372358 7C7D1B79 */ or. r29, r3, r3
+/* 8037235C 4082FFD0 */ bne+ lbl_8037232c
+lbl_80372360:
+/* 80372360 800DCA9C */ lwz r0, lbl_805c68bc@sda21(0)
+/* 80372364 2C000000 */ cmpwi r0, 0x0
+/* 80372368 4182000C */ beq- lbl_80372374
+/* 8037236C 38600000 */ li r3, 0x0
+/* 80372370 4BFFF779 */ bl func_80371ae8
+lbl_80372374:
+/* 80372374 7FE3FB78 */ mr r3, r31
+/* 80372378 4BFFC785 */ bl func_8036eafc
+/* 8037237C 7FC3F378 */ mr r3, r30
+/* 80372380 8001002C */ lwz r0, 0x2c(r1)
+/* 80372384 83E10024 */ lwz r31, 0x24(r1)
+/* 80372388 83C10020 */ lwz r30, 0x20(r1)
+/* 8037238C 83A1001C */ lwz r29, 0x1c(r1)
+/* 80372390 38210028 */ addi r1, r1, 0x28
+/* 80372394 7C0803A6 */ mtlr r0
+/* 80372398 4E800020 */ blr
+.size func_80372114, . - func_80372114
+
+
+.global func_8037239c
+.type func_8037239c, @function
+func_8037239c:
+/* 8037239C 7C0802A6 */ mflr r0
+/* 803723A0 90010004 */ stw r0, 4(r1)
+/* 803723A4 9421FFE0 */ stwu r1, -0x20(r1)
+/* 803723A8 93E1001C */ stw r31, 0x1c(r1)
+/* 803723AC 93C10018 */ stw r30, 0x18(r1)
+/* 803723B0 93A10014 */ stw r29, 0x14(r1)
+/* 803723B4 7C7D1B78 */ mr r29, r3
+/* 803723B8 4BFFC71D */ bl func_8036ead4
+/* 803723BC 809D02CC */ lwz r4, 0x2cc(r29)
+/* 803723C0 3BE30000 */ addi r31, r3, 0x0
+/* 803723C4 38040001 */ addi r0, r4, 0x1
+/* 803723C8 7C9E2379 */ or. r30, r4, r4
+/* 803723CC 901D02CC */ stw r0, 0x2cc(r29)
+/* 803723D0 40820114 */ bne- lbl_803724e4
+/* 803723D4 A01D02C8 */ lhz r0, 0x2c8(r29)
+/* 803723D8 2C000003 */ cmpwi r0, 0x3
+/* 803723DC 418200F4 */ beq- lbl_803724d0
+/* 803723E0 40800014 */ bge- lbl_803723f4
+/* 803723E4 2C000001 */ cmpwi r0, 0x1
+/* 803723E8 41820028 */ beq- lbl_80372410
+/* 803723EC 40800014 */ bge- lbl_80372400
+/* 803723F0 480000E0 */ b lbl_803724d0
+lbl_803723f4:
+/* 803723F4 2C000005 */ cmpwi r0, 0x5
+/* 803723F8 408000D8 */ bge- lbl_803724d0
+/* 803723FC 48000020 */ b lbl_8037241c
+lbl_80372400:
+/* 80372400 38000001 */ li r0, 0x1
+/* 80372404 900DCA9C */ stw r0, lbl_805c68bc@sda21(0)
+/* 80372408 B01D02C8 */ sth r0, 0x2c8(r29)
+/* 8037240C 480000C4 */ b lbl_803724d0
+lbl_80372410:
+/* 80372410 7FA3EB78 */ mr r3, r29
+/* 80372414 4BFFF421 */ bl func_80371834
+/* 80372418 480000B8 */ b lbl_803724d0
+lbl_8037241c:
+/* 8037241C 809D02E0 */ lwz r4, 0x2e0(r29)
+/* 80372420 80BD02E4 */ lwz r5, 0x2e4(r29)
+/* 80372424 28040000 */ cmplwi r4, 0
+/* 80372428 40820010 */ bne- lbl_80372438
+/* 8037242C 807D02DC */ lwz r3, 0x2dc(r29)
+/* 80372430 90A30004 */ stw r5, 4(r3)
+/* 80372434 48000008 */ b lbl_8037243c
+lbl_80372438:
+/* 80372438 90A402E4 */ stw r5, 0x2e4(r4)
+lbl_8037243c:
+/* 8037243C 28050000 */ cmplwi r5, 0
+/* 80372440 40820010 */ bne- lbl_80372450
+/* 80372444 807D02DC */ lwz r3, 0x2dc(r29)
+/* 80372448 90830000 */ stw r4, 0(r3)
+/* 8037244C 48000008 */ b lbl_80372454
+lbl_80372450:
+/* 80372450 908502E0 */ stw r4, 0x2e0(r5)
+lbl_80372454:
+/* 80372454 38000020 */ li r0, 0x20
+/* 80372458 901D02D0 */ stw r0, 0x2d0(r29)
+/* 8037245C 809D02DC */ lwz r4, 0x2dc(r29)
+/* 80372460 80640004 */ lwz r3, 4(r4)
+/* 80372464 28030000 */ cmplwi r3, 0
+/* 80372468 4082000C */ bne- lbl_80372474
+/* 8037246C 93A40000 */ stw r29, 0(r4)
+/* 80372470 48000008 */ b lbl_80372478
+lbl_80372474:
+/* 80372474 93A302E0 */ stw r29, 0x2e0(r3)
+lbl_80372478:
+/* 80372478 907D02E4 */ stw r3, 0x2e4(r29)
+/* 8037247C 38000000 */ li r0, 0x0
+/* 80372480 901D02E0 */ stw r0, 0x2e0(r29)
+/* 80372484 807D02DC */ lwz r3, 0x2dc(r29)
+/* 80372488 93A30004 */ stw r29, 4(r3)
+/* 8037248C 807D02F0 */ lwz r3, 0x2f0(r29)
+/* 80372490 28030000 */ cmplwi r3, 0
+/* 80372494 4182003C */ beq- lbl_803724d0
+/* 80372498 83A30008 */ lwz r29, 8(r3)
+lbl_8037249c:
+/* 8037249C 801D02CC */ lwz r0, 0x2cc(r29)
+/* 803724A0 2C000000 */ cmpwi r0, 0x0
+/* 803724A4 4181002C */ bgt- lbl_803724d0
+/* 803724A8 7FA3EB78 */ mr r3, r29
+/* 803724AC 4BFFF3F1 */ bl func_8037189c
+/* 803724B0 801D02D0 */ lwz r0, 0x2d0(r29)
+/* 803724B4 38830000 */ addi r4, r3, 0x0
+/* 803724B8 7C002000 */ cmpw r0, r4
+/* 803724BC 41820014 */ beq- lbl_803724d0
+/* 803724C0 7FA3EB78 */ mr r3, r29
+/* 803724C4 4BFFF415 */ bl func_803718d8
+/* 803724C8 7C7D1B79 */ or. r29, r3, r3
+/* 803724CC 4082FFD0 */ bne+ lbl_8037249c
+lbl_803724d0:
+/* 803724D0 800DCA9C */ lwz r0, lbl_805c68bc@sda21(0)
+/* 803724D4 2C000000 */ cmpwi r0, 0x0
+/* 803724D8 4182000C */ beq- lbl_803724e4
+/* 803724DC 38600000 */ li r3, 0x0
+/* 803724E0 4BFFF609 */ bl func_80371ae8
+lbl_803724e4:
+/* 803724E4 7FE3FB78 */ mr r3, r31
+/* 803724E8 4BFFC615 */ bl func_8036eafc
+/* 803724EC 7FC3F378 */ mr r3, r30
+/* 803724F0 80010024 */ lwz r0, 0x24(r1)
+/* 803724F4 83E1001C */ lwz r31, 0x1c(r1)
+/* 803724F8 83C10018 */ lwz r30, 0x18(r1)
+/* 803724FC 83A10014 */ lwz r29, 0x14(r1)
+/* 80372500 38210020 */ addi r1, r1, 0x20
+/* 80372504 7C0803A6 */ mtlr r0
+/* 80372508 4E800020 */ blr
+.size func_8037239c, . - func_8037239c
+
+
+.global func_8037250c
+.type func_8037250c, @function
+func_8037250c:
+/* 8037250C 7C0802A6 */ mflr r0
+/* 80372510 90010004 */ stw r0, 4(r1)
+/* 80372514 9421FFE8 */ stwu r1, -0x18(r1)
+/* 80372518 93E10014 */ stw r31, 0x14(r1)
+/* 8037251C 93C10010 */ stw r30, 0x10(r1)
+/* 80372520 7C7E1B78 */ mr r30, r3
+/* 80372524 4BFFC5B1 */ bl func_8036ead4
+/* 80372528 3C808000 */ lis r4, 0x8000
+/* 8037252C 808400E4 */ lwz r4, 0xe4(r4)
+/* 80372530 38000004 */ li r0, 0x4
+/* 80372534 7C7F1B78 */ mr r31, r3
+/* 80372538 B00402C8 */ sth r0, 0x2c8(r4)
+/* 8037253C 93C402DC */ stw r30, 0x2dc(r4)
+/* 80372540 80BE0000 */ lwz r5, 0(r30)
+/* 80372544 48000008 */ b lbl_8037254c
+lbl_80372548:
+/* 80372548 80A502E0 */ lwz r5, 0x2e0(r5)
+lbl_8037254c:
+/* 8037254C 28050000 */ cmplwi r5, 0
+/* 80372550 41820014 */ beq- lbl_80372564
+/* 80372554 806502D0 */ lwz r3, 0x2d0(r5)
+/* 80372558 800402D0 */ lwz r0, 0x2d0(r4)
+/* 8037255C 7C030000 */ cmpw r3, r0
+/* 80372560 4081FFE8 */ ble+ lbl_80372548
+lbl_80372564:
+/* 80372564 28050000 */ cmplwi r5, 0
+/* 80372568 40820030 */ bne- lbl_80372598
+/* 8037256C 807E0004 */ lwz r3, 4(r30)
+/* 80372570 28030000 */ cmplwi r3, 0
+/* 80372574 4082000C */ bne- lbl_80372580
+/* 80372578 909E0000 */ stw r4, 0(r30)
+/* 8037257C 48000008 */ b lbl_80372584
+lbl_80372580:
+/* 80372580 908302E0 */ stw r4, 0x2e0(r3)
+lbl_80372584:
+/* 80372584 906402E4 */ stw r3, 0x2e4(r4)
+/* 80372588 38000000 */ li r0, 0x0
+/* 8037258C 900402E0 */ stw r0, 0x2e0(r4)
+/* 80372590 909E0004 */ stw r4, 4(r30)
+/* 80372594 48000028 */ b lbl_803725bc
+lbl_80372598:
+/* 80372598 90A402E0 */ stw r5, 0x2e0(r4)
+/* 8037259C 806502E4 */ lwz r3, 0x2e4(r5)
+/* 803725A0 908502E4 */ stw r4, 0x2e4(r5)
+/* 803725A4 28030000 */ cmplwi r3, 0
+/* 803725A8 906402E4 */ stw r3, 0x2e4(r4)
+/* 803725AC 4082000C */ bne- lbl_803725b8
+/* 803725B0 909E0000 */ stw r4, 0(r30)
+/* 803725B4 48000008 */ b lbl_803725bc
+lbl_803725b8:
+/* 803725B8 908302E0 */ stw r4, 0x2e0(r3)
+lbl_803725bc:
+/* 803725BC 38000001 */ li r0, 0x1
+/* 803725C0 900DCA9C */ stw r0, lbl_805c68bc@sda21(0)
+/* 803725C4 800DCA9C */ lwz r0, lbl_805c68bc@sda21(0)
+/* 803725C8 2C000000 */ cmpwi r0, 0x0
+/* 803725CC 4182000C */ beq- lbl_803725d8
+/* 803725D0 38600000 */ li r3, 0x0
+/* 803725D4 4BFFF515 */ bl func_80371ae8
+lbl_803725d8:
+/* 803725D8 7FE3FB78 */ mr r3, r31
+/* 803725DC 4BFFC521 */ bl func_8036eafc
+/* 803725E0 8001001C */ lwz r0, 0x1c(r1)
+/* 803725E4 83E10014 */ lwz r31, 0x14(r1)
+/* 803725E8 83C10010 */ lwz r30, 0x10(r1)
+/* 803725EC 38210018 */ addi r1, r1, 0x18
+/* 803725F0 7C0803A6 */ mtlr r0
+/* 803725F4 4E800020 */ blr
+.size func_8037250c, . - func_8037250c
+
+
+.global func_803725f8
+.type func_803725f8, @function
+func_803725f8:
+/* 803725F8 7C0802A6 */ mflr r0
+/* 803725FC 90010004 */ stw r0, 4(r1)
+/* 80372600 9421FFE8 */ stwu r1, -0x18(r1)
+/* 80372604 93E10014 */ stw r31, 0x14(r1)
+/* 80372608 93C10010 */ stw r30, 0x10(r1)
+/* 8037260C 7C7E1B78 */ mr r30, r3
+/* 80372610 4BFFC4C5 */ bl func_8036ead4
+/* 80372614 3C808054 */ lis r4, lbl_8053ecf8@ha
+/* 80372618 3BE30000 */ addi r31, r3, 0x0
+/* 8037261C 38A4ECF8 */ addi r5, r4, lbl_8053ecf8@l
+/* 80372620 4800009C */ b lbl_803726bc
+lbl_80372624:
+/* 80372624 806602E0 */ lwz r3, 0x2e0(r6)
+/* 80372628 28030000 */ cmplwi r3, 0
+/* 8037262C 40820010 */ bne- lbl_8037263c
+/* 80372630 38000000 */ li r0, 0x0
+/* 80372634 901E0004 */ stw r0, 4(r30)
+/* 80372638 4800000C */ b lbl_80372644
+lbl_8037263c:
+/* 8037263C 38000000 */ li r0, 0x0
+/* 80372640 900302E4 */ stw r0, 0x2e4(r3)
+lbl_80372644:
+/* 80372644 907E0000 */ stw r3, 0(r30)
+/* 80372648 38000001 */ li r0, 0x1
+/* 8037264C B00602C8 */ sth r0, 0x2c8(r6)
+/* 80372650 800602CC */ lwz r0, 0x2cc(r6)
+/* 80372654 2C000000 */ cmpwi r0, 0x0
+/* 80372658 41810064 */ bgt- lbl_803726bc
+/* 8037265C 800602D0 */ lwz r0, 0x2d0(r6)
+/* 80372660 54001838 */ slwi r0, r0, 3
+/* 80372664 7C050214 */ add r0, r5, r0
+/* 80372668 900602DC */ stw r0, 0x2dc(r6)
+/* 8037266C 808602DC */ lwz r4, 0x2dc(r6)
+/* 80372670 80640004 */ lwz r3, 4(r4)
+/* 80372674 28030000 */ cmplwi r3, 0
+/* 80372678 4082000C */ bne- lbl_80372684
+/* 8037267C 90C40000 */ stw r6, 0(r4)
+/* 80372680 48000008 */ b lbl_80372688
+lbl_80372684:
+/* 80372684 90C302E0 */ stw r6, 0x2e0(r3)
+lbl_80372688:
+/* 80372688 906602E4 */ stw r3, 0x2e4(r6)
+/* 8037268C 38000000 */ li r0, 0x0
+/* 80372690 38600001 */ li r3, 0x1
+/* 80372694 900602E0 */ stw r0, 0x2e0(r6)
+/* 80372698 808602DC */ lwz r4, 0x2dc(r6)
+/* 8037269C 90C40004 */ stw r6, 4(r4)
+/* 803726A0 800602D0 */ lwz r0, 0x2d0(r6)
+/* 803726A4 808DCA98 */ lwz r4, lbl_805c68b8@sda21(0)
+/* 803726A8 2000001F */ subfic r0, r0, 0x1f
+/* 803726AC 7C600030 */ slw r0, r3, r0
+/* 803726B0 7C800378 */ or r0, r4, r0
+/* 803726B4 900DCA98 */ stw r0, lbl_805c68b8@sda21(0)
+/* 803726B8 906DCA9C */ stw r3, lbl_805c68bc@sda21(0)
+lbl_803726bc:
+/* 803726BC 80DE0000 */ lwz r6, 0(r30)
+/* 803726C0 28060000 */ cmplwi r6, 0
+/* 803726C4 4082FF60 */ bne+ lbl_80372624
+/* 803726C8 800DCA9C */ lwz r0, lbl_805c68bc@sda21(0)
+/* 803726CC 2C000000 */ cmpwi r0, 0x0
+/* 803726D0 4182000C */ beq- lbl_803726dc
+/* 803726D4 38600000 */ li r3, 0x0
+/* 803726D8 4BFFF411 */ bl func_80371ae8
+lbl_803726dc:
+/* 803726DC 7FE3FB78 */ mr r3, r31
+/* 803726E0 4BFFC41D */ bl func_8036eafc
+/* 803726E4 8001001C */ lwz r0, 0x1c(r1)
+/* 803726E8 83E10014 */ lwz r31, 0x14(r1)
+/* 803726EC 83C10010 */ lwz r30, 0x10(r1)
+/* 803726F0 38210018 */ addi r1, r1, 0x18
+/* 803726F4 7C0803A6 */ mtlr r0
+/* 803726F8 4E800020 */ blr
+.size func_803725f8, . - func_803725f8
+
+
+.global func_803726fc
+.type func_803726fc, @function
+func_803726fc:
+/* 803726FC 7C0802A6 */ mflr r0
+/* 80372700 90010004 */ stw r0, 4(r1)
+/* 80372704 9421FFE0 */ stwu r1, -0x20(r1)
+/* 80372708 93E1001C */ stw r31, 0x1c(r1)
+/* 8037270C 7C9F2379 */ or. r31, r4, r4
+/* 80372710 93C10018 */ stw r30, 0x18(r1)
+/* 80372714 93A10014 */ stw r29, 0x14(r1)
+/* 80372718 3BA30000 */ addi r29, r3, 0x0
+/* 8037271C 4180000C */ blt- lbl_80372728
+/* 80372720 2C1F001F */ cmpwi r31, 0x1f
+/* 80372724 4081000C */ ble- lbl_80372730
+lbl_80372728:
+/* 80372728 38600000 */ li r3, 0x0
+/* 8037272C 48000074 */ b lbl_803727a0
+lbl_80372730:
+/* 80372730 4BFFC3A5 */ bl func_8036ead4
+/* 80372734 801D02D4 */ lwz r0, 0x2d4(r29)
+/* 80372738 3BC30000 */ addi r30, r3, 0x0
+/* 8037273C 7C00F800 */ cmpw r0, r31
+/* 80372740 41820054 */ beq- lbl_80372794
+/* 80372744 93FD02D4 */ stw r31, 0x2d4(r29)
+/* 80372748 7FBFEB78 */ mr r31, r29
+lbl_8037274c:
+/* 8037274C 801F02CC */ lwz r0, 0x2cc(r31)
+/* 80372750 2C000000 */ cmpwi r0, 0x0
+/* 80372754 4181002C */ bgt- lbl_80372780
+/* 80372758 7FE3FB78 */ mr r3, r31
+/* 8037275C 4BFFF141 */ bl func_8037189c
+/* 80372760 801F02D0 */ lwz r0, 0x2d0(r31)
+/* 80372764 38830000 */ addi r4, r3, 0x0
+/* 80372768 7C002000 */ cmpw r0, r4
+/* 8037276C 41820014 */ beq- lbl_80372780
+/* 80372770 7FE3FB78 */ mr r3, r31
+/* 80372774 4BFFF165 */ bl func_803718d8
+/* 80372778 7C7F1B79 */ or. r31, r3, r3
+/* 8037277C 4082FFD0 */ bne+ lbl_8037274c
+lbl_80372780:
+/* 80372780 800DCA9C */ lwz r0, lbl_805c68bc@sda21(0)
+/* 80372784 2C000000 */ cmpwi r0, 0x0
+/* 80372788 4182000C */ beq- lbl_80372794
+/* 8037278C 38600000 */ li r3, 0x0
+/* 80372790 4BFFF359 */ bl func_80371ae8
+lbl_80372794:
+/* 80372794 7FC3F378 */ mr r3, r30
+/* 80372798 4BFFC365 */ bl func_8036eafc
+/* 8037279C 38600001 */ li r3, 0x1
+lbl_803727a0:
+/* 803727A0 80010024 */ lwz r0, 0x24(r1)
+/* 803727A4 83E1001C */ lwz r31, 0x1c(r1)
+/* 803727A8 83C10018 */ lwz r30, 0x18(r1)
+/* 803727AC 83A10014 */ lwz r29, 0x14(r1)
+/* 803727B0 38210020 */ addi r1, r1, 0x20
+/* 803727B4 7C0803A6 */ mtlr r0
+/* 803727B8 4E800020 */ blr
+.size func_803726fc, . - func_803726fc
+
+
+.global func_803727bc
+.type func_803727bc, @function
+func_803727bc:
+/* 803727BC 806302D4 */ lwz r3, 0x2d4(r3)
+/* 803727C0 4E800020 */ blr
+.size func_803727bc, . - func_803727bc
+
diff --git a/asm/Dolphin/os/OSTime-data.s b/asm/Dolphin/os/OSTime-data.s
new file mode 100644
index 0000000..dc26c61
--- /dev/null
+++ b/asm/Dolphin/os/OSTime-data.s
@@ -0,0 +1,41 @@
+.include "macros.inc"
+
+.section .data
+
+.balign 8
+
+.global lbl_804ef5a8
+.type lbl_804ef5a8, @object
+lbl_804ef5a8:
+/* 804EF5A8 00000000 */ .4byte 0x00000000
+/* 804EF5AC 0000001F */ .4byte 0x0000001f
+/* 804EF5B0 0000003B */ .4byte 0x0000003b
+/* 804EF5B4 0000005A */ .4byte 0x0000005a
+/* 804EF5B8 00000078 */ .4byte 0x00000078
+/* 804EF5BC 00000097 */ .4byte 0x00000097
+/* 804EF5C0 000000B5 */ .4byte 0x000000b5
+/* 804EF5C4 000000D4 */ .4byte 0x000000d4
+/* 804EF5C8 000000F3 */ .4byte 0x000000f3
+/* 804EF5CC 00000111 */ .4byte 0x00000111
+/* 804EF5D0 00000130 */ .4byte 0x00000130
+/* 804EF5D4 0000014E */ .4byte 0x0000014e
+.size lbl_804ef5a8, . - lbl_804ef5a8
+
+
+.global lbl_804ef5d8
+.type lbl_804ef5d8, @object
+lbl_804ef5d8:
+/* 804EF5D8 00000000 */ .4byte 0x00000000
+/* 804EF5DC 0000001F */ .4byte 0x0000001f
+/* 804EF5E0 0000003C */ .4byte 0x0000003c
+/* 804EF5E4 0000005B */ .4byte 0x0000005b
+/* 804EF5E8 00000079 */ .4byte 0x00000079
+/* 804EF5EC 00000098 */ .4byte 0x00000098
+/* 804EF5F0 000000B6 */ .4byte 0x000000b6
+/* 804EF5F4 000000D5 */ .4byte 0x000000d5
+/* 804EF5F8 000000F4 */ .4byte 0x000000f4
+/* 804EF5FC 00000112 */ .4byte 0x00000112
+/* 804EF600 00000131 */ .4byte 0x00000131
+/* 804EF604 0000014F */ .4byte 0x0000014f
+.size lbl_804ef5d8, . - lbl_804ef5d8
+
diff --git a/asm/Dolphin/os/OSTime.s b/asm/Dolphin/os/OSTime.s
new file mode 100644
index 0000000..f12669d
--- /dev/null
+++ b/asm/Dolphin/os/OSTime.s
@@ -0,0 +1,312 @@
+.include "macros.inc"
+
+.section .text
+
+.global func_803727c4
+.type func_803727c4, @function
+func_803727c4:
+/* 803727C4 7C6D42E6 */ mftbu r3
+/* 803727C8 7C8C42E6 */ mftb r4, 0x10c
+/* 803727CC 7CAD42E6 */ mftbu r5
+/* 803727D0 7C032800 */ cmpw r3, r5
+/* 803727D4 4082FFF0 */ bne- func_803727c4
+/* 803727D8 4E800020 */ blr
+.size func_803727c4, . - func_803727c4
+
+
+.global func_803727dc
+.type func_803727dc, @function
+func_803727dc:
+/* 803727DC 7C6C42E6 */ mftb r3, 0x10c
+/* 803727E0 4E800020 */ blr
+.size func_803727dc, . - func_803727dc
+
+
+.global func_803727e4
+.type func_803727e4, @function
+func_803727e4:
+/* 803727E4 7C0802A6 */ mflr r0
+/* 803727E8 90010004 */ stw r0, 4(r1)
+/* 803727EC 9421FFE0 */ stwu r1, -0x20(r1)
+/* 803727F0 93E1001C */ stw r31, 0x1c(r1)
+/* 803727F4 93C10018 */ stw r30, 0x18(r1)
+/* 803727F8 93A10014 */ stw r29, 0x14(r1)
+/* 803727FC 4BFFC2D9 */ bl func_8036ead4
+/* 80372800 7C7F1B78 */ mr r31, r3
+/* 80372804 4BFFFFC1 */ bl func_803727c4
+/* 80372808 3CC08000 */ lis r6, 0x8000
+/* 8037280C 80A630DC */ lwz r5, 0x30dc(r6)
+/* 80372810 800630D8 */ lwz r0, 0x30d8(r6)
+/* 80372814 7FA52014 */ addc r29, r5, r4
+/* 80372818 7FC01914 */ adde r30, r0, r3
+/* 8037281C 7FE3FB78 */ mr r3, r31
+/* 80372820 4BFFC2DD */ bl func_8036eafc
+/* 80372824 7FA4EB78 */ mr r4, r29
+/* 80372828 7FC3F378 */ mr r3, r30
+/* 8037282C 80010024 */ lwz r0, 0x24(r1)
+/* 80372830 83E1001C */ lwz r31, 0x1c(r1)
+/* 80372834 83C10018 */ lwz r30, 0x18(r1)
+/* 80372838 83A10014 */ lwz r29, 0x14(r1)
+/* 8037283C 38210020 */ addi r1, r1, 0x20
+/* 80372840 7C0803A6 */ mtlr r0
+/* 80372844 4E800020 */ blr
+.size func_803727e4, . - func_803727e4
+
+
+.global func_80372848
+.type func_80372848, @function
+func_80372848:
+/* 80372848 3CA09249 */ lis r5, 0x9249
+/* 8037284C 38052493 */ addi r0, r5, 0x2493
+/* 80372850 38E30006 */ addi r7, r3, 0x6
+/* 80372854 7CC03896 */ mulhw r6, r0, r7
+/* 80372858 3CA0B38D */ lis r5, 0xb38d
+/* 8037285C 3805F9B1 */ addi r0, r5, -0x64f
+/* 80372860 7C001896 */ mulhw r0, r0, r3
+/* 80372864 7CA63A14 */ add r5, r6, r7
+/* 80372868 7CA51670 */ srawi r5, r5, 2
+/* 8037286C 54A60FFE */ srwi r6, r5, 0x1f
+/* 80372870 7CA53214 */ add r5, r5, r6
+/* 80372874 7C001A14 */ add r0, r0, r3
+/* 80372878 1CC50007 */ mulli r6, r5, 0x7
+/* 8037287C 7C004670 */ srawi r0, r0, 8
+/* 80372880 54050FFE */ srwi r5, r0, 0x1f
+/* 80372884 7CA02A14 */ add r5, r0, r5
+/* 80372888 7C063850 */ subf r0, r6, r7
+/* 8037288C 1D65016D */ mulli r11, r5, 0x16d
+/* 80372890 90040018 */ stw r0, 0x18(r4)
+/* 80372894 48000004 */ b lbl_80372898
+lbl_80372898:
+/* 80372898 3CC051EC */ lis r6, 0x51ec
+/* 8037289C 3946851F */ addi r10, r6, -0x7ae1
+/* 803728A0 48000004 */ b lbl_803728a4
+lbl_803728a4:
+/* 803728A4 4800000C */ b lbl_803728b0
+lbl_803728a8:
+/* 803728A8 396BFE93 */ addi r11, r11, -0x16d
+/* 803728AC 38A5FFFF */ addi r5, r5, -0x1
+lbl_803728b0:
+/* 803728B0 2C050001 */ cmpwi r5, 0x1
+/* 803728B4 4080000C */ bge- lbl_803728c0
+/* 803728B8 38000000 */ li r0, 0x0
+/* 803728BC 48000038 */ b lbl_803728f4
+lbl_803728c0:
+/* 803728C0 3805FFFF */ addi r0, r5, -0x1
+/* 803728C4 7C0A0096 */ mulhw r0, r10, r0
+/* 803728C8 7C083E70 */ srawi r8, r0, 7
+/* 803728CC 7C062E70 */ srawi r6, r0, 5
+/* 803728D0 38050003 */ addi r0, r5, 0x3
+/* 803728D4 54C70FFE */ srwi r7, r6, 0x1f
+/* 803728D8 7C001670 */ srawi r0, r0, 2
+/* 803728DC 55090FFE */ srwi r9, r8, 0x1f
+/* 803728E0 7CC63A14 */ add r6, r6, r7
+/* 803728E4 7C000194 */ addze r0, r0
+/* 803728E8 7CE84A14 */ add r7, r8, r9
+/* 803728EC 7C060050 */ subf r0, r6, r0
+/* 803728F0 7C070214 */ add r0, r7, r0
+lbl_803728f4:
+/* 803728F4 7C0B0214 */ add r0, r11, r0
+/* 803728F8 7C030000 */ cmpw r3, r0
+/* 803728FC 4180FFAC */ blt+ lbl_803728a8
+/* 80372900 7CA61670 */ srawi r6, r5, 2
+/* 80372904 90A40014 */ stw r5, 0x14(r4)
+/* 80372908 7CC60194 */ addze r6, r6
+/* 8037290C 54C6103A */ slwi r6, r6, 2
+/* 80372910 7CC62810 */ subfc r6, r6, r5
+/* 80372914 7C001850 */ subf r0, r0, r3
+/* 80372918 2C060000 */ cmpwi r6, 0x0
+/* 8037291C 9004001C */ stw r0, 0x1c(r4)
+/* 80372920 38E00001 */ li r7, 0x1
+/* 80372924 39000000 */ li r8, 0x0
+/* 80372928 40820030 */ bne- lbl_80372958
+/* 8037292C 3C6051EC */ lis r3, 0x51ec
+/* 80372930 3863851F */ addi r3, r3, -0x7ae1
+/* 80372934 7C632896 */ mulhw r3, r3, r5
+/* 80372938 7C632E70 */ srawi r3, r3, 5
+/* 8037293C 54660FFE */ srwi r6, r3, 0x1f
+/* 80372940 7C633214 */ add r3, r3, r6
+/* 80372944 1C630064 */ mulli r3, r3, 0x64
+/* 80372948 7C632850 */ subf r3, r3, r5
+/* 8037294C 2C030000 */ cmpwi r3, 0x0
+/* 80372950 41820008 */ beq- lbl_80372958
+/* 80372954 7CE83B78 */ mr r8, r7
+lbl_80372958:
+/* 80372958 2C080000 */ cmpwi r8, 0x0
+/* 8037295C 40820030 */ bne- lbl_8037298c
+/* 80372960 3C6051EC */ lis r3, 0x51ec
+/* 80372964 3863851F */ addi r3, r3, -0x7ae1
+/* 80372968 7C632896 */ mulhw r3, r3, r5
+/* 8037296C 7C633E70 */ srawi r3, r3, 7
+/* 80372970 54660FFE */ srwi r6, r3, 0x1f
+/* 80372974 7C633214 */ add r3, r3, r6
+/* 80372978 1C630190 */ mulli r3, r3, 0x190
+/* 8037297C 7C632850 */ subf r3, r3, r5
+/* 80372980 2C030000 */ cmpwi r3, 0x0
+/* 80372984 41820008 */ beq- lbl_8037298c
+/* 80372988 38E00000 */ li r7, 0x0
+lbl_8037298c:
+/* 8037298C 2C070000 */ cmpwi r7, 0x0
+/* 80372990 41820010 */ beq- lbl_803729a0
+/* 80372994 3C60804F */ lis r3, lbl_804ef5d8@ha
+/* 80372998 38C3F5D8 */ addi r6, r3, lbl_804ef5d8@l
+/* 8037299C 4800000C */ b lbl_803729a8
+lbl_803729a0:
+/* 803729A0 3C60804F */ lis r3, lbl_804ef5a8@ha
+/* 803729A4 38C3F5A8 */ addi r6, r3, lbl_804ef5a8@l
+lbl_803729a8:
+/* 803729A8 38E0000C */ li r7, 0xc
+/* 803729AC 38600030 */ li r3, 0x30
+/* 803729B0 48000004 */ b lbl_803729b4
+lbl_803729b4:
+/* 803729B4 48000004 */ b lbl_803729b8
+lbl_803729b8:
+/* 803729B8 3863FFFC */ addi r3, r3, -0x4
+/* 803729BC 7CA6182E */ lwzx r5, r6, r3
+/* 803729C0 38E7FFFF */ addi r7, r7, -0x1
+/* 803729C4 7C002800 */ cmpw r0, r5
+/* 803729C8 4180FFF0 */ blt+ lbl_803729b8
+/* 803729CC 90E40010 */ stw r7, 0x10(r4)
+/* 803729D0 7C66182E */ lwzx r3, r6, r3
+/* 803729D4 7C630050 */ subf r3, r3, r0
+/* 803729D8 38030001 */ addi r0, r3, 0x1
+/* 803729DC 9004000C */ stw r0, 0xc(r4)
+/* 803729E0 4E800020 */ blr
+.size func_80372848, . - func_80372848
+
+
+.global func_803729e4
+.type func_803729e4, @function
+func_803729e4:
+/* 803729E4 7C0802A6 */ mflr r0
+/* 803729E8 90010004 */ stw r0, 4(r1)
+/* 803729EC 9421FFC8 */ stwu r1, -0x38(r1)
+/* 803729F0 BF21001C */ stmw r25, 0x1c(r1)
+/* 803729F4 7C7D1B78 */ mr r29, r3
+/* 803729F8 7C9E2378 */ mr r30, r4
+/* 803729FC 7CBF2B78 */ mr r31, r5
+/* 80372A00 3F608000 */ lis r27, 0x8000
+/* 80372A04 801B00F8 */ lwz r0, 0xf8(r27)
+/* 80372A08 7FA3EB78 */ mr r3, r29
+/* 80372A0C 7FC4F378 */ mr r4, r30
+/* 80372A10 5406F0BE */ srwi r6, r0, 2
+/* 80372A14 38A00000 */ li r5, 0x0
+/* 80372A18 48020DB5 */ bl func_803937cc
+/* 80372A1C 7C7A1B78 */ mr r26, r3
+/* 80372A20 38A00000 */ li r5, 0x0
+/* 80372A24 7C992378 */ mr r25, r4
+/* 80372A28 6F448000 */ xoris r4, r26, 0x8000
+/* 80372A2C 6CA38000 */ xoris r3, r5, 0x8000
+/* 80372A30 7C05C810 */ subfc r0, r5, r25
+/* 80372A34 7C632110 */ subfe r3, r3, r4
+/* 80372A38 7C642110 */ subfe r3, r4, r4
+/* 80372A3C 7C6300D0 */ neg r3, r3
+/* 80372A40 2C030000 */ cmpwi r3, 0x0
+/* 80372A44 41820014 */ beq- lbl_80372a58
+/* 80372A48 801B00F8 */ lwz r0, 0xf8(r27)
+/* 80372A4C 5400F0BE */ srwi r0, r0, 2
+/* 80372A50 7F390014 */ addc r25, r25, r0
+/* 80372A54 7F5A2914 */ adde r26, r26, r5
+lbl_80372a58:
+/* 80372A58 38800008 */ li r4, 0x8
+/* 80372A5C 7C7A21D6 */ mullw r3, r26, r4
+/* 80372A60 7C192016 */ mulhwu r0, r25, r4
+/* 80372A64 3F608000 */ lis r27, 0x8000
+/* 80372A68 80DB00F8 */ lwz r6, 0xf8(r27)
+/* 80372A6C 3CA0431C */ lis r5, 0x431c
+/* 80372A70 38A5DE83 */ addi r5, r5, -0x217d
+/* 80372A74 54C6F0BE */ srwi r6, r6, 2
+/* 80372A78 7CA53016 */ mulhwu r5, r5, r6
+/* 80372A7C 54A68BFE */ srwi r6, r5, 0xf
+/* 80372A80 3B800000 */ li r28, 0x0
+/* 80372A84 7C630214 */ add r3, r3, r0
+/* 80372A88 7C19E1D6 */ mullw r0, r25, r28
+/* 80372A8C 7C9921D6 */ mullw r4, r25, r4
+/* 80372A90 7C630214 */ add r3, r3, r0
+/* 80372A94 38A00000 */ li r5, 0x0
+/* 80372A98 48020B19 */ bl func_803935b0
+/* 80372A9C 38A00000 */ li r5, 0x0
+/* 80372AA0 38C003E8 */ li r6, 0x3e8
+/* 80372AA4 48020D29 */ bl func_803937cc
+/* 80372AA8 909F0024 */ stw r4, 0x24(r31)
+/* 80372AAC 3C601062 */ lis r3, 0x1062
+/* 80372AB0 38A34DD3 */ addi r5, r3, 0x4dd3
+/* 80372AB4 801B00F8 */ lwz r0, 0xf8(r27)
+/* 80372AB8 7F43D378 */ mr r3, r26
+/* 80372ABC 7F24CB78 */ mr r4, r25
+/* 80372AC0 5400F0BE */ srwi r0, r0, 2
+/* 80372AC4 7C050016 */ mulhwu r0, r5, r0
+/* 80372AC8 5406D1BE */ srwi r6, r0, 6
+/* 80372ACC 38A00000 */ li r5, 0x0
+/* 80372AD0 48020AE1 */ bl func_803935b0
+/* 80372AD4 38A00000 */ li r5, 0x0
+/* 80372AD8 38C003E8 */ li r6, 0x3e8
+/* 80372ADC 48020CF1 */ bl func_803937cc
+/* 80372AE0 909F0020 */ stw r4, 0x20(r31)
+/* 80372AE4 7FD9F010 */ subfc r30, r25, r30
+/* 80372AE8 7FBAE910 */ subfe r29, r26, r29
+/* 80372AEC 801B00F8 */ lwz r0, 0xf8(r27)
+/* 80372AF0 3CA00001 */ lis r5, 1
+/* 80372AF4 3B255180 */ addi r25, r5, 0x5180
+/* 80372AF8 7FA3EB78 */ mr r3, r29
+/* 80372AFC 5406F0BE */ srwi r6, r0, 2
+/* 80372B00 7FC4F378 */ mr r4, r30
+/* 80372B04 38A00000 */ li r5, 0x0
+/* 80372B08 48020AA9 */ bl func_803935b0
+/* 80372B0C 7F26CB78 */ mr r6, r25
+/* 80372B10 38A00000 */ li r5, 0x0
+/* 80372B14 48020A9D */ bl func_803935b0
+/* 80372B18 3CA0000B */ lis r5, 0xb
+/* 80372B1C 801B00F8 */ lwz r0, 0xf8(r27)
+/* 80372B20 38A52575 */ addi r5, r5, 0x2575
+/* 80372B24 7F442814 */ addc r26, r4, r5
+/* 80372B28 5406F0BE */ srwi r6, r0, 2
+/* 80372B2C 7C03E114 */ adde r0, r3, r28
+/* 80372B30 7FA3EB78 */ mr r3, r29
+/* 80372B34 7FC4F378 */ mr r4, r30
+/* 80372B38 38A00000 */ li r5, 0x0
+/* 80372B3C 48020A75 */ bl func_803935b0
+/* 80372B40 7F26CB78 */ mr r6, r25
+/* 80372B44 38A00000 */ li r5, 0x0
+/* 80372B48 48020C85 */ bl func_803937cc
+/* 80372B4C 7C9B2378 */ mr r27, r4
+/* 80372B50 2C1B0000 */ cmpwi r27, 0x0
+/* 80372B54 40800010 */ bge- lbl_80372b64
+/* 80372B58 3F7B0001 */ addis r27, r27, 1
+/* 80372B5C 3B5AFFFF */ addi r26, r26, -0x1
+/* 80372B60 3B7B5180 */ addi r27, r27, 0x5180
+lbl_80372b64:
+/* 80372B64 7F43D378 */ mr r3, r26
+/* 80372B68 7FE4FB78 */ mr r4, r31
+/* 80372B6C 4BFFFCDD */ bl func_80372848
+/* 80372B70 3C608889 */ lis r3, 0x8889
+/* 80372B74 38A38889 */ addi r5, r3, -0x7777
+/* 80372B78 7C05D896 */ mulhw r0, r5, r27
+/* 80372B7C 7C80DA14 */ add r4, r0, r27
+/* 80372B80 7C802E70 */ srawi r0, r4, 5
+/* 80372B84 54030FFE */ srwi r3, r0, 0x1f
+/* 80372B88 7CE01A14 */ add r7, r0, r3
+/* 80372B8C 7C053896 */ mulhw r0, r5, r7
+/* 80372B90 7C003A14 */ add r0, r0, r7
+/* 80372B94 7C052E70 */ srawi r5, r0, 5
+/* 80372B98 7C002E70 */ srawi r0, r0, 5
+/* 80372B9C 54030FFE */ srwi r3, r0, 0x1f
+/* 80372BA0 7C601A14 */ add r3, r0, r3
+/* 80372BA4 7C802E70 */ srawi r0, r4, 5
+/* 80372BA8 54A60FFE */ srwi r6, r5, 0x1f
+/* 80372BAC 1C83003C */ mulli r4, r3, 0x3c
+/* 80372BB0 54030FFE */ srwi r3, r0, 0x1f
+/* 80372BB4 7CA53214 */ add r5, r5, r6
+/* 80372BB8 7C001A14 */ add r0, r0, r3
+/* 80372BBC 90BF0008 */ stw r5, 8(r31)
+/* 80372BC0 1C00003C */ mulli r0, r0, 0x3c
+/* 80372BC4 7C643850 */ subf r3, r4, r7
+/* 80372BC8 907F0004 */ stw r3, 4(r31)
+/* 80372BCC 7C00D850 */ subf r0, r0, r27
+/* 80372BD0 901F0000 */ stw r0, 0(r31)
+/* 80372BD4 BB21001C */ lmw r25, 0x1c(r1)
+/* 80372BD8 8001003C */ lwz r0, 0x3c(r1)
+/* 80372BDC 38210038 */ addi r1, r1, 0x38
+/* 80372BE0 7C0803A6 */ mtlr r0
+/* 80372BE4 4E800020 */ blr
+.size func_803729e4, . - func_803729e4
+