mirror of https://github.com/zeldaret/tp.git
OSLink done (#2038)
This commit is contained in:
parent
5ad3727d17
commit
49a4319fb8
|
|
@ -1,83 +0,0 @@
|
|||
lbl_802E7F7C:
|
||||
/* 802E7F7C 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 802E7F80 7C 08 02 A6 */ mflr r0
|
||||
/* 802E7F84 90 01 00 24 */ stw r0, 0x24(r1)
|
||||
/* 802E7F88 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 802E7F8C 48 07 A2 51 */ bl _savegpr_29
|
||||
/* 802E7F90 7C 7D 1B 78 */ mr r29, r3
|
||||
/* 802E7F94 28 04 00 00 */ cmplwi r4, 0
|
||||
/* 802E7F98 41 82 00 F8 */ beq lbl_802E8090
|
||||
/* 802E7F9C 80 DD 00 34 */ lwz r6, 0x34(r29)
|
||||
/* 802E7FA0 7C DF 33 78 */ mr r31, r6
|
||||
/* 802E7FA4 3C 04 00 01 */ addis r0, r4, 1
|
||||
/* 802E7FA8 28 00 FF FF */ cmplwi r0, 0xffff
|
||||
/* 802E7FAC 41 82 00 50 */ beq lbl_802E7FFC
|
||||
/* 802E7FB0 83 FD 00 38 */ lwz r31, 0x38(r29)
|
||||
/* 802E7FB4 7C 89 03 A6 */ mtctr r4
|
||||
/* 802E7FB8 28 04 00 00 */ cmplwi r4, 0
|
||||
/* 802E7FBC 41 82 00 40 */ beq lbl_802E7FFC
|
||||
lbl_802E7FC0:
|
||||
/* 802E7FC0 34 BF FF FF */ addic. r5, r31, -1
|
||||
/* 802E7FC4 40 80 00 0C */ bge lbl_802E7FD0
|
||||
/* 802E7FC8 80 7D 00 24 */ lwz r3, 0x24(r29)
|
||||
/* 802E7FCC 38 A3 FF FF */ addi r5, r3, -1
|
||||
lbl_802E7FD0:
|
||||
/* 802E7FD0 80 9D 00 28 */ lwz r4, 0x28(r29)
|
||||
/* 802E7FD4 80 7D 00 20 */ lwz r3, 0x20(r29)
|
||||
/* 802E7FD8 38 03 00 02 */ addi r0, r3, 2
|
||||
/* 802E7FDC 7C 00 29 D6 */ mullw r0, r0, r5
|
||||
/* 802E7FE0 7C 04 00 AE */ lbzx r0, r4, r0
|
||||
/* 802E7FE4 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 802E7FE8 41 82 00 14 */ beq lbl_802E7FFC
|
||||
/* 802E7FEC 7C BF 2B 78 */ mr r31, r5
|
||||
/* 802E7FF0 7C 05 30 00 */ cmpw r5, r6
|
||||
/* 802E7FF4 41 82 00 08 */ beq lbl_802E7FFC
|
||||
/* 802E7FF8 42 00 FF C8 */ bdnz lbl_802E7FC0
|
||||
lbl_802E7FFC:
|
||||
/* 802E7FFC 3B C0 00 00 */ li r30, 0
|
||||
lbl_802E8000:
|
||||
/* 802E8000 80 9D 00 28 */ lwz r4, 0x28(r29)
|
||||
/* 802E8004 80 7D 00 20 */ lwz r3, 0x20(r29)
|
||||
/* 802E8008 38 03 00 02 */ addi r0, r3, 2
|
||||
/* 802E800C 7C 60 F9 D6 */ mullw r3, r0, r31
|
||||
/* 802E8010 38 A3 00 01 */ addi r5, r3, 1
|
||||
/* 802E8014 7C A4 2A 14 */ add r5, r4, r5
|
||||
/* 802E8018 88 05 FF FF */ lbz r0, -1(r5)
|
||||
/* 802E801C 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 802E8020 41 82 00 70 */ beq lbl_802E8090
|
||||
/* 802E8024 88 1D 00 69 */ lbz r0, 0x69(r29)
|
||||
/* 802E8028 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 802E802C 41 82 00 1C */ beq lbl_802E8048
|
||||
/* 802E8030 3C 60 80 3A */ lis r3, JUTConsole__stringBase0@ha /* 0x8039D9A8@ha */
|
||||
/* 802E8034 38 63 D9 A8 */ addi r3, r3, JUTConsole__stringBase0@l /* 0x8039D9A8@l */
|
||||
/* 802E8038 7F C4 F3 78 */ mr r4, r30
|
||||
/* 802E803C 4C C6 31 82 */ crclr 6
|
||||
/* 802E8040 4B D1 EA 7D */ bl OSReport
|
||||
/* 802E8044 48 00 00 1C */ b lbl_802E8060
|
||||
lbl_802E8048:
|
||||
/* 802E8048 3C 60 80 3A */ lis r3, JUTConsole__stringBase0@ha /* 0x8039D9A8@ha */
|
||||
/* 802E804C 38 63 D9 A8 */ addi r3, r3, JUTConsole__stringBase0@l /* 0x8039D9A8@l */
|
||||
/* 802E8050 38 63 00 0B */ addi r3, r3, 0xb
|
||||
/* 802E8054 7C A4 2B 78 */ mr r4, r5
|
||||
/* 802E8058 4C C6 31 82 */ crclr 6
|
||||
/* 802E805C 4B D1 EA 61 */ bl OSReport
|
||||
lbl_802E8060:
|
||||
/* 802E8060 80 1D 00 24 */ lwz r0, 0x24(r29)
|
||||
/* 802E8064 6C 03 80 00 */ xoris r3, r0, 0x8000
|
||||
/* 802E8068 38 9F 00 01 */ addi r4, r31, 1
|
||||
/* 802E806C 7C 00 20 50 */ subf r0, r0, r4
|
||||
/* 802E8070 7C 00 18 14 */ addc r0, r0, r3
|
||||
/* 802E8074 7C 00 01 10 */ subfe r0, r0, r0
|
||||
/* 802E8078 7C 83 00 78 */ andc r3, r4, r0
|
||||
/* 802E807C 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 802E8080 80 1D 00 34 */ lwz r0, 0x34(r29)
|
||||
/* 802E8084 7C 03 00 00 */ cmpw r3, r0
|
||||
/* 802E8088 3B DE 00 01 */ addi r30, r30, 1
|
||||
/* 802E808C 40 82 FF 74 */ bne lbl_802E8000
|
||||
lbl_802E8090:
|
||||
/* 802E8090 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 802E8094 48 07 A1 95 */ bl _restgpr_29
|
||||
/* 802E8098 80 01 00 24 */ lwz r0, 0x24(r1)
|
||||
/* 802E809C 7C 08 03 A6 */ mtlr r0
|
||||
/* 802E80A0 38 21 00 20 */ addi r1, r1, 0x20
|
||||
/* 802E80A4 4E 80 00 20 */ blr
|
||||
|
|
@ -1,208 +0,0 @@
|
|||
lbl_802E7C38:
|
||||
/* 802E7C38 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 802E7C3C 7C 08 02 A6 */ mflr r0
|
||||
/* 802E7C40 90 01 00 24 */ stw r0, 0x24(r1)
|
||||
/* 802E7C44 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 802E7C48 48 07 A5 95 */ bl _savegpr_29
|
||||
/* 802E7C4C 7C 7D 1B 78 */ mr r29, r3
|
||||
/* 802E7C50 80 03 00 58 */ lwz r0, 0x58(r3)
|
||||
/* 802E7C54 54 00 07 FF */ clrlwi. r0, r0, 0x1f
|
||||
/* 802E7C58 41 82 02 C0 */ beq lbl_802E7F18
|
||||
/* 802E7C5C 7C 9F 23 78 */ mr r31, r4
|
||||
/* 802E7C60 80 9D 00 28 */ lwz r4, 0x28(r29)
|
||||
/* 802E7C64 80 7D 00 20 */ lwz r3, 0x20(r29)
|
||||
/* 802E7C68 38 63 00 02 */ addi r3, r3, 2
|
||||
/* 802E7C6C 80 1D 00 38 */ lwz r0, 0x38(r29)
|
||||
/* 802E7C70 7C 63 01 D6 */ mullw r3, r3, r0
|
||||
/* 802E7C74 38 63 00 01 */ addi r3, r3, 1
|
||||
/* 802E7C78 7C 64 1A 14 */ add r3, r4, r3
|
||||
/* 802E7C7C 80 1D 00 3C */ lwz r0, 0x3c(r29)
|
||||
/* 802E7C80 7F C3 02 14 */ add r30, r3, r0
|
||||
/* 802E7C84 48 00 02 80 */ b lbl_802E7F04
|
||||
lbl_802E7C88:
|
||||
/* 802E7C88 88 1D 00 6A */ lbz r0, 0x6a(r29)
|
||||
/* 802E7C8C 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 802E7C90 41 82 00 30 */ beq lbl_802E7CC0
|
||||
/* 802E7C94 80 BD 00 38 */ lwz r5, 0x38(r29)
|
||||
/* 802E7C98 80 1D 00 24 */ lwz r0, 0x24(r29)
|
||||
/* 802E7C9C 6C 03 80 00 */ xoris r3, r0, 0x8000
|
||||
/* 802E7CA0 38 A5 00 01 */ addi r5, r5, 1
|
||||
/* 802E7CA4 7C 00 28 50 */ subf r0, r0, r5
|
||||
/* 802E7CA8 7C 00 18 14 */ addc r0, r0, r3
|
||||
/* 802E7CAC 7C 00 01 10 */ subfe r0, r0, r0
|
||||
/* 802E7CB0 7C A3 00 78 */ andc r3, r5, r0
|
||||
/* 802E7CB4 80 1D 00 34 */ lwz r0, 0x34(r29)
|
||||
/* 802E7CB8 7C 00 18 00 */ cmpw r0, r3
|
||||
/* 802E7CBC 41 82 02 54 */ beq lbl_802E7F10
|
||||
lbl_802E7CC0:
|
||||
/* 802E7CC0 2C 04 00 0A */ cmpwi r4, 0xa
|
||||
/* 802E7CC4 40 82 00 14 */ bne lbl_802E7CD8
|
||||
/* 802E7CC8 80 1D 00 20 */ lwz r0, 0x20(r29)
|
||||
/* 802E7CCC 90 1D 00 3C */ stw r0, 0x3c(r29)
|
||||
/* 802E7CD0 3B FF 00 01 */ addi r31, r31, 1
|
||||
/* 802E7CD4 48 00 00 FC */ b lbl_802E7DD0
|
||||
lbl_802E7CD8:
|
||||
/* 802E7CD8 2C 04 00 09 */ cmpwi r4, 9
|
||||
/* 802E7CDC 40 82 00 50 */ bne lbl_802E7D2C
|
||||
/* 802E7CE0 38 A0 00 20 */ li r5, 0x20
|
||||
/* 802E7CE4 3B FF 00 01 */ addi r31, r31, 1
|
||||
/* 802E7CE8 48 00 00 30 */ b lbl_802E7D18
|
||||
lbl_802E7CEC:
|
||||
/* 802E7CEC 98 BE 00 00 */ stb r5, 0(r30)
|
||||
/* 802E7CF0 80 7D 00 3C */ lwz r3, 0x3c(r29)
|
||||
/* 802E7CF4 38 03 00 01 */ addi r0, r3, 1
|
||||
/* 802E7CF8 90 1D 00 3C */ stw r0, 0x3c(r29)
|
||||
/* 802E7CFC 80 9D 00 3C */ lwz r4, 0x3c(r29)
|
||||
/* 802E7D00 80 7D 00 64 */ lwz r3, 0x64(r29)
|
||||
/* 802E7D04 7C 04 1B D6 */ divw r0, r4, r3
|
||||
/* 802E7D08 7C 00 19 D6 */ mullw r0, r0, r3
|
||||
/* 802E7D0C 7C 00 20 51 */ subf. r0, r0, r4
|
||||
/* 802E7D10 3B DE 00 01 */ addi r30, r30, 1
|
||||
/* 802E7D14 41 82 00 BC */ beq lbl_802E7DD0
|
||||
lbl_802E7D18:
|
||||
/* 802E7D18 80 7D 00 3C */ lwz r3, 0x3c(r29)
|
||||
/* 802E7D1C 80 1D 00 20 */ lwz r0, 0x20(r29)
|
||||
/* 802E7D20 7C 03 00 40 */ cmplw r3, r0
|
||||
/* 802E7D24 41 80 FF C8 */ blt lbl_802E7CEC
|
||||
/* 802E7D28 48 00 00 A8 */ b lbl_802E7DD0
|
||||
lbl_802E7D2C:
|
||||
/* 802E7D2C 80 7D 00 4C */ lwz r3, 0x4c(r29)
|
||||
/* 802E7D30 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 802E7D34 41 82 00 80 */ beq lbl_802E7DB4
|
||||
/* 802E7D38 81 83 00 00 */ lwz r12, 0(r3)
|
||||
/* 802E7D3C 81 8C 00 40 */ lwz r12, 0x40(r12)
|
||||
/* 802E7D40 7D 89 03 A6 */ mtctr r12
|
||||
/* 802E7D44 4E 80 04 21 */ bctrl
|
||||
/* 802E7D48 54 60 06 3F */ clrlwi. r0, r3, 0x18
|
||||
/* 802E7D4C 41 82 00 68 */ beq lbl_802E7DB4
|
||||
/* 802E7D50 80 7D 00 3C */ lwz r3, 0x3c(r29)
|
||||
/* 802E7D54 38 63 00 01 */ addi r3, r3, 1
|
||||
/* 802E7D58 80 1D 00 20 */ lwz r0, 0x20(r29)
|
||||
/* 802E7D5C 7C 03 00 40 */ cmplw r3, r0
|
||||
/* 802E7D60 40 80 00 38 */ bge lbl_802E7D98
|
||||
/* 802E7D64 88 1F 00 00 */ lbz r0, 0(r31)
|
||||
/* 802E7D68 98 1E 00 00 */ stb r0, 0(r30)
|
||||
/* 802E7D6C 88 1F 00 01 */ lbz r0, 1(r31)
|
||||
/* 802E7D70 98 1E 00 01 */ stb r0, 1(r30)
|
||||
/* 802E7D74 80 7D 00 3C */ lwz r3, 0x3c(r29)
|
||||
/* 802E7D78 38 03 00 01 */ addi r0, r3, 1
|
||||
/* 802E7D7C 90 1D 00 3C */ stw r0, 0x3c(r29)
|
||||
/* 802E7D80 80 7D 00 3C */ lwz r3, 0x3c(r29)
|
||||
/* 802E7D84 38 03 00 01 */ addi r0, r3, 1
|
||||
/* 802E7D88 90 1D 00 3C */ stw r0, 0x3c(r29)
|
||||
/* 802E7D8C 3B FF 00 02 */ addi r31, r31, 2
|
||||
/* 802E7D90 3B DE 00 02 */ addi r30, r30, 2
|
||||
/* 802E7D94 48 00 00 3C */ b lbl_802E7DD0
|
||||
lbl_802E7D98:
|
||||
/* 802E7D98 38 00 00 00 */ li r0, 0
|
||||
/* 802E7D9C 98 1E 00 00 */ stb r0, 0(r30)
|
||||
/* 802E7DA0 80 7D 00 3C */ lwz r3, 0x3c(r29)
|
||||
/* 802E7DA4 38 03 00 01 */ addi r0, r3, 1
|
||||
/* 802E7DA8 90 1D 00 3C */ stw r0, 0x3c(r29)
|
||||
/* 802E7DAC 3B DE 00 01 */ addi r30, r30, 1
|
||||
/* 802E7DB0 48 00 00 20 */ b lbl_802E7DD0
|
||||
lbl_802E7DB4:
|
||||
/* 802E7DB4 88 1F 00 00 */ lbz r0, 0(r31)
|
||||
/* 802E7DB8 98 1E 00 00 */ stb r0, 0(r30)
|
||||
/* 802E7DBC 80 7D 00 3C */ lwz r3, 0x3c(r29)
|
||||
/* 802E7DC0 38 03 00 01 */ addi r0, r3, 1
|
||||
/* 802E7DC4 90 1D 00 3C */ stw r0, 0x3c(r29)
|
||||
/* 802E7DC8 3B FF 00 01 */ addi r31, r31, 1
|
||||
/* 802E7DCC 3B DE 00 01 */ addi r30, r30, 1
|
||||
lbl_802E7DD0:
|
||||
/* 802E7DD0 80 7D 00 3C */ lwz r3, 0x3c(r29)
|
||||
/* 802E7DD4 80 1D 00 20 */ lwz r0, 0x20(r29)
|
||||
/* 802E7DD8 7C 03 00 40 */ cmplw r3, r0
|
||||
/* 802E7DDC 41 80 01 28 */ blt lbl_802E7F04
|
||||
/* 802E7DE0 38 C0 00 00 */ li r6, 0
|
||||
/* 802E7DE4 98 DE 00 00 */ stb r6, 0(r30)
|
||||
/* 802E7DE8 80 9D 00 38 */ lwz r4, 0x38(r29)
|
||||
/* 802E7DEC 80 1D 00 24 */ lwz r0, 0x24(r29)
|
||||
/* 802E7DF0 6C 03 80 00 */ xoris r3, r0, 0x8000
|
||||
/* 802E7DF4 38 84 00 01 */ addi r4, r4, 1
|
||||
/* 802E7DF8 7C 00 20 50 */ subf r0, r0, r4
|
||||
/* 802E7DFC 7C 00 18 14 */ addc r0, r0, r3
|
||||
/* 802E7E00 7C 00 01 10 */ subfe r0, r0, r0
|
||||
/* 802E7E04 7C 80 00 78 */ andc r0, r4, r0
|
||||
/* 802E7E08 90 1D 00 38 */ stw r0, 0x38(r29)
|
||||
/* 802E7E0C 90 DD 00 3C */ stw r6, 0x3c(r29)
|
||||
/* 802E7E10 38 A0 00 FF */ li r5, 0xff
|
||||
/* 802E7E14 80 9D 00 28 */ lwz r4, 0x28(r29)
|
||||
/* 802E7E18 80 7D 00 20 */ lwz r3, 0x20(r29)
|
||||
/* 802E7E1C 38 63 00 02 */ addi r3, r3, 2
|
||||
/* 802E7E20 80 1D 00 38 */ lwz r0, 0x38(r29)
|
||||
/* 802E7E24 7C 03 01 D6 */ mullw r0, r3, r0
|
||||
/* 802E7E28 7C A4 01 AE */ stbx r5, r4, r0
|
||||
/* 802E7E2C 80 9D 00 28 */ lwz r4, 0x28(r29)
|
||||
/* 802E7E30 80 7D 00 20 */ lwz r3, 0x20(r29)
|
||||
/* 802E7E34 38 63 00 02 */ addi r3, r3, 2
|
||||
/* 802E7E38 80 1D 00 38 */ lwz r0, 0x38(r29)
|
||||
/* 802E7E3C 7C 63 01 D6 */ mullw r3, r3, r0
|
||||
/* 802E7E40 38 63 00 01 */ addi r3, r3, 1
|
||||
/* 802E7E44 7C 64 1A 14 */ add r3, r4, r3
|
||||
/* 802E7E48 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 802E7E4C 98 C3 00 00 */ stb r6, 0(r3)
|
||||
/* 802E7E50 80 9D 00 30 */ lwz r4, 0x30(r29)
|
||||
/* 802E7E54 80 1D 00 38 */ lwz r0, 0x38(r29)
|
||||
/* 802E7E58 7C 64 00 51 */ subf. r3, r4, r0
|
||||
/* 802E7E5C 41 80 00 08 */ blt lbl_802E7E64
|
||||
/* 802E7E60 48 00 00 0C */ b lbl_802E7E6C
|
||||
lbl_802E7E64:
|
||||
/* 802E7E64 80 1D 00 24 */ lwz r0, 0x24(r29)
|
||||
/* 802E7E68 7C 63 02 14 */ add r3, r3, r0
|
||||
lbl_802E7E6C:
|
||||
/* 802E7E6C 80 1D 00 48 */ lwz r0, 0x48(r29)
|
||||
/* 802E7E70 7C 03 00 40 */ cmplw r3, r0
|
||||
/* 802E7E74 40 82 00 24 */ bne lbl_802E7E98
|
||||
/* 802E7E78 80 1D 00 24 */ lwz r0, 0x24(r29)
|
||||
/* 802E7E7C 6C 03 80 00 */ xoris r3, r0, 0x8000
|
||||
/* 802E7E80 38 84 00 01 */ addi r4, r4, 1
|
||||
/* 802E7E84 7C 00 20 50 */ subf r0, r0, r4
|
||||
/* 802E7E88 7C 00 18 14 */ addc r0, r0, r3
|
||||
/* 802E7E8C 7C 00 01 10 */ subfe r0, r0, r0
|
||||
/* 802E7E90 7C 80 00 78 */ andc r0, r4, r0
|
||||
/* 802E7E94 90 1D 00 30 */ stw r0, 0x30(r29)
|
||||
lbl_802E7E98:
|
||||
/* 802E7E98 80 1D 00 38 */ lwz r0, 0x38(r29)
|
||||
/* 802E7E9C 80 9D 00 34 */ lwz r4, 0x34(r29)
|
||||
/* 802E7EA0 7C 00 20 00 */ cmpw r0, r4
|
||||
/* 802E7EA4 40 82 00 24 */ bne lbl_802E7EC8
|
||||
/* 802E7EA8 80 1D 00 24 */ lwz r0, 0x24(r29)
|
||||
/* 802E7EAC 6C 03 80 00 */ xoris r3, r0, 0x8000
|
||||
/* 802E7EB0 38 84 00 01 */ addi r4, r4, 1
|
||||
/* 802E7EB4 7C 00 20 50 */ subf r0, r0, r4
|
||||
/* 802E7EB8 7C 00 18 14 */ addc r0, r0, r3
|
||||
/* 802E7EBC 7C 00 01 10 */ subfe r0, r0, r0
|
||||
/* 802E7EC0 7C 80 00 78 */ andc r0, r4, r0
|
||||
/* 802E7EC4 90 1D 00 34 */ stw r0, 0x34(r29)
|
||||
lbl_802E7EC8:
|
||||
/* 802E7EC8 80 1D 00 38 */ lwz r0, 0x38(r29)
|
||||
/* 802E7ECC 80 9D 00 30 */ lwz r4, 0x30(r29)
|
||||
/* 802E7ED0 7C 00 20 00 */ cmpw r0, r4
|
||||
/* 802E7ED4 40 82 00 24 */ bne lbl_802E7EF8
|
||||
/* 802E7ED8 80 1D 00 24 */ lwz r0, 0x24(r29)
|
||||
/* 802E7EDC 6C 03 80 00 */ xoris r3, r0, 0x8000
|
||||
/* 802E7EE0 38 84 00 01 */ addi r4, r4, 1
|
||||
/* 802E7EE4 7C 00 20 50 */ subf r0, r0, r4
|
||||
/* 802E7EE8 7C 00 18 14 */ addc r0, r0, r3
|
||||
/* 802E7EEC 7C 00 01 10 */ subfe r0, r0, r0
|
||||
/* 802E7EF0 7C 80 00 78 */ andc r0, r4, r0
|
||||
/* 802E7EF4 90 1D 00 30 */ stw r0, 0x30(r29)
|
||||
lbl_802E7EF8:
|
||||
/* 802E7EF8 88 1D 00 6B */ lbz r0, 0x6b(r29)
|
||||
/* 802E7EFC 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 802E7F00 40 82 00 10 */ bne lbl_802E7F10
|
||||
lbl_802E7F04:
|
||||
/* 802E7F04 88 9F 00 00 */ lbz r4, 0(r31)
|
||||
/* 802E7F08 28 04 00 00 */ cmplwi r4, 0
|
||||
/* 802E7F0C 40 82 FD 7C */ bne lbl_802E7C88
|
||||
lbl_802E7F10:
|
||||
/* 802E7F10 38 00 00 00 */ li r0, 0
|
||||
/* 802E7F14 98 1E 00 00 */ stb r0, 0(r30)
|
||||
lbl_802E7F18:
|
||||
/* 802E7F18 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 802E7F1C 48 07 A3 0D */ bl _restgpr_29
|
||||
/* 802E7F20 80 01 00 24 */ lwz r0, 0x24(r1)
|
||||
/* 802E7F24 7C 08 03 A6 */ mtlr r0
|
||||
/* 802E7F28 38 21 00 20 */ addi r1, r1, 0x20
|
||||
/* 802E7F2C 4E 80 00 20 */ blr
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
lbl_802E7340:
|
||||
/* 802E7340 38 00 00 00 */ li r0, 0
|
||||
/* 802E7344 90 03 00 04 */ stw r0, 4(r3)
|
||||
/* 802E7348 90 03 00 08 */ stw r0, 8(r3)
|
||||
/* 802E734C 90 03 00 0C */ stw r0, 0xc(r3)
|
||||
/* 802E7350 4E 80 00 20 */ blr
|
||||
|
|
@ -1,209 +0,0 @@
|
|||
lbl_8033E230:
|
||||
/* 8033E230 7C 08 02 A6 */ mflr r0
|
||||
/* 8033E234 90 01 00 04 */ stw r0, 4(r1)
|
||||
/* 8033E238 38 00 00 00 */ li r0, 0
|
||||
/* 8033E23C 94 21 FF D8 */ stwu r1, -0x28(r1)
|
||||
/* 8033E240 93 E1 00 24 */ stw r31, 0x24(r1)
|
||||
/* 8033E244 3B E3 00 00 */ addi r31, r3, 0
|
||||
/* 8033E248 93 C1 00 20 */ stw r30, 0x20(r1)
|
||||
/* 8033E24C 3B C5 00 00 */ addi r30, r5, 0
|
||||
/* 8033E250 93 A1 00 1C */ stw r29, 0x1c(r1)
|
||||
/* 8033E254 3B A4 00 00 */ addi r29, r4, 0
|
||||
/* 8033E258 93 81 00 18 */ stw r28, 0x18(r1)
|
||||
/* 8033E25C 98 03 00 33 */ stb r0, 0x33(r3)
|
||||
/* 8033E260 80 03 00 1C */ lwz r0, 0x1c(r3)
|
||||
/* 8033E264 28 00 00 03 */ cmplwi r0, 3
|
||||
/* 8033E268 41 81 00 44 */ bgt lbl_8033E2AC
|
||||
/* 8033E26C 28 00 00 02 */ cmplwi r0, 2
|
||||
/* 8033E270 41 80 00 44 */ blt lbl_8033E2B4
|
||||
/* 8033E274 80 7F 00 40 */ lwz r3, 0x40(r31)
|
||||
/* 8033E278 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 8033E27C 41 82 00 14 */ beq lbl_8033E290
|
||||
/* 8033E280 7C 1F 1B 96 */ divwu r0, r31, r3
|
||||
/* 8033E284 7C 00 19 D6 */ mullw r0, r0, r3
|
||||
/* 8033E288 7C 00 F8 51 */ subf. r0, r0, r31
|
||||
/* 8033E28C 40 82 00 20 */ bne lbl_8033E2AC
|
||||
lbl_8033E290:
|
||||
/* 8033E290 80 7F 00 44 */ lwz r3, 0x44(r31)
|
||||
/* 8033E294 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 8033E298 41 82 00 1C */ beq lbl_8033E2B4
|
||||
/* 8033E29C 7C 1D 1B 96 */ divwu r0, r29, r3
|
||||
/* 8033E2A0 7C 00 19 D6 */ mullw r0, r0, r3
|
||||
/* 8033E2A4 7C 00 E8 51 */ subf. r0, r0, r29
|
||||
/* 8033E2A8 41 82 00 0C */ beq lbl_8033E2B4
|
||||
lbl_8033E2AC:
|
||||
/* 8033E2AC 38 60 00 00 */ li r3, 0
|
||||
/* 8033E2B0 48 00 02 40 */ b lbl_8033E4F0
|
||||
lbl_8033E2B4:
|
||||
/* 8033E2B4 3C 60 80 00 */ lis r3, 0x8000 /* 0x800030C8@ha */
|
||||
/* 8033E2B8 38 83 30 C8 */ addi r4, r3, 0x30C8 /* 0x800030C8@l */
|
||||
/* 8033E2BC 84 A4 00 04 */ lwzu r5, 4(r4)
|
||||
/* 8033E2C0 28 05 00 00 */ cmplwi r5, 0
|
||||
/* 8033E2C4 40 82 00 0C */ bne lbl_8033E2D0
|
||||
/* 8033E2C8 93 E3 30 C8 */ stw r31, 0x30c8(r3)
|
||||
/* 8033E2CC 48 00 00 08 */ b lbl_8033E2D4
|
||||
lbl_8033E2D0:
|
||||
/* 8033E2D0 93 E5 00 04 */ stw r31, 4(r5)
|
||||
lbl_8033E2D4:
|
||||
/* 8033E2D4 90 BF 00 08 */ stw r5, 8(r31)
|
||||
/* 8033E2D8 38 00 00 00 */ li r0, 0
|
||||
/* 8033E2DC 90 1F 00 04 */ stw r0, 4(r31)
|
||||
/* 8033E2E0 93 E4 00 00 */ stw r31, 0(r4)
|
||||
/* 8033E2E4 80 1F 00 10 */ lwz r0, 0x10(r31)
|
||||
/* 8033E2E8 7C 00 FA 14 */ add r0, r0, r31
|
||||
/* 8033E2EC 90 1F 00 10 */ stw r0, 0x10(r31)
|
||||
/* 8033E2F0 80 1F 00 24 */ lwz r0, 0x24(r31)
|
||||
/* 8033E2F4 7C 00 FA 14 */ add r0, r0, r31
|
||||
/* 8033E2F8 90 1F 00 24 */ stw r0, 0x24(r31)
|
||||
/* 8033E2FC 80 1F 00 28 */ lwz r0, 0x28(r31)
|
||||
/* 8033E300 7C 00 FA 14 */ add r0, r0, r31
|
||||
/* 8033E304 90 1F 00 28 */ stw r0, 0x28(r31)
|
||||
/* 8033E308 80 1F 00 1C */ lwz r0, 0x1c(r31)
|
||||
/* 8033E30C 28 00 00 03 */ cmplwi r0, 3
|
||||
/* 8033E310 41 80 00 10 */ blt lbl_8033E320
|
||||
/* 8033E314 80 1F 00 48 */ lwz r0, 0x48(r31)
|
||||
/* 8033E318 7C 00 FA 14 */ add r0, r0, r31
|
||||
/* 8033E31C 90 1F 00 48 */ stw r0, 0x48(r31)
|
||||
lbl_8033E320:
|
||||
/* 8033E320 38 A0 00 01 */ li r5, 1
|
||||
/* 8033E324 38 60 00 08 */ li r3, 8
|
||||
/* 8033E328 48 00 00 40 */ b lbl_8033E368
|
||||
lbl_8033E32C:
|
||||
/* 8033E32C 80 1F 00 10 */ lwz r0, 0x10(r31)
|
||||
/* 8033E330 7C 80 1A 14 */ add r4, r0, r3
|
||||
/* 8033E334 80 04 00 00 */ lwz r0, 0(r4)
|
||||
/* 8033E338 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 8033E33C 41 82 00 10 */ beq lbl_8033E34C
|
||||
/* 8033E340 7C 00 FA 14 */ add r0, r0, r31
|
||||
/* 8033E344 90 04 00 00 */ stw r0, 0(r4)
|
||||
/* 8033E348 48 00 00 18 */ b lbl_8033E360
|
||||
lbl_8033E34C:
|
||||
/* 8033E34C 80 04 00 04 */ lwz r0, 4(r4)
|
||||
/* 8033E350 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 8033E354 41 82 00 0C */ beq lbl_8033E360
|
||||
/* 8033E358 98 BF 00 33 */ stb r5, 0x33(r31)
|
||||
/* 8033E35C 93 A4 00 00 */ stw r29, 0(r4)
|
||||
lbl_8033E360:
|
||||
/* 8033E360 38 63 00 08 */ addi r3, r3, 8
|
||||
/* 8033E364 38 A5 00 01 */ addi r5, r5, 1
|
||||
lbl_8033E368:
|
||||
/* 8033E368 80 1F 00 0C */ lwz r0, 0xc(r31)
|
||||
/* 8033E36C 7C 05 00 40 */ cmplw r5, r0
|
||||
/* 8033E370 41 80 FF BC */ blt lbl_8033E32C
|
||||
/* 8033E374 80 9F 00 28 */ lwz r4, 0x28(r31)
|
||||
/* 8033E378 48 00 00 14 */ b lbl_8033E38C
|
||||
lbl_8033E37C:
|
||||
/* 8033E37C 80 04 00 04 */ lwz r0, 4(r4)
|
||||
/* 8033E380 7C 00 FA 14 */ add r0, r0, r31
|
||||
/* 8033E384 90 04 00 04 */ stw r0, 4(r4)
|
||||
/* 8033E388 38 84 00 08 */ addi r4, r4, 8
|
||||
lbl_8033E38C:
|
||||
/* 8033E38C 80 7F 00 28 */ lwz r3, 0x28(r31)
|
||||
/* 8033E390 80 1F 00 2C */ lwz r0, 0x2c(r31)
|
||||
/* 8033E394 7C 03 02 14 */ add r0, r3, r0
|
||||
/* 8033E398 7C 04 00 40 */ cmplw r4, r0
|
||||
/* 8033E39C 41 80 FF E0 */ blt lbl_8033E37C
|
||||
/* 8033E3A0 88 1F 00 30 */ lbz r0, 0x30(r31)
|
||||
/* 8033E3A4 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 8033E3A8 41 82 00 20 */ beq lbl_8033E3C8
|
||||
/* 8033E3AC 80 7F 00 10 */ lwz r3, 0x10(r31)
|
||||
/* 8033E3B0 54 00 18 38 */ slwi r0, r0, 3
|
||||
/* 8033E3B4 80 9F 00 34 */ lwz r4, 0x34(r31)
|
||||
/* 8033E3B8 7C 03 00 2E */ lwzx r0, r3, r0
|
||||
/* 8033E3BC 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e
|
||||
/* 8033E3C0 7C 04 02 14 */ add r0, r4, r0
|
||||
/* 8033E3C4 90 1F 00 34 */ stw r0, 0x34(r31)
|
||||
lbl_8033E3C8:
|
||||
/* 8033E3C8 88 1F 00 31 */ lbz r0, 0x31(r31)
|
||||
/* 8033E3CC 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 8033E3D0 41 82 00 20 */ beq lbl_8033E3F0
|
||||
/* 8033E3D4 80 7F 00 10 */ lwz r3, 0x10(r31)
|
||||
/* 8033E3D8 54 00 18 38 */ slwi r0, r0, 3
|
||||
/* 8033E3DC 80 9F 00 38 */ lwz r4, 0x38(r31)
|
||||
/* 8033E3E0 7C 03 00 2E */ lwzx r0, r3, r0
|
||||
/* 8033E3E4 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e
|
||||
/* 8033E3E8 7C 04 02 14 */ add r0, r4, r0
|
||||
/* 8033E3EC 90 1F 00 38 */ stw r0, 0x38(r31)
|
||||
lbl_8033E3F0:
|
||||
/* 8033E3F0 88 1F 00 32 */ lbz r0, 0x32(r31)
|
||||
/* 8033E3F4 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 8033E3F8 41 82 00 20 */ beq lbl_8033E418
|
||||
/* 8033E3FC 80 7F 00 10 */ lwz r3, 0x10(r31)
|
||||
/* 8033E400 54 00 18 38 */ slwi r0, r0, 3
|
||||
/* 8033E404 80 9F 00 3C */ lwz r4, 0x3c(r31)
|
||||
/* 8033E408 7C 03 00 2E */ lwzx r0, r3, r0
|
||||
/* 8033E40C 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e
|
||||
/* 8033E410 7C 04 02 14 */ add r0, r4, r0
|
||||
/* 8033E414 90 1F 00 3C */ stw r0, 0x3c(r31)
|
||||
lbl_8033E418:
|
||||
/* 8033E418 3C 60 80 00 */ lis r3, 0x8000 /* 0x800030D0@ha */
|
||||
/* 8033E41C 80 63 30 D0 */ lwz r3, 0x30D0(r3) /* 0x800030D0@l */
|
||||
/* 8033E420 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 8033E424 41 82 00 10 */ beq lbl_8033E434
|
||||
/* 8033E428 80 1F 00 14 */ lwz r0, 0x14(r31)
|
||||
/* 8033E42C 7C 00 1A 14 */ add r0, r0, r3
|
||||
/* 8033E430 90 1F 00 14 */ stw r0, 0x14(r31)
|
||||
lbl_8033E434:
|
||||
/* 8033E434 38 60 00 00 */ li r3, 0
|
||||
/* 8033E438 38 9F 00 00 */ addi r4, r31, 0
|
||||
/* 8033E43C 4B FF FB 39 */ bl Relocate
|
||||
/* 8033E440 3C 60 80 00 */ lis r3, 0x8000 /* 0x800030C8@ha */
|
||||
/* 8033E444 83 83 30 C8 */ lwz r28, 0x30C8(r3) /* 0x800030C8@l */
|
||||
/* 8033E448 48 00 00 28 */ b lbl_8033E470
|
||||
lbl_8033E44C:
|
||||
/* 8033E44C 38 7F 00 00 */ addi r3, r31, 0
|
||||
/* 8033E450 38 9C 00 00 */ addi r4, r28, 0
|
||||
/* 8033E454 4B FF FB 21 */ bl Relocate
|
||||
/* 8033E458 7C 1C F8 40 */ cmplw r28, r31
|
||||
/* 8033E45C 41 82 00 10 */ beq lbl_8033E46C
|
||||
/* 8033E460 38 7C 00 00 */ addi r3, r28, 0
|
||||
/* 8033E464 38 9F 00 00 */ addi r4, r31, 0
|
||||
/* 8033E468 4B FF FB 0D */ bl Relocate
|
||||
lbl_8033E46C:
|
||||
/* 8033E46C 83 9C 00 04 */ lwz r28, 4(r28)
|
||||
lbl_8033E470:
|
||||
/* 8033E470 28 1C 00 00 */ cmplwi r28, 0
|
||||
/* 8033E474 40 82 FF D8 */ bne lbl_8033E44C
|
||||
/* 8033E478 2C 1E 00 00 */ cmpwi r30, 0
|
||||
/* 8033E47C 41 82 00 58 */ beq lbl_8033E4D4
|
||||
/* 8033E480 80 9F 00 28 */ lwz r4, 0x28(r31)
|
||||
/* 8033E484 80 1F 00 2C */ lwz r0, 0x2c(r31)
|
||||
/* 8033E488 38 A4 00 00 */ addi r5, r4, 0
|
||||
/* 8033E48C 7C 64 02 14 */ add r3, r4, r0
|
||||
/* 8033E490 38 03 00 07 */ addi r0, r3, 7
|
||||
/* 8033E494 7C 05 00 50 */ subf r0, r5, r0
|
||||
/* 8033E498 54 00 E8 FE */ srwi r0, r0, 3
|
||||
/* 8033E49C 7C 05 18 40 */ cmplw r5, r3
|
||||
/* 8033E4A0 7C 09 03 A6 */ mtctr r0
|
||||
/* 8033E4A4 40 80 00 30 */ bge lbl_8033E4D4
|
||||
lbl_8033E4A8:
|
||||
/* 8033E4A8 80 65 00 00 */ lwz r3, 0(r5)
|
||||
/* 8033E4AC 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 8033E4B0 41 82 00 10 */ beq lbl_8033E4C0
|
||||
/* 8033E4B4 80 1F 00 00 */ lwz r0, 0(r31)
|
||||
/* 8033E4B8 7C 03 00 40 */ cmplw r3, r0
|
||||
/* 8033E4BC 40 82 00 10 */ bne lbl_8033E4CC
|
||||
lbl_8033E4C0:
|
||||
/* 8033E4C0 7C 04 28 50 */ subf r0, r4, r5
|
||||
/* 8033E4C4 90 1F 00 2C */ stw r0, 0x2c(r31)
|
||||
/* 8033E4C8 48 00 00 0C */ b lbl_8033E4D4
|
||||
lbl_8033E4CC:
|
||||
/* 8033E4CC 38 A5 00 08 */ addi r5, r5, 8
|
||||
/* 8033E4D0 42 00 FF D8 */ bdnz lbl_8033E4A8
|
||||
lbl_8033E4D4:
|
||||
/* 8033E4D4 80 BF 00 20 */ lwz r5, 0x20(r31)
|
||||
/* 8033E4D8 38 7D 00 00 */ addi r3, r29, 0
|
||||
/* 8033E4DC 38 80 00 00 */ li r4, 0
|
||||
/* 8033E4E0 4B CC 4F 79 */ bl memset
|
||||
/* 8033E4E4 7F E3 FB 78 */ mr r3, r31
|
||||
/* 8033E4E8 4B FF FA 79 */ bl OSNotifyLink
|
||||
/* 8033E4EC 38 60 00 01 */ li r3, 1
|
||||
lbl_8033E4F0:
|
||||
/* 8033E4F0 80 01 00 2C */ lwz r0, 0x2c(r1)
|
||||
/* 8033E4F4 83 E1 00 24 */ lwz r31, 0x24(r1)
|
||||
/* 8033E4F8 83 C1 00 20 */ lwz r30, 0x20(r1)
|
||||
/* 8033E4FC 83 A1 00 1C */ lwz r29, 0x1c(r1)
|
||||
/* 8033E500 83 81 00 18 */ lwz r28, 0x18(r1)
|
||||
/* 8033E504 38 21 00 28 */ addi r1, r1, 0x28
|
||||
/* 8033E508 7C 08 03 A6 */ mtlr r0
|
||||
/* 8033E50C 4E 80 00 20 */ blr
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
lbl_8033E510:
|
||||
/* 8033E510 7C 08 02 A6 */ mflr r0
|
||||
/* 8033E514 38 A0 00 00 */ li r5, 0
|
||||
/* 8033E518 90 01 00 04 */ stw r0, 4(r1)
|
||||
/* 8033E51C 94 21 FF F8 */ stwu r1, -8(r1)
|
||||
/* 8033E520 4B FF FD 11 */ bl Link
|
||||
/* 8033E524 80 01 00 0C */ lwz r0, 0xc(r1)
|
||||
/* 8033E528 38 21 00 08 */ addi r1, r1, 8
|
||||
/* 8033E52C 7C 08 03 A6 */ mtlr r0
|
||||
/* 8033E530 4E 80 00 20 */ blr
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
lbl_8033E534:
|
||||
/* 8033E534 7C 08 02 A6 */ mflr r0
|
||||
/* 8033E538 90 01 00 04 */ stw r0, 4(r1)
|
||||
/* 8033E53C 94 21 FF F8 */ stwu r1, -8(r1)
|
||||
/* 8033E540 80 03 00 1C */ lwz r0, 0x1c(r3)
|
||||
/* 8033E544 28 00 00 03 */ cmplwi r0, 3
|
||||
/* 8033E548 41 81 00 08 */ bgt lbl_8033E550
|
||||
/* 8033E54C 40 80 00 0C */ bge lbl_8033E558
|
||||
lbl_8033E550:
|
||||
/* 8033E550 38 60 00 00 */ li r3, 0
|
||||
/* 8033E554 48 00 00 0C */ b lbl_8033E560
|
||||
lbl_8033E558:
|
||||
/* 8033E558 38 A0 00 01 */ li r5, 1
|
||||
/* 8033E55C 4B FF FC D5 */ bl Link
|
||||
lbl_8033E560:
|
||||
/* 8033E560 80 01 00 0C */ lwz r0, 0xc(r1)
|
||||
/* 8033E564 38 21 00 08 */ addi r1, r1, 8
|
||||
/* 8033E568 7C 08 03 A6 */ mtlr r0
|
||||
/* 8033E56C 4E 80 00 20 */ blr
|
||||
|
|
@ -1,134 +0,0 @@
|
|||
lbl_8033E7A8:
|
||||
/* 8033E7A8 7C 08 02 A6 */ mflr r0
|
||||
/* 8033E7AC 90 01 00 04 */ stw r0, 4(r1)
|
||||
/* 8033E7B0 94 21 FF E8 */ stwu r1, -0x18(r1)
|
||||
/* 8033E7B4 93 E1 00 14 */ stw r31, 0x14(r1)
|
||||
/* 8033E7B8 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 8033E7BC 93 C1 00 10 */ stw r30, 0x10(r1)
|
||||
/* 8033E7C0 80 83 00 04 */ lwz r4, 4(r3)
|
||||
/* 8033E7C4 80 A3 00 08 */ lwz r5, 8(r3)
|
||||
/* 8033E7C8 28 04 00 00 */ cmplwi r4, 0
|
||||
/* 8033E7CC 40 82 00 10 */ bne lbl_8033E7DC
|
||||
/* 8033E7D0 3C 60 80 00 */ lis r3, 0x8000 /* 0x800030CC@ha */
|
||||
/* 8033E7D4 90 A3 30 CC */ stw r5, 0x30CC(r3) /* 0x800030CC@l */
|
||||
/* 8033E7D8 48 00 00 08 */ b lbl_8033E7E0
|
||||
lbl_8033E7DC:
|
||||
/* 8033E7DC 90 A4 00 08 */ stw r5, 8(r4)
|
||||
lbl_8033E7E0:
|
||||
/* 8033E7E0 28 05 00 00 */ cmplwi r5, 0
|
||||
/* 8033E7E4 40 82 00 10 */ bne lbl_8033E7F4
|
||||
/* 8033E7E8 3C 60 80 00 */ lis r3, 0x8000 /* 0x800030C8@ha */
|
||||
/* 8033E7EC 90 83 30 C8 */ stw r4, 0x30C8(r3) /* 0x800030C8@l */
|
||||
/* 8033E7F0 48 00 00 08 */ b lbl_8033E7F8
|
||||
lbl_8033E7F4:
|
||||
/* 8033E7F4 90 85 00 04 */ stw r4, 4(r5)
|
||||
lbl_8033E7F8:
|
||||
/* 8033E7F8 3C 60 80 00 */ lis r3, 0x8000 /* 0x800030C8@ha */
|
||||
/* 8033E7FC 83 C3 30 C8 */ lwz r30, 0x30C8(r3) /* 0x800030C8@l */
|
||||
/* 8033E800 48 00 00 14 */ b lbl_8033E814
|
||||
lbl_8033E804:
|
||||
/* 8033E804 38 7F 00 00 */ addi r3, r31, 0
|
||||
/* 8033E808 38 9E 00 00 */ addi r4, r30, 0
|
||||
/* 8033E80C 4B FF FD 65 */ bl Undo
|
||||
/* 8033E810 83 DE 00 04 */ lwz r30, 4(r30)
|
||||
lbl_8033E814:
|
||||
/* 8033E814 28 1E 00 00 */ cmplwi r30, 0
|
||||
/* 8033E818 40 82 FF EC */ bne lbl_8033E804
|
||||
/* 8033E81C 7F E3 FB 78 */ mr r3, r31
|
||||
/* 8033E820 4B FF F7 45 */ bl OSNotifyUnlink
|
||||
/* 8033E824 3C 60 80 00 */ lis r3, 0x8000 /* 0x800030D0@ha */
|
||||
/* 8033E828 80 63 30 D0 */ lwz r3, 0x30D0(r3) /* 0x800030D0@l */
|
||||
/* 8033E82C 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 8033E830 41 82 00 10 */ beq lbl_8033E840
|
||||
/* 8033E834 80 1F 00 14 */ lwz r0, 0x14(r31)
|
||||
/* 8033E838 7C 03 00 50 */ subf r0, r3, r0
|
||||
/* 8033E83C 90 1F 00 14 */ stw r0, 0x14(r31)
|
||||
lbl_8033E840:
|
||||
/* 8033E840 88 1F 00 30 */ lbz r0, 0x30(r31)
|
||||
/* 8033E844 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 8033E848 41 82 00 20 */ beq lbl_8033E868
|
||||
/* 8033E84C 80 9F 00 10 */ lwz r4, 0x10(r31)
|
||||
/* 8033E850 54 03 18 38 */ slwi r3, r0, 3
|
||||
/* 8033E854 80 1F 00 34 */ lwz r0, 0x34(r31)
|
||||
/* 8033E858 7C 64 18 2E */ lwzx r3, r4, r3
|
||||
/* 8033E85C 54 63 00 3C */ rlwinm r3, r3, 0, 0, 0x1e
|
||||
/* 8033E860 7C 03 00 50 */ subf r0, r3, r0
|
||||
/* 8033E864 90 1F 00 34 */ stw r0, 0x34(r31)
|
||||
lbl_8033E868:
|
||||
/* 8033E868 88 1F 00 31 */ lbz r0, 0x31(r31)
|
||||
/* 8033E86C 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 8033E870 41 82 00 20 */ beq lbl_8033E890
|
||||
/* 8033E874 80 9F 00 10 */ lwz r4, 0x10(r31)
|
||||
/* 8033E878 54 03 18 38 */ slwi r3, r0, 3
|
||||
/* 8033E87C 80 1F 00 38 */ lwz r0, 0x38(r31)
|
||||
/* 8033E880 7C 64 18 2E */ lwzx r3, r4, r3
|
||||
/* 8033E884 54 63 00 3C */ rlwinm r3, r3, 0, 0, 0x1e
|
||||
/* 8033E888 7C 03 00 50 */ subf r0, r3, r0
|
||||
/* 8033E88C 90 1F 00 38 */ stw r0, 0x38(r31)
|
||||
lbl_8033E890:
|
||||
/* 8033E890 88 1F 00 32 */ lbz r0, 0x32(r31)
|
||||
/* 8033E894 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 8033E898 41 82 00 20 */ beq lbl_8033E8B8
|
||||
/* 8033E89C 80 9F 00 10 */ lwz r4, 0x10(r31)
|
||||
/* 8033E8A0 54 03 18 38 */ slwi r3, r0, 3
|
||||
/* 8033E8A4 80 1F 00 3C */ lwz r0, 0x3c(r31)
|
||||
/* 8033E8A8 7C 64 18 2E */ lwzx r3, r4, r3
|
||||
/* 8033E8AC 54 63 00 3C */ rlwinm r3, r3, 0, 0, 0x1e
|
||||
/* 8033E8B0 7C 03 00 50 */ subf r0, r3, r0
|
||||
/* 8033E8B4 90 1F 00 3C */ stw r0, 0x3c(r31)
|
||||
lbl_8033E8B8:
|
||||
/* 8033E8B8 80 9F 00 28 */ lwz r4, 0x28(r31)
|
||||
/* 8033E8BC 48 00 00 14 */ b lbl_8033E8D0
|
||||
lbl_8033E8C0:
|
||||
/* 8033E8C0 80 04 00 04 */ lwz r0, 4(r4)
|
||||
/* 8033E8C4 7C 1F 00 50 */ subf r0, r31, r0
|
||||
/* 8033E8C8 90 04 00 04 */ stw r0, 4(r4)
|
||||
/* 8033E8CC 38 84 00 08 */ addi r4, r4, 8
|
||||
lbl_8033E8D0:
|
||||
/* 8033E8D0 80 7F 00 28 */ lwz r3, 0x28(r31)
|
||||
/* 8033E8D4 80 1F 00 2C */ lwz r0, 0x2c(r31)
|
||||
/* 8033E8D8 7C 03 02 14 */ add r0, r3, r0
|
||||
/* 8033E8DC 7C 04 00 40 */ cmplw r4, r0
|
||||
/* 8033E8E0 41 80 FF E0 */ blt lbl_8033E8C0
|
||||
/* 8033E8E4 38 C0 00 01 */ li r6, 1
|
||||
/* 8033E8E8 38 A0 00 08 */ li r5, 8
|
||||
/* 8033E8EC 38 60 00 00 */ li r3, 0
|
||||
/* 8033E8F0 48 00 00 40 */ b lbl_8033E930
|
||||
lbl_8033E8F4:
|
||||
/* 8033E8F4 88 1F 00 33 */ lbz r0, 0x33(r31)
|
||||
/* 8033E8F8 80 9F 00 10 */ lwz r4, 0x10(r31)
|
||||
/* 8033E8FC 7C 06 00 40 */ cmplw r6, r0
|
||||
/* 8033E900 7C 84 2A 14 */ add r4, r4, r5
|
||||
/* 8033E904 40 82 00 10 */ bne lbl_8033E914
|
||||
/* 8033E908 98 7F 00 33 */ stb r3, 0x33(r31)
|
||||
/* 8033E90C 90 64 00 00 */ stw r3, 0(r4)
|
||||
/* 8033E910 48 00 00 18 */ b lbl_8033E928
|
||||
lbl_8033E914:
|
||||
/* 8033E914 80 04 00 00 */ lwz r0, 0(r4)
|
||||
/* 8033E918 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 8033E91C 41 82 00 0C */ beq lbl_8033E928
|
||||
/* 8033E920 7C 1F 00 50 */ subf r0, r31, r0
|
||||
/* 8033E924 90 04 00 00 */ stw r0, 0(r4)
|
||||
lbl_8033E928:
|
||||
/* 8033E928 38 A5 00 08 */ addi r5, r5, 8
|
||||
/* 8033E92C 38 C6 00 01 */ addi r6, r6, 1
|
||||
lbl_8033E930:
|
||||
/* 8033E930 80 1F 00 0C */ lwz r0, 0xc(r31)
|
||||
/* 8033E934 7C 06 00 40 */ cmplw r6, r0
|
||||
/* 8033E938 41 80 FF BC */ blt lbl_8033E8F4
|
||||
/* 8033E93C 80 1F 00 24 */ lwz r0, 0x24(r31)
|
||||
/* 8033E940 38 60 00 01 */ li r3, 1
|
||||
/* 8033E944 7C 1F 00 50 */ subf r0, r31, r0
|
||||
/* 8033E948 90 1F 00 24 */ stw r0, 0x24(r31)
|
||||
/* 8033E94C 80 1F 00 28 */ lwz r0, 0x28(r31)
|
||||
/* 8033E950 7C 1F 00 50 */ subf r0, r31, r0
|
||||
/* 8033E954 90 1F 00 28 */ stw r0, 0x28(r31)
|
||||
/* 8033E958 80 1F 00 10 */ lwz r0, 0x10(r31)
|
||||
/* 8033E95C 7C 1F 00 50 */ subf r0, r31, r0
|
||||
/* 8033E960 90 1F 00 10 */ stw r0, 0x10(r31)
|
||||
/* 8033E964 80 01 00 1C */ lwz r0, 0x1c(r1)
|
||||
/* 8033E968 83 E1 00 14 */ lwz r31, 0x14(r1)
|
||||
/* 8033E96C 83 C1 00 10 */ lwz r30, 0x10(r1)
|
||||
/* 8033E970 38 21 00 18 */ addi r1, r1, 0x18
|
||||
/* 8033E974 7C 08 03 A6 */ mtlr r0
|
||||
/* 8033E978 4E 80 00 20 */ blr
|
||||
|
|
@ -1,207 +0,0 @@
|
|||
lbl_8033DF74:
|
||||
/* 8033DF74 7C 08 02 A6 */ mflr r0
|
||||
/* 8033DF78 90 01 00 04 */ stw r0, 4(r1)
|
||||
/* 8033DF7C 94 21 FF C0 */ stwu r1, -0x40(r1)
|
||||
/* 8033DF80 BE E1 00 1C */ stmw r23, 0x1c(r1)
|
||||
/* 8033DF84 7C 7A 1B 79 */ or. r26, r3, r3
|
||||
/* 8033DF88 3B 64 00 00 */ addi r27, r4, 0
|
||||
/* 8033DF8C 41 82 00 0C */ beq lbl_8033DF98
|
||||
/* 8033DF90 83 FA 00 00 */ lwz r31, 0(r26)
|
||||
/* 8033DF94 48 00 00 08 */ b lbl_8033DF9C
|
||||
lbl_8033DF98:
|
||||
/* 8033DF98 3B E0 00 00 */ li r31, 0
|
||||
lbl_8033DF9C:
|
||||
/* 8033DF9C 80 7B 00 28 */ lwz r3, 0x28(r27)
|
||||
/* 8033DFA0 80 1B 00 2C */ lwz r0, 0x2c(r27)
|
||||
/* 8033DFA4 38 83 00 00 */ addi r4, r3, 0
|
||||
/* 8033DFA8 7C 63 02 14 */ add r3, r3, r0
|
||||
/* 8033DFAC 38 03 00 07 */ addi r0, r3, 7
|
||||
/* 8033DFB0 7C 04 00 50 */ subf r0, r4, r0
|
||||
/* 8033DFB4 54 00 E8 FE */ srwi r0, r0, 3
|
||||
/* 8033DFB8 7C 04 18 40 */ cmplw r4, r3
|
||||
/* 8033DFBC 7C 09 03 A6 */ mtctr r0
|
||||
/* 8033DFC0 40 80 00 18 */ bge lbl_8033DFD8
|
||||
lbl_8033DFC4:
|
||||
/* 8033DFC4 80 04 00 00 */ lwz r0, 0(r4)
|
||||
/* 8033DFC8 7C 00 F8 40 */ cmplw r0, r31
|
||||
/* 8033DFCC 41 82 00 14 */ beq lbl_8033DFE0
|
||||
/* 8033DFD0 38 84 00 08 */ addi r4, r4, 8
|
||||
/* 8033DFD4 42 00 FF F0 */ bdnz lbl_8033DFC4
|
||||
lbl_8033DFD8:
|
||||
/* 8033DFD8 38 60 00 00 */ li r3, 0
|
||||
/* 8033DFDC 48 00 02 40 */ b lbl_8033E21C
|
||||
lbl_8033DFE0:
|
||||
/* 8033DFE0 3C 60 80 3D */ lis r3, lit_62@ha /* 0x803D0788@ha */
|
||||
/* 8033DFE4 83 C4 00 04 */ lwz r30, 4(r4)
|
||||
/* 8033DFE8 3B 23 07 88 */ addi r25, r3, lit_62@l /* 0x803D0788@l */
|
||||
/* 8033DFEC 3B A0 00 00 */ li r29, 0
|
||||
/* 8033DFF0 48 00 01 F4 */ b lbl_8033E1E4
|
||||
lbl_8033DFF4:
|
||||
/* 8033DFF4 A0 1E 00 00 */ lhz r0, 0(r30)
|
||||
/* 8033DFF8 28 1F 00 00 */ cmplwi r31, 0
|
||||
/* 8033DFFC 7F 9C 02 14 */ add r28, r28, r0
|
||||
/* 8033E000 41 82 00 1C */ beq lbl_8033E01C
|
||||
/* 8033E004 88 1E 00 03 */ lbz r0, 3(r30)
|
||||
/* 8033E008 80 7A 00 10 */ lwz r3, 0x10(r26)
|
||||
/* 8033E00C 54 00 18 38 */ slwi r0, r0, 3
|
||||
/* 8033E010 7C 03 00 2E */ lwzx r0, r3, r0
|
||||
/* 8033E014 54 05 00 3C */ rlwinm r5, r0, 0, 0, 0x1e
|
||||
/* 8033E018 48 00 00 08 */ b lbl_8033E020
|
||||
lbl_8033E01C:
|
||||
/* 8033E01C 38 A0 00 00 */ li r5, 0
|
||||
lbl_8033E020:
|
||||
/* 8033E020 2C 04 00 06 */ cmpwi r4, 6
|
||||
/* 8033E024 41 82 00 C4 */ beq lbl_8033E0E8
|
||||
/* 8033E028 40 80 00 30 */ bge lbl_8033E058
|
||||
/* 8033E02C 2C 04 00 02 */ cmpwi r4, 2
|
||||
/* 8033E030 41 82 00 68 */ beq lbl_8033E098
|
||||
/* 8033E034 40 80 00 14 */ bge lbl_8033E048
|
||||
/* 8033E038 2C 04 00 00 */ cmpwi r4, 0
|
||||
/* 8033E03C 41 82 01 A4 */ beq lbl_8033E1E0
|
||||
/* 8033E040 40 80 00 48 */ bge lbl_8033E088
|
||||
/* 8033E044 48 00 01 90 */ b lbl_8033E1D4
|
||||
lbl_8033E048:
|
||||
/* 8033E048 2C 04 00 04 */ cmpwi r4, 4
|
||||
/* 8033E04C 41 82 00 78 */ beq lbl_8033E0C4
|
||||
/* 8033E050 40 80 00 84 */ bge lbl_8033E0D4
|
||||
/* 8033E054 48 00 00 60 */ b lbl_8033E0B4
|
||||
lbl_8033E058:
|
||||
/* 8033E058 2C 04 00 C9 */ cmpwi r4, 0xc9
|
||||
/* 8033E05C 41 82 01 84 */ beq lbl_8033E1E0
|
||||
/* 8033E060 40 80 00 1C */ bge lbl_8033E07C
|
||||
/* 8033E064 2C 04 00 0A */ cmpwi r4, 0xa
|
||||
/* 8033E068 41 82 00 C8 */ beq lbl_8033E130
|
||||
/* 8033E06C 41 80 00 A8 */ blt lbl_8033E114
|
||||
/* 8033E070 2C 04 00 0E */ cmpwi r4, 0xe
|
||||
/* 8033E074 40 80 01 60 */ bge lbl_8033E1D4
|
||||
/* 8033E078 48 00 00 D8 */ b lbl_8033E150
|
||||
lbl_8033E07C:
|
||||
/* 8033E07C 2C 04 00 CB */ cmpwi r4, 0xcb
|
||||
/* 8033E080 40 80 01 54 */ bge lbl_8033E1D4
|
||||
/* 8033E084 48 00 00 EC */ b lbl_8033E170
|
||||
lbl_8033E088:
|
||||
/* 8033E088 80 1E 00 04 */ lwz r0, 4(r30)
|
||||
/* 8033E08C 7C 05 02 14 */ add r0, r5, r0
|
||||
/* 8033E090 90 1C 00 00 */ stw r0, 0(r28)
|
||||
/* 8033E094 48 00 01 4C */ b lbl_8033E1E0
|
||||
lbl_8033E098:
|
||||
/* 8033E098 80 1E 00 04 */ lwz r0, 4(r30)
|
||||
/* 8033E09C 80 7C 00 00 */ lwz r3, 0(r28)
|
||||
/* 8033E0A0 7C 05 02 14 */ add r0, r5, r0
|
||||
/* 8033E0A4 54 63 07 8A */ rlwinm r3, r3, 0, 0x1e, 5
|
||||
/* 8033E0A8 50 03 01 BA */ rlwimi r3, r0, 0, 6, 0x1d
|
||||
/* 8033E0AC 90 7C 00 00 */ stw r3, 0(r28)
|
||||
/* 8033E0B0 48 00 01 30 */ b lbl_8033E1E0
|
||||
lbl_8033E0B4:
|
||||
/* 8033E0B4 80 1E 00 04 */ lwz r0, 4(r30)
|
||||
/* 8033E0B8 7C 05 02 14 */ add r0, r5, r0
|
||||
/* 8033E0BC B0 1C 00 00 */ sth r0, 0(r28)
|
||||
/* 8033E0C0 48 00 01 20 */ b lbl_8033E1E0
|
||||
lbl_8033E0C4:
|
||||
/* 8033E0C4 80 1E 00 04 */ lwz r0, 4(r30)
|
||||
/* 8033E0C8 7C 05 02 14 */ add r0, r5, r0
|
||||
/* 8033E0CC B0 1C 00 00 */ sth r0, 0(r28)
|
||||
/* 8033E0D0 48 00 01 10 */ b lbl_8033E1E0
|
||||
lbl_8033E0D4:
|
||||
/* 8033E0D4 80 1E 00 04 */ lwz r0, 4(r30)
|
||||
/* 8033E0D8 7C 05 02 14 */ add r0, r5, r0
|
||||
/* 8033E0DC 54 00 84 3E */ srwi r0, r0, 0x10
|
||||
/* 8033E0E0 B0 1C 00 00 */ sth r0, 0(r28)
|
||||
/* 8033E0E4 48 00 00 FC */ b lbl_8033E1E0
|
||||
lbl_8033E0E8:
|
||||
/* 8033E0E8 80 1E 00 04 */ lwz r0, 4(r30)
|
||||
/* 8033E0EC 7C 85 02 14 */ add r4, r5, r0
|
||||
/* 8033E0F0 54 80 04 21 */ rlwinm. r0, r4, 0, 0x10, 0x10
|
||||
/* 8033E0F4 41 82 00 0C */ beq lbl_8033E100
|
||||
/* 8033E0F8 38 60 00 01 */ li r3, 1
|
||||
/* 8033E0FC 48 00 00 08 */ b lbl_8033E104
|
||||
lbl_8033E100:
|
||||
/* 8033E100 38 60 00 00 */ li r3, 0
|
||||
lbl_8033E104:
|
||||
/* 8033E104 54 80 84 3E */ srwi r0, r4, 0x10
|
||||
/* 8033E108 7C 00 1A 14 */ add r0, r0, r3
|
||||
/* 8033E10C B0 1C 00 00 */ sth r0, 0(r28)
|
||||
/* 8033E110 48 00 00 D0 */ b lbl_8033E1E0
|
||||
lbl_8033E114:
|
||||
/* 8033E114 80 1E 00 04 */ lwz r0, 4(r30)
|
||||
/* 8033E118 80 7C 00 00 */ lwz r3, 0(r28)
|
||||
/* 8033E11C 7C 05 02 14 */ add r0, r5, r0
|
||||
/* 8033E120 54 63 07 9E */ rlwinm r3, r3, 0, 0x1e, 0xf
|
||||
/* 8033E124 50 03 04 3A */ rlwimi r3, r0, 0, 0x10, 0x1d
|
||||
/* 8033E128 90 7C 00 00 */ stw r3, 0(r28)
|
||||
/* 8033E12C 48 00 00 B4 */ b lbl_8033E1E0
|
||||
lbl_8033E130:
|
||||
/* 8033E130 80 1E 00 04 */ lwz r0, 4(r30)
|
||||
/* 8033E134 80 7C 00 00 */ lwz r3, 0(r28)
|
||||
/* 8033E138 7C 05 02 14 */ add r0, r5, r0
|
||||
/* 8033E13C 7C 1C 00 50 */ subf r0, r28, r0
|
||||
/* 8033E140 54 63 07 8A */ rlwinm r3, r3, 0, 0x1e, 5
|
||||
/* 8033E144 50 03 01 BA */ rlwimi r3, r0, 0, 6, 0x1d
|
||||
/* 8033E148 90 7C 00 00 */ stw r3, 0(r28)
|
||||
/* 8033E14C 48 00 00 94 */ b lbl_8033E1E0
|
||||
lbl_8033E150:
|
||||
/* 8033E150 80 1E 00 04 */ lwz r0, 4(r30)
|
||||
/* 8033E154 80 7C 00 00 */ lwz r3, 0(r28)
|
||||
/* 8033E158 7C 05 02 14 */ add r0, r5, r0
|
||||
/* 8033E15C 7C 1C 00 50 */ subf r0, r28, r0
|
||||
/* 8033E160 54 63 07 9E */ rlwinm r3, r3, 0, 0x1e, 0xf
|
||||
/* 8033E164 50 03 04 3A */ rlwimi r3, r0, 0, 0x10, 0x1d
|
||||
/* 8033E168 90 7C 00 00 */ stw r3, 0(r28)
|
||||
/* 8033E16C 48 00 00 74 */ b lbl_8033E1E0
|
||||
lbl_8033E170:
|
||||
/* 8033E170 88 1E 00 03 */ lbz r0, 3(r30)
|
||||
/* 8033E174 28 1D 00 00 */ cmplwi r29, 0
|
||||
/* 8033E178 80 7B 00 10 */ lwz r3, 0x10(r27)
|
||||
/* 8033E17C 54 00 18 38 */ slwi r0, r0, 3
|
||||
/* 8033E180 7C 63 02 14 */ add r3, r3, r0
|
||||
/* 8033E184 80 03 00 00 */ lwz r0, 0(r3)
|
||||
/* 8033E188 3A E3 00 00 */ addi r23, r3, 0
|
||||
/* 8033E18C 54 1C 00 3C */ rlwinm r28, r0, 0, 0, 0x1e
|
||||
/* 8033E190 41 82 00 24 */ beq lbl_8033E1B4
|
||||
/* 8033E194 80 1D 00 00 */ lwz r0, 0(r29)
|
||||
/* 8033E198 80 9D 00 04 */ lwz r4, 4(r29)
|
||||
/* 8033E19C 54 18 00 3C */ rlwinm r24, r0, 0, 0, 0x1e
|
||||
/* 8033E1A0 38 78 00 00 */ addi r3, r24, 0
|
||||
/* 8033E1A4 4B FF D4 09 */ bl DCFlushRange
|
||||
/* 8033E1A8 7F 03 C3 78 */ mr r3, r24
|
||||
/* 8033E1AC 80 9D 00 04 */ lwz r4, 4(r29)
|
||||
/* 8033E1B0 4B FF D4 E1 */ bl ICInvalidateRange
|
||||
lbl_8033E1B4:
|
||||
/* 8033E1B4 80 17 00 00 */ lwz r0, 0(r23)
|
||||
/* 8033E1B8 54 00 07 FF */ clrlwi. r0, r0, 0x1f
|
||||
/* 8033E1BC 41 82 00 0C */ beq lbl_8033E1C8
|
||||
/* 8033E1C0 7E E0 BB 78 */ mr r0, r23
|
||||
/* 8033E1C4 48 00 00 08 */ b lbl_8033E1CC
|
||||
lbl_8033E1C8:
|
||||
/* 8033E1C8 38 00 00 00 */ li r0, 0
|
||||
lbl_8033E1CC:
|
||||
/* 8033E1CC 7C 1D 03 78 */ mr r29, r0
|
||||
/* 8033E1D0 48 00 00 10 */ b lbl_8033E1E0
|
||||
lbl_8033E1D4:
|
||||
/* 8033E1D4 38 79 00 00 */ addi r3, r25, 0
|
||||
/* 8033E1D8 4C C6 31 82 */ crclr 6
|
||||
/* 8033E1DC 4B CC 88 E1 */ bl OSReport
|
||||
lbl_8033E1E0:
|
||||
/* 8033E1E0 3B DE 00 08 */ addi r30, r30, 8
|
||||
lbl_8033E1E4:
|
||||
/* 8033E1E4 88 9E 00 02 */ lbz r4, 2(r30)
|
||||
/* 8033E1E8 28 04 00 CB */ cmplwi r4, 0xcb
|
||||
/* 8033E1EC 40 82 FE 08 */ bne lbl_8033DFF4
|
||||
/* 8033E1F0 28 1D 00 00 */ cmplwi r29, 0
|
||||
/* 8033E1F4 41 82 00 24 */ beq lbl_8033E218
|
||||
/* 8033E1F8 80 1D 00 00 */ lwz r0, 0(r29)
|
||||
/* 8033E1FC 80 9D 00 04 */ lwz r4, 4(r29)
|
||||
/* 8033E200 54 19 00 3C */ rlwinm r25, r0, 0, 0, 0x1e
|
||||
/* 8033E204 38 79 00 00 */ addi r3, r25, 0
|
||||
/* 8033E208 4B FF D3 A5 */ bl DCFlushRange
|
||||
/* 8033E20C 7F 23 CB 78 */ mr r3, r25
|
||||
/* 8033E210 80 9D 00 04 */ lwz r4, 4(r29)
|
||||
/* 8033E214 4B FF D4 7D */ bl ICInvalidateRange
|
||||
lbl_8033E218:
|
||||
/* 8033E218 38 60 00 01 */ li r3, 1
|
||||
lbl_8033E21C:
|
||||
/* 8033E21C BA E1 00 1C */ lmw r23, 0x1c(r1)
|
||||
/* 8033E220 80 01 00 44 */ lwz r0, 0x44(r1)
|
||||
/* 8033E224 38 21 00 40 */ addi r1, r1, 0x40
|
||||
/* 8033E228 7C 08 03 A6 */ mtlr r0
|
||||
/* 8033E22C 4E 80 00 20 */ blr
|
||||
|
|
@ -1,169 +0,0 @@
|
|||
lbl_8033E570:
|
||||
/* 8033E570 7C 08 02 A6 */ mflr r0
|
||||
/* 8033E574 90 01 00 04 */ stw r0, 4(r1)
|
||||
/* 8033E578 94 21 FF C8 */ stwu r1, -0x38(r1)
|
||||
/* 8033E57C BF 21 00 1C */ stmw r25, 0x1c(r1)
|
||||
/* 8033E580 7C 9C 23 78 */ mr r28, r4
|
||||
/* 8033E584 80 83 00 00 */ lwz r4, 0(r3)
|
||||
/* 8033E588 80 7C 00 28 */ lwz r3, 0x28(r28)
|
||||
/* 8033E58C 80 1C 00 2C */ lwz r0, 0x2c(r28)
|
||||
/* 8033E590 38 A3 00 00 */ addi r5, r3, 0
|
||||
/* 8033E594 7C 63 02 14 */ add r3, r3, r0
|
||||
/* 8033E598 38 03 00 07 */ addi r0, r3, 7
|
||||
/* 8033E59C 7C 05 00 50 */ subf r0, r5, r0
|
||||
/* 8033E5A0 54 00 E8 FE */ srwi r0, r0, 3
|
||||
/* 8033E5A4 7C 05 18 40 */ cmplw r5, r3
|
||||
/* 8033E5A8 7C 09 03 A6 */ mtctr r0
|
||||
/* 8033E5AC 40 80 00 18 */ bge lbl_8033E5C4
|
||||
lbl_8033E5B0:
|
||||
/* 8033E5B0 80 05 00 00 */ lwz r0, 0(r5)
|
||||
/* 8033E5B4 7C 00 20 40 */ cmplw r0, r4
|
||||
/* 8033E5B8 41 82 00 14 */ beq lbl_8033E5CC
|
||||
/* 8033E5BC 38 A5 00 08 */ addi r5, r5, 8
|
||||
/* 8033E5C0 42 00 FF F0 */ bdnz lbl_8033E5B0
|
||||
lbl_8033E5C4:
|
||||
/* 8033E5C4 38 60 00 00 */ li r3, 0
|
||||
/* 8033E5C8 48 00 01 CC */ b lbl_8033E794
|
||||
lbl_8033E5CC:
|
||||
/* 8033E5CC 3C 60 80 3D */ lis r3, lit_189@ha /* 0x803D07B0@ha */
|
||||
/* 8033E5D0 83 E5 00 04 */ lwz r31, 4(r5)
|
||||
/* 8033E5D4 3B 63 07 B0 */ addi r27, r3, lit_189@l /* 0x803D07B0@l */
|
||||
/* 8033E5D8 3B C0 00 00 */ li r30, 0
|
||||
/* 8033E5DC 48 00 01 80 */ b lbl_8033E75C
|
||||
lbl_8033E5E0:
|
||||
/* 8033E5E0 A0 1F 00 00 */ lhz r0, 0(r31)
|
||||
/* 8033E5E4 2C 04 00 06 */ cmpwi r4, 6
|
||||
/* 8033E5E8 38 60 00 00 */ li r3, 0
|
||||
/* 8033E5EC 7F BD 02 14 */ add r29, r29, r0
|
||||
/* 8033E5F0 41 82 00 A4 */ beq lbl_8033E694
|
||||
/* 8033E5F4 40 80 00 30 */ bge lbl_8033E624
|
||||
/* 8033E5F8 2C 04 00 02 */ cmpwi r4, 2
|
||||
/* 8033E5FC 41 82 00 64 */ beq lbl_8033E660
|
||||
/* 8033E600 40 80 00 14 */ bge lbl_8033E614
|
||||
/* 8033E604 2C 04 00 00 */ cmpwi r4, 0
|
||||
/* 8033E608 41 82 01 50 */ beq lbl_8033E758
|
||||
/* 8033E60C 40 80 00 48 */ bge lbl_8033E654
|
||||
/* 8033E610 48 00 01 3C */ b lbl_8033E74C
|
||||
lbl_8033E614:
|
||||
/* 8033E614 2C 04 00 04 */ cmpwi r4, 4
|
||||
/* 8033E618 41 82 00 64 */ beq lbl_8033E67C
|
||||
/* 8033E61C 40 80 00 6C */ bge lbl_8033E688
|
||||
/* 8033E620 48 00 00 50 */ b lbl_8033E670
|
||||
lbl_8033E624:
|
||||
/* 8033E624 2C 04 00 C9 */ cmpwi r4, 0xc9
|
||||
/* 8033E628 41 82 01 30 */ beq lbl_8033E758
|
||||
/* 8033E62C 40 80 00 1C */ bge lbl_8033E648
|
||||
/* 8033E630 2C 04 00 0A */ cmpwi r4, 0xa
|
||||
/* 8033E634 41 82 00 7C */ beq lbl_8033E6B0
|
||||
/* 8033E638 41 80 00 68 */ blt lbl_8033E6A0
|
||||
/* 8033E63C 2C 04 00 0E */ cmpwi r4, 0xe
|
||||
/* 8033E640 40 80 01 0C */ bge lbl_8033E74C
|
||||
/* 8033E644 48 00 00 94 */ b lbl_8033E6D8
|
||||
lbl_8033E648:
|
||||
/* 8033E648 2C 04 00 CB */ cmpwi r4, 0xcb
|
||||
/* 8033E64C 40 80 01 00 */ bge lbl_8033E74C
|
||||
/* 8033E650 48 00 00 98 */ b lbl_8033E6E8
|
||||
lbl_8033E654:
|
||||
/* 8033E654 38 00 00 00 */ li r0, 0
|
||||
/* 8033E658 90 1D 00 00 */ stw r0, 0(r29)
|
||||
/* 8033E65C 48 00 00 FC */ b lbl_8033E758
|
||||
lbl_8033E660:
|
||||
/* 8033E660 80 1D 00 00 */ lwz r0, 0(r29)
|
||||
/* 8033E664 54 00 07 8A */ rlwinm r0, r0, 0, 0x1e, 5
|
||||
/* 8033E668 90 1D 00 00 */ stw r0, 0(r29)
|
||||
/* 8033E66C 48 00 00 EC */ b lbl_8033E758
|
||||
lbl_8033E670:
|
||||
/* 8033E670 38 00 00 00 */ li r0, 0
|
||||
/* 8033E674 B0 1D 00 00 */ sth r0, 0(r29)
|
||||
/* 8033E678 48 00 00 E0 */ b lbl_8033E758
|
||||
lbl_8033E67C:
|
||||
/* 8033E67C 38 00 00 00 */ li r0, 0
|
||||
/* 8033E680 B0 1D 00 00 */ sth r0, 0(r29)
|
||||
/* 8033E684 48 00 00 D4 */ b lbl_8033E758
|
||||
lbl_8033E688:
|
||||
/* 8033E688 38 00 00 00 */ li r0, 0
|
||||
/* 8033E68C B0 1D 00 00 */ sth r0, 0(r29)
|
||||
/* 8033E690 48 00 00 C8 */ b lbl_8033E758
|
||||
lbl_8033E694:
|
||||
/* 8033E694 38 00 00 00 */ li r0, 0
|
||||
/* 8033E698 B0 1D 00 00 */ sth r0, 0(r29)
|
||||
/* 8033E69C 48 00 00 BC */ b lbl_8033E758
|
||||
lbl_8033E6A0:
|
||||
/* 8033E6A0 80 1D 00 00 */ lwz r0, 0(r29)
|
||||
/* 8033E6A4 54 00 07 9E */ rlwinm r0, r0, 0, 0x1e, 0xf
|
||||
/* 8033E6A8 90 1D 00 00 */ stw r0, 0(r29)
|
||||
/* 8033E6AC 48 00 00 AC */ b lbl_8033E758
|
||||
lbl_8033E6B0:
|
||||
/* 8033E6B0 88 1C 00 32 */ lbz r0, 0x32(r28)
|
||||
/* 8033E6B4 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 8033E6B8 41 82 00 0C */ beq lbl_8033E6C4
|
||||
/* 8033E6BC 80 1C 00 3C */ lwz r0, 0x3c(r28)
|
||||
/* 8033E6C0 7C 7D 00 50 */ subf r3, r29, r0
|
||||
lbl_8033E6C4:
|
||||
/* 8033E6C4 80 1D 00 00 */ lwz r0, 0(r29)
|
||||
/* 8033E6C8 54 00 07 8A */ rlwinm r0, r0, 0, 0x1e, 5
|
||||
/* 8033E6CC 50 60 01 BA */ rlwimi r0, r3, 0, 6, 0x1d
|
||||
/* 8033E6D0 90 1D 00 00 */ stw r0, 0(r29)
|
||||
/* 8033E6D4 48 00 00 84 */ b lbl_8033E758
|
||||
lbl_8033E6D8:
|
||||
/* 8033E6D8 80 1D 00 00 */ lwz r0, 0(r29)
|
||||
/* 8033E6DC 54 00 07 9E */ rlwinm r0, r0, 0, 0x1e, 0xf
|
||||
/* 8033E6E0 90 1D 00 00 */ stw r0, 0(r29)
|
||||
/* 8033E6E4 48 00 00 74 */ b lbl_8033E758
|
||||
lbl_8033E6E8:
|
||||
/* 8033E6E8 88 1F 00 03 */ lbz r0, 3(r31)
|
||||
/* 8033E6EC 28 1E 00 00 */ cmplwi r30, 0
|
||||
/* 8033E6F0 80 7C 00 10 */ lwz r3, 0x10(r28)
|
||||
/* 8033E6F4 54 00 18 38 */ slwi r0, r0, 3
|
||||
/* 8033E6F8 7C 63 02 14 */ add r3, r3, r0
|
||||
/* 8033E6FC 80 03 00 00 */ lwz r0, 0(r3)
|
||||
/* 8033E700 3B 43 00 00 */ addi r26, r3, 0
|
||||
/* 8033E704 54 1D 00 3C */ rlwinm r29, r0, 0, 0, 0x1e
|
||||
/* 8033E708 41 82 00 24 */ beq lbl_8033E72C
|
||||
/* 8033E70C 80 1E 00 00 */ lwz r0, 0(r30)
|
||||
/* 8033E710 80 9E 00 04 */ lwz r4, 4(r30)
|
||||
/* 8033E714 54 19 00 3C */ rlwinm r25, r0, 0, 0, 0x1e
|
||||
/* 8033E718 38 79 00 00 */ addi r3, r25, 0
|
||||
/* 8033E71C 4B FF CE 91 */ bl DCFlushRange
|
||||
/* 8033E720 7F 23 CB 78 */ mr r3, r25
|
||||
/* 8033E724 80 9E 00 04 */ lwz r4, 4(r30)
|
||||
/* 8033E728 4B FF CF 69 */ bl ICInvalidateRange
|
||||
lbl_8033E72C:
|
||||
/* 8033E72C 80 1A 00 00 */ lwz r0, 0(r26)
|
||||
/* 8033E730 54 00 07 FF */ clrlwi. r0, r0, 0x1f
|
||||
/* 8033E734 41 82 00 0C */ beq lbl_8033E740
|
||||
/* 8033E738 7F 40 D3 78 */ mr r0, r26
|
||||
/* 8033E73C 48 00 00 08 */ b lbl_8033E744
|
||||
lbl_8033E740:
|
||||
/* 8033E740 38 00 00 00 */ li r0, 0
|
||||
lbl_8033E744:
|
||||
/* 8033E744 7C 1E 03 78 */ mr r30, r0
|
||||
/* 8033E748 48 00 00 10 */ b lbl_8033E758
|
||||
lbl_8033E74C:
|
||||
/* 8033E74C 38 7B 00 00 */ addi r3, r27, 0
|
||||
/* 8033E750 4C C6 31 82 */ crclr 6
|
||||
/* 8033E754 4B CC 83 69 */ bl OSReport
|
||||
lbl_8033E758:
|
||||
/* 8033E758 3B FF 00 08 */ addi r31, r31, 8
|
||||
lbl_8033E75C:
|
||||
/* 8033E75C 88 9F 00 02 */ lbz r4, 2(r31)
|
||||
/* 8033E760 28 04 00 CB */ cmplwi r4, 0xcb
|
||||
/* 8033E764 40 82 FE 7C */ bne lbl_8033E5E0
|
||||
/* 8033E768 28 1E 00 00 */ cmplwi r30, 0
|
||||
/* 8033E76C 41 82 00 24 */ beq lbl_8033E790
|
||||
/* 8033E770 80 1E 00 00 */ lwz r0, 0(r30)
|
||||
/* 8033E774 80 9E 00 04 */ lwz r4, 4(r30)
|
||||
/* 8033E778 54 1B 00 3C */ rlwinm r27, r0, 0, 0, 0x1e
|
||||
/* 8033E77C 38 7B 00 00 */ addi r3, r27, 0
|
||||
/* 8033E780 4B FF CE 2D */ bl DCFlushRange
|
||||
/* 8033E784 7F 63 DB 78 */ mr r3, r27
|
||||
/* 8033E788 80 9E 00 04 */ lwz r4, 4(r30)
|
||||
/* 8033E78C 4B FF CF 05 */ bl ICInvalidateRange
|
||||
lbl_8033E790:
|
||||
/* 8033E790 38 60 00 01 */ li r3, 1
|
||||
lbl_8033E794:
|
||||
/* 8033E794 BB 21 00 1C */ lmw r25, 0x1c(r1)
|
||||
/* 8033E798 80 01 00 3C */ lwz r0, 0x3c(r1)
|
||||
/* 8033E79C 38 21 00 38 */ addi r1, r1, 0x38
|
||||
/* 8033E7A0 7C 08 03 A6 */ mtlr r0
|
||||
/* 8033E7A4 4E 80 00 20 */ blr
|
||||
|
|
@ -1,9 +1,8 @@
|
|||
#ifndef DYNAMICLINK_H
|
||||
#define DYNAMICLINK_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "dolphin/os.h"
|
||||
|
||||
typedef struct OSModuleInfo OSModuleInfo;
|
||||
class JKRArchive;
|
||||
class JKRFileCache;
|
||||
class mDoDvdThd_callback_c;
|
||||
|
|
@ -58,7 +57,7 @@ struct DynamicModuleControl : DynamicModuleControlBase {
|
|||
/* 8026275C */ static bool initialize();
|
||||
/* 80262794 */ static bool callback(void*);
|
||||
|
||||
/* 0x10 */ OSModuleInfo* mModule;
|
||||
/* 0x10 */ OSModuleHeader* mModule;
|
||||
/* 0x14 */ void* mBss;
|
||||
/* 0x18 */ u32 unk_24;
|
||||
/* 0x1c */ const char* mName;
|
||||
|
|
|
|||
|
|
@ -7,55 +7,101 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct OSModuleQueue {
|
||||
int* first;
|
||||
int* last;
|
||||
} OSModuleQueue;
|
||||
#define OS_MODULE_VERSION 3
|
||||
|
||||
typedef struct OSModuleHeader OSModuleHeader;
|
||||
|
||||
typedef u32 OSModuleID;
|
||||
typedef struct OSModuleQueue OSModuleQueue;
|
||||
typedef struct OSModuleLink OSModuleLink;
|
||||
typedef struct OSModuleInfo OSModuleInfo;
|
||||
typedef struct OSSectionInfo OSSectionInfo;
|
||||
typedef struct OSImportInfo OSImportInfo;
|
||||
typedef struct OSRel OSRel;
|
||||
|
||||
OSModuleQueue __OSModuleList : 0x800030C8;
|
||||
void* __OSStringTable : 0x800030D0;
|
||||
|
||||
typedef struct OSSectionInfo {
|
||||
u32 mOffset;
|
||||
u32 mSize;
|
||||
} OSSectionInfo;
|
||||
struct OSModuleQueue {
|
||||
OSModuleInfo* head;
|
||||
OSModuleInfo* tail;
|
||||
};
|
||||
|
||||
typedef struct OSModuleInfo {
|
||||
u32 mId;
|
||||
u32 mNext;
|
||||
u32 mPrev;
|
||||
u32 mNumSections;
|
||||
struct { // Needed to get an assert correct; very likely bigger
|
||||
u32 sectionInfoOffset;
|
||||
} info;
|
||||
u32 mModuleNameOffset;
|
||||
u32 mModuleNameSize;
|
||||
u32 mModuleVersion;
|
||||
u32 mBssSize;
|
||||
u32 mRelocationTableOffset;
|
||||
u32 mImportTableOffset;
|
||||
u32 mImportTableSize;
|
||||
u8 mPrologSection;
|
||||
u8 mEpilogSection;
|
||||
u8 mUnresolvedSection;
|
||||
u8 mBssSection;
|
||||
u32 prolog;
|
||||
u32 epilog;
|
||||
u32 mUnresolvedFuncOffset;
|
||||
u32 mModuleAlignment;
|
||||
u32 mBssAlignment;
|
||||
struct OSModuleLink {
|
||||
OSModuleInfo* next;
|
||||
OSModuleInfo* prev;
|
||||
};
|
||||
|
||||
struct OSSectionInfo {
|
||||
u32 offset;
|
||||
u32 size;
|
||||
};
|
||||
|
||||
struct OSModuleInfo {
|
||||
OSModuleID id; // unique identifier for the module
|
||||
OSModuleLink link; // doubly linked list of modules
|
||||
u32 numSections; // # of sections
|
||||
u32 sectionInfoOffset; // offset to section info table
|
||||
u32 nameOffset; // offset to module name
|
||||
u32 nameSize; // size of module name
|
||||
u32 version; // version number
|
||||
};
|
||||
|
||||
struct OSModuleHeader {
|
||||
// CAUTION: info must be the 1st member
|
||||
OSModuleInfo info;
|
||||
|
||||
// OS_MODULE_VERSION == 1
|
||||
u32 bssSize; // total size of bss sections in bytes
|
||||
u32 relOffset;
|
||||
u32 impOffset;
|
||||
u32 impSize; // size in bytes
|
||||
u8 prologSection; // section # for prolog function
|
||||
u8 epilogSection; // section # for epilog function
|
||||
u8 unresolvedSection; // section # for unresolved function
|
||||
u8 bssSection; // section # for bss section (set at run-time)
|
||||
u32 prolog; // prolog function offset
|
||||
u32 epilog; // epilog function offset
|
||||
u32 unresolved; // unresolved function offset
|
||||
|
||||
// OS_MODULE_VERSION == 2
|
||||
#if (2 <= OS_MODULE_VERSION)
|
||||
u32 align; // module alignment constraint
|
||||
u32 bssAlign; // bss alignment constraint
|
||||
#endif
|
||||
|
||||
// OS_MODULE_VERSION == 3
|
||||
#if (3 <= OS_MODULE_VERSION)
|
||||
u32 fixSize;
|
||||
} OSModuleInfo;
|
||||
#endif
|
||||
};
|
||||
|
||||
BOOL OSLink(OSModuleInfo* module);
|
||||
BOOL OSLinkFixed(OSModuleInfo* module, u32 param_1);
|
||||
#define OSGetSectionInfo(module) ((OSSectionInfo*)(((OSModuleInfo*)(module))->sectionInfoOffset))
|
||||
|
||||
#define OS_SECTIONINFO_EXEC 0x1
|
||||
#define OS_SECTIONINFO_OFFSET(offset) ((offset) & ~0x1)
|
||||
|
||||
struct OSImportInfo {
|
||||
OSModuleID id; // external module id
|
||||
u32 offset; // offset to OSRel instructions
|
||||
};
|
||||
|
||||
struct OSRel {
|
||||
u16 offset; // byte offset from the previous entry
|
||||
u8 type;
|
||||
u8 section;
|
||||
u32 addend;
|
||||
};
|
||||
|
||||
#define R_DOLPHIN_NOP 201 // C9h current offset += OSRel.offset
|
||||
#define R_DOLPHIN_SECTION 202 // CAh current section = OSRel.section
|
||||
#define R_DOLPHIN_END 203 // CBh
|
||||
#define R_DOLPHIN_MRKREF 204 // CCh
|
||||
|
||||
BOOL OSLink(OSModuleInfo* newModule, void* bss);
|
||||
BOOL OSLinkFixed(OSModuleInfo* newModule, void* bss);
|
||||
BOOL OSUnlink(OSModuleInfo* module);
|
||||
static void OSNotifyLink(void);
|
||||
static void OSNotifyUnlink(void);
|
||||
void OSSetStringTable(void* string_table);
|
||||
static BOOL Relocate(OSModuleInfo* param_0, OSModuleInfo* param_1);
|
||||
static BOOL Link(OSModuleInfo* module, u32 param_1);
|
||||
static BOOL Undo(OSModuleInfo* param_0, OSModuleInfo* param_1);
|
||||
void __OSModuleInit(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
|||
|
|
@ -346,25 +346,25 @@ bool JUTException::searchPartialModule(u32 address, u32* module_id, u32* section
|
|||
|
||||
OSModuleInfo* module = *(OSModuleInfo**)0x800030C8;
|
||||
while (module) {
|
||||
OSSectionInfo* section = (OSSectionInfo*)module->info.sectionInfoOffset;
|
||||
for (u32 i = 0; i < module->mNumSections; section = section + 1, i++) {
|
||||
if (section->mSize) {
|
||||
u32 addr = ALIGN_PREV(section->mOffset, 2);
|
||||
if ((addr <= address) && (address < addr + section->mSize)) {
|
||||
OSSectionInfo* section = (OSSectionInfo*)module->sectionInfoOffset;
|
||||
for (u32 i = 0; i < module->numSections; section = section + 1, i++) {
|
||||
if (section->size) {
|
||||
u32 addr = ALIGN_PREV(section->offset, 2);
|
||||
if ((addr <= address) && (address < addr + section->size)) {
|
||||
if (module_id)
|
||||
*module_id = module->mId;
|
||||
*module_id = module->id;
|
||||
if (section_id)
|
||||
*section_id = i;
|
||||
if (section_offset)
|
||||
*section_offset = address - addr;
|
||||
if (name_offset)
|
||||
*name_offset = module->mModuleNameOffset;
|
||||
*name_offset = module->nameOffset;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module = (OSModuleInfo*)module->mNext;
|
||||
module = (OSModuleInfo*)module->link.next;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -1,10 +1,4 @@
|
|||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: OSLink
|
||||
//
|
||||
|
||||
#include "dolphin/os/OSLink.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/os.h"
|
||||
|
||||
#define SHN_UNDEF 0
|
||||
#define SHN_LORESERVE 0xff00
|
||||
|
|
@ -113,101 +107,379 @@
|
|||
__prev->link.next = __next; \
|
||||
} while (0)
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
OSModuleQueue __OSModuleInfoList : (OS_BASE_CACHED | 0x30C8);
|
||||
|
||||
SECTION_INIT void memset();
|
||||
void OSReport();
|
||||
void DCFlushRange();
|
||||
void ICInvalidateRange();
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
#pragma dont_inline on
|
||||
|
||||
/* 8033DF60-8033DF64 3388A0 0004+00 1/1 0/0 0/0 .text OSNotifyLink */
|
||||
static void OSNotifyLink(void) {}
|
||||
__declspec(weak) void OSNotifyLink(OSModuleInfo* module) {}
|
||||
|
||||
/* 8033DF64-8033DF68 3388A4 0004+00 1/1 0/0 0/0 .text OSNotifyUnlink */
|
||||
static void OSNotifyUnlink(void) {}
|
||||
__declspec(weak) void OSNotifyUnlink(OSModuleInfo* module) {}
|
||||
|
||||
#pragma dont_inline reset
|
||||
|
||||
/* 8033DF68-8033DF74 3388A8 000C+00 0/0 1/1 0/0 .text OSSetStringTable */
|
||||
void OSSetStringTable(void* string_table) {
|
||||
__OSStringTable = string_table;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803D0788-803D07B0 02D8A8 0025+03 1/1 0/0 0/0 .data @62 */
|
||||
SECTION_DATA static char lit_62[] = "OSLink: unknown relocation type %3d\n";
|
||||
|
||||
/* 8033DF74-8033E230 3388B4 02BC+00 1/1 0/0 0/0 .text Relocate */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm BOOL Relocate(OSModuleInfo* param_0, OSModuleInfo* param_1) {
|
||||
nofralloc
|
||||
#include "asm/dolphin/os/OSLink/Relocate.s"
|
||||
static BOOL Relocate(OSModuleHeader* newModule, OSModuleHeader* module) {
|
||||
OSModuleID idNew;
|
||||
OSImportInfo* imp;
|
||||
OSRel* rel;
|
||||
OSSectionInfo* si;
|
||||
OSSectionInfo* siFlush;
|
||||
u32* p;
|
||||
u32 offset;
|
||||
u32 x;
|
||||
|
||||
idNew = newModule ? newModule->info.id : 0;
|
||||
for (imp = (OSImportInfo*)module->impOffset;
|
||||
imp < (OSImportInfo*)(module->impOffset + module->impSize); imp++)
|
||||
{
|
||||
if (imp->id == idNew) {
|
||||
goto Found;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
Found:
|
||||
siFlush = 0;
|
||||
for (rel = (OSRel*)imp->offset; rel->type != R_DOLPHIN_END; rel++) {
|
||||
(u8*)p += rel->offset;
|
||||
if (idNew) {
|
||||
si = &OSGetSectionInfo(newModule)[rel->section];
|
||||
offset = OS_SECTIONINFO_OFFSET(si->offset);
|
||||
} else {
|
||||
offset = 0;
|
||||
}
|
||||
switch (rel->type) {
|
||||
case R_PPC_NONE:
|
||||
break;
|
||||
case R_PPC_ADDR32:
|
||||
x = offset + rel->addend;
|
||||
*p = x;
|
||||
break;
|
||||
case R_PPC_ADDR24:
|
||||
x = offset + rel->addend;
|
||||
*p = (*p & ~0x03fffffc) | (x & 0x03fffffc);
|
||||
break;
|
||||
case R_PPC_ADDR16:
|
||||
x = offset + rel->addend;
|
||||
*(u16*)p = (u16)(x & 0xffff);
|
||||
break;
|
||||
case R_PPC_ADDR16_LO:
|
||||
x = offset + rel->addend;
|
||||
*(u16*)p = (u16)(x & 0xffff);
|
||||
break;
|
||||
case R_PPC_ADDR16_HI:
|
||||
x = offset + rel->addend;
|
||||
*(u16*)p = (u16)(((x >> 16) & 0xffff));
|
||||
break;
|
||||
case R_PPC_ADDR16_HA:
|
||||
x = offset + rel->addend;
|
||||
*(u16*)p = (u16)(((x >> 16) + ((x & 0x8000) ? 1 : 0)) & 0xffff);
|
||||
break;
|
||||
case R_PPC_ADDR14:
|
||||
case R_PPC_ADDR14_BRTAKEN:
|
||||
case R_PPC_ADDR14_BRNTAKEN:
|
||||
x = offset + rel->addend;
|
||||
*p = (*p & ~0x0000fffc) | (x & 0x0000fffc);
|
||||
break;
|
||||
case R_PPC_REL24:
|
||||
x = offset + rel->addend - (u32)p;
|
||||
*p = (*p & ~0x03fffffc) | (x & 0x03fffffc);
|
||||
break;
|
||||
case R_PPC_REL14:
|
||||
case R_PPC_REL14_BRTAKEN:
|
||||
case R_PPC_REL14_BRNTAKEN:
|
||||
x = offset + rel->addend - (u32)p;
|
||||
*p = (*p & ~0x0000fffc) | (x & 0x0000fffc);
|
||||
break;
|
||||
case R_DOLPHIN_NOP:
|
||||
break;
|
||||
case R_DOLPHIN_SECTION:
|
||||
si = &OSGetSectionInfo(module)[rel->section];
|
||||
p = (u32*)OS_SECTIONINFO_OFFSET(si->offset);
|
||||
if (siFlush) {
|
||||
offset = OS_SECTIONINFO_OFFSET(siFlush->offset);
|
||||
DCFlushRange((void*)offset, siFlush->size);
|
||||
ICInvalidateRange((void*)offset, siFlush->size);
|
||||
}
|
||||
siFlush = (si->offset & OS_SECTIONINFO_EXEC) ? si : 0;
|
||||
break;
|
||||
default:
|
||||
OSReport("OSLink: unknown relocation type %3d\n", rel->type);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (siFlush) {
|
||||
offset = OS_SECTIONINFO_OFFSET(siFlush->offset);
|
||||
DCFlushRange((void*)offset, siFlush->size);
|
||||
ICInvalidateRange((void*)offset, siFlush->size);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8033E230-8033E510 338B70 02E0+00 2/2 0/0 0/0 .text Link */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm BOOL Link(OSModuleInfo* module, u32 param_1) {
|
||||
nofralloc
|
||||
#include "asm/dolphin/os/OSLink/Link.s"
|
||||
static BOOL Link(OSModuleInfo* newModule, void* bss, BOOL fixed) {
|
||||
u32 i;
|
||||
OSSectionInfo* si;
|
||||
OSModuleHeader* moduleHeader;
|
||||
OSModuleInfo* moduleInfo;
|
||||
OSImportInfo* imp;
|
||||
|
||||
moduleHeader = (OSModuleHeader*)newModule;
|
||||
moduleHeader->bssSection = 0;
|
||||
|
||||
if (OS_MODULE_VERSION < newModule->version ||
|
||||
2 <= newModule->version &&
|
||||
(moduleHeader->align && (u32)newModule % moduleHeader->align != 0 ||
|
||||
moduleHeader->bssAlign && (u32)bss % moduleHeader->bssAlign != 0))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
EnqueueTail(&__OSModuleInfoList, newModule, link);
|
||||
newModule->sectionInfoOffset += (u32)moduleHeader;
|
||||
moduleHeader->relOffset += (u32)moduleHeader;
|
||||
moduleHeader->impOffset += (u32)moduleHeader;
|
||||
if (3 <= newModule->version) {
|
||||
moduleHeader->fixSize += (u32)moduleHeader;
|
||||
}
|
||||
|
||||
for (i = 1; i < newModule->numSections; i++) {
|
||||
si = &OSGetSectionInfo(newModule)[i];
|
||||
if (si->offset != 0) {
|
||||
si->offset += (u32)moduleHeader;
|
||||
} else if (si->size != 0) {
|
||||
moduleHeader->bssSection = (u8)i;
|
||||
si->offset = (u32)bss;
|
||||
}
|
||||
}
|
||||
|
||||
for (imp = (OSImportInfo*)moduleHeader->impOffset;
|
||||
imp < (OSImportInfo*)(moduleHeader->impOffset + moduleHeader->impSize); imp++)
|
||||
{
|
||||
imp->offset += (u32)moduleHeader;
|
||||
}
|
||||
|
||||
if (moduleHeader->prologSection != SHN_UNDEF) {
|
||||
moduleHeader->prolog +=
|
||||
OS_SECTIONINFO_OFFSET(OSGetSectionInfo(newModule)[moduleHeader->prologSection].offset);
|
||||
}
|
||||
|
||||
if (moduleHeader->epilogSection != SHN_UNDEF) {
|
||||
moduleHeader->epilog +=
|
||||
OS_SECTIONINFO_OFFSET(OSGetSectionInfo(newModule)[moduleHeader->epilogSection].offset);
|
||||
}
|
||||
|
||||
if (moduleHeader->unresolvedSection != SHN_UNDEF) {
|
||||
moduleHeader->unresolved += OS_SECTIONINFO_OFFSET(
|
||||
OSGetSectionInfo(newModule)[moduleHeader->unresolvedSection].offset);
|
||||
}
|
||||
|
||||
if (__OSStringTable) {
|
||||
newModule->nameOffset += (u32)__OSStringTable;
|
||||
}
|
||||
|
||||
Relocate(0, moduleHeader);
|
||||
|
||||
for (moduleInfo = __OSModuleInfoList.head; moduleInfo; moduleInfo = moduleInfo->link.next) {
|
||||
Relocate(moduleHeader, (OSModuleHeader*)moduleInfo);
|
||||
if (moduleInfo != newModule) {
|
||||
Relocate((OSModuleHeader*)moduleInfo, moduleHeader);
|
||||
}
|
||||
}
|
||||
|
||||
if (fixed) {
|
||||
for (imp = (OSImportInfo*)moduleHeader->impOffset;
|
||||
imp < (OSImportInfo*)(moduleHeader->impOffset + moduleHeader->impSize); imp++)
|
||||
{
|
||||
if (imp->id == 0 || imp->id == newModule->id) {
|
||||
moduleHeader->impSize = (u32)((u8*)imp - (u8*)moduleHeader->impOffset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
memset(bss, 0, moduleHeader->bssSize);
|
||||
|
||||
OSNotifyLink(newModule);
|
||||
return TRUE;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8033E510-8033E534 338E50 0024+00 0/0 1/1 0/0 .text OSLink */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm BOOL OSLink(OSModuleInfo* module) {
|
||||
nofralloc
|
||||
#include "asm/dolphin/os/OSLink/OSLink.s"
|
||||
BOOL OSLink(OSModuleInfo* newModule, void* bss) {
|
||||
return Link(newModule, bss, FALSE);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8033E534-8033E570 338E74 003C+00 0/0 1/1 0/0 .text OSLinkFixed */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm BOOL OSLinkFixed(OSModuleInfo* module, u32 param_1) {
|
||||
nofralloc
|
||||
#include "asm/dolphin/os/OSLink/OSLinkFixed.s"
|
||||
BOOL OSLinkFixed(OSModuleInfo* newModule, void* bss) {
|
||||
if (OS_MODULE_VERSION < newModule->version || newModule->version < 3) {
|
||||
return FALSE;
|
||||
}
|
||||
return Link(newModule, bss, TRUE);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803D07B0-803D07D8 02D8D0 0027+01 1/1 0/0 0/0 .data @189 */
|
||||
SECTION_DATA static char lit_189[] = "OSUnlink: unknown relocation type %3d\n";
|
||||
|
||||
/* 8033E570-8033E7A8 338EB0 0238+00 1/1 0/0 0/0 .text Undo */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm BOOL Undo(OSModuleInfo* param_0, OSModuleInfo* param_1) {
|
||||
nofralloc
|
||||
#include "asm/dolphin/os/OSLink/Undo.s"
|
||||
static BOOL Undo(OSModuleHeader* newModule, OSModuleHeader* module) {
|
||||
OSModuleID idNew;
|
||||
OSImportInfo* imp;
|
||||
OSRel* rel;
|
||||
OSSectionInfo* si;
|
||||
OSSectionInfo* siFlush;
|
||||
u32* p;
|
||||
u32 offset;
|
||||
u32 x;
|
||||
|
||||
idNew = newModule->info.id;
|
||||
for (imp = (OSImportInfo*)module->impOffset;
|
||||
imp < (OSImportInfo*)(module->impOffset + module->impSize); imp++)
|
||||
{
|
||||
if (imp->id == idNew) {
|
||||
goto Found;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
Found:
|
||||
siFlush = 0;
|
||||
for (rel = (OSRel*)imp->offset; rel->type != R_DOLPHIN_END; rel++) {
|
||||
(u8*)p += rel->offset;
|
||||
si = &OSGetSectionInfo(newModule)[rel->section];
|
||||
offset = OS_SECTIONINFO_OFFSET(si->offset);
|
||||
x = 0;
|
||||
switch (rel->type) {
|
||||
case R_PPC_NONE:
|
||||
break;
|
||||
case R_PPC_ADDR32:
|
||||
*p = x;
|
||||
break;
|
||||
case R_PPC_ADDR24:
|
||||
*p = (*p & ~0x03fffffc) | (x & 0x03fffffc);
|
||||
break;
|
||||
case R_PPC_ADDR16:
|
||||
*(u16*)p = (u16)(x & 0xffff);
|
||||
break;
|
||||
case R_PPC_ADDR16_LO:
|
||||
*(u16*)p = (u16)(x & 0xffff);
|
||||
break;
|
||||
case R_PPC_ADDR16_HI:
|
||||
*(u16*)p = (u16)(((x >> 16) & 0xffff));
|
||||
break;
|
||||
case R_PPC_ADDR16_HA:
|
||||
*(u16*)p = (u16)(((x >> 16) + ((x & 0x8000) ? 1 : 0)) & 0xffff);
|
||||
break;
|
||||
case R_PPC_ADDR14:
|
||||
case R_PPC_ADDR14_BRTAKEN:
|
||||
case R_PPC_ADDR14_BRNTAKEN:
|
||||
*p = (*p & ~0x0000fffc) | (x & 0x0000fffc);
|
||||
break;
|
||||
case R_PPC_REL24:
|
||||
if (module->unresolvedSection != SHN_UNDEF) {
|
||||
x = (u32)module->unresolved - (u32)p;
|
||||
}
|
||||
*p = (*p & ~0x03fffffc) | (x & 0x03fffffc);
|
||||
break;
|
||||
case R_PPC_REL14:
|
||||
case R_PPC_REL14_BRTAKEN:
|
||||
case R_PPC_REL14_BRNTAKEN:
|
||||
*p = (*p & ~0x0000fffc) | (x & 0x0000fffc);
|
||||
break;
|
||||
case R_DOLPHIN_NOP:
|
||||
break;
|
||||
case R_DOLPHIN_SECTION:
|
||||
si = &OSGetSectionInfo(module)[rel->section];
|
||||
p = (u32*)OS_SECTIONINFO_OFFSET(si->offset);
|
||||
if (siFlush) {
|
||||
offset = OS_SECTIONINFO_OFFSET(siFlush->offset);
|
||||
DCFlushRange((void*)offset, siFlush->size);
|
||||
ICInvalidateRange((void*)offset, siFlush->size);
|
||||
}
|
||||
siFlush = (si->offset & OS_SECTIONINFO_EXEC) ? si : 0;
|
||||
break;
|
||||
default:
|
||||
OSReport("OSUnlink: unknown relocation type %3d\n", rel->type);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (siFlush) {
|
||||
offset = OS_SECTIONINFO_OFFSET(siFlush->offset);
|
||||
DCFlushRange((void*)offset, siFlush->size);
|
||||
ICInvalidateRange((void*)offset, siFlush->size);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8033E7A8-8033E97C 3390E8 01D4+00 0/0 1/1 0/0 .text OSUnlink */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm BOOL OSUnlink(OSModuleInfo* module) {
|
||||
nofralloc
|
||||
#include "asm/dolphin/os/OSLink/OSUnlink.s"
|
||||
BOOL OSUnlink(OSModuleInfo* oldModule) {
|
||||
OSModuleHeader* moduleHeader;
|
||||
OSModuleInfo* moduleInfo;
|
||||
u32 i;
|
||||
OSSectionInfo* si;
|
||||
OSImportInfo* imp;
|
||||
|
||||
moduleHeader = (OSModuleHeader*)oldModule;
|
||||
|
||||
DequeueItem(&__OSModuleInfoList, oldModule, link);
|
||||
|
||||
for (moduleInfo = __OSModuleInfoList.head; moduleInfo; moduleInfo = moduleInfo->link.next) {
|
||||
Undo(moduleHeader, (OSModuleHeader*)moduleInfo);
|
||||
}
|
||||
|
||||
OSNotifyUnlink(oldModule);
|
||||
|
||||
if (__OSStringTable) {
|
||||
oldModule->nameOffset -= (u32)__OSStringTable;
|
||||
}
|
||||
|
||||
if (moduleHeader->prologSection != SHN_UNDEF) {
|
||||
moduleHeader->prolog -=
|
||||
OS_SECTIONINFO_OFFSET(OSGetSectionInfo(oldModule)[moduleHeader->prologSection].offset);
|
||||
}
|
||||
|
||||
if (moduleHeader->epilogSection != SHN_UNDEF) {
|
||||
moduleHeader->epilog -=
|
||||
OS_SECTIONINFO_OFFSET(OSGetSectionInfo(oldModule)[moduleHeader->epilogSection].offset);
|
||||
}
|
||||
|
||||
if (moduleHeader->unresolvedSection != SHN_UNDEF) {
|
||||
moduleHeader->unresolved -= OS_SECTIONINFO_OFFSET(
|
||||
OSGetSectionInfo(oldModule)[moduleHeader->unresolvedSection].offset);
|
||||
}
|
||||
|
||||
for (imp = (OSImportInfo*)moduleHeader->impOffset;
|
||||
imp < (OSImportInfo*)(moduleHeader->impOffset + moduleHeader->impSize); imp++)
|
||||
{
|
||||
imp->offset -= (u32)moduleHeader;
|
||||
}
|
||||
|
||||
for (i = 1; i < oldModule->numSections; i++) {
|
||||
si = &OSGetSectionInfo(oldModule)[i];
|
||||
if (i == moduleHeader->bssSection) {
|
||||
moduleHeader->bssSection = 0;
|
||||
si->offset = 0;
|
||||
} else if (si->offset != 0) {
|
||||
si->offset -= (u32)moduleHeader;
|
||||
}
|
||||
}
|
||||
moduleHeader->relOffset -= (u32)moduleHeader;
|
||||
moduleHeader->impOffset -= (u32)moduleHeader;
|
||||
oldModule->sectionInfoOffset -= (u32)moduleHeader;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8033E97C-8033E994 3392BC 0018+00 0/0 1/1 0/0 .text __OSModuleInit */
|
||||
void __OSModuleInit(void) {
|
||||
__OSModuleList.last = NULL;
|
||||
__OSModuleList.first = NULL;
|
||||
__OSModuleList.tail = NULL;
|
||||
__OSModuleList.head = NULL;
|
||||
__OSStringTable = NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -229,19 +229,19 @@ bool DynamicModuleControl::do_load() {
|
|||
snprintf(buffer, 64, "%s.rel", mName);
|
||||
if (mModule == NULL && sArchive != NULL) {
|
||||
if (mModule == NULL) {
|
||||
mModule = (OSModuleInfo*)JKRGetResource('MMEM', buffer, sArchive);
|
||||
mModule = (OSModuleHeader*)JKRGetResource('MMEM', buffer, sArchive);
|
||||
if (mModule != NULL) {
|
||||
mResourceType = 1;
|
||||
}
|
||||
}
|
||||
if (mModule == NULL) {
|
||||
mModule = (OSModuleInfo*)JKRGetResource('AMEM', buffer, sArchive);
|
||||
mModule = (OSModuleHeader*)JKRGetResource('AMEM', buffer, sArchive);
|
||||
if (mModule != NULL) {
|
||||
mResourceType = 2;
|
||||
}
|
||||
}
|
||||
if (mModule == NULL) {
|
||||
mModule = (OSModuleInfo*)JKRGetResource('DMEM', buffer, sArchive);
|
||||
mModule = (OSModuleHeader*)JKRGetResource('DMEM', buffer, sArchive);
|
||||
if (mModule != NULL) {
|
||||
mResourceType = 3;
|
||||
}
|
||||
|
|
@ -253,7 +253,7 @@ bool DynamicModuleControl::do_load() {
|
|||
} else {
|
||||
if (mModule == NULL) {
|
||||
snprintf(buffer, 64, "/rel/Final/Release/%s.rel", mName);
|
||||
mModule = (OSModuleInfo*)JKRDvdToMainRam(
|
||||
mModule = (OSModuleHeader*)JKRDvdToMainRam(
|
||||
buffer, NULL, EXPAND_SWITCH_UNKNOWN1, NULL, heap,
|
||||
JKRDvdRipper::ALLOC_DIRECTION_FORWARD, 0, NULL, NULL);
|
||||
if (mModule != NULL) {
|
||||
|
|
@ -262,7 +262,7 @@ bool DynamicModuleControl::do_load() {
|
|||
}
|
||||
}
|
||||
if (mModule == NULL && sFileCache != NULL) {
|
||||
mModule = (OSModuleInfo*)sFileCache->getResource('rels', buffer);
|
||||
mModule = (OSModuleHeader*)sFileCache->getResource('rels', buffer);
|
||||
if (mModule != NULL) {
|
||||
mSize = 0;
|
||||
mResourceType = 11;
|
||||
|
|
@ -351,8 +351,8 @@ void DynamicModuleControl::dump2() {
|
|||
if (mModule != NULL) {
|
||||
OSSectionInfo* section = (OSSectionInfo*)mModule->info.sectionInfoOffset;
|
||||
OSSectionInfo* section2 = section + 1;
|
||||
u32 offset = section2->mOffset & ~(1);
|
||||
OSReport("%08x-%08x %08x %08x", mModule, offset, offset + section2->mSize);
|
||||
u32 offset = section2->offset & ~(1);
|
||||
OSReport("%08x-%08x %08x %08x", mModule, offset, offset + section2->size);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -368,57 +368,57 @@ BOOL DynamicModuleControl::do_link() {
|
|||
ASSERT((u32)mModule + mModule->fixSize < 0x82000000);
|
||||
OSGetTime();
|
||||
OSGetTime();
|
||||
if (mModule->mModuleVersion >= 3) {
|
||||
if (mModule->info.version >= 3) {
|
||||
u32 fixSizePtr;
|
||||
u32 fixSize = mModule->fixSize;
|
||||
u32 fixSize2 = (fixSize + 0x1f) & ~0x1f;
|
||||
fixSizePtr = (u32)mModule + fixSize2;
|
||||
s32 size = JKRGetMemBlockSize(NULL, mModule);
|
||||
if (size < 0) {
|
||||
void* bss = JKRAlloc(mModule->mBssSize, 0x20);
|
||||
void* bss = JKRAlloc(mModule->bssSize, 0x20);
|
||||
if (bss == NULL) {
|
||||
// "BSS Memory allocation failed\n"
|
||||
OSReport_Error("BSSメモリ確保失敗\n", bss);
|
||||
goto error;
|
||||
}
|
||||
mBss = bss;
|
||||
BOOL linkResult = OSLink(mModule);
|
||||
BOOL linkResult = OSLink(&mModule->info, bss);
|
||||
if (linkResult == FALSE) {
|
||||
// "link failed\n"
|
||||
OSReport_Error("リンク失敗\n");
|
||||
goto error;
|
||||
}
|
||||
} else {
|
||||
if (fixSize2 + mModule->mBssSize < size) {
|
||||
BOOL linkResult = OSLinkFixed(mModule, fixSizePtr);
|
||||
if (fixSize2 + mModule->bssSize < size) {
|
||||
BOOL linkResult = OSLinkFixed(&mModule->info, (void*)fixSizePtr);
|
||||
if (linkResult == FALSE) {
|
||||
// "link failed\n"
|
||||
OSReport_Error("リンク失敗\n");
|
||||
goto error;
|
||||
}
|
||||
s32 result = JKRResizeMemBlock(NULL, mModule, fixSize2 + mModule->mBssSize);
|
||||
s32 result = JKRResizeMemBlock(NULL, mModule, fixSize2 + mModule->bssSize);
|
||||
if (result < 0) {
|
||||
// "Module size (resize) failed\n"
|
||||
OSReport_Error("モジュールリサイズ(縮小)失敗\n");
|
||||
}
|
||||
} else {
|
||||
s32 result = JKRResizeMemBlock(NULL, mModule, fixSize2 + mModule->mBssSize);
|
||||
s32 result = JKRResizeMemBlock(NULL, mModule, fixSize2 + mModule->bssSize);
|
||||
if (result > 0) {
|
||||
BOOL linkResult = OSLinkFixed(mModule, fixSizePtr);
|
||||
BOOL linkResult = OSLinkFixed(&mModule->info, (void*)fixSizePtr);
|
||||
if (linkResult == FALSE) {
|
||||
// "link failed\n"
|
||||
OSReport_Error("リンク失敗\n");
|
||||
goto error;
|
||||
}
|
||||
} else {
|
||||
void* bss = JKRAlloc(mModule->mBssSize, 0x20);
|
||||
void* bss = JKRAlloc(mModule->bssSize, 0x20);
|
||||
if (bss == NULL) {
|
||||
// "BSS Memory allocation failure [%x]\n"
|
||||
OSReport_Error("BSSメモリ確保失敗 [%x]\n", mModule->mBssSize);
|
||||
OSReport_Error("BSSメモリ確保失敗 [%x]\n", mModule->bssSize);
|
||||
goto error;
|
||||
}
|
||||
mBss = bss;
|
||||
BOOL linkResult = OSLinkFixed(mModule, (u32)bss);
|
||||
BOOL linkResult = OSLinkFixed(&mModule->info, bss);
|
||||
if (linkResult == FALSE) {
|
||||
// "link failed\n"
|
||||
OSReport_Error("リンク失敗\n");
|
||||
|
|
@ -460,7 +460,7 @@ bool DynamicModuleControl::do_unlink() {
|
|||
OSTime time1 = OSGetTime();
|
||||
((void (*)())mModule->epilog)();
|
||||
OSTime time2 = OSGetTime();
|
||||
BOOL unklink = OSUnlink(mModule);
|
||||
BOOL unklink = OSUnlink(&mModule->info);
|
||||
OSTime time3 = OSGetTime();
|
||||
if (unklink == FALSE) {
|
||||
// "Unlink failed mModule=%08x mBss=%08x\n"
|
||||
|
|
@ -483,7 +483,7 @@ int DynamicModuleControl::getModuleSize() const {
|
|||
if (mBss != NULL) {
|
||||
JKRGetMemBlockSize(NULL, mBss);
|
||||
}
|
||||
return size + mModule->mBssSize;
|
||||
return size + mModule->bssSize;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue