summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorred031000 <rubenru09@aol.com>2020-10-19 01:40:03 +0100
committerGitHub <noreply@github.com>2020-10-19 01:40:03 +0100
commitc9d369b8d0abf7d75943e25e79e11df3e941e69a (patch)
tree15117926ef46a611e602ecf3cdd0edad5939f081
parent4965b8101131432139e8d2e9e309440ad2acbd2f (diff)
parentfbd635cb89c6e6f8f0e1e9603a515b902e69de06 (diff)
Merge pull request #149 from mparisi20/master
Decompile code_801DAAE0.cpp
-rw-r--r--Makefile2
-rw-r--r--asm/bss.s861
-rw-r--r--asm/bss_2.s860
-rw-r--r--asm/code_801DAAE0.s446
-rw-r--r--asm/ctors_2.s2
-rw-r--r--asm/sbss_2.s18
-rw-r--r--include/Runtime/__mem.h16
-rw-r--r--include/SDK/MEM/mem_expHeap.h31
-rw-r--r--include/SDK/mem.h14
-rw-r--r--include/code_801DAA30.h9
-rw-r--r--include/code_801DAAE0.h27
-rw-r--r--include/unkStruct.h5
-rw-r--r--obj_files.mk7
-rw-r--r--src/code_801DAA30.cpp6
-rw-r--r--src/code_801DAAE0.cpp260
15 files changed, 1219 insertions, 1345 deletions
diff --git a/Makefile b/Makefile
index 126561d..9ecf9e8 100644
--- a/Makefile
+++ b/Makefile
@@ -65,7 +65,7 @@ include obj_files.mk
O_FILES := $(EXTAB_O_FILES) $(EXTABINDEX_O_FILES) $(SPLIT_O_FILES) \
$(DTORS_O_FILES) $(RODATA_O_FILES) $(DATA_O_FILES) \
- $(BSS_O_FILES) $(SDATA_O_FILES) $(SDATA2_O_FILES) \
+ $(SDATA_O_FILES) $(SDATA2_O_FILES) \
$(SBSS2_O_FILES)
#-------------------------------------------------------------------------------
diff --git a/asm/bss.s b/asm/bss.s
index e823435..713c2f5 100644
--- a/asm/bss.s
+++ b/asm/bss.s
@@ -447,864 +447,3 @@ lbl_80490D90:
.global lbl_80491290
lbl_80491290:
.skip 0x20
-.global lbl_804912B0
-lbl_804912B0:
- .skip 0xC0
-.global lbl_80491370
-lbl_80491370:
- .skip 0x100
-.global lbl_80491470
-lbl_80491470:
- .skip 0x380
-.global lbl_804917F0
-lbl_804917F0:
- .skip 0x40
-.global lbl_80491830
-lbl_80491830:
- .skip 0x10
-.global lbl_80491840
-lbl_80491840:
- .skip 0x30
-.global lbl_80491870
-lbl_80491870:
- .skip 0x1C
-.global lbl_8049188C
-lbl_8049188C:
- .skip 0x1C
-.global lbl_804918A8
-lbl_804918A8:
- .skip 0xC
-.global lbl_804918B4
-lbl_804918B4:
- .skip 0xC
-.global lbl_804918C0
-lbl_804918C0:
- .skip 0x10
-.global lbl_804918D0
-lbl_804918D0:
- .skip 0xA0
-.global lbl_80491970
-lbl_80491970:
- .skip 0x30
-.global lbl_804919A0
-lbl_804919A0:
- .skip 0x10
-.global lbl_804919B0
-lbl_804919B0:
- .skip 0x8C
-.global lbl_80491A3C
-lbl_80491A3C:
- .skip 0x64
-.global lbl_80491AA0
-lbl_80491AA0:
- .skip 0x5F0
-.global lbl_80492090
-lbl_80492090:
- .skip 0x20
-.global lbl_804920B0
-lbl_804920B0:
- .skip 0x20
-.global lbl_804920D0
-lbl_804920D0:
- .skip 0x20
-.global lbl_804920F0
-lbl_804920F0:
- .skip 0x100
-.global lbl_804921F0
-lbl_804921F0:
- .skip 0x30
-.global lbl_80492220
-lbl_80492220:
- .skip 0x10
-.global lbl_80492230
-lbl_80492230:
- .skip 0xC
-.global lbl_8049223C
-lbl_8049223C:
- .skip 0xC
-.global lbl_80492248
-lbl_80492248:
- .skip 0xC
-.global lbl_80492254
-lbl_80492254:
- .skip 0xC
-.global lbl_80492260
-lbl_80492260:
- .skip 0x18
-.global lbl_80492278
-lbl_80492278:
- .skip 0x10
-.global lbl_80492288
-lbl_80492288:
- .skip 0x48
-.global lbl_804922D0
-lbl_804922D0:
- .skip 0xC
-.global lbl_804922DC
-lbl_804922DC:
- .skip 0x3E0
-.global lbl_804926BC
-lbl_804926BC:
- .skip 0x3D4
-.global lbl_80492A90
-lbl_80492A90:
- .skip 0xC
-.global lbl_80492A9C
-lbl_80492A9C:
- .skip 0x3E0
-.global lbl_80492E7C
-lbl_80492E7C:
- .skip 0x3D4
-.global lbl_80493250
-lbl_80493250:
- .skip 0x60
-.global lbl_804932B0
-lbl_804932B0:
- .skip 0x30
-.global lbl_804932E0
-lbl_804932E0:
- .skip 0x30
-.global lbl_80493310
-lbl_80493310:
- .skip 0x10
-.global lbl_80493320
-lbl_80493320:
- .skip 0x10
-.global lbl_80493330
-lbl_80493330:
- .skip 0x2D8
-.global lbl_80493608
-lbl_80493608:
- .skip 0xC
-.global lbl_80493614
-lbl_80493614:
- .skip 0xC
-.global lbl_80493620
-lbl_80493620:
- .skip 0xC
-.global lbl_8049362C
-lbl_8049362C:
- .skip 0xC
-.global lbl_80493638
-lbl_80493638:
- .skip 0x10
-.global lbl_80493648
-lbl_80493648:
- .skip 0x10
-.global lbl_80493658
-lbl_80493658:
- .skip 0x800
-.global lbl_80493E58
-lbl_80493E58:
- .skip 0x110
-.global lbl_80493F68
-lbl_80493F68:
- .skip 0x100
-.global lbl_80494068
-lbl_80494068:
- .skip 0x400
-.global lbl_80494468
-lbl_80494468:
- .skip 0x6C
-.global lbl_804944D4
-lbl_804944D4:
- .skip 0x2274
-.global lbl_80496748
-lbl_80496748:
- .skip 0xC
-.global lbl_80496754
-lbl_80496754:
- .skip 0xC
-.global lbl_80496760
-lbl_80496760:
- .skip 0x40
-.global lbl_804967A0
-lbl_804967A0:
- .skip 0x20
-.global lbl_804967C0
-lbl_804967C0:
- .skip 0xC
-.global lbl_804967CC
-lbl_804967CC:
- .skip 0x17D4
-.global lbl_80497FA0
-lbl_80497FA0:
- .skip 0x20
-.global lbl_80497FC0
-lbl_80497FC0:
- .skip 0x20
-.global lbl_80497FE0
-lbl_80497FE0:
- .skip 0xC
-.global lbl_80497FEC
-lbl_80497FEC:
- .skip 0x654B4
-.global lbl_804FD4A0
-lbl_804FD4A0:
- .skip 0x200
-.global lbl_804FD6A0
-lbl_804FD6A0:
- .skip 0x200
-.global lbl_804FD8A0
-lbl_804FD8A0:
- .skip 0x200
-.global lbl_804FDAA0
-lbl_804FDAA0:
- .skip 0x10
-.global lbl_804FDAB0
-lbl_804FDAB0:
- .skip 0x170
-.global lbl_804FDC20
-lbl_804FDC20:
- .skip 0x780
-.global lbl_804FE3A0
-lbl_804FE3A0:
- .skip 0x180
-.global lbl_804FE520
-lbl_804FE520:
- .skip 0x410
-.global lbl_804FE930
-lbl_804FE930:
- .skip 0x3C00
-.global lbl_80502530
-lbl_80502530:
- .skip 0x18
-.global lbl_80502548
-lbl_80502548:
- .skip 0x5B0
-.global lbl_80502AF8
-lbl_80502AF8:
- .skip 0x1000
-.global lbl_80503AF8
-lbl_80503AF8:
- .skip 0x100
-.global lbl_80503BF8
-lbl_80503BF8:
- .skip 0x88
-.global lbl_80503C80
-lbl_80503C80:
- .skip 0x20
-.global lbl_80503CA0
-lbl_80503CA0:
- .skip 0x50
-.global lbl_80503CF0
-lbl_80503CF0:
- .skip 0x50
-.global lbl_80503D40
-lbl_80503D40:
- .skip 0xC2C4
-.global lbl_80510004
-lbl_80510004:
- .skip 0x449C
-.global lbl_805144A0
-lbl_805144A0:
- .skip 0x2C8
-.global lbl_80514768
-lbl_80514768:
- .skip 0x18
-.global lbl_80514780
-lbl_80514780:
- .skip 0x58
-.global lbl_805147D8
-lbl_805147D8:
- .skip 0x318
-.global lbl_80514AF0
-lbl_80514AF0:
- .skip 0x100
-.global lbl_80514BF0
-lbl_80514BF0:
- .skip 0x2C8
-.global lbl_80514EB8
-lbl_80514EB8:
- .skip 0x328
-.global lbl_805151E0
-lbl_805151E0:
- .skip 0x20
-.global lbl_80515200
-lbl_80515200:
- .skip 0x20
-.global lbl_80515220
-lbl_80515220:
- .skip 0x20
-.global lbl_80515240
-lbl_80515240:
- .skip 0x20
-.global lbl_80515260
-lbl_80515260:
- .skip 0x20
-.global lbl_80515280
-lbl_80515280:
- .skip 0x20
-.global lbl_805152A0
-lbl_805152A0:
- .skip 0x200
-.global lbl_805154A0
-lbl_805154A0:
- .skip 0x20
-.global lbl_805154C0
-lbl_805154C0:
- .skip 0xC0
-.global lbl_80515580
-lbl_80515580:
- .skip 0x80
-.global lbl_80515600
-lbl_80515600:
- .skip 0x20
-.global lbl_80515620
-lbl_80515620:
- .skip 0x20
-.global lbl_80515640
-lbl_80515640:
- .skip 0x160
-.global lbl_805157A0
-lbl_805157A0:
- .skip 0x78
-.global lbl_80515818
-lbl_80515818:
- .skip 0x78
-.global lbl_80515890
-lbl_80515890:
- .skip 0x80
-.global lbl_80515910
-lbl_80515910:
- .skip 0x20
-.global lbl_80515930
-lbl_80515930:
- .skip 0x680
-.global lbl_80515FB0
-lbl_80515FB0:
- .skip 0x24
-.global lbl_80515FD4
-lbl_80515FD4:
- .skip 0x24
-.global lbl_80515FF8
-lbl_80515FF8:
- .skip 0xD8
-.global lbl_805160D0
-lbl_805160D0:
- .skip 0x1B0
-.global lbl_80516280
-lbl_80516280:
- .skip 0x700
-.global lbl_80516980
-lbl_80516980:
- .skip 0x20
-.global lbl_805169A0
-lbl_805169A0:
- .skip 0x30
-.global lbl_805169D0
-lbl_805169D0:
- .skip 0x30
-.global lbl_80516A00
-lbl_80516A00:
- .skip 0x40
-.global lbl_80516A40
-lbl_80516A40:
- .skip 0x20
-.global lbl_80516A60
-lbl_80516A60:
- .skip 0x20
-.global lbl_80516A80
-lbl_80516A80:
- .skip 0x4A40
-.global lbl_8051B4C0
-lbl_8051B4C0:
- .skip 0x30
-.global lbl_8051B4F0
-lbl_8051B4F0:
- .skip 0x60
-.global lbl_8051B550
-lbl_8051B550:
- .skip 0x30
-.global lbl_8051B580
-lbl_8051B580:
- .skip 0x90
-.global lbl_8051B610
-lbl_8051B610:
- .skip 0xD0
-.global lbl_8051B6E0
-lbl_8051B6E0:
- .skip 0x80
-.global lbl_8051B760
-lbl_8051B760:
- .skip 0x80
-.global lbl_8051B7E0
-lbl_8051B7E0:
- .skip 0x20
-.global lbl_8051B800
-lbl_8051B800:
- .skip 0xC0
-.global lbl_8051B8C0
-lbl_8051B8C0:
- .skip 0x80
-.global lbl_8051B940
-lbl_8051B940:
- .skip 0x80
-.global lbl_8051B9C0
-lbl_8051B9C0:
- .skip 0x1200
-.global lbl_8051CBC0
-lbl_8051CBC0:
- .skip 0x1200
-.global lbl_8051DDC0
-lbl_8051DDC0:
- .skip 0xD80
-.global lbl_8051EB40
-lbl_8051EB40:
- .skip 0x100
-.global lbl_8051EC40
-lbl_8051EC40:
- .skip 0x40
-.global lbl_8051EC80
-lbl_8051EC80:
- .skip 0x8A0
-.global lbl_8051F520
-lbl_8051F520:
- .skip 0x480
-.global lbl_8051F9A0
-lbl_8051F9A0:
- .skip 0x60
-.global lbl_8051FA00
-lbl_8051FA00:
- .skip 0x40
-.global lbl_8051FA40
-lbl_8051FA40:
- .skip 0x80
-.global lbl_8051FAC0
-lbl_8051FAC0:
- .skip 0x7800
-.global lbl_805272C0
-lbl_805272C0:
- .skip 0x1800
-.global lbl_80528AC0
-lbl_80528AC0:
- .skip 0x8700
-.global lbl_805311C0
-lbl_805311C0:
- .skip 0x10
-.global lbl_805311D0
-lbl_805311D0:
- .skip 0x18
-.global lbl_805311E8
-lbl_805311E8:
- .skip 0x2A00
-.global lbl_80533BE8
-lbl_80533BE8:
- .skip 0x1998
-.global lbl_80535580
-lbl_80535580:
- .skip 0x18
-.global lbl_80535598
-lbl_80535598:
- .skip 0x28
-.global lbl_805355C0
-lbl_805355C0:
- .skip 0x100
-.global lbl_805356C0
-lbl_805356C0:
- .skip 0x10
-.global lbl_805356D0
-lbl_805356D0:
- .skip 0x1490
-.global lbl_80536B60
-lbl_80536B60:
- .skip 0x50
-.global lbl_80536BB0
-lbl_80536BB0:
- .skip 0x80
-.global lbl_80536C30
-lbl_80536C30:
- .skip 0x80
-.global lbl_80536CB0
-lbl_80536CB0:
- .skip 0x90
-.global lbl_80536D40
-lbl_80536D40:
- .skip 0x30
-.global lbl_80536D70
-lbl_80536D70:
- .skip 0x10
-.global lbl_80536D80
-lbl_80536D80:
- .skip 0x1000
-.global lbl_80537D80
-lbl_80537D80:
- .skip 0x26C0
-.global lbl_8053A440
-lbl_8053A440:
- .skip 0x28
-.global lbl_8053A468
-lbl_8053A468:
- .skip 0x18
-.global lbl_8053A480
-lbl_8053A480:
- .skip 0x60
-.global lbl_8053A4E0
-lbl_8053A4E0:
- .skip 0x748
-.global lbl_8053AC28
-lbl_8053AC28:
- .skip 0x468
-.global lbl_8053B090
-lbl_8053B090:
- .skip 0x138
-.global lbl_8053B1C8
-lbl_8053B1C8:
- .skip 0x60
-.global lbl_8053B228
-lbl_8053B228:
- .skip 0x58
-.global lbl_8053B280
-lbl_8053B280:
- .skip 0x1000
-.global lbl_8053C280
-lbl_8053C280:
- .skip 0x20
-.global lbl_8053C2A0
-lbl_8053C2A0:
- .skip 0x20
-.global lbl_8053C2C0
-lbl_8053C2C0:
- .skip 0x28AE0
-.global lbl_80564DA0
-lbl_80564DA0:
- .skip 0x40
-.global lbl_80564DE0
-lbl_80564DE0:
- .skip 0x60
-.global lbl_80564E40
-lbl_80564E40:
- .skip 0x1000
-.global lbl_80565E40
-lbl_80565E40:
- .skip 0x1000
-.global lbl_80566E40
-lbl_80566E40:
- .skip 0x7E0
-.global lbl_80567620
-lbl_80567620:
- .skip 0x1000
-.global lbl_80568620
-lbl_80568620:
- .skip 0x30
-.global lbl_80568650
-lbl_80568650:
- .skip 0x88
-.global lbl_805686D8
-lbl_805686D8:
- .skip 0x90
-.global lbl_80568768
-lbl_80568768:
- .skip 0x30
-.global lbl_80568798
-lbl_80568798:
- .skip 0x7C
-.global lbl_80568814
-lbl_80568814:
- .skip 0x104
-.global lbl_80568918
-lbl_80568918:
- .skip 0x30
-.global lbl_80568948
-lbl_80568948:
- .skip 0x230
-.global lbl_80568B78
-lbl_80568B78:
- .skip 0x27C8
-.global lbl_8056B340
-lbl_8056B340:
- .skip 0x3B0
-.global lbl_8056B6F0
-lbl_8056B6F0:
- .skip 0x148
-.global lbl_8056B838
-lbl_8056B838:
- .skip 0x408
-.global lbl_8056BC40
-lbl_8056BC40:
- .skip 0x7E8
-.global lbl_8056C428
-lbl_8056C428:
- .skip 0x418
-.global lbl_8056C840
-lbl_8056C840:
- .skip 0x4640
-.global lbl_80570E80
-lbl_80570E80:
- .skip 0x40
-.global lbl_80570EC0
-lbl_80570EC0:
- .skip 0x1A0
-.global lbl_80571060
-lbl_80571060:
- .skip 0x4000
-.global lbl_80575060
-lbl_80575060:
- .skip 0x4000
-.global lbl_80579060
-lbl_80579060:
- .skip 0x20
-.global lbl_80579080
-lbl_80579080:
- .skip 0x40
-.global lbl_805790C0
-lbl_805790C0:
- .skip 0xA0
-.global lbl_80579160
-lbl_80579160:
- .skip 0xA0
-.global lbl_80579200
-lbl_80579200:
- .skip 0x280
-.global lbl_80579480
-lbl_80579480:
- .skip 0xC0
-.global lbl_80579540
-lbl_80579540:
- .skip 0x40
-.global lbl_80579580
-lbl_80579580:
- .skip 0x220
-.global lbl_805797A0
-lbl_805797A0:
- .skip 0x1318
-.global lbl_8057AAB8
-lbl_8057AAB8:
- .skip 0x18
-.global lbl_8057AAD0
-lbl_8057AAD0:
- .skip 0x10
-.global lbl_8057AAE0
-lbl_8057AAE0:
- .skip 0xCA0
-.global lbl_8057B780
-lbl_8057B780:
- .skip 0x3020
-.global lbl_8057E7A0
-lbl_8057E7A0:
- .skip 0x180
-.global lbl_8057E920
-lbl_8057E920:
- .skip 0xE0
-.global lbl_8057EA00
-lbl_8057EA00:
- .skip 0x20
-.global lbl_8057EA20
-lbl_8057EA20:
- .skip 0x20
-.global lbl_8057EA40
-lbl_8057EA40:
- .skip 0x20
-.global lbl_8057EA60
-lbl_8057EA60:
- .skip 0xB68
-.global lbl_8057F5C8
-lbl_8057F5C8:
- .skip 0x27FB8
-.global lbl_805A7580
-lbl_805A7580:
- .skip 0x20
-.global lbl_805A75A0
-lbl_805A75A0:
- .skip 0x68000
-.global lbl_8060F5A0
-lbl_8060F5A0:
- .skip 0x68
-.global lbl_8060F608
-lbl_8060F608:
- .skip 0x10
-.global lbl_8060F618
-lbl_8060F618:
- .skip 0x230
-.global lbl_8060F848
-lbl_8060F848:
- .skip 0x208
-.global lbl_8060FA50
-lbl_8060FA50:
- .skip 0x1A0
-.global lbl_8060FBF0
-lbl_8060FBF0:
- .skip 0x18
-.global lbl_8060FC08
-lbl_8060FC08:
- .skip 0x80
-.global lbl_8060FC88
-lbl_8060FC88:
- .skip 0x100
-.global lbl_8060FD88
-lbl_8060FD88:
- .skip 0x738
-.global lbl_806104C0
-lbl_806104C0:
- .skip 0x20
-.global lbl_806104E0
-lbl_806104E0:
- .skip 0x1D0
-.global lbl_806106B0
-lbl_806106B0:
- .skip 0x174
-.global lbl_80610824
-lbl_80610824:
- .skip 0x104
-.global lbl_80610928
-lbl_80610928:
- .skip 0x178
-.global lbl_80610AA0
-lbl_80610AA0:
- .skip 0x58
-.global lbl_80610AF8
-lbl_80610AF8:
- .skip 0x80
-.global lbl_80610B78
-lbl_80610B78:
- .skip 0x58
-.global lbl_80610BD0
-lbl_80610BD0:
- .skip 0x10090
-.global lbl_80620C60
-lbl_80620C60:
- .skip 0x30
-.global lbl_80620C90
-lbl_80620C90:
- .skip 0x18
-.global lbl_80620CA8
-lbl_80620CA8:
- .skip 0x40
-.global lbl_80620CE8
-lbl_80620CE8:
- .skip 0x100
-.global lbl_80620DE8
-lbl_80620DE8:
- .skip 0x100
-.global lbl_80620EE8
-lbl_80620EE8:
- .skip 0x100
-.global lbl_80620FE8
-lbl_80620FE8:
- .skip 0x200
-.global lbl_806211E8
-lbl_806211E8:
- .skip 0x30
-.global lbl_80621218
-lbl_80621218:
- .skip 0x200
-.global lbl_80621418
-lbl_80621418:
- .skip 0x2D8
-.global lbl_806216F0
-lbl_806216F0:
- .skip 0x18
-.global lbl_80621708
-lbl_80621708:
- .skip 0x10
-.global lbl_80621718
-lbl_80621718:
- .skip 0x10
-.global lbl_80621728
-lbl_80621728:
- .skip 0xC
-.global lbl_80621734
-lbl_80621734:
- .skip 0xC
-.global lbl_80621740
-lbl_80621740:
- .skip 0x100
-.global lbl_80621840
-lbl_80621840:
- .skip 0xC
-.global lbl_8062184C
-lbl_8062184C:
- .skip 0xF4
-.global lbl_80621940
-lbl_80621940:
- .skip 0xC
-.global lbl_8062194C
-lbl_8062194C:
- .skip 0x2C
-.global lbl_80621978
-lbl_80621978:
- .skip 0x10
-.global lbl_80621988
-lbl_80621988:
- .skip 0x38
-.global lbl_806219C0
-lbl_806219C0:
- .skip 0xC
-.global lbl_806219CC
-lbl_806219CC:
- .skip 0x24
-.global lbl_806219F0
-lbl_806219F0:
- .skip 0x2D8
-.global lbl_80621CC8
-lbl_80621CC8:
- .skip 0x38
-.global lbl_80621D00
-lbl_80621D00:
- .skip 0x10
-.global lbl_80621D10
-lbl_80621D10:
- .skip 0x330
-.global lbl_80622040
-lbl_80622040:
- .skip 0x16970
-.global lbl_806389B0
-lbl_806389B0:
- .skip 0x10
-.global lbl_806389C0
-lbl_806389C0:
- .skip 0x3A0
-.global lbl_80638D60
-lbl_80638D60:
- .skip 0x4020
-.global lbl_8063CD80
-lbl_8063CD80:
- .skip 0x18
-.global lbl_8063CD98
-lbl_8063CD98:
- .skip 0xC
-.global lbl_8063CDA4
-lbl_8063CDA4:
- .skip 0x3C
-.global lbl_8063CDE0
-lbl_8063CDE0:
- .skip 0xC
-.global lbl_8063CDEC
-lbl_8063CDEC:
- .skip 0x1C
-.global lbl_8063CE08
-lbl_8063CE08:
- .skip 0x20
-.global lbl_8063CE28
-lbl_8063CE28:
- .skip 0xC
-.global lbl_8063CE34
-lbl_8063CE34:
- .skip 0x84
-.global lbl_8063CEB8
-lbl_8063CEB8:
- .skip 0x10
-.global lbl_8063CEC8
-lbl_8063CEC8:
- .skip 0x10
-.global lbl_8063CED8
-lbl_8063CED8:
- .skip 0x18
-.global lbl_8063CEF0
-lbl_8063CEF0:
- .skip 0xC0
-.global lbl_8063CFB0
-lbl_8063CFB0:
- .skip 0xC0
-.global lbl_8063D070
-lbl_8063D070:
- .skip 0x10
-.global lbl_8063D080
-lbl_8063D080:
- .skip 0x18
-.global lbl_8063D098
-lbl_8063D098:
- .skip 0x198
-.global lbl_8063D230
-lbl_8063D230:
- .skip 0x90
diff --git a/asm/bss_2.s b/asm/bss_2.s
new file mode 100644
index 0000000..bcde67a
--- /dev/null
+++ b/asm/bss_2.s
@@ -0,0 +1,860 @@
+.section .bss, "wa" # 0x80474F00 - 0x80643050
+
+.global lbl_80491370
+lbl_80491370:
+ .skip 0x100
+.global lbl_80491470
+lbl_80491470:
+ .skip 0x380
+.global lbl_804917F0
+lbl_804917F0:
+ .skip 0x40
+.global lbl_80491830
+lbl_80491830:
+ .skip 0x10
+.global lbl_80491840
+lbl_80491840:
+ .skip 0x30
+.global lbl_80491870
+lbl_80491870:
+ .skip 0x1C
+.global lbl_8049188C
+lbl_8049188C:
+ .skip 0x1C
+.global lbl_804918A8
+lbl_804918A8:
+ .skip 0xC
+.global lbl_804918B4
+lbl_804918B4:
+ .skip 0xC
+.global lbl_804918C0
+lbl_804918C0:
+ .skip 0x10
+.global lbl_804918D0
+lbl_804918D0:
+ .skip 0xA0
+.global lbl_80491970
+lbl_80491970:
+ .skip 0x30
+.global lbl_804919A0
+lbl_804919A0:
+ .skip 0x10
+.global lbl_804919B0
+lbl_804919B0:
+ .skip 0x8C
+.global lbl_80491A3C
+lbl_80491A3C:
+ .skip 0x64
+.global lbl_80491AA0
+lbl_80491AA0:
+ .skip 0x5F0
+.global lbl_80492090
+lbl_80492090:
+ .skip 0x20
+.global lbl_804920B0
+lbl_804920B0:
+ .skip 0x20
+.global lbl_804920D0
+lbl_804920D0:
+ .skip 0x20
+.global lbl_804920F0
+lbl_804920F0:
+ .skip 0x100
+.global lbl_804921F0
+lbl_804921F0:
+ .skip 0x30
+.global lbl_80492220
+lbl_80492220:
+ .skip 0x10
+.global lbl_80492230
+lbl_80492230:
+ .skip 0xC
+.global lbl_8049223C
+lbl_8049223C:
+ .skip 0xC
+.global lbl_80492248
+lbl_80492248:
+ .skip 0xC
+.global lbl_80492254
+lbl_80492254:
+ .skip 0xC
+.global lbl_80492260
+lbl_80492260:
+ .skip 0x18
+.global lbl_80492278
+lbl_80492278:
+ .skip 0x10
+.global lbl_80492288
+lbl_80492288:
+ .skip 0x48
+.global lbl_804922D0
+lbl_804922D0:
+ .skip 0xC
+.global lbl_804922DC
+lbl_804922DC:
+ .skip 0x3E0
+.global lbl_804926BC
+lbl_804926BC:
+ .skip 0x3D4
+.global lbl_80492A90
+lbl_80492A90:
+ .skip 0xC
+.global lbl_80492A9C
+lbl_80492A9C:
+ .skip 0x3E0
+.global lbl_80492E7C
+lbl_80492E7C:
+ .skip 0x3D4
+.global lbl_80493250
+lbl_80493250:
+ .skip 0x60
+.global lbl_804932B0
+lbl_804932B0:
+ .skip 0x30
+.global lbl_804932E0
+lbl_804932E0:
+ .skip 0x30
+.global lbl_80493310
+lbl_80493310:
+ .skip 0x10
+.global lbl_80493320
+lbl_80493320:
+ .skip 0x10
+.global lbl_80493330
+lbl_80493330:
+ .skip 0x2D8
+.global lbl_80493608
+lbl_80493608:
+ .skip 0xC
+.global lbl_80493614
+lbl_80493614:
+ .skip 0xC
+.global lbl_80493620
+lbl_80493620:
+ .skip 0xC
+.global lbl_8049362C
+lbl_8049362C:
+ .skip 0xC
+.global lbl_80493638
+lbl_80493638:
+ .skip 0x10
+.global lbl_80493648
+lbl_80493648:
+ .skip 0x10
+.global lbl_80493658
+lbl_80493658:
+ .skip 0x800
+.global lbl_80493E58
+lbl_80493E58:
+ .skip 0x110
+.global lbl_80493F68
+lbl_80493F68:
+ .skip 0x100
+.global lbl_80494068
+lbl_80494068:
+ .skip 0x400
+.global lbl_80494468
+lbl_80494468:
+ .skip 0x6C
+.global lbl_804944D4
+lbl_804944D4:
+ .skip 0x2274
+.global lbl_80496748
+lbl_80496748:
+ .skip 0xC
+.global lbl_80496754
+lbl_80496754:
+ .skip 0xC
+.global lbl_80496760
+lbl_80496760:
+ .skip 0x40
+.global lbl_804967A0
+lbl_804967A0:
+ .skip 0x20
+.global lbl_804967C0
+lbl_804967C0:
+ .skip 0xC
+.global lbl_804967CC
+lbl_804967CC:
+ .skip 0x17D4
+.global lbl_80497FA0
+lbl_80497FA0:
+ .skip 0x20
+.global lbl_80497FC0
+lbl_80497FC0:
+ .skip 0x20
+.global lbl_80497FE0
+lbl_80497FE0:
+ .skip 0xC
+.global lbl_80497FEC
+lbl_80497FEC:
+ .skip 0x654B4
+.global lbl_804FD4A0
+lbl_804FD4A0:
+ .skip 0x200
+.global lbl_804FD6A0
+lbl_804FD6A0:
+ .skip 0x200
+.global lbl_804FD8A0
+lbl_804FD8A0:
+ .skip 0x200
+.global lbl_804FDAA0
+lbl_804FDAA0:
+ .skip 0x10
+.global lbl_804FDAB0
+lbl_804FDAB0:
+ .skip 0x170
+.global lbl_804FDC20
+lbl_804FDC20:
+ .skip 0x780
+.global lbl_804FE3A0
+lbl_804FE3A0:
+ .skip 0x180
+.global lbl_804FE520
+lbl_804FE520:
+ .skip 0x410
+.global lbl_804FE930
+lbl_804FE930:
+ .skip 0x3C00
+.global lbl_80502530
+lbl_80502530:
+ .skip 0x18
+.global lbl_80502548
+lbl_80502548:
+ .skip 0x5B0
+.global lbl_80502AF8
+lbl_80502AF8:
+ .skip 0x1000
+.global lbl_80503AF8
+lbl_80503AF8:
+ .skip 0x100
+.global lbl_80503BF8
+lbl_80503BF8:
+ .skip 0x88
+.global lbl_80503C80
+lbl_80503C80:
+ .skip 0x20
+.global lbl_80503CA0
+lbl_80503CA0:
+ .skip 0x50
+.global lbl_80503CF0
+lbl_80503CF0:
+ .skip 0x50
+.global lbl_80503D40
+lbl_80503D40:
+ .skip 0xC2C4
+.global lbl_80510004
+lbl_80510004:
+ .skip 0x449C
+.global lbl_805144A0
+lbl_805144A0:
+ .skip 0x2C8
+.global lbl_80514768
+lbl_80514768:
+ .skip 0x18
+.global lbl_80514780
+lbl_80514780:
+ .skip 0x58
+.global lbl_805147D8
+lbl_805147D8:
+ .skip 0x318
+.global lbl_80514AF0
+lbl_80514AF0:
+ .skip 0x100
+.global lbl_80514BF0
+lbl_80514BF0:
+ .skip 0x2C8
+.global lbl_80514EB8
+lbl_80514EB8:
+ .skip 0x328
+.global lbl_805151E0
+lbl_805151E0:
+ .skip 0x20
+.global lbl_80515200
+lbl_80515200:
+ .skip 0x20
+.global lbl_80515220
+lbl_80515220:
+ .skip 0x20
+.global lbl_80515240
+lbl_80515240:
+ .skip 0x20
+.global lbl_80515260
+lbl_80515260:
+ .skip 0x20
+.global lbl_80515280
+lbl_80515280:
+ .skip 0x20
+.global lbl_805152A0
+lbl_805152A0:
+ .skip 0x200
+.global lbl_805154A0
+lbl_805154A0:
+ .skip 0x20
+.global lbl_805154C0
+lbl_805154C0:
+ .skip 0xC0
+.global lbl_80515580
+lbl_80515580:
+ .skip 0x80
+.global lbl_80515600
+lbl_80515600:
+ .skip 0x20
+.global lbl_80515620
+lbl_80515620:
+ .skip 0x20
+.global lbl_80515640
+lbl_80515640:
+ .skip 0x160
+.global lbl_805157A0
+lbl_805157A0:
+ .skip 0x78
+.global lbl_80515818
+lbl_80515818:
+ .skip 0x78
+.global lbl_80515890
+lbl_80515890:
+ .skip 0x80
+.global lbl_80515910
+lbl_80515910:
+ .skip 0x20
+.global lbl_80515930
+lbl_80515930:
+ .skip 0x680
+.global lbl_80515FB0
+lbl_80515FB0:
+ .skip 0x24
+.global lbl_80515FD4
+lbl_80515FD4:
+ .skip 0x24
+.global lbl_80515FF8
+lbl_80515FF8:
+ .skip 0xD8
+.global lbl_805160D0
+lbl_805160D0:
+ .skip 0x1B0
+.global lbl_80516280
+lbl_80516280:
+ .skip 0x700
+.global lbl_80516980
+lbl_80516980:
+ .skip 0x20
+.global lbl_805169A0
+lbl_805169A0:
+ .skip 0x30
+.global lbl_805169D0
+lbl_805169D0:
+ .skip 0x30
+.global lbl_80516A00
+lbl_80516A00:
+ .skip 0x40
+.global lbl_80516A40
+lbl_80516A40:
+ .skip 0x20
+.global lbl_80516A60
+lbl_80516A60:
+ .skip 0x20
+.global lbl_80516A80
+lbl_80516A80:
+ .skip 0x4A40
+.global lbl_8051B4C0
+lbl_8051B4C0:
+ .skip 0x30
+.global lbl_8051B4F0
+lbl_8051B4F0:
+ .skip 0x60
+.global lbl_8051B550
+lbl_8051B550:
+ .skip 0x30
+.global lbl_8051B580
+lbl_8051B580:
+ .skip 0x90
+.global lbl_8051B610
+lbl_8051B610:
+ .skip 0xD0
+.global lbl_8051B6E0
+lbl_8051B6E0:
+ .skip 0x80
+.global lbl_8051B760
+lbl_8051B760:
+ .skip 0x80
+.global lbl_8051B7E0
+lbl_8051B7E0:
+ .skip 0x20
+.global lbl_8051B800
+lbl_8051B800:
+ .skip 0xC0
+.global lbl_8051B8C0
+lbl_8051B8C0:
+ .skip 0x80
+.global lbl_8051B940
+lbl_8051B940:
+ .skip 0x80
+.global lbl_8051B9C0
+lbl_8051B9C0:
+ .skip 0x1200
+.global lbl_8051CBC0
+lbl_8051CBC0:
+ .skip 0x1200
+.global lbl_8051DDC0
+lbl_8051DDC0:
+ .skip 0xD80
+.global lbl_8051EB40
+lbl_8051EB40:
+ .skip 0x100
+.global lbl_8051EC40
+lbl_8051EC40:
+ .skip 0x40
+.global lbl_8051EC80
+lbl_8051EC80:
+ .skip 0x8A0
+.global lbl_8051F520
+lbl_8051F520:
+ .skip 0x480
+.global lbl_8051F9A0
+lbl_8051F9A0:
+ .skip 0x60
+.global lbl_8051FA00
+lbl_8051FA00:
+ .skip 0x40
+.global lbl_8051FA40
+lbl_8051FA40:
+ .skip 0x80
+.global lbl_8051FAC0
+lbl_8051FAC0:
+ .skip 0x7800
+.global lbl_805272C0
+lbl_805272C0:
+ .skip 0x1800
+.global lbl_80528AC0
+lbl_80528AC0:
+ .skip 0x8700
+.global lbl_805311C0
+lbl_805311C0:
+ .skip 0x10
+.global lbl_805311D0
+lbl_805311D0:
+ .skip 0x18
+.global lbl_805311E8
+lbl_805311E8:
+ .skip 0x2A00
+.global lbl_80533BE8
+lbl_80533BE8:
+ .skip 0x1998
+.global lbl_80535580
+lbl_80535580:
+ .skip 0x18
+.global lbl_80535598
+lbl_80535598:
+ .skip 0x28
+.global lbl_805355C0
+lbl_805355C0:
+ .skip 0x100
+.global lbl_805356C0
+lbl_805356C0:
+ .skip 0x10
+.global lbl_805356D0
+lbl_805356D0:
+ .skip 0x1490
+.global lbl_80536B60
+lbl_80536B60:
+ .skip 0x50
+.global lbl_80536BB0
+lbl_80536BB0:
+ .skip 0x80
+.global lbl_80536C30
+lbl_80536C30:
+ .skip 0x80
+.global lbl_80536CB0
+lbl_80536CB0:
+ .skip 0x90
+.global lbl_80536D40
+lbl_80536D40:
+ .skip 0x30
+.global lbl_80536D70
+lbl_80536D70:
+ .skip 0x10
+.global lbl_80536D80
+lbl_80536D80:
+ .skip 0x1000
+.global lbl_80537D80
+lbl_80537D80:
+ .skip 0x26C0
+.global lbl_8053A440
+lbl_8053A440:
+ .skip 0x28
+.global lbl_8053A468
+lbl_8053A468:
+ .skip 0x18
+.global lbl_8053A480
+lbl_8053A480:
+ .skip 0x60
+.global lbl_8053A4E0
+lbl_8053A4E0:
+ .skip 0x748
+.global lbl_8053AC28
+lbl_8053AC28:
+ .skip 0x468
+.global lbl_8053B090
+lbl_8053B090:
+ .skip 0x138
+.global lbl_8053B1C8
+lbl_8053B1C8:
+ .skip 0x60
+.global lbl_8053B228
+lbl_8053B228:
+ .skip 0x58
+.global lbl_8053B280
+lbl_8053B280:
+ .skip 0x1000
+.global lbl_8053C280
+lbl_8053C280:
+ .skip 0x20
+.global lbl_8053C2A0
+lbl_8053C2A0:
+ .skip 0x20
+.global lbl_8053C2C0
+lbl_8053C2C0:
+ .skip 0x28AE0
+.global lbl_80564DA0
+lbl_80564DA0:
+ .skip 0x40
+.global lbl_80564DE0
+lbl_80564DE0:
+ .skip 0x60
+.global lbl_80564E40
+lbl_80564E40:
+ .skip 0x1000
+.global lbl_80565E40
+lbl_80565E40:
+ .skip 0x1000
+.global lbl_80566E40
+lbl_80566E40:
+ .skip 0x7E0
+.global lbl_80567620
+lbl_80567620:
+ .skip 0x1000
+.global lbl_80568620
+lbl_80568620:
+ .skip 0x30
+.global lbl_80568650
+lbl_80568650:
+ .skip 0x88
+.global lbl_805686D8
+lbl_805686D8:
+ .skip 0x90
+.global lbl_80568768
+lbl_80568768:
+ .skip 0x30
+.global lbl_80568798
+lbl_80568798:
+ .skip 0x7C
+.global lbl_80568814
+lbl_80568814:
+ .skip 0x104
+.global lbl_80568918
+lbl_80568918:
+ .skip 0x30
+.global lbl_80568948
+lbl_80568948:
+ .skip 0x230
+.global lbl_80568B78
+lbl_80568B78:
+ .skip 0x27C8
+.global lbl_8056B340
+lbl_8056B340:
+ .skip 0x3B0
+.global lbl_8056B6F0
+lbl_8056B6F0:
+ .skip 0x148
+.global lbl_8056B838
+lbl_8056B838:
+ .skip 0x408
+.global lbl_8056BC40
+lbl_8056BC40:
+ .skip 0x7E8
+.global lbl_8056C428
+lbl_8056C428:
+ .skip 0x418
+.global lbl_8056C840
+lbl_8056C840:
+ .skip 0x4640
+.global lbl_80570E80
+lbl_80570E80:
+ .skip 0x40
+.global lbl_80570EC0
+lbl_80570EC0:
+ .skip 0x1A0
+.global lbl_80571060
+lbl_80571060:
+ .skip 0x4000
+.global lbl_80575060
+lbl_80575060:
+ .skip 0x4000
+.global lbl_80579060
+lbl_80579060:
+ .skip 0x20
+.global lbl_80579080
+lbl_80579080:
+ .skip 0x40
+.global lbl_805790C0
+lbl_805790C0:
+ .skip 0xA0
+.global lbl_80579160
+lbl_80579160:
+ .skip 0xA0
+.global lbl_80579200
+lbl_80579200:
+ .skip 0x280
+.global lbl_80579480
+lbl_80579480:
+ .skip 0xC0
+.global lbl_80579540
+lbl_80579540:
+ .skip 0x40
+.global lbl_80579580
+lbl_80579580:
+ .skip 0x220
+.global lbl_805797A0
+lbl_805797A0:
+ .skip 0x1318
+.global lbl_8057AAB8
+lbl_8057AAB8:
+ .skip 0x18
+.global lbl_8057AAD0
+lbl_8057AAD0:
+ .skip 0x10
+.global lbl_8057AAE0
+lbl_8057AAE0:
+ .skip 0xCA0
+.global lbl_8057B780
+lbl_8057B780:
+ .skip 0x3020
+.global lbl_8057E7A0
+lbl_8057E7A0:
+ .skip 0x180
+.global lbl_8057E920
+lbl_8057E920:
+ .skip 0xE0
+.global lbl_8057EA00
+lbl_8057EA00:
+ .skip 0x20
+.global lbl_8057EA20
+lbl_8057EA20:
+ .skip 0x20
+.global lbl_8057EA40
+lbl_8057EA40:
+ .skip 0x20
+.global lbl_8057EA60
+lbl_8057EA60:
+ .skip 0xB68
+.global lbl_8057F5C8
+lbl_8057F5C8:
+ .skip 0x27FB8
+.global lbl_805A7580
+lbl_805A7580:
+ .skip 0x20
+.global lbl_805A75A0
+lbl_805A75A0:
+ .skip 0x68000
+.global lbl_8060F5A0
+lbl_8060F5A0:
+ .skip 0x68
+.global lbl_8060F608
+lbl_8060F608:
+ .skip 0x10
+.global lbl_8060F618
+lbl_8060F618:
+ .skip 0x230
+.global lbl_8060F848
+lbl_8060F848:
+ .skip 0x208
+.global lbl_8060FA50
+lbl_8060FA50:
+ .skip 0x1A0
+.global lbl_8060FBF0
+lbl_8060FBF0:
+ .skip 0x18
+.global lbl_8060FC08
+lbl_8060FC08:
+ .skip 0x80
+.global lbl_8060FC88
+lbl_8060FC88:
+ .skip 0x100
+.global lbl_8060FD88
+lbl_8060FD88:
+ .skip 0x738
+.global lbl_806104C0
+lbl_806104C0:
+ .skip 0x20
+.global lbl_806104E0
+lbl_806104E0:
+ .skip 0x1D0
+.global lbl_806106B0
+lbl_806106B0:
+ .skip 0x174
+.global lbl_80610824
+lbl_80610824:
+ .skip 0x104
+.global lbl_80610928
+lbl_80610928:
+ .skip 0x178
+.global lbl_80610AA0
+lbl_80610AA0:
+ .skip 0x58
+.global lbl_80610AF8
+lbl_80610AF8:
+ .skip 0x80
+.global lbl_80610B78
+lbl_80610B78:
+ .skip 0x58
+.global lbl_80610BD0
+lbl_80610BD0:
+ .skip 0x10090
+.global lbl_80620C60
+lbl_80620C60:
+ .skip 0x30
+.global lbl_80620C90
+lbl_80620C90:
+ .skip 0x18
+.global lbl_80620CA8
+lbl_80620CA8:
+ .skip 0x40
+.global lbl_80620CE8
+lbl_80620CE8:
+ .skip 0x100
+.global lbl_80620DE8
+lbl_80620DE8:
+ .skip 0x100
+.global lbl_80620EE8
+lbl_80620EE8:
+ .skip 0x100
+.global lbl_80620FE8
+lbl_80620FE8:
+ .skip 0x200
+.global lbl_806211E8
+lbl_806211E8:
+ .skip 0x30
+.global lbl_80621218
+lbl_80621218:
+ .skip 0x200
+.global lbl_80621418
+lbl_80621418:
+ .skip 0x2D8
+.global lbl_806216F0
+lbl_806216F0:
+ .skip 0x18
+.global lbl_80621708
+lbl_80621708:
+ .skip 0x10
+.global lbl_80621718
+lbl_80621718:
+ .skip 0x10
+.global lbl_80621728
+lbl_80621728:
+ .skip 0xC
+.global lbl_80621734
+lbl_80621734:
+ .skip 0xC
+.global lbl_80621740
+lbl_80621740:
+ .skip 0x100
+.global lbl_80621840
+lbl_80621840:
+ .skip 0xC
+.global lbl_8062184C
+lbl_8062184C:
+ .skip 0xF4
+.global lbl_80621940
+lbl_80621940:
+ .skip 0xC
+.global lbl_8062194C
+lbl_8062194C:
+ .skip 0x2C
+.global lbl_80621978
+lbl_80621978:
+ .skip 0x10
+.global lbl_80621988
+lbl_80621988:
+ .skip 0x38
+.global lbl_806219C0
+lbl_806219C0:
+ .skip 0xC
+.global lbl_806219CC
+lbl_806219CC:
+ .skip 0x24
+.global lbl_806219F0
+lbl_806219F0:
+ .skip 0x2D8
+.global lbl_80621CC8
+lbl_80621CC8:
+ .skip 0x38
+.global lbl_80621D00
+lbl_80621D00:
+ .skip 0x10
+.global lbl_80621D10
+lbl_80621D10:
+ .skip 0x330
+.global lbl_80622040
+lbl_80622040:
+ .skip 0x16970
+.global lbl_806389B0
+lbl_806389B0:
+ .skip 0x10
+.global lbl_806389C0
+lbl_806389C0:
+ .skip 0x3A0
+.global lbl_80638D60
+lbl_80638D60:
+ .skip 0x4020
+.global lbl_8063CD80
+lbl_8063CD80:
+ .skip 0x18
+.global lbl_8063CD98
+lbl_8063CD98:
+ .skip 0xC
+.global lbl_8063CDA4
+lbl_8063CDA4:
+ .skip 0x3C
+.global lbl_8063CDE0
+lbl_8063CDE0:
+ .skip 0xC
+.global lbl_8063CDEC
+lbl_8063CDEC:
+ .skip 0x1C
+.global lbl_8063CE08
+lbl_8063CE08:
+ .skip 0x20
+.global lbl_8063CE28
+lbl_8063CE28:
+ .skip 0xC
+.global lbl_8063CE34
+lbl_8063CE34:
+ .skip 0x84
+.global lbl_8063CEB8
+lbl_8063CEB8:
+ .skip 0x10
+.global lbl_8063CEC8
+lbl_8063CEC8:
+ .skip 0x10
+.global lbl_8063CED8
+lbl_8063CED8:
+ .skip 0x18
+.global lbl_8063CEF0
+lbl_8063CEF0:
+ .skip 0xC0
+.global lbl_8063CFB0
+lbl_8063CFB0:
+ .skip 0xC0
+.global lbl_8063D070
+lbl_8063D070:
+ .skip 0x10
+.global lbl_8063D080
+lbl_8063D080:
+ .skip 0x18
+.global lbl_8063D098
+lbl_8063D098:
+ .skip 0x198
+.global lbl_8063D230
+lbl_8063D230:
+ .skip 0x90
diff --git a/asm/code_801DAAE0.s b/asm/code_801DAAE0.s
deleted file mode 100644
index eef5524..0000000
--- a/asm/code_801DAAE0.s
+++ /dev/null
@@ -1,446 +0,0 @@
-.include "macros.inc"
-
-.section .text, "ax" # 0x80006980 - 0x803E1E60
-
-.global func_801DAAE0
-func_801DAAE0:
-/* 801DAAE0 001D6740 3C 60 80 49 */ lis r3, lbl_804912B0@ha
-/* 801DAAE4 001D6744 38 00 00 10 */ li r0, 0x10
-/* 801DAAE8 001D6748 38 63 12 B0 */ addi r3, r3, lbl_804912B0@l
-/* 801DAAEC 001D674C 38 80 00 00 */ li r4, 0
-/* 801DAAF0 001D6750 7C 09 03 A6 */ mtctr r0
-lbl_801DAAF4:
-/* 801DAAF4 001D6754 88 03 00 00 */ lbz r0, 0(r3)
-/* 801DAAF8 001D6758 2C 00 00 00 */ cmpwi r0, 0
-/* 801DAAFC 001D675C 40 82 00 18 */ bne lbl_801DAB14
-/* 801DAB00 001D6760 1C 04 00 0C */ mulli r0, r4, 0xc
-/* 801DAB04 001D6764 3C 60 80 49 */ lis r3, lbl_804912B0@ha
-/* 801DAB08 001D6768 38 63 12 B0 */ addi r3, r3, lbl_804912B0@l
-/* 801DAB0C 001D676C 7C 63 02 14 */ add r3, r3, r0
-/* 801DAB10 001D6770 4E 80 00 20 */ blr
-lbl_801DAB14:
-/* 801DAB14 001D6774 38 63 00 0C */ addi r3, r3, 0xc
-/* 801DAB18 001D6778 38 84 00 01 */ addi r4, r4, 1
-/* 801DAB1C 001D677C 42 00 FF D8 */ bdnz lbl_801DAAF4
-/* 801DAB20 001D6780 38 60 00 00 */ li r3, 0
-/* 801DAB24 001D6784 4E 80 00 20 */ blr
-
-.global func_801DAB28
-func_801DAB28:
-/* 801DAB28 001D6788 88 6D A0 16 */ lbz r3, lbl_8063F2D6-_SDA_BASE_(r13)
-/* 801DAB2C 001D678C 4E 80 00 20 */ blr
-
-.global func_801DAB30
-func_801DAB30:
-/* 801DAB30 001D6790 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DAB34 001D6794 7C 08 02 A6 */ mflr r0
-/* 801DAB38 001D6798 3C 60 80 49 */ lis r3, lbl_804912B0@ha
-/* 801DAB3C 001D679C 38 80 00 00 */ li r4, 0
-/* 801DAB40 001D67A0 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DAB44 001D67A4 38 63 12 B0 */ addi r3, r3, lbl_804912B0@l
-/* 801DAB48 001D67A8 38 A0 00 C0 */ li r5, 0xc0
-/* 801DAB4C 001D67AC 4B E2 95 B9 */ bl memset
-/* 801DAB50 001D67B0 38 60 00 00 */ li r3, 0
-/* 801DAB54 001D67B4 38 00 00 01 */ li r0, 1
-/* 801DAB58 001D67B8 90 6D A0 18 */ stw r3, lbl_8063F2D8-_SDA_BASE_(r13)
-/* 801DAB5C 001D67BC B0 6D A0 1C */ sth r3, lbl_8063F2DC-_SDA_BASE_(r13)
-/* 801DAB60 001D67C0 98 0D A0 16 */ stb r0, lbl_8063F2D6-_SDA_BASE_(r13)
-/* 801DAB64 001D67C4 98 6D A0 17 */ stb r3, lbl_8063F2D7-_SDA_BASE_(r13)
-/* 801DAB68 001D67C8 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 801DAB6C 001D67CC 7C 08 03 A6 */ mtlr r0
-/* 801DAB70 001D67D0 38 21 00 10 */ addi r1, r1, 0x10
-/* 801DAB74 001D67D4 4E 80 00 20 */ blr
-
-.global func_801DAB78
-func_801DAB78:
-/* 801DAB78 001D67D8 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 801DAB7C 001D67DC 7C 08 02 A6 */ mflr r0
-/* 801DAB80 001D67E0 90 01 00 24 */ stw r0, 0x24(r1)
-/* 801DAB84 001D67E4 93 E1 00 1C */ stw r31, 0x1c(r1)
-/* 801DAB88 001D67E8 93 C1 00 18 */ stw r30, 0x18(r1)
-/* 801DAB8C 001D67EC 7C BE 2B 78 */ mr r30, r5
-/* 801DAB90 001D67F0 93 A1 00 14 */ stw r29, 0x14(r1)
-/* 801DAB94 001D67F4 7C 9D 23 78 */ mr r29, r4
-/* 801DAB98 001D67F8 93 81 00 10 */ stw r28, 0x10(r1)
-/* 801DAB9C 001D67FC 7C 7C 1B 78 */ mr r28, r3
-/* 801DABA0 001D6800 4B FF FF 89 */ bl func_801DAB28
-/* 801DABA4 001D6804 2C 03 00 00 */ cmpwi r3, 0
-/* 801DABA8 001D6808 40 82 00 0C */ bne lbl_801DABB4
-/* 801DABAC 001D680C 38 60 00 00 */ li r3, 0
-/* 801DABB0 001D6810 48 00 00 3C */ b lbl_801DABEC
-lbl_801DABB4:
-/* 801DABB4 001D6814 4B FF FF 2D */ bl func_801DAAE0
-/* 801DABB8 001D6818 2C 03 00 00 */ cmpwi r3, 0
-/* 801DABBC 001D681C 7C 7F 1B 78 */ mr r31, r3
-/* 801DABC0 001D6820 40 82 00 0C */ bne lbl_801DABCC
-/* 801DABC4 001D6824 38 60 00 00 */ li r3, 0
-/* 801DABC8 001D6828 48 00 00 24 */ b lbl_801DABEC
-lbl_801DABCC:
-/* 801DABCC 001D682C 7F 83 E3 78 */ mr r3, r28
-/* 801DABD0 001D6830 7F A4 EB 78 */ mr r4, r29
-/* 801DABD4 001D6834 7F C5 F3 78 */ mr r5, r30
-/* 801DABD8 001D6838 48 0B C2 71 */ bl MEMCreateExpHeapEx
-/* 801DABDC 001D683C 38 00 00 01 */ li r0, 1
-/* 801DABE0 001D6840 98 1F 00 00 */ stb r0, 0(r31)
-/* 801DABE4 001D6844 90 7F 00 04 */ stw r3, 4(r31)
-/* 801DABE8 001D6848 93 BF 00 08 */ stw r29, 8(r31)
-lbl_801DABEC:
-/* 801DABEC 001D684C 80 01 00 24 */ lwz r0, 0x24(r1)
-/* 801DABF0 001D6850 83 E1 00 1C */ lwz r31, 0x1c(r1)
-/* 801DABF4 001D6854 83 C1 00 18 */ lwz r30, 0x18(r1)
-/* 801DABF8 001D6858 83 A1 00 14 */ lwz r29, 0x14(r1)
-/* 801DABFC 001D685C 83 81 00 10 */ lwz r28, 0x10(r1)
-/* 801DAC00 001D6860 7C 08 03 A6 */ mtlr r0
-/* 801DAC04 001D6864 38 21 00 20 */ addi r1, r1, 0x20
-/* 801DAC08 001D6868 4E 80 00 20 */ blr
-
-.global func_801DAC0C
-func_801DAC0C:
-/* 801DAC0C 001D686C 80 6D A0 18 */ lwz r3, lbl_8063F2D8-_SDA_BASE_(r13)
-/* 801DAC10 001D6870 4E 80 00 20 */ blr
-
-.global func_801DAC14
-func_801DAC14:
-/* 801DAC14 001D6874 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DAC18 001D6878 7C 08 02 A6 */ mflr r0
-/* 801DAC1C 001D687C 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DAC20 001D6880 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 801DAC24 001D6884 7C 7F 1B 78 */ mr r31, r3
-/* 801DAC28 001D6888 4B FF FF E5 */ bl func_801DAC0C
-/* 801DAC2C 001D688C 93 ED A0 18 */ stw r31, lbl_8063F2D8-_SDA_BASE_(r13)
-/* 801DAC30 001D6890 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 801DAC34 001D6894 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 801DAC38 001D6898 7C 08 03 A6 */ mtlr r0
-/* 801DAC3C 001D689C 38 21 00 10 */ addi r1, r1, 0x10
-/* 801DAC40 001D68A0 4E 80 00 20 */ blr
-
-.global func_801DAC44
-func_801DAC44:
-/* 801DAC44 001D68A4 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DAC48 001D68A8 7C 08 02 A6 */ mflr r0
-/* 801DAC4C 001D68AC 54 64 06 3E */ clrlwi r4, r3, 0x18
-/* 801DAC50 001D68B0 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DAC54 001D68B4 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 801DAC58 001D68B8 A3 ED A0 1C */ lhz r31, lbl_8063F2DC-_SDA_BASE_(r13)
-/* 801DAC5C 001D68BC B0 6D A0 1C */ sth r3, lbl_8063F2DC-_SDA_BASE_(r13)
-/* 801DAC60 001D68C0 80 6D 96 28 */ lwz r3, lbl_8063E8E8-_SDA_BASE_(r13)
-/* 801DAC64 001D68C4 48 0B C6 A9 */ bl MEMSetGroupIDForExpHeap
-/* 801DAC68 001D68C8 A0 0D A0 1C */ lhz r0, lbl_8063F2DC-_SDA_BASE_(r13)
-/* 801DAC6C 001D68CC 80 6D 96 2C */ lwz r3, lbl_8063E8EC-_SDA_BASE_(r13)
-/* 801DAC70 001D68D0 54 04 06 3E */ clrlwi r4, r0, 0x18
-/* 801DAC74 001D68D4 48 0B C6 99 */ bl MEMSetGroupIDForExpHeap
-/* 801DAC78 001D68D8 7F E3 FB 78 */ mr r3, r31
-/* 801DAC7C 001D68DC 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 801DAC80 001D68E0 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 801DAC84 001D68E4 7C 08 03 A6 */ mtlr r0
-/* 801DAC88 001D68E8 38 21 00 10 */ addi r1, r1, 0x10
-/* 801DAC8C 001D68EC 4E 80 00 20 */ blr
-
-.global func_801DAC90
-func_801DAC90:
-/* 801DAC90 001D68F0 48 0B C6 7C */ b MEMSetGroupIDForExpHeap
-
-.global func_801DAC94
-func_801DAC94:
-/* 801DAC94 001D68F4 38 A0 00 20 */ li r5, 0x20
-/* 801DAC98 001D68F8 48 0B C2 90 */ b MEMAllocFromExpHeapEx
-
-lbl_801DAC9C:
-/* 801DAC9C 001D68FC 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 801DACA0 001D6900 7C 08 02 A6 */ mflr r0
-/* 801DACA4 001D6904 90 01 00 24 */ stw r0, 0x24(r1)
-/* 801DACA8 001D6908 93 E1 00 1C */ stw r31, 0x1c(r1)
-/* 801DACAC 001D690C 93 C1 00 18 */ stw r30, 0x18(r1)
-/* 801DACB0 001D6910 7C BE 2B 78 */ mr r30, r5
-/* 801DACB4 001D6914 93 A1 00 14 */ stw r29, 0x14(r1)
-/* 801DACB8 001D6918 7C 9D 23 78 */ mr r29, r4
-/* 801DACBC 001D691C 4B FF FF D9 */ bl func_801DAC94
-/* 801DACC0 001D6920 2C 03 00 00 */ cmpwi r3, 0
-/* 801DACC4 001D6924 7C 7F 1B 78 */ mr r31, r3
-/* 801DACC8 001D6928 40 82 00 0C */ bne lbl_801DACD4
-/* 801DACCC 001D692C 38 60 00 00 */ li r3, 0
-/* 801DACD0 001D6930 48 00 00 14 */ b lbl_801DACE4
-lbl_801DACD4:
-/* 801DACD4 001D6934 7F C4 F3 78 */ mr r4, r30
-/* 801DACD8 001D6938 7F A5 EB 78 */ mr r5, r29
-/* 801DACDC 001D693C 4B E2 94 29 */ bl memset
-/* 801DACE0 001D6940 7F E3 FB 78 */ mr r3, r31
-lbl_801DACE4:
-/* 801DACE4 001D6944 80 01 00 24 */ lwz r0, 0x24(r1)
-/* 801DACE8 001D6948 83 E1 00 1C */ lwz r31, 0x1c(r1)
-/* 801DACEC 001D694C 83 C1 00 18 */ lwz r30, 0x18(r1)
-/* 801DACF0 001D6950 83 A1 00 14 */ lwz r29, 0x14(r1)
-/* 801DACF4 001D6954 7C 08 03 A6 */ mtlr r0
-/* 801DACF8 001D6958 38 21 00 20 */ addi r1, r1, 0x20
-/* 801DACFC 001D695C 4E 80 00 20 */ blr
-
-.global func_801DAD00
-func_801DAD00:
-/* 801DAD00 001D6960 38 A0 00 00 */ li r5, 0
-/* 801DAD04 001D6964 4B FF FF 98 */ b lbl_801DAC9C
-
-.global func_801DAD08
-func_801DAD08:
-/* 801DAD08 001D6968 48 0B C2 20 */ b MEMAllocFromExpHeapEx
-
-.global func_801DAD0C
-func_801DAD0C:
-/* 801DAD0C 001D696C 2C 05 00 00 */ cmpwi r5, 0
-/* 801DAD10 001D6970 40 81 00 08 */ ble lbl_801DAD18
-/* 801DAD14 001D6974 7C A5 00 D0 */ neg r5, r5
-lbl_801DAD18:
-/* 801DAD18 001D6978 48 0B C2 10 */ b MEMAllocFromExpHeapEx
-
-.global func_801DAD1C
-func_801DAD1C:
-/* 801DAD1C 001D697C 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DAD20 001D6980 7C 08 02 A6 */ mflr r0
-/* 801DAD24 001D6984 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DAD28 001D6988 48 0B C2 B1 */ bl MEMResizeForMBlockExpHeap
-/* 801DAD2C 001D698C 7C 03 00 D0 */ neg r0, r3
-/* 801DAD30 001D6990 7C 00 1B 78 */ or r0, r0, r3
-/* 801DAD34 001D6994 54 03 0F FE */ srwi r3, r0, 0x1f
-/* 801DAD38 001D6998 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 801DAD3C 001D699C 7C 08 03 A6 */ mtlr r0
-/* 801DAD40 001D69A0 38 21 00 10 */ addi r1, r1, 0x10
-/* 801DAD44 001D69A4 4E 80 00 20 */ blr
-
-.global func_801DAD48
-func_801DAD48:
-/* 801DAD48 001D69A8 2C 04 00 00 */ cmpwi r4, 0
-/* 801DAD4C 001D69AC 4D 82 00 20 */ beqlr
-/* 801DAD50 001D69B0 48 0B C4 74 */ b MEMFreeToExpHeap
-/* 801DAD54 001D69B4 4E 80 00 20 */ blr
-
-.global func_801DAD58
-func_801DAD58:
-/* 801DAD58 001D69B8 7C 83 23 78 */ mr r3, r4
-/* 801DAD5C 001D69BC 48 0B C6 9C */ b MEMGetSizeForMBlockExpHeap
-
-.global func_801DAD60
-func_801DAD60:
-/* 801DAD60 001D69C0 48 0B C5 30 */ b MEMGetTotalFreeSizeForExpHeap
-
-.global func_801DAD64
-func_801DAD64:
-/* 801DAD64 001D69C4 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DAD68 001D69C8 7C 08 02 A6 */ mflr r0
-/* 801DAD6C 001D69CC 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DAD70 001D69D0 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 801DAD74 001D69D4 7C 7F 1B 78 */ mr r31, r3
-/* 801DAD78 001D69D8 4B FF FE 95 */ bl func_801DAC0C
-/* 801DAD7C 001D69DC 7F E4 FB 78 */ mr r4, r31
-/* 801DAD80 001D69E0 4B FF FF 15 */ bl func_801DAC94
-/* 801DAD84 001D69E4 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 801DAD88 001D69E8 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 801DAD8C 001D69EC 7C 08 03 A6 */ mtlr r0
-/* 801DAD90 001D69F0 38 21 00 10 */ addi r1, r1, 0x10
-/* 801DAD94 001D69F4 4E 80 00 20 */ blr
-
-.global func_801DAD98
-func_801DAD98:
-/* 801DAD98 001D69F8 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DAD9C 001D69FC 7C 08 02 A6 */ mflr r0
-/* 801DADA0 001D6A00 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DADA4 001D6A04 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 801DADA8 001D6A08 7C 7F 1B 78 */ mr r31, r3
-/* 801DADAC 001D6A0C 4B FF FE 61 */ bl func_801DAC0C
-/* 801DADB0 001D6A10 7F E4 FB 78 */ mr r4, r31
-/* 801DADB4 001D6A14 4B FF FF 4D */ bl func_801DAD00
-/* 801DADB8 001D6A18 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 801DADBC 001D6A1C 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 801DADC0 001D6A20 7C 08 03 A6 */ mtlr r0
-/* 801DADC4 001D6A24 38 21 00 10 */ addi r1, r1, 0x10
-/* 801DADC8 001D6A28 4E 80 00 20 */ blr
-
-.global func_801DADCC
-func_801DADCC:
-/* 801DADCC 001D6A2C 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DADD0 001D6A30 7C 08 02 A6 */ mflr r0
-/* 801DADD4 001D6A34 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DADD8 001D6A38 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 801DADDC 001D6A3C 7C 9F 23 78 */ mr r31, r4
-/* 801DADE0 001D6A40 93 C1 00 08 */ stw r30, 8(r1)
-/* 801DADE4 001D6A44 7C 7E 1B 78 */ mr r30, r3
-/* 801DADE8 001D6A48 4B FF FE 25 */ bl func_801DAC0C
-/* 801DADEC 001D6A4C 7F C4 F3 78 */ mr r4, r30
-/* 801DADF0 001D6A50 7F E5 FB 78 */ mr r5, r31
-/* 801DADF4 001D6A54 4B FF FF 15 */ bl func_801DAD08
-/* 801DADF8 001D6A58 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 801DADFC 001D6A5C 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 801DAE00 001D6A60 83 C1 00 08 */ lwz r30, 8(r1)
-/* 801DAE04 001D6A64 7C 08 03 A6 */ mtlr r0
-/* 801DAE08 001D6A68 38 21 00 10 */ addi r1, r1, 0x10
-/* 801DAE0C 001D6A6C 4E 80 00 20 */ blr
-
-.global func_801DAE10
-func_801DAE10:
-/* 801DAE10 001D6A70 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DAE14 001D6A74 7C 08 02 A6 */ mflr r0
-/* 801DAE18 001D6A78 2C 04 00 00 */ cmpwi r4, 0
-/* 801DAE1C 001D6A7C 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DAE20 001D6A80 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 801DAE24 001D6A84 7C 9F 23 78 */ mr r31, r4
-/* 801DAE28 001D6A88 93 C1 00 08 */ stw r30, 8(r1)
-/* 801DAE2C 001D6A8C 7C 7E 1B 78 */ mr r30, r3
-/* 801DAE30 001D6A90 40 81 00 08 */ ble lbl_801DAE38
-/* 801DAE34 001D6A94 7F E4 00 D0 */ neg r31, r4
-lbl_801DAE38:
-/* 801DAE38 001D6A98 4B FF FD D5 */ bl func_801DAC0C
-/* 801DAE3C 001D6A9C 7F C4 F3 78 */ mr r4, r30
-/* 801DAE40 001D6AA0 7F E5 FB 78 */ mr r5, r31
-/* 801DAE44 001D6AA4 4B FF FE C5 */ bl func_801DAD08
-/* 801DAE48 001D6AA8 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 801DAE4C 001D6AAC 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 801DAE50 001D6AB0 83 C1 00 08 */ lwz r30, 8(r1)
-/* 801DAE54 001D6AB4 7C 08 03 A6 */ mtlr r0
-/* 801DAE58 001D6AB8 38 21 00 10 */ addi r1, r1, 0x10
-/* 801DAE5C 001D6ABC 4E 80 00 20 */ blr
-
-.global func_801DAE60
-func_801DAE60:
-/* 801DAE60 001D6AC0 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DAE64 001D6AC4 7C 08 02 A6 */ mflr r0
-/* 801DAE68 001D6AC8 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DAE6C 001D6ACC 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 801DAE70 001D6AD0 7C 9F 23 78 */ mr r31, r4
-/* 801DAE74 001D6AD4 93 C1 00 08 */ stw r30, 8(r1)
-/* 801DAE78 001D6AD8 7C 7E 1B 78 */ mr r30, r3
-/* 801DAE7C 001D6ADC 4B FF FD 91 */ bl func_801DAC0C
-/* 801DAE80 001D6AE0 7F C4 F3 78 */ mr r4, r30
-/* 801DAE84 001D6AE4 7F E5 FB 78 */ mr r5, r31
-/* 801DAE88 001D6AE8 4B FF FE 95 */ bl func_801DAD1C
-/* 801DAE8C 001D6AEC 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 801DAE90 001D6AF0 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 801DAE94 001D6AF4 83 C1 00 08 */ lwz r30, 8(r1)
-/* 801DAE98 001D6AF8 7C 08 03 A6 */ mtlr r0
-/* 801DAE9C 001D6AFC 38 21 00 10 */ addi r1, r1, 0x10
-/* 801DAEA0 001D6B00 4E 80 00 20 */ blr
-
-.global func_801DAEA4
-func_801DAEA4:
-/* 801DAEA4 001D6B04 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DAEA8 001D6B08 7C 08 02 A6 */ mflr r0
-/* 801DAEAC 001D6B0C 2C 03 00 00 */ cmpwi r3, 0
-/* 801DAEB0 001D6B10 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DAEB4 001D6B14 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 801DAEB8 001D6B18 7C 7F 1B 78 */ mr r31, r3
-/* 801DAEBC 001D6B1C 41 82 00 10 */ beq lbl_801DAECC
-/* 801DAEC0 001D6B20 4B FF FD 4D */ bl func_801DAC0C
-/* 801DAEC4 001D6B24 7F E4 FB 78 */ mr r4, r31
-/* 801DAEC8 001D6B28 4B FF FE 81 */ bl func_801DAD48
-lbl_801DAECC:
-/* 801DAECC 001D6B2C 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 801DAED0 001D6B30 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 801DAED4 001D6B34 7C 08 03 A6 */ mtlr r0
-/* 801DAED8 001D6B38 38 21 00 10 */ addi r1, r1, 0x10
-/* 801DAEDC 001D6B3C 4E 80 00 20 */ blr
-
-.global func_801DAEE0
-func_801DAEE0:
-/* 801DAEE0 001D6B40 2C 03 00 00 */ cmpwi r3, 0
-/* 801DAEE4 001D6B44 40 82 00 0C */ bne lbl_801DAEF0
-/* 801DAEE8 001D6B48 38 60 00 00 */ li r3, 0
-/* 801DAEEC 001D6B4C 4E 80 00 20 */ blr
-lbl_801DAEF0:
-/* 801DAEF0 001D6B50 48 0B C5 08 */ b MEMGetSizeForMBlockExpHeap
-/* 801DAEF4 001D6B54 4E 80 00 20 */ blr
-
-.global func_801DAEF8
-func_801DAEF8:
-/* 801DAEF8 001D6B58 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DAEFC 001D6B5C 7C 08 02 A6 */ mflr r0
-/* 801DAF00 001D6B60 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DAF04 001D6B64 4B FF FD 09 */ bl func_801DAC0C
-/* 801DAF08 001D6B68 4B FF FE 59 */ bl func_801DAD60
-/* 801DAF0C 001D6B6C 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 801DAF10 001D6B70 7C 08 03 A6 */ mtlr r0
-/* 801DAF14 001D6B74 38 21 00 10 */ addi r1, r1, 0x10
-/* 801DAF18 001D6B78 4E 80 00 20 */ blr
-lbl_801DAF1C:
-/* 801DAF1C 001D6B7C 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 801DAF20 001D6B80 7C 08 02 A6 */ mflr r0
-/* 801DAF24 001D6B84 90 01 00 14 */ stw r0, 0x14(r1)
-/* 801DAF28 001D6B88 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 801DAF2C 001D6B8C 7C BF 2B 78 */ mr r31, r5
-/* 801DAF30 001D6B90 93 C1 00 08 */ stw r30, 8(r1)
-/* 801DAF34 001D6B94 7C 7E 1B 78 */ mr r30, r3
-/* 801DAF38 001D6B98 48 0B C4 C9 */ bl MEMGetGroupIDForMBlockExpHeap
-/* 801DAF3C 001D6B9C A0 1F 00 04 */ lhz r0, 4(r31)
-/* 801DAF40 001D6BA0 54 63 04 3E */ clrlwi r3, r3, 0x10
-/* 801DAF44 001D6BA4 7C 00 18 40 */ cmplw r0, r3
-/* 801DAF48 001D6BA8 40 82 00 10 */ bne lbl_801DAF58
-/* 801DAF4C 001D6BAC 80 7F 00 00 */ lwz r3, 0(r31)
-/* 801DAF50 001D6BB0 7F C4 F3 78 */ mr r4, r30
-/* 801DAF54 001D6BB4 48 0B C2 71 */ bl MEMFreeToExpHeap
-lbl_801DAF58:
-/* 801DAF58 001D6BB8 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 801DAF5C 001D6BBC 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 801DAF60 001D6BC0 83 C1 00 08 */ lwz r30, 8(r1)
-/* 801DAF64 001D6BC4 7C 08 03 A6 */ mtlr r0
-/* 801DAF68 001D6BC8 38 21 00 10 */ addi r1, r1, 0x10
-/* 801DAF6C 001D6BCC 4E 80 00 20 */ blr
-
-.global func_801DAF70
-func_801DAF70:
-/* 801DAF70 001D6BD0 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 801DAF74 001D6BD4 7C 08 02 A6 */ mflr r0
-/* 801DAF78 001D6BD8 3C C0 80 1E */ lis r6, lbl_801DAF1C@ha
-/* 801DAF7C 001D6BDC 90 01 00 24 */ stw r0, 0x24(r1)
-/* 801DAF80 001D6BE0 38 00 00 00 */ li r0, 0
-/* 801DAF84 001D6BE4 38 A1 00 08 */ addi r5, r1, 8
-/* 801DAF88 001D6BE8 B0 81 00 0C */ sth r4, 0xc(r1)
-/* 801DAF8C 001D6BEC 38 86 AF 1C */ addi r4, r6, lbl_801DAF1C@l
-/* 801DAF90 001D6BF0 90 61 00 08 */ stw r3, 8(r1)
-/* 801DAF94 001D6BF4 90 01 00 10 */ stw r0, 0x10(r1)
-/* 801DAF98 001D6BF8 48 0B C3 C5 */ bl MEMVisitAllocatedForExpHeap
-/* 801DAF9C 001D6BFC 80 01 00 24 */ lwz r0, 0x24(r1)
-/* 801DAFA0 001D6C00 7C 08 03 A6 */ mtlr r0
-/* 801DAFA4 001D6C04 38 21 00 20 */ addi r1, r1, 0x20
-/* 801DAFA8 001D6C08 4E 80 00 20 */ blr
-
-.global func_801DAFAC
-func_801DAFAC:
-/* 801DAFAC 001D6C0C 54 60 06 FF */ clrlwi. r0, r3, 0x1b
-/* 801DAFB0 001D6C10 40 82 00 14 */ bne lbl_801DAFC4
-/* 801DAFB4 001D6C14 54 80 06 FF */ clrlwi. r0, r4, 0x1b
-/* 801DAFB8 001D6C18 40 82 00 0C */ bne lbl_801DAFC4
-/* 801DAFBC 001D6C1C 54 A0 06 FF */ clrlwi. r0, r5, 0x1b
-/* 801DAFC0 001D6C20 41 82 00 08 */ beq lbl_801DAFC8
-lbl_801DAFC4:
-/* 801DAFC4 001D6C24 4B E2 90 3C */ b memcpy
-lbl_801DAFC8:
-/* 801DAFC8 001D6C28 54 A5 D9 7E */ srwi r5, r5, 5
-/* 801DAFCC 001D6C2C 7C A9 03 A6 */ mtctr r5
-/* 801DAFD0 001D6C30 38 63 FF FC */ addi r3, r3, -4
-/* 801DAFD4 001D6C34 38 84 FF FC */ addi r4, r4, -4
-lbl_801DAFD8:
-/* 801DAFD8 001D6C38 84 04 00 04 */ lwzu r0, 4(r4)
-/* 801DAFDC 001D6C3C 84 A4 00 04 */ lwzu r5, 4(r4)
-/* 801DAFE0 001D6C40 84 C4 00 04 */ lwzu r6, 4(r4)
-/* 801DAFE4 001D6C44 84 E4 00 04 */ lwzu r7, 4(r4)
-/* 801DAFE8 001D6C48 85 04 00 04 */ lwzu r8, 4(r4)
-/* 801DAFEC 001D6C4C 85 24 00 04 */ lwzu r9, 4(r4)
-/* 801DAFF0 001D6C50 85 44 00 04 */ lwzu r10, 4(r4)
-/* 801DAFF4 001D6C54 85 64 00 04 */ lwzu r11, 4(r4)
-/* 801DAFF8 001D6C58 94 03 00 04 */ stwu r0, 4(r3)
-/* 801DAFFC 001D6C5C 94 A3 00 04 */ stwu r5, 4(r3)
-/* 801DB000 001D6C60 94 C3 00 04 */ stwu r6, 4(r3)
-/* 801DB004 001D6C64 94 E3 00 04 */ stwu r7, 4(r3)
-/* 801DB008 001D6C68 95 03 00 04 */ stwu r8, 4(r3)
-/* 801DB00C 001D6C6C 95 23 00 04 */ stwu r9, 4(r3)
-/* 801DB010 001D6C70 95 43 00 04 */ stwu r10, 4(r3)
-/* 801DB014 001D6C74 95 63 00 04 */ stwu r11, 4(r3)
-/* 801DB018 001D6C78 42 00 FF C0 */ bdnz lbl_801DAFD8
-/* 801DB01C 001D6C7C 4E 80 00 20 */ blr
-
-.global func_801DB020
-func_801DB020:
-/* 801DB020 001D6C80 38 A0 00 01 */ li r5, 1
-/* 801DB024 001D6C84 38 6D A0 10 */ addi r3, r13, lbl_8063F2D0-_SDA_BASE_
-/* 801DB028 001D6C88 38 80 00 04 */ li r4, 4
-/* 801DB02C 001D6C8C 38 00 00 00 */ li r0, 0
-/* 801DB030 001D6C90 98 AD A0 10 */ stb r5, lbl_8063F2D0-_SDA_BASE_(r13)
-/* 801DB034 001D6C94 B0 83 00 02 */ sth r4, 2(r3)
-/* 801DB038 001D6C98 98 03 00 04 */ stb r0, 4(r3)
-/* 801DB03C 001D6C9C 4E 80 00 20 */ blr
diff --git a/asm/ctors_2.s b/asm/ctors_2.s
index ae5eae4..5f24e74 100644
--- a/asm/ctors_2.s
+++ b/asm/ctors_2.s
@@ -2,7 +2,7 @@
.section .ctors, "wa" # 0x803E1E60 - 0x803E22A0
-.4byte func_801DB020, func_801DB7FC, func_801DBB1C, func_801DBE70
+.4byte func_801DB7FC, func_801DBB1C, func_801DBE70
.4byte func_801DCE4C, func_801DD5A8, func_801DD8A0, func_801DDF58
.4byte func_801DF020, func_801E07C8, func_801E07F0, func_801E0A34
.4byte func_801E4308, func_801E472C, func_801E5F5C, func_801E6BD8
diff --git a/asm/sbss_2.s b/asm/sbss_2.s
index eb7438a..ec0565e 100644
--- a/asm/sbss_2.s
+++ b/asm/sbss_2.s
@@ -1,20 +1,8 @@
.section .sbss, "wa" # 0x80474F00 - 0x80643050
-.global lbl_8063F2D0
-lbl_8063F2D0:
- .skip 0x6
-.global lbl_8063F2D6
-lbl_8063F2D6:
- .skip 0x1
-.global lbl_8063F2D7
-lbl_8063F2D7:
- .skip 0x1
-.global lbl_8063F2D8
-lbl_8063F2D8:
- .skip 0x4
-.global lbl_8063F2DC
-lbl_8063F2DC:
- .skip 0x4
+.global lbl_8063F2DE
+lbl_8063F2DE:
+ .skip 0x2
.global lbl_8063F2E0
lbl_8063F2E0:
.skip 0x8
diff --git a/include/Runtime/__mem.h b/include/Runtime/__mem.h
new file mode 100644
index 0000000..99d53b0
--- /dev/null
+++ b/include/Runtime/__mem.h
@@ -0,0 +1,16 @@
+#ifndef POKEREVO___MEM_H
+#define POKEREVO___MEM_H
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void *memset(void *s, int c, size_t n);
+void *memcpy(void *dest, const void *src, size_t n);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //POKEREVO___MEM_H
diff --git a/include/SDK/MEM/mem_expHeap.h b/include/SDK/MEM/mem_expHeap.h
new file mode 100644
index 0000000..f28b02c
--- /dev/null
+++ b/include/SDK/MEM/mem_expHeap.h
@@ -0,0 +1,31 @@
+#ifndef POKEREVO_MEM_EXPHEAP_H
+#define POKEREVO_MEM_EXPHEAP_H
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// TODO: replace void* with type definition
+typedef void *MEMHeapHandle;
+typedef void (*MEMHeapVisitor)(void *memBlock, MEMHeapHandle heap, u32 userParam);
+
+extern MEMHeapHandle lbl_8063E8E8;
+extern MEMHeapHandle lbl_8063E8EC;
+
+MEMHeapHandle MEMCreateExpHeapEx(void* p1, u32 p2, u16 p3);
+u16 MEMSetGroupIDForExpHeap(MEMHeapHandle heap, u16 groupID);
+void *MEMAllocFromExpHeapEx(MEMHeapHandle heap, u32 size, int alignment);
+u32 MEMResizeForMBlockExpHeap(MEMHeapHandle heap, void *memBlock, u32 size);
+void MEMFreeToExpHeap(MEMHeapHandle heap, void *memBlock);
+u32 MEMGetSizeForMBlockExpHeap(const void *memBlock);
+u32 MEMGetTotalFreeSizeForExpHeap(MEMHeapHandle heap);
+u16 MEMGetGroupIDForMBlockExpHeap(const void *memBlock);
+void MEMVisitAllocatedForExpHeap(MEMHeapHandle heap, MEMHeapVisitor visitor, u32 userParam);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //POKEREVO_MEM_EXPHEAP_H
diff --git a/include/SDK/mem.h b/include/SDK/mem.h
new file mode 100644
index 0000000..7bcbe6d
--- /dev/null
+++ b/include/SDK/mem.h
@@ -0,0 +1,14 @@
+#ifndef POKEREVO_MEM_H
+#define POKEREVO_MEM_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "MEM/mem_expHeap.h"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //POKEREVO_MEM_H
diff --git a/include/code_801DAA30.h b/include/code_801DAA30.h
deleted file mode 100644
index 167f01c..0000000
--- a/include/code_801DAA30.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef POKEREVO_CODE_801DAA30_H
-#define POKEREVO_CODE_801DAA30_H
-
-void* operator new(size_t sz);
-void* operator new[](size_t sz);
-void operator delete(void* ptr);
-void operator delete[](void* ptr);
-
-#endif //POKEREVO_CODE_801DAA30_H
diff --git a/include/code_801DAAE0.h b/include/code_801DAAE0.h
index 34bafa0..8d3d09d 100644
--- a/include/code_801DAAE0.h
+++ b/include/code_801DAAE0.h
@@ -5,9 +5,32 @@
extern "C" {
#endif
+#include "SDK/mem.h"
+
BOOL func_801DAB28(void);
-void *func_801DAD64(size_t);
-void func_801DAEA4(void *);
+void func_801DAB30(void);
+MEMHeapHandle func_801DAB78(void* p1, u32 p2, u16 p3);
+MEMHeapHandle func_801DAC0C(void);
+MEMHeapHandle func_801DAC14(MEMHeapHandle p1);
+u16 func_801DAC44(u16 p1);
+u16 func_801DAC90(MEMHeapHandle heap, u16 groupID);
+void* func_801DAC94(MEMHeapHandle heap, u32 size);
+void* func_801DAD00(MEMHeapHandle heap, u32 size);
+void* func_801DAD08(MEMHeapHandle heap, u32 size, int alignment);
+void* func_801DAD0C(MEMHeapHandle heap, u32 size, int alignment);
+void func_801DAD48(MEMHeapHandle heap, void* memBlock);
+u32 func_801DAD58(u32, const void* memBlock);
+void* func_801DAD64(size_t size);
+void* func_801DAD98(u32 size);
+void* func_801DADCC(u32 size, int alignment);
+void* func_801DAE10(u32 size, int alignment);
+BOOL func_801DAE60(void* memBlock, u32 size);
+void func_801DAEA4(void* memBlock);
+u32 func_801DAEE0(const void* memBlock);
+u32 func_801DAEF8(void);
+void func_801DAF70(MEMHeapHandle heap, u16 groupID);
+void func_801DAFAC(u32* dest, const u32* src, size_t n);
+void func_801DAEA4(void*);
#ifdef __cplusplus
}
diff --git a/include/unkStruct.h b/include/unkStruct.h
index 73d3cfc..d1c304f 100644
--- a/include/unkStruct.h
+++ b/include/unkStruct.h
@@ -4,15 +4,12 @@
// Note: Many instances of this class appear in .sbss, and they are partially initialized
// by the static initializers in .ctors
-class unkStruct
+struct unkStruct
{
u8 unk0;
u16 unk2;
u8 unk4;
u8 unk5;
- u8 unk6;
- u8 unk7;
-public:
unkStruct(u8 p1, u16 p2, u8 p3)
: unk0(p1), unk2(p2), unk4(p3) { }
};
diff --git a/obj_files.mk b/obj_files.mk
index 8a9c578..aeee1b5 100644
--- a/obj_files.mk
+++ b/obj_files.mk
@@ -8,6 +8,7 @@ EXTABINDEX_O_FILES := \
#todo fix with makefile implementation
SPLIT_O_FILES := \
$(BUILD_DIR)/asm/ctors.o \
+ $(BUILD_DIR)/asm/bss.o \
$(BUILD_DIR)/asm/sbss.o \
$(BUILD_DIR)/asm/code_80006980.o \
$(BUILD_DIR)/asm/code_8000748C.o \
@@ -217,7 +218,7 @@ SPLIT_O_FILES := \
$(BUILD_DIR)/asm/SDK/NdevExi2A/DebuggerDriver.o \
$(BUILD_DIR)/asm/SDK/NdevExi2A/exi2.o \
$(BUILD_DIR)/src/code_801DAA30.o \
- $(BUILD_DIR)/asm/code_801DAAE0.o \
+ $(BUILD_DIR)/src/code_801DAAE0.o \
$(BUILD_DIR)/asm/code_801DB040.o \
$(BUILD_DIR)/asm/code_801DB81C.o \
$(BUILD_DIR)/asm/code_801DBB3C.o \
@@ -815,6 +816,7 @@ SPLIT_O_FILES := \
$(BUILD_DIR)/asm/code_803D9208.o \
$(BUILD_DIR)/asm/text_11_2.o \
$(BUILD_DIR)/asm/ctors_2.o \
+ $(BUILD_DIR)/asm/bss_2.o \
$(BUILD_DIR)/asm/sbss_2.o \
@@ -827,9 +829,6 @@ RODATA_O_FILES := \
DATA_O_FILES := \
$(BUILD_DIR)/asm/data.o
-BSS_O_FILES := \
- $(BUILD_DIR)/asm/bss.o
-
SDATA_O_FILES := \
$(BUILD_DIR)/asm/sdata.o
diff --git a/src/code_801DAA30.cpp b/src/code_801DAA30.cpp
index 4a24614..17375d9 100644
--- a/src/code_801DAA30.cpp
+++ b/src/code_801DAA30.cpp
@@ -1,9 +1,11 @@
#include "types.h"
#include "unkStruct.h"
#include "code_801DAAE0.h"
-#include "code_801DAA30.h"
-unkStruct gUnk8063F2C8(1, 4, 0);
+namespace
+{
+ unkStruct gUnk8063F2C8(1, 4, 0);
+}
void* operator new(size_t sz)
{
diff --git a/src/code_801DAAE0.cpp b/src/code_801DAAE0.cpp
new file mode 100644
index 0000000..c03d384
--- /dev/null
+++ b/src/code_801DAAE0.cpp
@@ -0,0 +1,260 @@
+#include "types.h"
+#include "unkStruct.h"
+#include "code_801DAAE0.h"
+#include "Runtime/__mem.h"
+#include "SDK/mem.h"
+
+namespace
+{
+ struct unkClass
+ {
+ u8 unk0;
+ MEMHeapHandle unk4;
+ u32 unk8;
+ };
+
+ struct unkClass2
+ {
+ MEMHeapHandle heap;
+ u16 groupID;
+ u32 unk8;
+ };
+
+ const size_t ARR_SIZE = 16;
+ unkClass gUnk804912B0[ARR_SIZE];
+
+ unkStruct gUnk8063F2D0(1, 4, 0);
+ u8 gUnk8063F2D6;
+ u8 gUnk8063F2D7;
+ MEMHeapHandle gUnk8063F2D8;
+ u16 gUnk8063F2DC;
+}
+
+extern "C" {
+
+static unkClass* func_801DAAE0(void)
+{
+ for (u32 i = 0; i < ARR_SIZE; i++)
+ if (gUnk804912B0[i].unk0 == 0)
+ return &gUnk804912B0[i];
+ return NULL;
+}
+
+BOOL func_801DAB28(void)
+{
+ return gUnk8063F2D6;
+}
+
+void func_801DAB30(void)
+{
+ memset(gUnk804912B0, 0, sizeof(gUnk804912B0));
+ gUnk8063F2D8 = 0;
+ gUnk8063F2DC = 0;
+ gUnk8063F2D6 = 1;
+ gUnk8063F2D7 = 0;
+}
+
+MEMHeapHandle func_801DAB78(void* p1, u32 p2, u16 p3)
+{
+ if (!func_801DAB28())
+ return 0;
+ unkClass* r31 = func_801DAAE0();
+ if (!r31)
+ return 0;
+ MEMHeapHandle r3 = MEMCreateExpHeapEx(p1, p2, p3);
+ r31->unk0 = 1;
+ r31->unk4 = r3;
+ r31->unk8 = p2;
+ return r3;
+}
+
+MEMHeapHandle func_801DAC0C(void)
+{
+ return gUnk8063F2D8;
+}
+
+MEMHeapHandle func_801DAC14(MEMHeapHandle p1)
+{
+ MEMHeapHandle r3 = func_801DAC0C();
+ gUnk8063F2D8 = p1;
+ return r3;
+}
+
+u16 func_801DAC44(u16 p1)
+{
+ u16 r31 = gUnk8063F2DC;
+ gUnk8063F2DC = p1;
+ MEMSetGroupIDForExpHeap(lbl_8063E8E8, (u16)(p1 & 0xff));
+ MEMSetGroupIDForExpHeap(lbl_8063E8EC, (u16)(gUnk8063F2DC & 0xff));
+ return r31;
+}
+
+u16 func_801DAC90(MEMHeapHandle heap, u16 groupID)
+{
+ return MEMSetGroupIDForExpHeap(heap, groupID);
+}
+
+void* func_801DAC94(MEMHeapHandle heap, u32 size)
+{
+ return MEMAllocFromExpHeapEx(heap, size, 32);
+}
+
+static void* lbl_801DAC9C(MEMHeapHandle heap, u32 size, int fill)
+{
+ void* r31 = func_801DAC94(heap, size);
+ if (!r31)
+ return NULL;
+ memset(r31, fill, size);
+ return r31;
+}
+
+void* func_801DAD00(MEMHeapHandle heap, u32 size)
+{
+ return lbl_801DAC9C(heap, size, 0);
+}
+
+void* func_801DAD08(MEMHeapHandle heap, u32 size, int alignment)
+{
+ return MEMAllocFromExpHeapEx(heap, size, alignment);
+}
+
+void* func_801DAD0C(MEMHeapHandle heap, u32 size, int alignment)
+{
+ return MEMAllocFromExpHeapEx(heap, size, (alignment > 0) ? -alignment : alignment);
+}
+
+static BOOL func_801DAD1C(MEMHeapHandle heap, void* memBlock, u32 size)
+{
+ return MEMResizeForMBlockExpHeap(heap, memBlock, size) != 0;
+}
+
+void func_801DAD48(MEMHeapHandle heap, void* memBlock)
+{
+ if (memBlock)
+ MEMFreeToExpHeap(heap, memBlock);
+}
+
+u32 func_801DAD58(u32, const void* memBlock)
+{
+ return MEMGetSizeForMBlockExpHeap(memBlock);
+}
+
+static u32 func_801DAD60(MEMHeapHandle heap)
+{
+ return MEMGetTotalFreeSizeForExpHeap(heap);
+}
+
+void* func_801DAD64(size_t size)
+{
+ return func_801DAC94(func_801DAC0C(), size);
+}
+
+void* func_801DAD98(u32 size)
+{
+ return func_801DAD00(func_801DAC0C(), size);
+}
+
+void* func_801DADCC(u32 size, int alignment)
+{
+ return func_801DAD08(func_801DAC0C(), size, alignment);
+}
+
+void* func_801DAE10(u32 size, int alignment)
+{
+ return func_801DAD08(func_801DAC0C(), size, (alignment > 0) ? -alignment : alignment);
+}
+
+BOOL func_801DAE60(void* memBlock, u32 size)
+{
+ return func_801DAD1C(func_801DAC0C(), memBlock, size);
+}
+
+void func_801DAEA4(void* memBlock)
+{
+ if (memBlock)
+ func_801DAD48(func_801DAC0C(), memBlock);
+}
+
+u32 func_801DAEE0(const void* memBlock)
+{
+ if (memBlock == NULL)
+ return 0;
+ return MEMGetSizeForMBlockExpHeap(memBlock);
+}
+
+u32 func_801DAEF8(void)
+{
+ return func_801DAD60(func_801DAC0C());
+}
+
+static void lbl_801DAF1C(void* memBlock, MEMHeapHandle, u32 p3)
+{
+ if (MEMGetGroupIDForMBlockExpHeap(memBlock) == ((unkClass2 *)p3)->groupID)
+ MEMFreeToExpHeap(((unkClass2 *)p3)->heap, memBlock);
+}
+
+void func_801DAF70(MEMHeapHandle heap, u16 groupID)
+{
+ unkClass2 param;
+ param.heap = heap;
+ param.groupID = groupID;
+ param.unk8 = 0;
+ MEMVisitAllocatedForExpHeap(heap, lbl_801DAF1C, (u32)&param);
+}
+
+void func_801DAFAC(register u32* dest, register const u32* src, register size_t n)
+{
+ if ((u32)dest & 0x1f || (u32)src & 0x1f || n & 0x1f) {
+ memcpy(dest, src, n);
+ } else {
+ n /= 32;
+ #ifdef NONMATCHING
+ // 1. instruction order of loads and stores is not right
+ // 2. branch instruction should be bdnz, not bne
+ dest--;
+ src--;
+ do
+ {
+ *++dest = *++src;
+ *++dest = *++src;
+ *++dest = *++src;
+ *++dest = *++src;
+ *++dest = *++src;
+ *++dest = *++src;
+ *++dest = *++src;
+ *++dest = *++src;
+ } while (--n > 0);
+ #else
+ // Note: reg0 prevents the previous if condition from using
+ // r12 as its scratch register instead of r0
+ register u32 reg0;
+ asm
+ {
+ mtctr n
+ addi r3, dest, -4
+ addi r4, src, -4
+ lbl_801DAFD8:
+ lwzu reg0, 4(r4)
+ lwzu r5, 4(r4)
+ lwzu r6, 4(r4)
+ lwzu r7, 4(r4)
+ lwzu r8, 4(r4)
+ lwzu r9, 4(r4)
+ lwzu r10, 4(r4)
+ lwzu r11, 4(r4)
+ stwu reg0, 4(r3)
+ stwu r5, 4(r3)
+ stwu r6, 4(r3)
+ stwu r7, 4(r3)
+ stwu r8, 4(r3)
+ stwu r9, 4(r3)
+ stwu r10, 4(r3)
+ stwu r11, 4(r3)
+ bdnz lbl_801DAFD8
+ }
+ #pragma peephole on
+ #endif
+ }
+}
+
+} //extern "C"