summaryrefslogtreecommitdiff
path: root/asm/Dolphin/os/OSInterrupt.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/Dolphin/os/OSInterrupt.s')
-rw-r--r--asm/Dolphin/os/OSInterrupt.s696
1 files changed, 696 insertions, 0 deletions
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
+