summaryrefslogtreecommitdiff
path: root/asm/code_80246CCC.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/code_80246CCC.s')
-rw-r--r--asm/code_80246CCC.s263
1 files changed, 263 insertions, 0 deletions
diff --git a/asm/code_80246CCC.s b/asm/code_80246CCC.s
new file mode 100644
index 0000000..0c6abf0
--- /dev/null
+++ b/asm/code_80246CCC.s
@@ -0,0 +1,263 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global func_80246CCC
+func_80246CCC:
+/* 80246CCC 0024292C 80 0D A5 18 */ lwz r0, lbl_8063F7D8-_SDA_BASE_(r13)
+/* 80246CD0 00242930 54 03 18 38 */ slwi r3, r0, 3
+/* 80246CD4 00242934 4E 80 00 20 */ blr
+
+.global func_80246CD8
+func_80246CD8:
+/* 80246CD8 00242938 80 0D A5 18 */ lwz r0, lbl_8063F7D8-_SDA_BASE_(r13)
+/* 80246CDC 0024293C 54 03 10 3A */ slwi r3, r0, 2
+/* 80246CE0 00242940 4E 80 00 20 */ blr
+
+.global func_80246CE4
+func_80246CE4:
+/* 80246CE4 00242944 80 6D A5 18 */ lwz r3, lbl_8063F7D8-_SDA_BASE_(r13)
+/* 80246CE8 00242948 4E 80 00 20 */ blr
+
+.global func_80246CEC
+func_80246CEC:
+/* 80246CEC 0024294C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80246CF0 00242950 7C 08 02 A6 */ mflr r0
+/* 80246CF4 00242954 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80246CF8 00242958 39 61 00 20 */ addi r11, r1, 0x20
+/* 80246CFC 0024295C 4B F8 04 29 */ bl _savegpr_26
+/* 80246D00 00242960 2C 03 00 00 */ cmpwi r3, 0
+/* 80246D04 00242964 7C 7A 1B 78 */ mr r26, r3
+/* 80246D08 00242968 41 82 00 7C */ beq lbl_80246D84
+/* 80246D0C 0024296C 80 03 00 10 */ lwz r0, 0x10(r3)
+/* 80246D10 00242970 2C 00 00 04 */ cmpwi r0, 4
+/* 80246D14 00242974 40 82 00 70 */ bne lbl_80246D84
+/* 80246D18 00242978 48 02 7A 45 */ bl OSDisableInterrupts
+/* 80246D1C 0024297C 7C 7C 1B 78 */ mr r28, r3
+/* 80246D20 00242980 7F 43 D3 78 */ mr r3, r26
+/* 80246D24 00242984 4B FF F1 8D */ bl func_80245EB0
+/* 80246D28 00242988 2C 03 00 00 */ cmpwi r3, 0
+/* 80246D2C 0024298C 7C 7D 1B 78 */ mr r29, r3
+/* 80246D30 00242990 41 82 00 4C */ beq lbl_80246D7C
+/* 80246D34 00242994 3B 60 00 00 */ li r27, 0
+/* 80246D38 00242998 3B E0 00 00 */ li r31, 0
+/* 80246D3C 0024299C 48 00 00 34 */ b lbl_80246D70
+lbl_80246D40:
+/* 80246D40 002429A0 7F 43 D3 78 */ mr r3, r26
+/* 80246D44 002429A4 7F 64 DB 78 */ mr r4, r27
+/* 80246D48 002429A8 4B FF F1 99 */ bl func_80245EE0
+/* 80246D4C 002429AC 2C 03 00 00 */ cmpwi r3, 0
+/* 80246D50 002429B0 7C 7E 1B 78 */ mr r30, r3
+/* 80246D54 002429B4 41 82 00 18 */ beq lbl_80246D6C
+/* 80246D58 002429B8 80 63 00 2C */ lwz r3, 0x2c(r3)
+/* 80246D5C 002429BC 2C 03 00 00 */ cmpwi r3, 0
+/* 80246D60 002429C0 41 82 00 0C */ beq lbl_80246D6C
+/* 80246D64 002429C4 4B FF E1 0D */ bl func_80244E70
+/* 80246D68 002429C8 93 FE 00 2C */ stw r31, 0x2c(r30)
+lbl_80246D6C:
+/* 80246D6C 002429CC 3B 7B 00 01 */ addi r27, r27, 1
+lbl_80246D70:
+/* 80246D70 002429D0 80 1D 00 0C */ lwz r0, 0xc(r29)
+/* 80246D74 002429D4 7C 1B 00 40 */ cmplw r27, r0
+/* 80246D78 002429D8 41 80 FF C8 */ blt lbl_80246D40
+lbl_80246D7C:
+/* 80246D7C 002429DC 7F 83 E3 78 */ mr r3, r28
+/* 80246D80 002429E0 48 02 7A 05 */ bl OSRestoreInterrupts
+lbl_80246D84:
+/* 80246D84 002429E4 39 61 00 20 */ addi r11, r1, 0x20
+/* 80246D88 002429E8 4B F8 03 E9 */ bl _restgpr_26
+/* 80246D8C 002429EC 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80246D90 002429F0 7C 08 03 A6 */ mtlr r0
+/* 80246D94 002429F4 38 21 00 20 */ addi r1, r1, 0x20
+/* 80246D98 002429F8 4E 80 00 20 */ blr
+/* 80246D9C 002429FC 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80246DA0 00242A00 7C 08 02 A6 */ mflr r0
+/* 80246DA4 00242A04 2C 03 00 00 */ cmpwi r3, 0
+/* 80246DA8 00242A08 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80246DAC 00242A0C 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80246DB0 00242A10 7C 7F 1B 78 */ mr r31, r3
+/* 80246DB4 00242A14 40 82 00 0C */ bne lbl_80246DC0
+/* 80246DB8 00242A18 41 82 00 44 */ beq lbl_80246DFC
+/* 80246DBC 00242A1C 48 00 00 40 */ b lbl_80246DFC
+lbl_80246DC0:
+/* 80246DC0 00242A20 80 83 00 14 */ lwz r4, 0x14(r3)
+/* 80246DC4 00242A24 80 A3 00 10 */ lwz r5, 0x10(r3)
+/* 80246DC8 00242A28 80 04 00 0C */ lwz r0, 0xc(r4)
+/* 80246DCC 00242A2C 64 00 08 00 */ oris r0, r0, 0x800
+/* 80246DD0 00242A30 90 04 00 0C */ stw r0, 0xc(r4)
+/* 80246DD4 00242A34 81 83 00 18 */ lwz r12, 0x18(r3)
+/* 80246DD8 00242A38 2C 0C 00 00 */ cmpwi r12, 0
+/* 80246DDC 00242A3C 41 82 00 18 */ beq lbl_80246DF4
+/* 80246DE0 00242A40 80 65 00 10 */ lwz r3, 0x10(r5)
+/* 80246DE4 00242A44 80 9F 00 1C */ lwz r4, 0x1c(r31)
+/* 80246DE8 00242A48 80 BF 00 20 */ lwz r5, 0x20(r31)
+/* 80246DEC 00242A4C 7D 89 03 A6 */ mtctr r12
+/* 80246DF0 00242A50 4E 80 04 21 */ bctrl
+lbl_80246DF4:
+/* 80246DF4 00242A54 38 00 00 00 */ li r0, 0
+/* 80246DF8 00242A58 90 1F 00 18 */ stw r0, 0x18(r31)
+lbl_80246DFC:
+/* 80246DFC 00242A5C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80246E00 00242A60 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80246E04 00242A64 7C 08 03 A6 */ mtlr r0
+/* 80246E08 00242A68 38 21 00 10 */ addi r1, r1, 0x10
+/* 80246E0C 00242A6C 4E 80 00 20 */ blr
+
+.global func_80246E10
+func_80246E10:
+/* 80246E10 00242A70 94 21 FF B0 */ stwu r1, -0x50(r1)
+/* 80246E14 00242A74 7C 08 02 A6 */ mflr r0
+/* 80246E18 00242A78 90 01 00 54 */ stw r0, 0x54(r1)
+/* 80246E1C 00242A7C 39 61 00 50 */ addi r11, r1, 0x50
+/* 80246E20 00242A80 4B F8 02 E1 */ bl _savegpr_17
+/* 80246E24 00242A84 7C 73 1B 78 */ mr r19, r3
+/* 80246E28 00242A88 7C 91 23 78 */ mr r17, r4
+/* 80246E2C 00242A8C 7C B4 2B 78 */ mr r20, r5
+/* 80246E30 00242A90 7C D5 33 78 */ mr r21, r6
+/* 80246E34 00242A94 7C F6 3B 78 */ mr r22, r7
+/* 80246E38 00242A98 7D 17 43 78 */ mr r23, r8
+/* 80246E3C 00242A9C 7D 38 4B 78 */ mr r24, r9
+/* 80246E40 00242AA0 7D 59 53 78 */ mr r25, r10
+/* 80246E44 00242AA4 48 02 79 19 */ bl OSDisableInterrupts
+/* 80246E48 00242AA8 2C 11 00 00 */ cmpwi r17, 0
+/* 80246E4C 00242AAC 7C 7D 1B 78 */ mr r29, r3
+/* 80246E50 00242AB0 40 82 00 18 */ bne lbl_80246E68
+/* 80246E54 00242AB4 7E 63 9B 78 */ mr r3, r19
+/* 80246E58 00242AB8 38 80 00 01 */ li r4, 1
+/* 80246E5C 00242ABC 4B FF F0 85 */ bl func_80245EE0
+/* 80246E60 00242AC0 7C 7C 1B 78 */ mr r28, r3
+/* 80246E64 00242AC4 48 00 00 20 */ b lbl_80246E84
+lbl_80246E68:
+/* 80246E68 00242AC8 7E 63 9B 78 */ mr r3, r19
+/* 80246E6C 00242ACC 7E 24 8B 78 */ mr r4, r17
+/* 80246E70 00242AD0 48 00 0D ED */ bl func_80247C5C
+/* 80246E74 00242AD4 7C 64 1B 78 */ mr r4, r3
+/* 80246E78 00242AD8 7E 63 9B 78 */ mr r3, r19
+/* 80246E7C 00242ADC 4B FF F0 65 */ bl func_80245EE0
+/* 80246E80 00242AE0 7C 7C 1B 78 */ mr r28, r3
+lbl_80246E84:
+/* 80246E84 00242AE4 2C 1C 00 00 */ cmpwi r28, 0
+/* 80246E88 00242AE8 41 82 01 48 */ beq lbl_80246FD0
+/* 80246E8C 00242AEC 7E BB AB 78 */ mr r27, r21
+/* 80246E90 00242AF0 3B 40 00 00 */ li r26, 0
+/* 80246E94 00242AF4 4B FF FE 39 */ bl func_80246CCC
+/* 80246E98 00242AF8 7C 16 1B 96 */ divwu r0, r22, r3
+/* 80246E9C 00242AFC 3A 20 00 00 */ li r17, 0
+/* 80246EA0 00242B00 3E 40 80 24 */ lis r18, 0x8024
+/* 80246EA4 00242B04 7C 00 19 D6 */ mullw r0, r0, r3
+/* 80246EA8 00242B08 7E C0 B0 50 */ subf r22, r0, r22
+/* 80246EAC 00242B0C 48 00 00 DC */ b lbl_80246F88
+lbl_80246EB0:
+/* 80246EB0 00242B10 80 0D A5 18 */ lwz r0, lbl_8063F7D8-_SDA_BASE_(r13)
+/* 80246EB4 00242B14 7F 7E DB 78 */ mr r30, r27
+/* 80246EB8 00242B18 7C 1B 00 40 */ cmplw r27, r0
+/* 80246EBC 00242B1C 41 80 00 08 */ blt lbl_80246EC4
+/* 80246EC0 00242B20 7C 1E 03 78 */ mr r30, r0
+lbl_80246EC4:
+/* 80246EC4 00242B24 7E C3 B3 78 */ mr r3, r22
+/* 80246EC8 00242B28 7F 7E D8 50 */ subf r27, r30, r27
+/* 80246ECC 00242B2C 48 00 01 39 */ bl func_80247004
+/* 80246ED0 00242B30 80 1C 00 4C */ lwz r0, 0x4c(r28)
+/* 80246ED4 00242B34 7C 7F 1B 78 */ mr r31, r3
+/* 80246ED8 00242B38 7C 00 18 39 */ and. r0, r0, r3
+/* 80246EDC 00242B3C 40 82 00 0C */ bne lbl_80246EE8
+/* 80246EE0 00242B40 38 60 00 00 */ li r3, 0
+/* 80246EE4 00242B44 48 00 01 08 */ b lbl_80246FEC
+lbl_80246EE8:
+/* 80246EE8 00242B48 80 1C 00 0C */ lwz r0, 0xc(r28)
+/* 80246EEC 00242B4C 2C 1B 00 00 */ cmpwi r27, 0
+/* 80246EF0 00242B50 54 00 01 46 */ rlwinm r0, r0, 0, 5, 3
+/* 80246EF4 00242B54 90 1C 00 0C */ stw r0, 0xc(r28)
+/* 80246EF8 00242B58 41 82 00 3C */ beq lbl_80246F34
+/* 80246EFC 00242B5C 92 21 00 08 */ stw r17, 8(r1)
+/* 80246F00 00242B60 7E 63 9B 78 */ mr r3, r19
+/* 80246F04 00242B64 7F 84 E3 78 */ mr r4, r28
+/* 80246F08 00242B68 7E 85 A3 78 */ mr r5, r20
+/* 80246F0C 00242B6C 7F C6 F3 78 */ mr r6, r30
+/* 80246F10 00242B70 7E C7 B3 78 */ mr r7, r22
+/* 80246F14 00242B74 39 00 00 00 */ li r8, 0
+/* 80246F18 00242B78 39 20 00 00 */ li r9, 0
+/* 80246F1C 00242B7C 39 40 00 00 */ li r10, 0
+/* 80246F20 00242B80 4B FF EC 5D */ bl func_80245B7C
+/* 80246F24 00242B84 2C 03 00 00 */ cmpwi r3, 0
+/* 80246F28 00242B88 40 82 00 44 */ bne lbl_80246F6C
+/* 80246F2C 00242B8C 38 60 00 00 */ li r3, 0
+/* 80246F30 00242B90 48 00 00 BC */ b lbl_80246FEC
+lbl_80246F34:
+/* 80246F34 00242B94 93 21 00 08 */ stw r25, 8(r1)
+/* 80246F38 00242B98 7E 63 9B 78 */ mr r3, r19
+/* 80246F3C 00242B9C 7F 84 E3 78 */ mr r4, r28
+/* 80246F40 00242BA0 7E 85 A3 78 */ mr r5, r20
+/* 80246F44 00242BA4 7F C6 F3 78 */ mr r6, r30
+/* 80246F48 00242BA8 7E C7 B3 78 */ mr r7, r22
+/* 80246F4C 00242BAC 7E E9 BB 78 */ mr r9, r23
+/* 80246F50 00242BB0 7F 0A C3 78 */ mr r10, r24
+/* 80246F54 00242BB4 39 12 6D 9C */ addi r8, r18, 0x6d9c
+/* 80246F58 00242BB8 4B FF EC 25 */ bl func_80245B7C
+/* 80246F5C 00242BBC 2C 03 00 00 */ cmpwi r3, 0
+/* 80246F60 00242BC0 40 82 00 0C */ bne lbl_80246F6C
+/* 80246F64 00242BC4 38 60 00 00 */ li r3, 0
+/* 80246F68 00242BC8 48 00 00 84 */ b lbl_80246FEC
+lbl_80246F6C:
+/* 80246F6C 00242BCC 7E 94 F2 14 */ add r20, r20, r30
+/* 80246F70 00242BD0 7F 5A FB 78 */ or r26, r26, r31
+/* 80246F74 00242BD4 7E D6 F2 14 */ add r22, r22, r30
+/* 80246F78 00242BD8 4B FF FD 55 */ bl func_80246CCC
+/* 80246F7C 00242BDC 7C 16 1B 96 */ divwu r0, r22, r3
+/* 80246F80 00242BE0 7C 00 19 D6 */ mullw r0, r0, r3
+/* 80246F84 00242BE4 7E C0 B0 50 */ subf r22, r0, r22
+lbl_80246F88:
+/* 80246F88 00242BE8 2C 1B 00 00 */ cmpwi r27, 0
+/* 80246F8C 00242BEC 40 82 FF 24 */ bne lbl_80246EB0
+/* 80246F90 00242BF0 80 1C 00 0C */ lwz r0, 0xc(r28)
+/* 80246F94 00242BF4 54 00 02 11 */ rlwinm. r0, r0, 0, 8, 8
+/* 80246F98 00242BF8 41 82 00 10 */ beq lbl_80246FA8
+/* 80246F9C 00242BFC 80 1C 00 14 */ lwz r0, 0x14(r28)
+/* 80246FA0 00242C00 90 1C 00 44 */ stw r0, 0x44(r28)
+/* 80246FA4 00242C04 48 00 00 1C */ b lbl_80246FC0
+lbl_80246FA8:
+/* 80246FA8 00242C08 80 1C 00 44 */ lwz r0, 0x44(r28)
+/* 80246FAC 00242C0C 7C 15 00 50 */ subf r0, r21, r0
+/* 80246FB0 00242C10 90 1C 00 44 */ stw r0, 0x44(r28)
+/* 80246FB4 00242C14 80 1C 00 4C */ lwz r0, 0x4c(r28)
+/* 80246FB8 00242C18 7C 00 D0 78 */ andc r0, r0, r26
+/* 80246FBC 00242C1C 90 1C 00 4C */ stw r0, 0x4c(r28)
+lbl_80246FC0:
+/* 80246FC0 00242C20 7F A3 EB 78 */ mr r3, r29
+/* 80246FC4 00242C24 48 02 77 C1 */ bl OSRestoreInterrupts
+/* 80246FC8 00242C28 38 60 00 01 */ li r3, 1
+/* 80246FCC 00242C2C 48 00 00 20 */ b lbl_80246FEC
+lbl_80246FD0:
+/* 80246FD0 00242C30 7F A3 EB 78 */ mr r3, r29
+/* 80246FD4 00242C34 48 02 77 B1 */ bl OSRestoreInterrupts
+/* 80246FD8 00242C38 7E 83 A3 78 */ mr r3, r20
+/* 80246FDC 00242C3C 7E A5 AB 78 */ mr r5, r21
+/* 80246FE0 00242C40 38 80 00 00 */ li r4, 0
+/* 80246FE4 00242C44 48 00 15 0D */ bl func_802484F0
+/* 80246FE8 00242C48 38 60 00 00 */ li r3, 0
+lbl_80246FEC:
+/* 80246FEC 00242C4C 39 61 00 50 */ addi r11, r1, 0x50
+/* 80246FF0 00242C50 4B F8 01 5D */ bl _restgpr_17
+/* 80246FF4 00242C54 80 01 00 54 */ lwz r0, 0x54(r1)
+/* 80246FF8 00242C58 7C 08 03 A6 */ mtlr r0
+/* 80246FFC 00242C5C 38 21 00 50 */ addi r1, r1, 0x50
+/* 80247000 00242C60 4E 80 00 20 */ blr
+
+.global func_80247004
+func_80247004:
+/* 80247004 00242C64 80 0D A5 18 */ lwz r0, lbl_8063F7D8-_SDA_BASE_(r13)
+/* 80247008 00242C68 38 80 00 01 */ li r4, 1
+/* 8024700C 00242C6C 7C 03 03 96 */ divwu r0, r3, r0
+/* 80247010 00242C70 7C 83 00 30 */ slw r3, r4, r0
+/* 80247014 00242C74 4E 80 00 20 */ blr
+
+.global func_80247018
+func_80247018:
+/* 80247018 00242C78 38 A0 00 01 */ li r5, 1
+/* 8024701C 00242C7C 38 6D A5 80 */ addi r3, r13, lbl_8063F840-_SDA_BASE_
+/* 80247020 00242C80 38 80 00 04 */ li r4, 4
+/* 80247024 00242C84 38 00 00 00 */ li r0, 0
+/* 80247028 00242C88 98 AD A5 80 */ stb r5, lbl_8063F840-_SDA_BASE_(r13)
+/* 8024702C 00242C8C B0 83 00 02 */ sth r4, 2(r3)
+/* 80247030 00242C90 98 03 00 04 */ stb r0, 4(r3)
+/* 80247034 00242C94 4E 80 00 20 */ blr