diff options
-rw-r--r-- | arm9/arm9.lcf | 168 | ||||
-rw-r--r-- | arm9/asm/unk_02046030.s | 34 | ||||
-rw-r--r-- | arm9/global.inc | 50 | ||||
-rw-r--r-- | arm9/modules/05/asm/module_05.s | 4 | ||||
-rw-r--r-- | arm9/modules/57/asm/module_57.s | 74 | ||||
-rw-r--r-- | arm9/modules/58/asm/module_58.s | 2481 | ||||
-rw-r--r-- | arm9/modules/59/asm/module_59.s | 5042 | ||||
-rw-r--r-- | arm9/modules/60/asm/module_60.s | 1491 | ||||
-rw-r--r-- | arm9/modules/61/asm/module_61.s | 1907 | ||||
-rw-r--r-- | arm9/modules/62/asm/module_62.s | 7543 | ||||
-rw-r--r-- | arm9/modules/63/asm/module_63.s | 8588 | ||||
-rw-r--r-- | arm9/undefined_syms.txt | 9 | ||||
-rw-r--r-- | pokediamond.lcf | 176 |
13 files changed, 27382 insertions, 185 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index d2073d96..47df3931 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -2347,12 +2347,23 @@ SECTIONS { SDK_OVERLAY.MODULE_57.BSS_SIZE = SDK_OVERLAY.MODULE_57.BSS_END - SDK_OVERLAY.MODULE_57.BSS_START; } >> MODULE_57 - .MODULE_58: { + .MODULE_58 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY_MODULE_58_ID = 58; SDK_OVERLAY.MODULE_58.ID = 58; SDK_OVERLAY.MODULE_58.START = .; - FILE_2A8800.o (.text) /* 0x2A4800 */ + module_58.o (.text) + module_58.o (.rodata) + module_58.o (.init) + SDK_OVERLAY.MODULE_58.SINIT_START = .; + module_58.o (.ctor) + module_58.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_58.SINIT_END = .; + . = ALIGN(32); + module_58.o (.sdata) + module_58.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_58.END = .; SDK_OVERLAY.MODULE_58.SIZE = SDK_OVERLAY.MODULE_58.END - SDK_OVERLAY.MODULE_58.START; @@ -2362,18 +2373,30 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_58.BSS_START = .; - FILE_2A8800.o (.bss) + module_58.o (.bss) + module_58.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_58.BSS_END = .; SDK_OVERLAY.MODULE_58.BSS_SIZE = SDK_OVERLAY.MODULE_58.BSS_END - SDK_OVERLAY.MODULE_58.BSS_START; } >> MODULE_58 - .MODULE_59: { + .MODULE_59 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY_MODULE_59_ID = 59; SDK_OVERLAY.MODULE_59.ID = 59; SDK_OVERLAY.MODULE_59.START = .; - FILE_2A9E00.o (.text) /* 0x2A5E00 */ + module_59.o (.text) + module_59.o (.rodata) + module_59.o (.init) + SDK_OVERLAY.MODULE_59.SINIT_START = .; + module_59.o (.ctor) + module_59.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_59.SINIT_END = .; + . = ALIGN(32); + module_59.o (.sdata) + module_59.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_59.END = .; SDK_OVERLAY.MODULE_59.SIZE = SDK_OVERLAY.MODULE_59.END - SDK_OVERLAY.MODULE_59.START; @@ -2383,18 +2406,30 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_59.BSS_START = .; - FILE_2A9E00.o (.bss) + module_59.o (.bss) + module_59.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_59.BSS_END = .; SDK_OVERLAY.MODULE_59.BSS_SIZE = SDK_OVERLAY.MODULE_59.BSS_END - SDK_OVERLAY.MODULE_59.BSS_START; } >> MODULE_59 - .MODULE_60: { + .MODULE_60 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY_MODULE_60_ID = 60; SDK_OVERLAY.MODULE_60.ID = 60; SDK_OVERLAY.MODULE_60.START = .; - FILE_2ACC00.o (.text) /* 0x2A8C00 */ + module_60.o (.text) + module_60.o (.rodata) + module_60.o (.init) + SDK_OVERLAY.MODULE_60.SINIT_START = .; + module_60.o (.ctor) + module_60.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_60.SINIT_END = .; + . = ALIGN(32); + module_60.o (.sdata) + module_60.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_60.END = .; SDK_OVERLAY.MODULE_60.SIZE = SDK_OVERLAY.MODULE_60.END - SDK_OVERLAY.MODULE_60.START; @@ -2404,18 +2439,30 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_60.BSS_START = .; - FILE_2ACC00.o (.bss) + module_60.o (.bss) + module_60.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_60.BSS_END = .; SDK_OVERLAY.MODULE_60.BSS_SIZE = SDK_OVERLAY.MODULE_60.BSS_END - SDK_OVERLAY.MODULE_60.BSS_START; } >> MODULE_60 - .MODULE_61: { + .MODULE_61 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY_MODULE_61_ID = 61; SDK_OVERLAY.MODULE_61.ID = 61; SDK_OVERLAY.MODULE_61.START = .; - FILE_2ADA00.o (.text) /* 0x2A9A00 */ + module_61.o (.text) + module_61.o (.rodata) + module_61.o (.init) + SDK_OVERLAY.MODULE_61.SINIT_START = .; + module_61.o (.ctor) + module_61.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_61.SINIT_END = .; + . = ALIGN(32); + module_61.o (.sdata) + module_61.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_61.END = .; SDK_OVERLAY.MODULE_61.SIZE = SDK_OVERLAY.MODULE_61.END - SDK_OVERLAY.MODULE_61.START; @@ -2425,18 +2472,30 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_61.BSS_START = .; - FILE_2ADA00.o (.bss) + module_61.o (.bss) + module_61.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_61.BSS_END = .; SDK_OVERLAY.MODULE_61.BSS_SIZE = SDK_OVERLAY.MODULE_61.BSS_END - SDK_OVERLAY.MODULE_61.BSS_START; } >> MODULE_61 - .MODULE_62: { + .MODULE_62 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY_MODULE_62_ID = 62; SDK_OVERLAY.MODULE_62.ID = 62; SDK_OVERLAY.MODULE_62.START = .; - FILE_2AEC00.o (.text) /* 0x2AAC00 */ + module_62.o (.text) + module_62.o (.rodata) + module_62.o (.init) + SDK_OVERLAY.MODULE_62.SINIT_START = .; + module_62.o (.ctor) + module_62.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_62.SINIT_END = .; + . = ALIGN(32); + module_62.o (.sdata) + module_62.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_62.END = .; SDK_OVERLAY.MODULE_62.SIZE = SDK_OVERLAY.MODULE_62.END - SDK_OVERLAY.MODULE_62.START; @@ -2446,18 +2505,30 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_62.BSS_START = .; - FILE_2AEC00.o (.bss) + module_62.o (.bss) + module_62.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_62.BSS_END = .; SDK_OVERLAY.MODULE_62.BSS_SIZE = SDK_OVERLAY.MODULE_62.BSS_END - SDK_OVERLAY.MODULE_62.BSS_START; } >> MODULE_62 - .MODULE_63: { + .MODULE_63 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY_MODULE_63_ID = 63; SDK_OVERLAY.MODULE_63.ID = 63; SDK_OVERLAY.MODULE_63.START = .; - FILE_2B2A00.o (.text) /* 0x2AEA00 */ + module_63.o (.text) + module_63.o (.rodata) + module_63.o (.init) + SDK_OVERLAY.MODULE_63.SINIT_START = .; + module_63.o (.ctor) + module_63.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_63.SINIT_END = .; + . = ALIGN(32); + module_63.o (.sdata) + module_63.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_63.END = .; SDK_OVERLAY.MODULE_63.SIZE = SDK_OVERLAY.MODULE_63.END - SDK_OVERLAY.MODULE_63.START; @@ -2467,7 +2538,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_63.BSS_START = .; - FILE_2B2A00.o (.bss) + module_63.o (.bss) + module_63.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_63.BSS_END = .; SDK_OVERLAY.MODULE_63.BSS_SIZE = SDK_OVERLAY.MODULE_63.BSS_END - SDK_OVERLAY.MODULE_63.BSS_START; @@ -3603,12 +3675,60 @@ SECTIONS { WRITEW 57; WRITEW 0; - OVERLAY_TABLE(MODULE_58, 58) - OVERLAY_TABLE(MODULE_59, 59) - OVERLAY_TABLE(MODULE_60, 60) - OVERLAY_TABLE(MODULE_61, 61) - OVERLAY_TABLE(MODULE_62, 62) - OVERLAY_TABLE(MODULE_63, 63) + WRITEW 58; + WRITEW ADDR(.MODULE_58); + WRITEW SDK_OVERLAY.MODULE_58.SIZE; + WRITEW SDK_OVERLAY.MODULE_58.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_58.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_58.SINIT_END; + WRITEW 58; + WRITEW 0; + + WRITEW 59; + WRITEW ADDR(.MODULE_59); + WRITEW SDK_OVERLAY.MODULE_59.SIZE; + WRITEW SDK_OVERLAY.MODULE_59.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_59.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_59.SINIT_END; + WRITEW 59; + WRITEW 0; + + WRITEW 60; + WRITEW ADDR(.MODULE_60); + WRITEW SDK_OVERLAY.MODULE_60.SIZE; + WRITEW SDK_OVERLAY.MODULE_60.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_60.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_60.SINIT_END; + WRITEW 60; + WRITEW 0; + + WRITEW 61; + WRITEW ADDR(.MODULE_61); + WRITEW SDK_OVERLAY.MODULE_61.SIZE; + WRITEW SDK_OVERLAY.MODULE_61.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_61.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_61.SINIT_END; + WRITEW 61; + WRITEW 0; + + WRITEW 62; + WRITEW ADDR(.MODULE_62); + WRITEW SDK_OVERLAY.MODULE_62.SIZE; + WRITEW SDK_OVERLAY.MODULE_62.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_62.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_62.SINIT_END; + WRITEW 62; + WRITEW 0; + + WRITEW 63; + WRITEW ADDR(.MODULE_63); + WRITEW SDK_OVERLAY.MODULE_63.SIZE; + WRITEW SDK_OVERLAY.MODULE_63.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_63.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_63.SINIT_END; + WRITEW 63; + WRITEW 0; + OVERLAY_TABLE(MODULE_64, 64) OVERLAY_TABLE(MODULE_65, 65) OVERLAY_TABLE(MODULE_66, 66) diff --git a/arm9/asm/unk_02046030.s b/arm9/asm/unk_02046030.s index 4221d249..4b46da9e 100644 --- a/arm9/asm/unk_02046030.s +++ b/arm9/asm/unk_02046030.s @@ -128316,7 +128316,7 @@ FUN_02083E4C: ; 0x02083E4C add r0, r4, #0x0
mov r1, #0x3
mov r2, #0x0
- bl FUN_021D8B64
+ bl MOD53_021D8B64
ldr r1, _02083E8C ; =0x000043D0
mov r2, #0xe1
mov r0, #0x0
@@ -128381,7 +128381,7 @@ _02083ED0: ldr r1, [r4, r1]
cmp r1, r0
bne _02083EFE
- bl FUN_021D917C
+ bl MOD53_021D917C
mov r1, #0xc6
lsl r1, r1, #0x2
ldr r1, [r4, r1]
@@ -128437,7 +128437,7 @@ _02083F3C: add r0, r4, #0x0
mov r1, #0x9
add r2, r6, #0x0
- bl FUN_021D8B64
+ bl MOD53_021D8B64
add sp, #0x4
pop {r3-r6, pc}
_02083F5A:
@@ -128447,14 +128447,14 @@ _02083F5A: ldrb r2, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x8
- bl FUN_021D8B64
+ bl MOD53_021D8B64
add sp, #0x4
pop {r3-r6, pc}
_02083F6E:
ldrb r2, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x15
- bl FUN_021D8B64
+ bl MOD53_021D8B64
_02083F78:
add sp, #0x4
pop {r3-r6, pc}
@@ -128474,7 +128474,7 @@ FUN_02083F88: ; 0x02083F88 add r4, r3, #0x0
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_021D8B64
+ bl MOD53_021D8B64
bl FUN_02031190
cmp r0, #0x0
bne _02083FB6
@@ -128514,7 +128514,7 @@ FUN_02083FC4: ; 0x02083FC4 add r0, r4, #0x0
mov r1, #0xf
mov r2, #0x0
- bl FUN_021D8B64
+ bl MOD53_021D8B64
_02083FDA:
pop {r4, pc}
@@ -128674,12 +128674,12 @@ FUN_020840CC: ; 0x020840CC add r0, r4, #0x0
bl FUN_02084270
add r0, r4, #0x0
- bl FUN_021D844C
+ bl MOD54_021D844C
lsl r2, r5, #0x18
add r0, r4, #0x0
mov r1, #0x19
lsr r2, r2, #0x18
- bl FUN_021D88E4
+ bl MOD54_021D88E4
mov r0, #0x1
add r1, r0, #0x0
bl FUN_020334E8
@@ -128693,12 +128693,12 @@ _02084110: .word 0x00000658 thumb_func_start FUN_02084114
FUN_02084114: ; 0x02084114
add r0, r3, #0x0
- ldr r3, _02084120 ; =FUN_021D88E4
+ ldr r3, _02084120 ; =MOD54_021D88E4
mov r1, #0x2
mov r2, #0x0
bx r3
nop
-_02084120: .word FUN_021D88E4 + 1
+_02084120: .word MOD54_021D88E4
thumb_func_start FUN_02084124
FUN_02084124: ; 0x02084124
@@ -128736,7 +128736,7 @@ _0208415E: ldr r1, [r4, r1]
cmp r1, r0
bne _02084186
- bl FUN_021D8C24
+ bl MOD54_021D8C24
ldr r1, _02084208 ; =0x00004A48
ldr r1, [r4, r1]
cmp r1, r0
@@ -128792,7 +128792,7 @@ _020841C8: add r0, r4, #0x0
mov r1, #0x8
add r2, r6, #0x0
- bl FUN_021D88E4
+ bl MOD54_021D88E4
add sp, #0x4
pop {r3-r6, pc}
_020841E6:
@@ -128802,14 +128802,14 @@ _020841E6: ldrb r2, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x7
- bl FUN_021D88E4
+ bl MOD54_021D88E4
add sp, #0x4
pop {r3-r6, pc}
_020841FA:
ldrb r2, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x13
- bl FUN_021D88E4
+ bl MOD54_021D88E4
_02084204:
add sp, #0x4
pop {r3-r6, pc}
@@ -128824,7 +128824,7 @@ FUN_02084210: ; 0x02084210 add r4, r3, #0x0
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_021D89CC
+ bl MOD54_021D89CC
bl FUN_02031190
cmp r0, #0x0
bne _0208422E
@@ -128855,7 +128855,7 @@ FUN_02084238: ; 0x02084238 add r0, r4, #0x0
mov r1, #0xd
mov r2, #0x0
- bl FUN_021D88E4
+ bl MOD54_021D88E4
_0208424E:
pop {r4, pc}
diff --git a/arm9/global.inc b/arm9/global.inc index 4548a270..60facaee 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2727,7 +2727,7 @@ .extern MOD04_021D83A8
.extern MOD04_021D83C0
.extern MOD04_021D83F0
-.extern FUN_021D844C
+.extern MOD54_021D844C
.extern MOD04_021D8494
.extern MOD04_021D8558
.extern MOD04_021D8590
@@ -2744,23 +2744,23 @@ .extern MOD04_021D8818
.extern MOD05_021D8820
.extern MOD04_021D8860
-.extern FUN_021D88E4
+.extern MOD54_021D88E4
.extern MOD04_021D8910
.extern MOD04_021D8944
-.extern FUN_021D89CC
+.extern MOD54_021D89CC
.extern MOD04_021D8A54
.extern MOD04_021D8A7C
-.extern FUN_021D8B64
+.extern MOD53_021D8B64
.extern MOD04_021D8BF0
.extern MOD04_021D8C08
-.extern FUN_021D8C24
+.extern MOD54_021D8C24
.extern MOD04_021D8C58
.extern MOD04_021D8C6C
.extern MOD04_021D8CC8
.extern MOD04_021D8CF0
.extern MOD04_021D8D04
.extern MOD04_021D8F08
-.extern FUN_021D917C
+.extern MOD53_021D917C
.extern MOD05_021D959C
.extern MOD05_021D967C
.extern MOD05_021D96F4
@@ -4329,8 +4329,8 @@ .extern MOD20_022524DC
.extern MOD19_022524F4
.extern MOD19_02252504
-.extern FUN_02254A68
-.extern FUN_02254AB8
+.extern MOD51_02254A68
+.extern MOD51_02254AB8
.extern FX_Atan
.extern G3X_SetEdgeColorTable
.extern G3X_SetFogTable
@@ -5588,7 +5588,27 @@ .extern FUN_0201CD38
.extern FUN_020294A8
.extern FUN_0202EEB0
+.extern MOD08_02217E80
+.extern MOD08_02217ECC
+.extern MOD08_02217F08
+.extern MOD08_0222A02C
+.extern FUN_0200C6D8
+.extern FUN_02029CA4
+.extern FUN_02029CF4
+.extern FUN_02029CF8
+.extern FUN_02029D40
+.extern FUN_02029D84
+.extern FUN_02085D9C
+.extern FUN_02085FAC
.extern FUN_02031370
+.extern FUN_02016B44
+.extern FUN_02017BD0
+.extern FUN_0201ED5C
+.extern FUN_0201EE2C
+.extern FUN_0201EFB4
+.extern FUN_0201F05C
+.extern FUN_0200A064
+.extern FUN_0200C918
.extern FUN_02031388
.extern FUN_02052F8C
.extern FUN_02083D48
@@ -5650,6 +5670,20 @@ .extern FUN_02084098
.extern FUN_020048A0
.extern FUN_020048BC
+.extern FUN_02014630
+.extern FUN_02024EF4
+.extern FUN_02004D60
+.extern FUN_020181EC
+.extern FUN_02024FD8
+.extern FUN_02024FE0
+.extern FUN_02025010
+.extern FUN_02025018
+.extern FUN_02025034
+.extern FUN_02025048
+.extern FUN_02025050
+.extern FUN_02025064
+.extern FUN_0202506C
+.extern FUN_0202508C
.extern SDK_OVERLAY_MODULE_00_ID
.extern SDK_OVERLAY_MODULE_01_ID
.extern SDK_OVERLAY_MODULE_02_ID
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 9b34c034..cbfe382b 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -9489,7 +9489,7 @@ MOD05_021DBEA0: ; 0x021DBEA0 mov r1, #2 bl HandleLoadOverlay add r0, r4, #0 - bl FUN_02254A68 + bl MOD51_02254A68 add r4, #0x80 str r0, [r4] pop {r4, pc} @@ -9515,7 +9515,7 @@ MOD05_021DBECC: ; 0x021DBECC push {r3, lr} add r0, #0x80 ldr r0, [r0] - bl FUN_02254AB8 + bl MOD51_02254AB8 ldr r0, _021DBEE0 ; =SDK_OVERLAY_MODULE_51_ID bl UnloadOverlayByID pop {r3, pc} diff --git a/arm9/modules/57/asm/module_57.s b/arm9/modules/57/asm/module_57.s index 01b106a0..7208de4e 100644 --- a/arm9/modules/57/asm/module_57.s +++ b/arm9/modules/57/asm/module_57.s @@ -41,7 +41,7 @@ MOD57_021D74E0: ; 0x021D74E0 ldr r2, _021D76F0 ; =0x00003320 mov r1, #0 add r4, r0, #0 - blx Call_FillMemWithValue + bl Call_FillMemWithValue add r0, r5, #0 bl FUN_0200628C add r1, r4, #0 @@ -722,19 +722,19 @@ _021D7AC4: mov r1, #2 ldr r0, [r0, #0xc] lsl r1, r1, #8 - blx DC_FlushRange + bl DC_FlushRange ldr r0, [sp] mov r1, #0x20 ldr r5, [r0, #0xc] mov r2, #0x60 add r0, r5, #0 add r0, #0x20 - blx GXS_LoadBGPltt + bl GXS_LoadBGPltt mov r1, #0x1e lsl r1, r1, #4 add r0, r5, r1 mov r2, #0x20 - blx GXS_LoadBGPltt + bl GXS_LoadBGPltt add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, pc} @@ -776,17 +776,17 @@ _021D7B30: ldr r0, [sp] mov r1, #0x20 ldr r0, [r0, #0xc] - blx DC_FlushRange + bl DC_FlushRange ldr r0, [sp] mov r1, #0 ldr r0, [r0, #0xc] mov r2, #0x20 - blx GX_LoadBGPltt + bl GX_LoadBGPltt ldr r0, [sp] mov r1, #0 ldr r0, [r0, #0xc] mov r2, #0x20 - blx GXS_LoadBGPltt + bl GXS_LoadBGPltt add r0, r4, #0 bl FUN_02016A18 add sp, #4 @@ -809,11 +809,11 @@ MOD57_021D7B5C: ; 0x021D7B5C ldr r5, [r0, #0xc] mov r1, #0x20 add r0, r5, r4 - blx DC_FlushRange + bl DC_FlushRange add r0, r5, r4 mov r1, #0x80 mov r2, #0x20 - blx GXS_LoadBGPltt + bl GXS_LoadBGPltt add r0, r6, #0 bl FUN_02016A18 add sp, #4 @@ -958,13 +958,13 @@ MOD57_021D7CA4: ; 0x021D7CA4 mov r1, #2 ldr r0, [r0, #0xc] lsl r1, r1, #8 - blx DC_FlushRange + bl DC_FlushRange ldr r0, [sp, #0x14] mov r2, #2 ldr r0, [r0, #0xc] mov r1, #0 lsl r2, r2, #8 - blx GXS_LoadBGPltt + bl GXS_LoadBGPltt add r0, r5, #0 bl FUN_02016A18 add r0, r4, #0 @@ -985,13 +985,13 @@ MOD57_021D7CA4: ; 0x021D7CA4 mov r1, #2 ldr r0, [r0, #0xc] lsl r1, r1, #8 - blx DC_FlushRange + bl DC_FlushRange ldr r0, [sp, #0x10] mov r2, #2 ldr r0, [r0, #0xc] mov r1, #0 lsl r2, r2, #8 - blx GX_LoadBGPltt + bl GX_LoadBGPltt add r0, r5, #0 bl FUN_02016A18 add r0, r4, #0 @@ -1022,7 +1022,7 @@ _021D7D4C: ldr r0, [r4, r1] add r1, r1, #4 add r1, r4, r1 - blx FUN_020B0030 + bl FUN_020B0030 cmp r0, #0 bne _021D7D60 bl ErrorHandling @@ -1076,7 +1076,7 @@ _021D7DBC: ldr r0, [r4, r1] add r1, r1, #4 add r1, r4, r1 - blx FUN_020B0030 + bl FUN_020B0030 cmp r0, #0 bne _021D7DD0 bl ErrorHandling @@ -1420,17 +1420,17 @@ _021D806A: _021D8092: ldr r0, _021D80E0 ; =0x000030C8 ldr r0, [r4, r0] - blx FX_Inv + bl FX_Inv add r6, r0, #0 ldr r0, _021D80EC ; =0x000030CC ldr r0, [r4, r0] - blx FX_Inv + bl FX_Inv mov r1, #0 str r6, [sp, #0x10] str r1, [sp, #0x14] str r1, [sp, #0x18] str r0, [sp, #0x1c] - blx OS_WaitVBlankIntr + bl OS_WaitVBlankIntr mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1438,7 +1438,7 @@ _021D8092: add r1, sp, #0x10 mov r2, #0x80 mov r3, #0x60 - blx G2x_SetBGyAffine_ + bl G2x_SetBGyAffine_ mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1446,7 +1446,7 @@ _021D8092: add r1, sp, #0x10 mov r2, #0x80 mov r3, #0x60 - blx G2x_SetBGyAffine_ + bl G2x_SetBGyAffine_ add r0, r5, #0 add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} @@ -1562,24 +1562,24 @@ _021D81A8: _021D81AE: mov r0, #1 lsl r0, r0, #0xc - blx FX_Inv + bl FX_Inv add r5, r0, #0 ldr r0, _021D81E8 ; =0x000030D0 ldr r0, [r4, r0] - blx FX_Inv + bl FX_Inv mov r1, #0 str r5, [sp, #8] str r1, [sp, #0xc] str r1, [sp, #0x10] str r0, [sp, #0x14] - blx OS_WaitVBlankIntr + bl OS_WaitVBlankIntr mov r3, #0 str r3, [sp] ldr r0, _021D81F4 ; =0x04000030 add r1, sp, #8 mov r2, #0x80 str r3, [sp, #4] - blx G2x_SetBGyAffine_ + bl G2x_SetBGyAffine_ mov r0, #0 add sp, #0x18 pop {r3, r4, r5, pc} @@ -2068,17 +2068,17 @@ MOD57_021D8588: ; 0x021D8588 sub sp, #0x18 mov r0, #1 lsl r0, r0, #0xc - blx FX_Inv + bl FX_Inv add r4, r0, #0 mov r0, #1 lsl r0, r0, #0xc - blx FX_Inv + bl FX_Inv mov r1, #0 str r4, [sp, #8] str r1, [sp, #0xc] str r1, [sp, #0x10] str r0, [sp, #0x14] - blx OS_WaitVBlankIntr + bl OS_WaitVBlankIntr mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -2086,7 +2086,7 @@ MOD57_021D8588: ; 0x021D8588 add r1, sp, #8 mov r2, #0x80 mov r3, #0x60 - blx G2x_SetBGyAffine_ + bl G2x_SetBGyAffine_ mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -2094,15 +2094,15 @@ MOD57_021D8588: ; 0x021D8588 add r1, sp, #8 mov r2, #0x80 mov r3, #0x60 - blx G2x_SetBGyAffine_ - blx OS_WaitVBlankIntr + bl G2x_SetBGyAffine_ + bl OS_WaitVBlankIntr mov r3, #0 str r3, [sp] ldr r0, _021D85F0 ; =0x04000030 add r1, sp, #8 mov r2, #0x80 str r3, [sp, #4] - blx G2x_SetBGyAffine_ + bl G2x_SetBGyAffine_ add sp, #0x18 pop {r4, pc} .align 2, 0 @@ -2538,7 +2538,7 @@ _021D88F0: mov r1, #0x1e ldrb r0, [r4, r0] add r0, r0, #1 - blx _s32_div_f + bl _s32_div_f ldr r0, _021D8904 ; =0x0000331E strb r1, [r4, r0] _021D8900: @@ -3573,7 +3573,7 @@ MOD57_021D9184: ; 0x021D9184 sub sp, #0x3c add r7, r0, #0 bl MOD57_021D9578 - blx FUN_020B0FC0 + bl FUN_020B0FC0 mov r0, #0 str r0, [sp] mov r1, #0x80 @@ -3709,7 +3709,7 @@ _021D9290: beq _021D92CA ldr r1, [sp, #0x18] add r1, r1, r6 - blx FUN_020B0138 + bl FUN_020B0138 cmp r0, #0 bne _021D92CE mov r0, #0x1e @@ -4024,7 +4024,7 @@ _021D9536: ldr r0, [r1, r0] bl FUN_02020354 mov r1, #1 - blx FUN_020B19C4 + bl FUN_020B19C4 str r0, [sp] lsl r0, r4, #5 str r0, [sp, #4] @@ -4036,13 +4036,13 @@ _021D9536: ldr r4, [r0, #0xc] mov r1, #0x20 add r0, r4, r5 - blx DC_FlushRange + bl DC_FlushRange ldr r2, [sp] ldr r1, [sp, #4] add r0, r4, r5 add r1, r2, r1 mov r2, #0x20 - blx GX_LoadOBJPltt + bl GX_LoadOBJPltt add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 diff --git a/arm9/modules/58/asm/module_58.s b/arm9/modules/58/asm/module_58.s new file mode 100644 index 00000000..c7305812 --- /dev/null +++ b/arm9/modules/58/asm/module_58.s @@ -0,0 +1,2481 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD58_021D9A20 +MOD58_021D9A20: ; 0x021D9A20 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + ldr r1, [r5] + add r6, r0, #0 + cmp r1, #0 + beq _021D9A36 + cmp r1, #1 + bne _021D9A34 + b _021D9B56 +_021D9A34: + b _021D9B64 +_021D9A36: + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D9B6C ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D9B70 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #3 + mov r1, #0x27 + lsl r2, r2, #6 + bl FUN_0201681C + ldr r1, _021D9B74 ; =0x00005CB0 + add r0, r6, #0 + mov r2, #0x27 + bl FUN_02006268 + ldr r2, _021D9B74 ; =0x00005CB0 + mov r1, #0 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x27 + bl FUN_02016B94 + str r0, [r4] + mov r0, #0x27 + bl FUN_0200AA80 + str r0, [r4, #0x10] + ldr r2, _021D9B78 ; =0x00000176 + mov r0, #0 + mov r1, #0x1a + mov r3, #0x27 + bl FUN_0200A86C + str r0, [r4, #0x14] + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + bl MOD58_021D9CDC + ldr r0, [r4] + bl MOD58_021D9CFC + mov r0, #0x10 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x27 + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + add r0, r6, #0 + bl FUN_0200628C + bl FUN_02029ABC + bl FUN_02029AC8 + ldr r1, _021D9B7C ; =0x00005B98 + str r0, [r4, r1] + add r0, r6, #0 + bl FUN_0200628C + bl FUN_02029FC8 + str r0, [r4, #8] + add r0, r6, #0 + bl FUN_0200628C + bl LoadPlayerDataAddress + str r0, [r4, #0xc] + add r0, r4, #0 + bl MOD58_021D9F14 + bl FUN_0201CC08 + mov r0, #1 + bl FUN_0201CC24 + ldr r0, _021D9B80 ; =MOD58_021D9CB4 + ldr r1, [r4] + bl FUN_02015F10 + mov r0, #2 + mov r1, #0x27 + bl FUN_02002C50 + add r0, r4, #0 + bl MOD58_021D9E04 + bl MOD58_021DA014 + add r0, r4, #0 + bl MOD58_021DA044 + add r0, r4, #0 + bl MOD58_021DA1C4 + add r0, r4, #0 + add r1, r6, #0 + bl MOD58_021DA30C + mov r1, #0 + mov r0, #0x38 + add r2, r1, #0 + bl FUN_0200433C + ldr r2, _021D9B84 ; =0x04000304 + ldr r0, _021D9B88 ; =0xFFFF7FFF + ldrh r1, [r2] + and r0, r1 + strh r0, [r2] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D9B64 +_021D9B56: + bl FUN_02006278 + mov r0, #0 + str r0, [r5] + add sp, #0xc + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021D9B64: + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021D9B6C: .word 0xFFFFE0FF +_021D9B70: .word 0x04001000 +_021D9B74: .word 0x00005CB0 +_021D9B78: .word 0x00000176 +_021D9B7C: .word 0x00005B98 +_021D9B80: .word MOD58_021D9CB4 +_021D9B84: .word 0x04000304 +_021D9B88: .word 0xFFFF7FFF + thumb_func_end MOD58_021D9A20 + + thumb_func_start MOD58_021D9B8C +MOD58_021D9B8C: ; 0x021D9B8C + push {r3, r4, r5, lr} + add r5, r1, #0 + bl FUN_02006278 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #0 + beq _021D9BA6 + cmp r1, #1 + beq _021D9BB4 + cmp r1, #2 + beq _021D9BD2 + b _021D9BDE +_021D9BA6: + bl FUN_0200E308 + cmp r0, #0 + beq _021D9BDE + mov r0, #1 + str r0, [r5] + b _021D9BDE +_021D9BB4: + mov r2, #0xc3 + lsl r2, r2, #2 + ldr r2, [r4, r2] + lsl r3, r2, #2 + ldr r2, _021D9BE8 ; =0x021DAFA0 + ldr r2, [r2, r3] + cmp r2, #0 + beq _021D9BC8 + blx r2 + str r0, [r5] +_021D9BC8: + ldr r0, _021D9BEC ; =0x00004318 + add r0, r4, r0 + bl MOD58_021DAB34 + b _021D9BDE +_021D9BD2: + bl FUN_0200E308 + cmp r0, #0 + beq _021D9BDE + mov r0, #1 + pop {r3, r4, r5, pc} +_021D9BDE: + ldr r0, [r4, #0x3c] + bl FUN_0201FDEC + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D9BE8: .word 0x021DAFA0 +_021D9BEC: .word 0x00004318 + thumb_func_end MOD58_021D9B8C + + thumb_func_start MOD58_021D9BF0 +MOD58_021D9BF0: ; 0x021D9BF0 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + bl FUN_02006278 + add r6, r0, #0 + ldr r0, _021D9CAC ; =0x00005B98 + mov r1, #0x2d + lsl r1, r1, #4 + ldr r0, [r6, r0] + ldr r1, [r6, r1] + bl MOD58_021DAC18 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02009C0C + mov r0, #0x62 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02009C0C + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02009E04 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02009E04 + mov r7, #0x5a + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_021D9C40: + ldr r0, [r5, r7] + bl FUN_02008E2C + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021D9C40 + ldr r0, [r6, #0x3c] + bl FUN_0201FD58 + bl FUN_02009FA0 + bl FUN_0201D12C + bl FUN_0201E08C + add r0, r6, #0 + bl MOD58_021DA4CC + mov r0, #2 + bl FUN_02002CF8 + ldr r0, [r6] + bl MOD58_021D9ED8 + bl FUN_0201CD04 + ldr r0, [r6, #0x14] + bl FUN_0200A8B8 + ldr r0, [r6, #0x10] + bl FUN_0200AB18 + add r0, r6, #0 + bl MOD58_021D9EA0 + ldr r0, [sp] + bl FUN_0200627C + ldr r2, _021D9CB0 ; =0x04000304 + ldrh r1, [r2] + lsr r0, r2, #0xb + orr r0, r1 + strh r0, [r2] + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #0x27 + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9CAC: .word 0x00005B98 +_021D9CB0: .word 0x04000304 + thumb_func_end MOD58_021D9BF0 + + thumb_func_start MOD58_021D9CB4 +MOD58_021D9CB4: ; 0x021D9CB4 + push {r4, lr} + add r4, r0, #0 + bl FUN_0201C30C + bl FUN_02009F80 + add r0, r4, #0 + bl FUN_0201AB60 + ldr r3, _021D9CD4 ; =0x027E0000 + ldr r1, _021D9CD8 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + .align 2, 0 +_021D9CD4: .word 0x027E0000 +_021D9CD8: .word 0x00003FF8 + thumb_func_end MOD58_021D9CB4 + + thumb_func_start MOD58_021D9CDC +MOD58_021D9CDC: ; 0x021D9CDC + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D9CF8 ; =0x021DAE6C + add r3, sp, #0 + mov r2, #5 +_021D9CE6: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D9CE6 + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D9CF8: .word 0x021DAE6C + thumb_func_end MOD58_021D9CDC + + thumb_func_start MOD58_021D9CFC +MOD58_021D9CFC: ; 0x021D9CFC + push {r4, r5, lr} + sub sp, #0x9c + ldr r5, _021D9DEC ; =0x021DADC0 + add r3, sp, #0x8c + add r4, r0, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _021D9DF0 ; =0x021DAE18 + add r3, sp, #0x70 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + ldr r5, _021D9DF4 ; =0x021DAE34 + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + ldr r5, _021D9DF8 ; =0x021DAE50 + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D9DFC ; =0x021DADE0 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #4 + bl FUN_02018744 + ldr r5, _021D9E00 ; =0x021DADFC + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + add r0, r4, #0 + mov r1, #5 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x27 + bl FUN_02017F18 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x27 + bl FUN_02017F18 + add sp, #0x9c + pop {r4, r5, pc} + nop +_021D9DEC: .word 0x021DADC0 +_021D9DF0: .word 0x021DAE18 +_021D9DF4: .word 0x021DAE34 +_021D9DF8: .word 0x021DAE50 +_021D9DFC: .word 0x021DADE0 +_021D9E00: .word 0x021DADFC + thumb_func_end MOD58_021D9CFC + + thumb_func_start MOD58_021D9E04 +MOD58_021D9E04: ; 0x021D9E04 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, _021D9E90 ; =0x0000433D + mov r6, #0 + add r5, r7, r0 + mov r0, #0xf0 + add r4, r7, #0 + str r0, [sp] +_021D9E14: + mov r0, #8 + mov r1, #0x27 + bl FUN_020219F4 + str r0, [r4, #0x18] + ldrb r1, [r5] + ldr r0, [sp] + add r6, r6, #1 + bic r1, r0 + strb r1, [r5] + ldr r0, _021D9E94 ; =0x00004384 + mov r1, #0 + strh r1, [r4, r0] + add r4, r4, #4 + add r5, #0x11 + cmp r6, #5 + blt _021D9E14 + mov r0, #0x14 + mov r1, #0x27 + bl FUN_020219F4 + str r0, [r7, #0x2c] + mov r0, #0x28 + mov r1, #0x27 + bl FUN_020219F4 + str r0, [r7, #0x30] + mov r0, #0x50 + mov r1, #0x27 + bl FUN_020219F4 + str r0, [r7, #0x34] + ldr r0, _021D9E98 ; =0x0000431A + mov r1, #0 + strb r1, [r7, r0] + mov r0, #0xc3 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r7, r0] + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x2c] + mov r1, #0xc + bl FUN_0200A8E0 + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x30] + mov r1, #9 + bl FUN_0200A8E0 + mov r0, #0x27 + bl FUN_02014590 + ldr r1, _021D9E9C ; =0x00005C9C + mov r2, #5 + str r0, [r7, r1] + add r1, r1, #4 + mov r0, #0 + add r1, r7, r1 + bl MIi_CpuClearFast + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9E90: .word 0x0000433D +_021D9E94: .word 0x00004384 +_021D9E98: .word 0x0000431A +_021D9E9C: .word 0x00005C9C + thumb_func_end MOD58_021D9E04 + + thumb_func_start MOD58_021D9EA0 +MOD58_021D9EA0: ; 0x021D9EA0 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, _021D9ED4 ; =0x00005C9C + ldr r0, [r6, r0] + bl FUN_020145A8 + mov r4, #0 + add r5, r6, #0 +_021D9EB0: + ldr r0, [r5, #0x18] + bl FUN_02021A20 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _021D9EB0 + ldr r0, [r6, #0x34] + bl FUN_02021A20 + ldr r0, [r6, #0x30] + bl FUN_02021A20 + ldr r0, [r6, #0x2c] + bl FUN_02021A20 + pop {r4, r5, r6, pc} + nop +_021D9ED4: .word 0x00005C9C + thumb_func_end MOD58_021D9EA0 + + thumb_func_start MOD58_021D9ED8 +MOD58_021D9ED8: ; 0x021D9ED8 + push {r4, lr} + add r4, r0, #0 + mov r1, #5 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #4 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #3 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #0 + bl FUN_020178A0 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD58_021D9ED8 + + thumb_func_start MOD58_021D9F14 +MOD58_021D9F14: ; 0x021D9F14 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r4, [r5] + mov r0, #0x60 + mov r1, #0 + str r0, [sp] + mov r0, #0x27 + str r0, [sp, #4] + mov r0, #0x5f + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02006930 + mov r0, #0x40 + str r0, [sp] + mov r0, #0x27 + str r0, [sp, #4] + mov r0, #0x5f + mov r1, #2 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + mov r1, #0x1a + mov r0, #0 + lsl r1, r1, #4 + mov r2, #0x27 + bl FUN_02002EEC + mov r1, #0x1a + mov r0, #4 + lsl r1, r1, #4 + mov r2, #0x27 + bl FUN_02002EEC + mov r0, #1 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x27 + bl FUN_02017F18 + mov r0, #0 + str r0, [sp] + mov r0, #2 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x27 + str r0, [sp, #0xc] + mov r0, #0x5f + mov r1, #3 + add r2, r4, #0 + mov r3, #2 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x27 + str r0, [sp, #0xc] + mov r0, #0x5f + mov r1, #5 + add r2, r4, #0 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + mov r0, #2 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x27 + str r0, [sp, #0xc] + mov r0, #0x5f + mov r1, #4 + add r2, r4, #0 + mov r3, #5 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x27 + str r0, [sp, #0xc] + mov r0, #0x5f + mov r1, #6 + add r2, r4, #0 + mov r3, #5 + bl FUN_020068C8 + ldr r0, [r5, #0xc] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x27 + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200CD68 + mov r1, #0 + str r1, [sp] + mov r0, #0x27 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CB00 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD58_021D9F14 + + thumb_func_start MOD58_021DA014 +MOD58_021DA014: ; 0x021DA014 + push {r4, lr} + sub sp, #0x10 + ldr r4, _021DA040 ; =0x021DADD0 + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_0201D040 + mov r0, #0x14 + mov r1, #0x27 + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_021DA040: .word 0x021DADD0 + thumb_func_end MOD58_021DA014 + + thumb_func_start MOD58_021DA044 +MOD58_021DA044: ; 0x021DA044 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x7e + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r2, #0x27 + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + add r1, r5, #0 + mov r0, #0x32 + add r1, #0x40 + mov r2, #0x27 + bl FUN_02008C9C + str r0, [r5, #0x3c] + add r0, r5, #0 + mov r2, #1 + add r0, #0x40 + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + mov r7, #0x5a + mov r6, #0 + add r4, r5, #0 + lsl r7, r7, #2 +_021DA08A: + mov r0, #2 + add r1, r6, #0 + mov r2, #0x27 + bl FUN_02008DEC + str r0, [r4, r7] + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _021DA08A + mov r0, #0 + str r0, [sp] + mov r3, #1 + str r3, [sp, #4] + mov r0, #0x27 + str r0, [sp, #8] + mov r0, #0x5a + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x5f + mov r2, #7 + bl FUN_02008F34 + mov r1, #0x5e + lsl r1, r1, #2 + str r0, [r5, r1] + mov r3, #0 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0x27 + sub r1, #0xc + str r0, [sp, #0xc] + ldr r0, [r5, r1] + mov r1, #0x5f + bl FUN_02008FEC + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x27 + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r5, r1] + mov r1, #0x5f + mov r2, #8 + mov r3, #1 + bl FUN_020090AC + mov r1, #6 + lsl r1, r1, #6 + str r0, [r5, r1] + mov r0, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x27 + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r5, r1] + mov r1, #0x5f + mov r2, #9 + mov r3, #1 + bl FUN_020090AC + mov r1, #0x61 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r3, #1 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x27 + sub r1, #0x1c + str r0, [sp, #8] + ldr r0, [r5, r1] + mov r1, #0x5f + mov r2, #7 + bl FUN_02008F34 + mov r1, #0x62 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r2, #1 + str r2, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0x27 + sub r1, #0x1c + str r0, [sp, #0xc] + ldr r0, [r5, r1] + mov r1, #0x5f + mov r3, #0 + bl FUN_02008FEC + mov r1, #0x63 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r3, #1 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x27 + sub r1, #0x1c + str r0, [sp, #8] + ldr r0, [r5, r1] + mov r1, #0x5f + mov r2, #8 + bl FUN_020090AC + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r3, #1 + str r3, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x27 + sub r1, #0x1c + str r0, [sp, #8] + ldr r0, [r5, r1] + mov r1, #0x5f + mov r2, #9 + bl FUN_020090AC + mov r1, #0x65 + lsl r1, r1, #2 + str r0, [r5, r1] + sub r1, #0x1c + ldr r0, [r5, r1] + bl FUN_02009A50 + mov r0, #0x62 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009A50 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009CF0 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009CF0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD58_021DA044 + + thumb_func_start MOD58_021DA1C4 +MOD58_021DA1C4: ; 0x021DA1C4 + push {r3, r4, lr} + sub sp, #0x5c + mov r1, #0 + add r4, r0, #0 + str r1, [sp] + sub r0, r1, #1 + str r0, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r2, #0x5a + str r1, [sp, #0x10] + lsl r2, r2, #2 + ldr r0, [r4, r2] + add r3, r1, #0 + str r0, [sp, #0x14] + add r0, r2, #4 + ldr r0, [r4, r0] + str r0, [sp, #0x18] + add r0, r2, #0 + add r0, #8 + ldr r0, [r4, r0] + str r0, [sp, #0x1c] + add r0, r2, #0 + add r0, #0xc + ldr r0, [r4, r0] + add r2, #0x30 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + add r0, r4, r2 + add r2, r1, #0 + str r1, [sp, #0x28] + bl FUN_02008AA4 + mov r1, #1 + mov r3, #0x5a + str r1, [sp] + sub r0, r1, #2 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + lsl r3, r3, #2 + ldr r2, [r4, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r4, r2] + str r2, [sp, #0x1c] + add r2, r3, #0 + add r2, #0xc + ldr r2, [r4, r2] + add r3, #0x54 + str r2, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, r4, r3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02008AA4 + ldr r0, [r4, #0x3c] + mov r2, #0 + str r0, [sp, #0x2c] + mov r0, #0x66 + lsl r0, r0, #2 + add r1, r4, r0 + str r1, [sp, #0x30] + mov r1, #1 + lsl r1, r1, #0xc + add r0, #0x24 + str r2, [sp, #0x3c] + str r1, [sp, #0x40] + str r1, [sp, #0x44] + str r1, [sp, #0x48] + add r1, sp, #0x2c + strh r2, [r1, #0x20] + mov r1, #1 + add r0, r4, r0 + str r0, [sp, #0x30] + mov r0, #0xe + lsl r0, r0, #0x10 + str r0, [sp, #0x34] + mov r0, #0xaf + lsl r0, r0, #0xc + str r0, [sp, #0x38] + str r1, [sp, #0x50] + str r1, [sp, #0x54] + mov r1, #0x27 + add r0, sp, #0x2c + str r1, [sp, #0x58] + bl FUN_0201FE94 + mov r1, #0x25 + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x25 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02020130 + mov r0, #0x25 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02020248 + mov r0, #0x25 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_02020238 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x5c + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD58_021DA1C4 + + thumb_func_start MOD58_021DA2CC +MOD58_021DA2CC: ; 0x021DA2CC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r4, r2, #0 + mov r0, #2 + mov r2, #0 + add r6, r1, #0 + add r7, r3, #0 + bl FUN_02002E14 + add r3, r0, #0 + str r4, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x28] + add r1, r7, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrb r4, [r5, #7] + add r0, r5, #0 + add r2, r6, #0 + lsl r4, r4, #3 + sub r4, r4, r3 + lsr r3, r4, #0x1f + add r3, r4, r3 + asr r3, r3, #1 + bl FUN_0201BDE0 + ldr r0, [r5, #0xc] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD58_021DA2CC + + thumb_func_start MOD58_021DA30C +MOD58_021DA30C: ; 0x021DA30C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + mov r0, #1 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x28 + mov r1, #0xb5 + str r0, [sp, #0x10] + lsl r1, r1, #2 + ldr r0, [r5] + add r1, r5, r1 + mov r2, #0 + mov r3, #2 + bl FUN_02019064 + mov r0, #0xb5 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0xf + bl FUN_02019620 + mov r0, #9 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #8 + mov r1, #0xb1 + lsl r1, r1, #2 + str r0, [sp, #8] + mov r2, #1 + str r2, [sp, #0xc] + str r2, [sp, #0x10] + ldr r0, [r5] + add r1, r5, r1 + mov r3, #4 + bl FUN_02019064 + mov r0, #0xb1 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #2 + bl FUN_02019620 + mov r0, #0x15 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + str r0, [sp, #0xc] + mov r0, #0xc1 + mov r1, #0xb9 + str r0, [sp, #0x10] + lsl r1, r1, #2 + ldr r0, [r5] + add r1, r5, r1 + mov r2, #1 + mov r3, #0x1a + bl FUN_02019064 + mov r0, #0xb9 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_02019620 + ldr r0, _021DA4BC ; =0x000E0702 + mov r2, #1 + str r0, [sp] + mov r0, #0xb9 + lsl r0, r0, #2 + ldr r1, [r5, #0x2c] + add r0, r5, r0 + mov r3, #2 + bl MOD58_021DA2CC + mov r1, #2 + lsl r1, r1, #8 + bl DC_FlushRange + mov r4, #0 + ldr r0, _021DA4C0 ; =0x00005B9C + str r4, [sp, #0x18] + add r7, r4, #0 + add r6, r5, r0 +_021DA3C2: + mov r0, #0 + str r0, [sp] + mov r0, #0xb9 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #4 + mov r2, #2 + add r3, r4, #0 + str r6, [sp, #4] + bl FUN_02011B20 + mov r1, #1 + add r0, r6, #0 + lsl r1, r1, #8 + bl DC_FlushRange + mov r2, #1 + add r0, r6, #0 + add r1, r7, #0 + lsl r2, r2, #8 + bl GX_LoadOBJ + mov r0, #1 + lsl r0, r0, #8 + add r7, r7, r0 + ldr r0, [sp, #0x18] + add r4, r4, #4 + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, #2 + blt _021DA3C2 + mov r3, #2 + str r3, [sp] + mov r0, #0x1c + str r0, [sp, #4] + mov r1, #0xbd + lsl r1, r1, #2 + str r3, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xd1 + str r0, [sp, #0x10] + ldr r0, [r5] + add r1, r5, r1 + mov r2, #1 + bl FUN_02019064 + ldr r1, [r5, #0x30] + mov r0, #1 + mov r2, #0 + bl FUN_02002E14 + add r4, r0, #0 + mov r0, #0xbd + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + mov r3, #0xe0 + sub r4, r3, r4 + lsr r3, r4, #0x1f + add r3, r4, r3 + ldr r0, _021DA4C4 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r0, #0xbd + lsl r0, r0, #2 + ldr r2, [r5, #0x30] + add r0, r5, r0 + mov r1, #1 + asr r3, r3, #1 + bl FUN_0201BDE0 + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x9d + lsl r0, r0, #2 + mov r7, #1 + mov r6, #3 + add r4, r5, r0 +_021DA46A: + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5] + add r1, r4, #0 + mov r2, #4 + mov r3, #5 + bl FUN_02019064 + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + ldr r0, [sp, #0x14] + add r7, #0x14 + add r0, r0, #1 + add r6, r6, #4 + add r4, #0x10 + str r0, [sp, #0x14] + cmp r0, #5 + blt _021DA46A + mov r0, #0x9d + lsl r0, r0, #2 + ldr r2, _021DA4C8 ; =0x000E0D0F + add r0, r5, r0 + mov r1, #0 + add r3, r5, #0 + bl MOD58_021DAB74 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021DA4BC: .word 0x000E0702 +_021DA4C0: .word 0x00005B9C +_021DA4C4: .word 0x00010200 +_021DA4C8: .word 0x000E0D0F + thumb_func_end MOD58_021DA30C + + thumb_func_start MOD58_021DA4CC +MOD58_021DA4CC: ; 0x021DA4CC + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r0, #0x9d + lsl r0, r0, #2 + mov r4, #0 + add r5, r6, r0 +_021DA4D8: + add r0, r5, #0 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #5 + blt _021DA4D8 + mov r0, #0xbd + lsl r0, r0, #2 + add r0, r6, r0 + bl FUN_02019178 + mov r0, #0xb9 + lsl r0, r0, #2 + add r0, r6, r0 + bl FUN_02019178 + mov r0, #0xb1 + lsl r0, r0, #2 + add r0, r6, r0 + bl FUN_02019178 + mov r0, #0xb5 + lsl r0, r0, #2 + add r0, r6, r0 + bl FUN_02019178 + pop {r4, r5, r6, pc} + thumb_func_end MOD58_021DA4CC + + thumb_func_start MOD58_021DA510 +MOD58_021DA510: ; 0x021DA510 + bx lr + .align 2, 0 + thumb_func_end MOD58_021DA510 + + thumb_func_start MOD58_021DA514 +MOD58_021DA514: ; 0x021DA514 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r4, r0, #0 + ldr r0, _021DA5DC ; =0x021DADAE + bl FUN_02020988 + add r1, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + beq _021DA568 + cmp r1, #0 + bne _021DA55A + mov r0, #0xc3 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #1 + bne _021DA568 + add r0, r4, #0 + mov r1, #0xa + bl MOD58_021DAB94 + mov r0, #0xc3 + mov r1, #2 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r0, #0xbc + add r0, r4, r0 + mov r1, #1 + bl MOD58_021DA614 + ldr r0, _021DA5E0 ; =0x000005DD + bl FUN_020054C8 + b _021DA568 +_021DA55A: + ldr r0, _021DA5E4 ; =0x0000431A + strb r1, [r4, r0] + mov r0, #0x25 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD58_021DA5F4 +_021DA568: + ldr r0, _021DA5E8 ; =0x021DADA6 + bl FUN_02020968 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _021DA57C + add r0, r4, #0 + bl MOD58_021DAC7C +_021DA57C: + add r0, sp, #0 + mov r1, #4 + mov r2, #1 + bl FUN_0201CD38 + cmp r0, #1 + bne _021DA5D8 + add r7, sp, #0 + ldrh r3, [r7] + mov r1, #0 + cmp r3, #0 + ble _021DA5B0 + ldr r5, _021DA5EC ; =0x0000431C + add r2, sp, #0 + add r6, r5, #0 + add r6, #8 +_021DA59C: + ldrh r3, [r2, #2] + add r0, r4, r1 + add r1, r1, #1 + strb r3, [r0, r5] + ldrh r3, [r2, #4] + add r2, #8 + strb r3, [r0, r6] + ldrh r3, [r7] + cmp r1, r3 + blt _021DA59C +_021DA5B0: + ldr r0, _021DA5F0 ; =0x0000432C + mov r2, #0xf0 + ldrb r1, [r4, r0] + bic r1, r2 + lsl r2, r3, #0x18 + lsr r2, r2, #0x18 + lsl r2, r2, #0x1c + lsr r2, r2, #0x18 + orr r1, r2 + strb r1, [r4, r0] + ldrb r3, [r4, r0] + mov r1, #0xf + bic r3, r1 + add r1, r0, #0 + sub r1, #0x12 + ldrb r2, [r4, r1] + mov r1, #0xf + and r1, r2 + orr r1, r3 + strb r1, [r4, r0] +_021DA5D8: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DA5DC: .word 0x021DADAE +_021DA5E0: .word 0x000005DD +_021DA5E4: .word 0x0000431A +_021DA5E8: .word 0x021DADA6 +_021DA5EC: .word 0x0000431C +_021DA5F0: .word 0x0000432C + thumb_func_end MOD58_021DA514 + + thumb_func_start MOD58_021DA5F4 +MOD58_021DA5F4: ; 0x021DA5F4 + push {r3, lr} + ldr r2, _021DA610 ; =0x021DADA0 + cmp r1, #0 + ldr r0, [r0] + bne _021DA608 + ldrh r1, [r2, #4] + add r1, r1, #1 + bl FUN_02020130 + pop {r3, pc} +_021DA608: + ldrh r1, [r2, #4] + bl FUN_02020130 + pop {r3, pc} + .align 2, 0 +_021DA610: .word 0x021DADA0 + thumb_func_end MOD58_021DA5F4 + + thumb_func_start MOD58_021DA614 +MOD58_021DA614: ; 0x021DA614 + push {r3, lr} + cmp r1, #1 + ldr r0, [r0] + bne _021DA624 + mov r1, #1 + bl FUN_02020130 + pop {r3, pc} +_021DA624: + mov r1, #0 + bl FUN_02020130 + pop {r3, pc} + thumb_func_end MOD58_021DA614 + + thumb_func_start MOD58_021DA62C +MOD58_021DA62C: ; 0x021DA62C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD58_021DA514 + mov r0, #0x9d + lsl r0, r0, #2 + ldr r2, _021DA66C ; =0x000E0C0F + add r0, r5, r0 + mov r1, #0 + add r3, r5, #0 + bl MOD58_021DAB74 + add r0, r5, #0 + bl MOD58_021DAB78 + add r0, r5, #0 + bl MOD58_021DAB30 + ldr r2, _021DA670 ; =0x0000432D + mov r0, #0xb1 + lsl r0, r0, #2 + add r1, r5, r2 + add r2, #0x55 + add r0, r5, r0 + add r2, r5, r2 + mov r3, #1 + bl MOD58_021DAA70 + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_021DA66C: .word 0x000E0C0F +_021DA670: .word 0x0000432D + thumb_func_end MOD58_021DA62C + + thumb_func_start MOD58_021DA674 +MOD58_021DA674: ; 0x021DA674 + push {r4, lr} + add r4, r0, #0 + bl MOD58_021DA510 + add r0, r4, #0 + bl MOD58_021DAB30 + ldr r2, _021DA698 ; =0x0000432D + mov r0, #0xb1 + lsl r0, r0, #2 + add r1, r4, r2 + add r2, #0x55 + add r0, r4, r0 + add r2, r4, r2 + mov r3, #0 + bl MOD58_021DAA70 + pop {r4, pc} + .align 2, 0 +_021DA698: .word 0x0000432D + thumb_func_end MOD58_021DA674 + + thumb_func_start MOD58_021DA69C +MOD58_021DA69C: ; 0x021DA69C + push {lr} + sub sp, #0x14 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #0xb4 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + mov r2, #0x19 + add r0, sp, #0 + strb r2, [r0, #0x10] + mov r2, #6 + strb r2, [r0, #0x11] + add r0, r1, #0 + add r1, sp, #0 + bl FUN_020145C8 + add sp, #0x14 + pop {pc} + thumb_func_end MOD58_021DA69C + + thumb_func_start MOD58_021DA6C4 +MOD58_021DA6C4: ; 0x021DA6C4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x38] + add r4, r1, #0 + bl MOD58_021DAC00 + cmp r0, #0 + beq _021DA6E6 + ldr r1, _021DA6F0 ; =0x00005C9C + ldr r0, [r5] + ldr r1, [r5, r1] + bl MOD58_021DA69C + mov r0, #0xc3 + mov r1, #3 + lsl r0, r0, #2 + str r1, [r5, r0] +_021DA6E6: + add r0, r5, #0 + bl MOD58_021DA674 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DA6F0: .word 0x00005C9C + thumb_func_end MOD58_021DA6C4 + + thumb_func_start MOD58_021DA6F4 +MOD58_021DA6F4: ; 0x021DA6F4 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _021DA784 ; =0x00005C9C + add r4, r1, #0 + ldr r0, [r5, r0] + bl FUN_0201466C + cmp r0, #1 + beq _021DA70E + cmp r0, #2 + beq _021DA748 + b _021DA76E +_021DA70E: + ldr r0, [r5, #8] + mov r1, #4 + bl FUN_0202A170 + mov r0, #0xb5 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #1 + bl FUN_0200D0E0 + ldr r0, _021DA784 ; =0x00005C9C + ldr r0, [r5, r0] + bl FUN_020146C4 + mov r0, #0x10 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x27 + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + add sp, #0xc + mov r0, #2 + pop {r4, r5, pc} +_021DA748: + mov r0, #0xc3 + mov r1, #4 + lsl r0, r0, #2 + str r1, [r5, r0] + sub r0, #0xbc + add r0, r5, r0 + mov r1, #0 + bl MOD58_021DA614 + mov r0, #0xb5 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #1 + bl FUN_0200D0E0 + ldr r0, _021DA784 ; =0x00005C9C + ldr r0, [r5, r0] + bl FUN_020146C4 +_021DA76E: + ldr r1, _021DA788 ; =0x0000432C + mov r0, #0xf0 + ldrb r2, [r5, r1] + bic r2, r0 + add r0, r5, #0 + strb r2, [r5, r1] + bl MOD58_021DA674 + add r0, r4, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_021DA784: .word 0x00005C9C +_021DA788: .word 0x0000432C + thumb_func_end MOD58_021DA6F4 + + thumb_func_start MOD58_021DA78C +MOD58_021DA78C: ; 0x021DA78C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021DA7F0 ; =0x00005C9C + add r4, r1, #0 + ldr r0, [r5, r0] + bl FUN_0201466C + cmp r0, #1 + beq _021DA7A4 + cmp r0, #2 + beq _021DA7D4 + b _021DA7EC +_021DA7A4: + mov r0, #0xc3 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r5, r0] + sub r0, #0x38 + add r0, r5, r0 + bl FUN_0200D0E0 + ldr r0, _021DA7F0 ; =0x00005C9C + ldr r0, [r5, r0] + bl FUN_020146C4 + mov r0, #0xb1 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #2 + bl FUN_02019620 + mov r0, #0xb1 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_020191D0 + b _021DA7EC +_021DA7D4: + mov r0, #0xc3 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r5, r0] + sub r0, #0x38 + add r0, r5, r0 + bl FUN_0200D0E0 + ldr r0, _021DA7F0 ; =0x00005C9C + ldr r0, [r5, r0] + bl FUN_020146C4 +_021DA7EC: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DA7F0: .word 0x00005C9C + thumb_func_end MOD58_021DA78C + + thumb_func_start MOD58_021DA7F4 +MOD58_021DA7F4: ; 0x021DA7F4 + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0xb + add r5, r0, #0 + bl MOD58_021DAB94 + mov r0, #0xc3 + mov r1, #5 + lsl r0, r0, #2 + str r1, [r5, r0] + add r0, r5, #0 + bl MOD58_021DA674 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD58_021DA7F4 + + thumb_func_start MOD58_021DA814 +MOD58_021DA814: ; 0x021DA814 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x38] + add r4, r1, #0 + bl MOD58_021DAC00 + cmp r0, #0 + beq _021DA836 + mov r0, #0xc3 + mov r1, #6 + lsl r0, r0, #2 + str r1, [r5, r0] + ldr r1, _021DA840 ; =0x00005C9C + ldr r0, [r5] + ldr r1, [r5, r1] + bl MOD58_021DA69C +_021DA836: + add r0, r5, #0 + bl MOD58_021DA674 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DA840: .word 0x00005C9C + thumb_func_end MOD58_021DA814 + + thumb_func_start MOD58_021DA844 +MOD58_021DA844: ; 0x021DA844 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + ldr r4, [sp, #0x38] + mov ip, r1 + add r6, r2, #0 + add r7, r3, #0 + str r0, [sp, #0x18] + ldr r3, [sp, #0x3c] + ldr r2, [sp, #0x40] + ldr r1, [sp, #0x44] + cmp r4, #0 + bge _021DA870 + neg r0, r4 + cmp r0, r2 + ble _021DA864 + add r0, r2, #0 +_021DA864: + ldr r5, [sp, #0x30] + mov r4, #0 + sub r5, r5, r0 + add r6, r6, r0 + str r5, [sp, #0x30] + sub r2, r2, r0 +_021DA870: + cmp r3, #0 + bge _021DA888 + neg r0, r3 + cmp r0, r1 + ble _021DA87C + add r0, r1, #0 +_021DA87C: + ldr r5, [sp, #0x34] + mov r3, #0 + sub r5, r5, r0 + add r7, r7, r0 + str r5, [sp, #0x34] + sub r1, r1, r0 +_021DA888: + ldr r0, [sp, #0x30] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + ldr r0, [sp, #0x34] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + lsl r0, r3, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0xc] + lsl r0, r2, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x14] + lsl r2, r6, #0x10 + lsl r3, r7, #0x10 + ldr r0, [sp, #0x18] + mov r1, ip + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl FUN_02019658 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD58_021DA844 + + thumb_func_start MOD58_021DA8C4 +MOD58_021DA8C4: ; 0x021DA8C4 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + str r0, [sp, #0x18] + ldr r0, [sp, #0x50] + str r1, [sp, #0x1c] + str r0, [sp, #0x50] + ldr r0, [sp, #0x54] + str r2, [sp, #0x20] + str r0, [sp, #0x54] + ldr r0, [sp, #0x50] + str r3, [sp, #0x24] + ldr r4, [r0] + ldr r0, [sp, #0x54] + ldr r5, [r0] + add r0, r2, #0 + str r0, [sp, #0x38] + add r0, r3, #0 + str r0, [sp, #0x30] + ldr r0, [sp, #0x58] + cmp r0, #0 + bne _021DA904 + ldr r0, [sp, #0x5c] + cmp r0, #0 + bne _021DA904 + ldr r0, [sp, #0x50] + add r1, r2, #0 + str r1, [r0] + ldr r0, [sp, #0x54] + add r1, r3, #0 + str r1, [r0] + add sp, #0x3c + pop {r4, r5, r6, r7, pc} +_021DA904: + ldr r0, [sp, #0x20] + sub r0, r0, r4 + str r0, [sp, #0x34] + bpl _021DA910 + neg r0, r0 + str r0, [sp, #0x34] +_021DA910: + ldr r0, [sp, #0x24] + sub r7, r0, r5 + bpl _021DA918 + neg r7, r7 +_021DA918: + ldr r0, [sp, #0x34] + cmp r0, r7 + ble _021DA9A6 + ldr r0, [sp, #0x20] + cmp r4, r0 + ble _021DA93E + ldr r0, [sp, #0x24] + cmp r5, r0 + ble _021DA930 + mov r0, #1 + str r0, [sp, #0x2c] + b _021DA936 +_021DA930: + mov r0, #0 + mvn r0, r0 + str r0, [sp, #0x2c] +_021DA936: + str r4, [sp, #0x38] + ldr r4, [sp, #0x20] + ldr r5, [sp, #0x24] + b _021DA950 +_021DA93E: + ldr r0, [sp, #0x24] + cmp r5, r0 + bge _021DA94A + mov r0, #1 + str r0, [sp, #0x2c] + b _021DA950 +_021DA94A: + mov r0, #0 + mvn r0, r0 + str r0, [sp, #0x2c] +_021DA950: + mov r0, #4 + str r0, [sp] + str r0, [sp, #4] + str r4, [sp, #8] + str r5, [sp, #0xc] + str r0, [sp, #0x10] + str r0, [sp, #0x14] + mov r2, #0 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + add r3, r2, #0 + bl MOD58_021DA844 + ldr r0, [sp, #0x34] + add r4, r4, #1 + asr r6, r0, #1 + ldr r0, [sp, #0x38] + cmp r4, r0 + bgt _021DAA2A +_021DA976: + sub r6, r6, r7 + bpl _021DA982 + ldr r0, [sp, #0x34] + add r6, r6, r0 + ldr r0, [sp, #0x2c] + add r5, r5, r0 +_021DA982: + mov r0, #4 + str r0, [sp] + str r0, [sp, #4] + str r4, [sp, #8] + str r5, [sp, #0xc] + str r0, [sp, #0x10] + str r0, [sp, #0x14] + mov r2, #0 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + add r3, r2, #0 + bl MOD58_021DA844 + ldr r0, [sp, #0x38] + add r4, r4, #1 + cmp r4, r0 + ble _021DA976 + b _021DAA2A +_021DA9A6: + ldr r0, [sp, #0x24] + cmp r5, r0 + ble _021DA9C6 + ldr r0, [sp, #0x20] + cmp r4, r0 + ble _021DA9B8 + mov r0, #1 + str r0, [sp, #0x28] + b _021DA9BE +_021DA9B8: + mov r0, #0 + mvn r0, r0 + str r0, [sp, #0x28] +_021DA9BE: + str r5, [sp, #0x30] + ldr r5, [sp, #0x24] + ldr r4, [sp, #0x20] + b _021DA9D8 +_021DA9C6: + ldr r0, [sp, #0x20] + cmp r4, r0 + bge _021DA9D2 + mov r0, #1 + str r0, [sp, #0x28] + b _021DA9D8 +_021DA9D2: + mov r0, #0 + mvn r0, r0 + str r0, [sp, #0x28] +_021DA9D8: + mov r0, #4 + str r0, [sp] + str r0, [sp, #4] + str r4, [sp, #8] + str r5, [sp, #0xc] + str r0, [sp, #0x10] + str r0, [sp, #0x14] + mov r2, #0 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + add r3, r2, #0 + bl MOD58_021DA844 + ldr r0, [sp, #0x30] + add r5, r5, #1 + asr r6, r7, #1 + cmp r5, r0 + bgt _021DAA2A +_021DA9FC: + ldr r0, [sp, #0x34] + sub r6, r6, r0 + bpl _021DAA08 + ldr r0, [sp, #0x28] + add r6, r6, r7 + add r4, r4, r0 +_021DAA08: + mov r0, #4 + str r0, [sp] + str r0, [sp, #4] + str r4, [sp, #8] + str r5, [sp, #0xc] + str r0, [sp, #0x10] + str r0, [sp, #0x14] + mov r2, #0 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + add r3, r2, #0 + bl MOD58_021DA844 + ldr r0, [sp, #0x30] + add r5, r5, #1 + cmp r5, r0 + ble _021DA9FC +_021DAA2A: + ldr r1, [sp, #0x20] + ldr r0, [sp, #0x50] + str r1, [r0] + ldr r1, [sp, #0x24] + ldr r0, [sp, #0x54] + str r1, [r0] + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD58_021DA8C4 + + thumb_func_start MOD58_021DAA3C +MOD58_021DAA3C: ; 0x021DAA3C + mov r2, #0 +_021DAA3E: + ldrb r3, [r0, #0x10] + lsl r3, r3, #0x18 + lsr r3, r3, #0x1c + strh r3, [r1, #2] + ldrb r3, [r0, #0x10] + lsl r3, r3, #0x18 + lsr r3, r3, #0x1c + beq _021DAA62 + add r3, r0, r3 + sub r3, r3, #1 + ldrb r3, [r3] + strb r3, [r1] + ldrb r3, [r0, #0x10] + lsl r3, r3, #0x18 + lsr r3, r3, #0x1c + add r3, r0, r3 + ldrb r3, [r3, #7] + strb r3, [r1, #1] +_021DAA62: + add r2, r2, #1 + add r0, #0x11 + add r1, r1, #4 + cmp r2, #5 + blt _021DAA3E + bx lr + .align 2, 0 + thumb_func_end MOD58_021DAA3C + + thumb_func_start MOD58_021DAA70 +MOD58_021DAA70: ; 0x021DAA70 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r7, r0, #0 + mov r0, #0 + str r1, [sp, #0x10] + str r2, [sp, #0x14] + str r3, [sp, #0x18] + str r0, [sp, #0x1c] + str r0, [sp, #0x20] + add r5, r1, #0 + add r6, r2, #0 +_021DAA86: + ldrb r0, [r5, #0x10] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + beq _021DAAEA + ldrh r0, [r6, #2] + cmp r0, #0 + beq _021DAAA0 + ldrb r0, [r6] + sub r0, #0x20 + str r0, [sp, #0x28] + ldrb r0, [r6, #1] + sub r0, #0x48 + str r0, [sp, #0x24] +_021DAAA0: + ldrb r0, [r5, #0x10] + mov r4, #0 + lsl r0, r0, #0x18 + lsr r1, r0, #0x1c + cmp r1, #0 + ble _021DAAEA + mov r0, #1 + str r0, [sp, #0x1c] + cmp r1, #0 + ble _021DAAEA +_021DAAB4: + add r0, sp, #0x28 + str r0, [sp] + add r0, sp, #0x24 + str r0, [sp, #4] + str r4, [sp, #8] + ldrh r0, [r6, #2] + add r3, r5, r4 + str r0, [sp, #0xc] + ldrb r1, [r5, #0x10] + ldrb r3, [r3, #8] + add r0, r7, #0 + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + lsl r2, r1, #4 + ldr r1, _021DAB2C ; =0x021DAE94 + sub r3, #0x48 + add r1, r1, r2 + ldrb r2, [r5, r4] + sub r2, #0x20 + bl MOD58_021DA8C4 + ldrb r0, [r5, #0x10] + add r4, r4, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + cmp r4, r0 + blt _021DAAB4 +_021DAAEA: + ldr r0, [sp, #0x20] + add r5, #0x11 + add r0, r0, #1 + add r6, r6, #4 + str r0, [sp, #0x20] + cmp r0, #5 + blt _021DAA86 + ldr r0, [sp, #0x1c] + cmp r0, #0 + beq _021DAB0A + ldr r0, [sp, #0x18] + cmp r0, #0 + beq _021DAB0A + add r0, r7, #0 + bl FUN_020191D0 +_021DAB0A: + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + bl MOD58_021DAA3C + mov r3, #0 + mov r1, #0xf0 +_021DAB16: + ldr r0, [sp, #0x10] + add r3, r3, #1 + ldrb r2, [r0, #0x10] + bic r2, r1 + strb r2, [r0, #0x10] + add r0, #0x11 + str r0, [sp, #0x10] + cmp r3, #5 + blt _021DAB16 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DAB2C: .word 0x021DAE94 + thumb_func_end MOD58_021DAA70 + + thumb_func_start MOD58_021DAB30 +MOD58_021DAB30: ; 0x021DAB30 + bx lr + .align 2, 0 + thumb_func_end MOD58_021DAB30 + + thumb_func_start MOD58_021DAB34 +MOD58_021DAB34: ; 0x021DAB34 + push {r3, lr} + ldrh r1, [r0] + add r1, #0x14 + strh r1, [r0] + ldrh r2, [r0] + mov r1, #0x5a + lsl r1, r1, #2 + cmp r2, r1 + bls _021DAB4A + mov r1, #0 + strh r1, [r0] +_021DAB4A: + ldrh r0, [r0] + bl FUN_0201B970 + mov r1, #0xa + mul r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + add r0, #0xf + lsl r1, r0, #5 + mov r0, #0x1d + orr r1, r0 + add r0, sp, #0 + strh r1, [r0] + add r0, sp, #0 + mov r1, #0x18 + mov r2, #2 + bl GX_LoadOBJPltt + pop {r3, pc} + thumb_func_end MOD58_021DAB34 + + thumb_func_start MOD58_021DAB74 +MOD58_021DAB74: ; 0x021DAB74 + bx lr + .align 2, 0 + thumb_func_end MOD58_021DAB74 + + thumb_func_start MOD58_021DAB78 +MOD58_021DAB78: ; 0x021DAB78 + ldr r1, _021DAB90 ; =0x0000431C + add r3, r0, r1 + add r1, #0x11 + add r2, r0, r1 + mov r1, #0x11 +_021DAB82: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DAB82 + bx lr + .align 2, 0 +_021DAB90: .word 0x0000431C + thumb_func_end MOD58_021DAB78 + + thumb_func_start MOD58_021DAB94 +MOD58_021DAB94: ; 0x021DAB94 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x50 + mov r1, #0x27 + bl FUN_020219F4 + add r4, r0, #0 + ldr r0, [r5, #0x14] + add r1, r6, #0 + add r2, r4, #0 + bl FUN_0200A8E0 + ldr r0, [r5, #0x10] + ldr r1, [r5, #0x34] + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + mov r0, #0xb5 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0xf + bl FUN_02019620 + mov r0, #0xb5 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + ldr r0, [r5, #0xc] + bl FUN_02024FF4 + mov r3, #0 + str r3, [sp] + str r0, [sp, #4] + str r3, [sp, #8] + mov r0, #0xb5 + lsl r0, r0, #2 + ldr r2, [r5, #0x34] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BD84 + str r0, [r5, #0x38] + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD58_021DAB94 + + thumb_func_start MOD58_021DAC00 +MOD58_021DAC00: ; 0x021DAC00 + push {r3, lr} + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _021DAC12 + mov r0, #1 + pop {r3, pc} +_021DAC12: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD58_021DAC00 + + thumb_func_start MOD58_021DAC18 +MOD58_021DAC18: ; 0x021DAC18 + push {r3, r4, r5, r6, r7, lr} + mov r7, #0 + add r5, r0, #0 + str r1, [sp] + add r4, r7, #0 + strb r7, [r5] + add r6, r7, #0 +_021DAC26: + ldr r0, [sp] + ldrb r1, [r0, r6] + mov r0, #0xf + and r0, r1 + cmp r0, #1 + bne _021DAC3C + mov r0, #1 + ldrb r1, [r5] + lsl r0, r4 + orr r0, r1 + strb r0, [r5] +_021DAC3C: + ldr r0, [sp] + ldrb r0, [r0, r6] + asr r0, r0, #4 + cmp r0, #1 + bne _021DAC52 + ldrb r0, [r5] + add r2, r4, #1 + mov r1, #1 + lsl r1, r2 + orr r0, r1 + strb r0, [r5] +_021DAC52: + add r4, r4, #2 + cmp r4, #8 + bne _021DAC62 + mov r0, #0 + add r5, r5, #1 + add r7, r7, #1 + strb r0, [r5] + add r4, r0, #0 +_021DAC62: + mov r0, #6 + lsl r0, r0, #0xa + cmp r7, r0 + blt _021DAC6E + bl ErrorHandling +_021DAC6E: + mov r0, #6 + add r6, r6, #1 + lsl r0, r0, #0xa + cmp r6, r0 + blt _021DAC26 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD58_021DAC18 + + thumb_func_start MOD58_021DAC7C +MOD58_021DAC7C: ; 0x021DAC7C + push {r3, r4, r5, lr} + ldr r1, _021DAD28 ; =0x021C48F8 + add r4, r0, #0 + ldrh r0, [r1, #0x1c] + ldr r3, _021DAD2C ; =0x0000FFFF + cmp r0, r3 + beq _021DAD16 + ldrh r1, [r1, #0x1e] + cmp r1, r3 + beq _021DAD16 + ldr r2, _021DAD30 ; =0x00005CA8 + ldr r5, [r4, r2] + cmp r5, r3 + beq _021DAD16 + add r1, r2, #4 + ldr r1, [r4, r1] + cmp r1, r3 + beq _021DAD16 + cmp r5, r0 + ble _021DACAC + mov r1, #0 + sub r3, r5, r0 + mvn r1, r1 + b _021DACB0 +_021DACAC: + sub r3, r0, r5 + mov r1, #1 +_021DACB0: + sub r0, r2, #6 + strb r1, [r4, r0] + cmp r3, #3 + blt _021DACE6 + cmp r3, #0x28 + bgt _021DACE6 + ldr r0, _021DAD28 ; =0x021C48F8 + ldrh r2, [r0, #0x1e] + ldr r0, _021DAD34 ; =0x00005CAC + ldr r1, [r4, r0] + cmp r1, r2 + ble _021DACD0 + sub r2, r1, r2 + mov r1, #0 + mvn r1, r1 + b _021DACD4 +_021DACD0: + sub r2, r2, r1 + mov r1, #1 +_021DACD4: + sub r0, #9 + strb r1, [r4, r0] + cmp r2, #0x28 + bgt _021DAD16 + ldr r0, _021DAD38 ; =0x00005CA0 + add r0, r4, r0 + bl MOD58_021DAD3C + b _021DAD16 +_021DACE6: + cmp r3, #0x28 + bgt _021DAD16 + ldr r0, _021DAD28 ; =0x021C48F8 + ldrh r2, [r0, #0x1e] + ldr r0, _021DAD34 ; =0x00005CAC + ldr r1, [r4, r0] + cmp r1, r2 + ble _021DACFE + sub r2, r1, r2 + mov r1, #0 + mvn r1, r1 + b _021DAD02 +_021DACFE: + sub r2, r2, r1 + mov r1, #1 +_021DAD02: + sub r0, #9 + strb r1, [r4, r0] + cmp r2, #3 + blt _021DAD16 + cmp r2, #0x28 + bgt _021DAD16 + ldr r0, _021DAD38 ; =0x00005CA0 + add r0, r4, r0 + bl MOD58_021DAD3C +_021DAD16: + ldr r1, _021DAD28 ; =0x021C48F8 + ldr r0, _021DAD30 ; =0x00005CA8 + ldrh r2, [r1, #0x1c] + str r2, [r4, r0] + ldrh r1, [r1, #0x1e] + add r0, r0, #4 + str r1, [r4, r0] + pop {r3, r4, r5, pc} + nop +_021DAD28: .word 0x021C48F8 +_021DAD2C: .word 0x0000FFFF +_021DAD30: .word 0x00005CA8 +_021DAD34: .word 0x00005CAC +_021DAD38: .word 0x00005CA0 + thumb_func_end MOD58_021DAC7C + + thumb_func_start MOD58_021DAD3C +MOD58_021DAD3C: ; 0x021DAD3C + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + bne _021DAD60 + mov r0, #1 + ldrsb r0, [r4, r0] + cmp r0, #0 + bne _021DAD60 + ldr r0, _021DAD9C ; =0x0000069A + bl FUN_02005508 + cmp r0, #0 + bne _021DAD60 + ldr r0, _021DAD9C ; =0x0000069A + bl FUN_020054C8 +_021DAD60: + mov r0, #0 + ldrsb r1, [r4, r0] + mov r0, #2 + ldrsb r0, [r4, r0] + mul r0, r1 + bmi _021DAD78 + mov r0, #1 + ldrsb r1, [r4, r0] + mov r0, #3 + ldrsb r0, [r4, r0] + mul r0, r1 + bpl _021DAD88 +_021DAD78: + ldr r0, _021DAD9C ; =0x0000069A + bl FUN_02005508 + cmp r0, #0 + bne _021DAD88 + ldr r0, _021DAD9C ; =0x0000069A + bl FUN_020054C8 +_021DAD88: + mov r0, #2 + ldrsb r0, [r4, r0] + strb r0, [r4] + mov r0, #3 + ldrsb r0, [r4, r0] + strb r0, [r4, #1] + mov r0, #0 + strb r0, [r4, #2] + strb r0, [r4, #3] + pop {r4, pc} + .align 2, 0 +_021DAD9C: .word 0x0000069A + thumb_func_end MOD58_021DAD3C + + .section .rodata + ; 0x021DADA0 + .incbin "baserom.nds", 0x2A9B80, 0x1F4 + + .section .data + ; 0x021DAFA0 + .incbin "baserom.nds", 0x2A9D80, 0x20 + diff --git a/arm9/modules/59/asm/module_59.s b/arm9/modules/59/asm/module_59.s new file mode 100644 index 00000000..0809afd7 --- /dev/null +++ b/arm9/modules/59/asm/module_59.s @@ -0,0 +1,5042 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD59_021D74E0 +MOD59_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + mov r2, #1 + add r5, r0, #0 + mov r0, #3 + mov r1, #0x52 + lsl r2, r2, #0x12 + bl FUN_0201681C + add r0, r5, #0 + mov r1, #0xb4 + mov r2, #0x52 + bl FUN_02006268 + mov r1, #0 + mov r2, #0xb4 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x52 + str r0, [r4] + add r0, r5, #0 + bl FUN_0200628C + ldr r0, [r0, #8] + str r0, [r4, #4] + bl LoadPlayerDataAddress + mov r1, #0 + str r0, [r4, #8] + str r1, [r4, #0xc] + str r1, [r4, #0x10] + str r1, [r4, #0x14] + ldr r0, [r4, #8] + add r2, r1, #0 + str r0, [sp] + mov r0, #0x52 + mov r3, #7 + bl FUN_02077A84 + str r0, [r4, #0x70] + ldr r0, [r4, #8] + mov r1, #3 + str r0, [sp] + mov r0, #0x52 + mov r2, #0 + mov r3, #7 + bl FUN_02077A84 + str r0, [r4, #0x74] + add r0, r4, #0 + mov r1, #0 + add r0, #0x88 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x89 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x8a + strb r1, [r0] + add r0, r4, #0 + add r0, #0x8b + strb r1, [r0] + add r4, #0x90 + str r1, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD59_021D74E0 + + thumb_func_start MOD59_021D7564 +MOD59_021D7564: ; 0x021D7564 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + ldr r1, [r5] + add r4, r0, #0 + mov r6, #0 + cmp r1, #5 + bls _021D757A + b _021D76AC +_021D757A: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7586: ; jump table + .short _021D7592 - _021D7586 - 2 ; case 0 + .short _021D75FA - _021D7586 - 2 ; case 1 + .short _021D7642 - _021D7586 - 2 ; case 2 + .short _021D7668 - _021D7586 - 2 ; case 3 + .short _021D7690 - _021D7586 - 2 ; case 4 + .short _021D76AA - _021D7586 - 2 ; case 5 +_021D7592: + add r0, r6, #0 + add r1, r6, #0 + bl FUN_0200E3A0 + mov r0, #1 + add r1, r6, #0 + bl FUN_0200E3A0 + add r0, r6, #0 + add r1, r0, #0 + bl FUN_02015F10 + add r0, r6, #0 + add r1, r0, #0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D76B4 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D76B8 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + add r0, r4, #0 + bl MOD59_021D778C + add r0, r4, #0 + bl MOD59_021D79F8 + add r0, r4, #0 + bl MOD59_021D7A4C + ldr r0, _021D76BC ; =MOD59_021D7724 + add r1, r4, #0 + bl FUN_02015F10 + bl FUN_0201E788 + mov r0, #1 + str r0, [r5] + b _021D76AC +_021D75FA: + bl MOD59_021D8920 + cmp r0, #1 + bne _021D761E + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + str r0, [sp, #8] + add r0, r6, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #2 + str r0, [r5] +_021D761E: + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021D76AC + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #3 + str r0, [r5] + b _021D76AC +_021D7642: + bl FUN_0200E308 + cmp r0, #1 + bne _021D76AC + add r0, r4, #0 + bl MOD59_021D7A34 + add r0, r4, #0 + bl MOD59_021D796C + add r0, r4, #0 + bl MOD59_021D7A5C + add r0, r6, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r6, #1 + b _021D76AC +_021D7668: + bl FUN_0200E308 + cmp r0, #1 + bne _021D76AC + add r0, r4, #0 + bl MOD59_021D7A34 + add r0, r4, #0 + bl MOD59_021D796C + add r0, r4, #0 + bl MOD59_021D7A5C + add r0, r6, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #4 + str r0, [r5] + b _021D76AC +_021D7690: + ldr r0, [r4, #0x14] + bl FUN_02006290 + cmp r0, #1 + bne _021D76AC + ldr r0, [r4, #0x14] + bl FUN_02006260 + add r0, r6, #0 + str r0, [r4, #0x14] + mov r0, #5 + str r0, [r5] + b _021D76AC +_021D76AA: + str r6, [r5] +_021D76AC: + add r0, r6, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021D76B4: .word 0xFFFFE0FF +_021D76B8: .word 0x04001000 +_021D76BC: .word MOD59_021D7724 + thumb_func_end MOD59_021D7564 + + thumb_func_start MOD59_021D76C0 +MOD59_021D76C0: ; 0x021D76C0 + push {r4, r5, r6, lr} + add r6, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r5, [r4] + bl FUN_020238F4 + ldr r1, [r4, #0x70] + ldr r1, [r1, #0x18] + bl FUN_0202397C + ldr r0, [r4, #4] + bl FUN_020238F4 + ldr r1, [r4, #0x70] + ldr r1, [r1, #4] + bl FUN_020239C8 + ldr r0, [r4, #4] + bl FUN_02024EB4 + ldr r1, [r4, #0x74] + ldr r1, [r1, #0x18] + bl FUN_02024EF4 + ldr r0, [r4, #0x70] + bl FUN_02077AC4 + ldr r0, [r4, #0x74] + bl FUN_02077AC4 + add r0, r6, #0 + bl FUN_0200627C + add r0, r5, #0 + bl FUN_020168D0 + ldr r0, _021D771C ; =0x00000034 + ldr r1, _021D7720 ; =0x021D76D8 + bl FUN_02000E7C + mov r0, #1 + pop {r4, r5, r6, pc} + nop +_021D771C: .word 0x00000034 +_021D7720: .word 0x021D76D8 + thumb_func_end MOD59_021D76C0 + + thumb_func_start MOD59_021D7724 +MOD59_021D7724: ; 0x021D7724 + ldr r3, _021D772C ; =0x0201AB61 + ldr r0, [r0, #0x18] + bx r3 + nop +_021D772C: .word 0x0201AB61 + thumb_func_end MOD59_021D7724 + + thumb_func_start MOD59_021D7730 +MOD59_021D7730: ; 0x021D7730 + push {r3, r4} + ldr r2, _021D7788 ; =0x021C48F8 + mov r0, #0 + ldrh r1, [r2, #0x20] + cmp r1, #0 + beq _021D7784 + ldrh r3, [r2, #0x1c] + mov r1, #1 + lsl r1, r1, #8 + cmp r3, r1 + bhs _021D7784 + ldrh r2, [r2, #0x1e] + cmp r2, #0xc0 + bhs _021D7784 + cmp r3, #0x80 + bhs _021D7758 + mov r1, #0x80 + sub r1, r1, r3 + lsl r1, r1, #0x10 + b _021D775C +_021D7758: + sub r3, #0x80 + lsl r1, r3, #0x10 +_021D775C: + lsr r3, r1, #0x10 + cmp r2, #0x64 + bhs _021D776A + mov r1, #0x64 + sub r1, r1, r2 + lsl r1, r1, #0x10 + b _021D776E +_021D776A: + sub r2, #0x64 + lsl r1, r2, #0x10 +_021D776E: + lsr r4, r1, #0x10 + add r2, r3, #0 + add r1, r4, #0 + mul r2, r3 + mul r1, r4 + add r2, r2, r1 + mov r1, #1 + lsl r1, r1, #8 + cmp r2, r1 + bgt _021D7784 + mov r0, #1 +_021D7784: + pop {r3, r4} + bx lr + .align 2, 0 +_021D7788: .word 0x021C48F8 + thumb_func_end MOD59_021D7730 + + thumb_func_start MOD59_021D778C +MOD59_021D778C: ; 0x021D778C + push {r3, r4, r5, lr} + sub sp, #0x78 + ldr r5, _021D7954 ; =0x021D9F18 + add r4, r0, #0 + add r3, sp, #0x50 + mov r2, #5 +_021D7798: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7798 + add r0, sp, #0x50 + bl FUN_0201E66C + ldr r0, [r4] + bl FUN_02016B94 + add r3, sp, #0x40 + ldr r5, _021D7958 ; =0x021D9DCC + str r0, [r4, #0x18] + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _021D795C ; =0x021D9EA0 + add r3, sp, #0x24 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + mov r0, #0xf + strb r0, [r2, #0x12] + mov r0, #6 + strb r0, [r2, #0x13] + ldr r0, [r4, #0x18] + add r3, r1, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_02018744 + mov r0, #0xe + add r2, sp, #0x24 + strb r0, [r2, #0x12] + mov r0, #5 + strb r0, [r2, #0x13] + ldr r0, [r4, #0x18] + mov r1, #1 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_02018744 + mov r0, #0xd + add r2, sp, #0x24 + strb r0, [r2, #0x12] + mov r0, #4 + strb r0, [r2, #0x13] + ldr r0, [r4, #0x18] + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02018744 + mov r0, #0xc + add r2, sp, #0x24 + strb r0, [r2, #0x12] + mov r1, #3 + strb r1, [r2, #0x13] + ldr r0, [r4, #0x18] + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #3 + bl FUN_02018744 + mov r1, #0 + str r1, [sp] + ldr r0, [r4] + ldr r2, _021D7960 ; =0x000003E2 + str r0, [sp, #4] + ldr r0, [r4, #0x18] + mov r3, #4 + bl FUN_0200CD68 + mov r1, #0 + str r1, [sp] + ldr r0, [r4] + ldr r2, _021D7964 ; =0x000003D9 + str r0, [sp, #4] + ldr r0, [r4, #0x18] + mov r3, #3 + bl FUN_0200CB00 + ldr r2, [r4] + mov r0, #0 + mov r1, #0xa0 + bl FUN_02002ED0 + ldr r2, [r4] + mov r0, #0 + mov r1, #0xc0 + bl FUN_02002EEC + ldr r5, _021D7968 ; =0x021D9EBC + add r3, sp, #8 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0xf + str r0, [r3] + add r0, sp, #8 + strb r1, [r0, #0x12] + mov r1, #6 + strb r1, [r0, #0x13] + ldr r0, [r4, #0x18] + mov r1, #4 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #4 + bl FUN_02018744 + mov r1, #0xe + add r0, sp, #8 + strb r1, [r0, #0x12] + mov r1, #5 + strb r1, [r0, #0x13] + ldr r0, [r4, #0x18] + add r2, sp, #8 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #5 + bl FUN_02018744 + mov r1, #0xd + add r0, sp, #8 + strb r1, [r0, #0x12] + mov r1, #4 + strb r1, [r0, #0x13] + ldr r0, [r4, #0x18] + mov r1, #6 + add r2, sp, #8 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #6 + bl FUN_02018744 + mov r1, #0xc + add r0, sp, #8 + strb r1, [r0, #0x12] + mov r1, #3 + strb r1, [r0, #0x13] + ldr r0, [r4, #0x18] + mov r1, #7 + add r2, sp, #8 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #7 + bl FUN_02018744 + mov r0, #0 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #1 + mov r1, #0 + bl FUN_0201797C + mov r0, #2 + mov r1, #0 + bl FUN_0201797C + mov r0, #3 + mov r1, #0 + bl FUN_0201797C + mov r0, #4 + mov r1, #0 + bl FUN_0201797C + mov r0, #5 + mov r1, #0 + bl FUN_0201797C + mov r0, #6 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + add r0, r4, #0 + bl MOD59_021D8058 + mov r0, #0 + str r0, [r4, #0x78] + add sp, #0x78 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7954: .word 0x021D9F18 +_021D7958: .word 0x021D9DCC +_021D795C: .word 0x021D9EA0 +_021D7960: .word 0x000003E2 +_021D7964: .word 0x000003D9 +_021D7968: .word 0x021D9EBC + thumb_func_end MOD59_021D778C + + thumb_func_start MOD59_021D796C +MOD59_021D796C: ; 0x021D796C + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #1 + mov r1, #0 + bl FUN_0201797C + mov r0, #2 + mov r1, #0 + bl FUN_0201797C + mov r0, #3 + mov r1, #0 + bl FUN_0201797C + mov r0, #4 + mov r1, #0 + bl FUN_0201797C + mov r0, #5 + mov r1, #0 + bl FUN_0201797C + mov r0, #6 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #5 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #6 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #7 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD59_021D796C + + thumb_func_start MOD59_021D79F8 +MOD59_021D79F8: ; 0x021D79F8 + push {r4, lr} + add r4, r0, #0 + ldr r2, _021D7A30 ; =0x00000155 + ldr r3, [r4] + mov r0, #1 + mov r1, #0x1a + bl FUN_0200A86C + str r0, [r4, #0x4c] + bl FUN_0201BD5C + mov r0, #0 + ldr r3, [r4] + add r1, r0, #0 + mov r2, #6 + bl FUN_020142EC + str r0, [r4, #0x60] + ldr r0, [r4] + bl FUN_0200AA80 + str r0, [r4, #0x64] + mov r0, #0 + str r0, [r4, #0x50] + str r0, [r4, #0x54] + str r0, [r4, #0x2c] + pop {r4, pc} + nop +_021D7A30: .word 0x00000155 + thumb_func_end MOD59_021D79F8 + + thumb_func_start MOD59_021D7A34 +MOD59_021D7A34: ; 0x021D7A34 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x64] + bl FUN_0200AB18 + ldr r0, [r4, #0x60] + bl FUN_020143D0 + ldr r0, [r4, #0x4c] + bl FUN_0200A8B8 + pop {r4, pc} + thumb_func_end MOD59_021D7A34 + + thumb_func_start MOD59_021D7A4C +MOD59_021D7A4C: ; 0x021D7A4C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02014590 + str r0, [r4, #0x68] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD59_021D7A4C + + thumb_func_start MOD59_021D7A5C +MOD59_021D7A5C: ; 0x021D7A5C + ldr r3, _021D7A64 ; =0x020145A9 + ldr r0, [r0, #0x68] + bx r3 + nop +_021D7A64: .word 0x020145A9 + thumb_func_end MOD59_021D7A5C + + thumb_func_start MOD59_021D7A68 +MOD59_021D7A68: ; 0x021D7A68 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r3, r0, #0 + add r6, r2, #0 + mov r5, #0 + cmp r4, #6 + bhi _021D7A92 + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7A84: ; jump table + .short _021D7A92 - _021D7A84 - 2 ; case 0 + .short _021D7A98 - _021D7A84 - 2 ; case 1 + .short _021D7A9E - _021D7A84 - 2 ; case 2 + .short _021D7A92 - _021D7A84 - 2 ; case 3 + .short _021D7AA4 - _021D7A84 - 2 ; case 4 + .short _021D7AAA - _021D7A84 - 2 ; case 5 + .short _021D7AB0 - _021D7A84 - 2 ; case 6 +_021D7A92: + mov r1, #1 + mov r0, #0 + b _021D7AB4 +_021D7A98: + mov r1, #2 + add r0, r5, #0 + b _021D7AB4 +_021D7A9E: + mov r1, #4 + add r0, r5, #0 + b _021D7AB4 +_021D7AA4: + mov r1, #1 + add r0, r1, #0 + b _021D7AB4 +_021D7AAA: + mov r1, #2 + mov r0, #1 + b _021D7AB4 +_021D7AB0: + mov r1, #4 + mov r0, #1 +_021D7AB4: + ldr r2, [r3, #0x78] + cmp r2, #3 + bls _021D7ABC + b _021D7BDE +_021D7ABC: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021D7AC8: ; jump table + .short _021D7AD0 - _021D7AC8 - 2 ; case 0 + .short _021D7B2C - _021D7AC8 - 2 ; case 1 + .short _021D7B7C - _021D7AC8 - 2 ; case 2 + .short _021D7BD0 - _021D7AC8 - 2 ; case 3 +_021D7AD0: + cmp r6, #0 + bne _021D7B1A + mov r2, #0 + str r2, [r3, #0x7c] + add r2, r3, #0 + mov r6, #0x10 + add r2, #0x80 + str r6, [r2] + mov r2, #1 + str r2, [r3, #0x78] + cmp r0, #0 + bne _021D7AFC + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE4 ; =0x04000050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ + b _021D7B0E +_021D7AFC: + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE8 ; =0x04001050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ +_021D7B0E: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + mov r1, #1 + bl FUN_0201797C + b _021D7BDE +_021D7B1A: + mov r0, #0x10 + str r0, [r3, #0x7c] + add r0, r3, #0 + mov r1, #0 + add r0, #0x80 + str r1, [r0] + mov r0, #2 + str r0, [r3, #0x78] + b _021D7BDE +_021D7B2C: + add r2, r3, #0 + add r2, #0x80 + ldr r2, [r2] + cmp r2, #0 + beq _021D7B76 + ldr r2, [r3, #0x7c] + add r2, r2, #1 + str r2, [r3, #0x7c] + add r2, r3, #0 + add r2, #0x80 + ldr r2, [r2] + sub r4, r2, #1 + add r2, r3, #0 + add r2, #0x80 + str r4, [r2] + cmp r0, #0 + bne _021D7B62 + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE4 ; =0x04000050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ + b _021D7BDE +_021D7B62: + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE8 ; =0x04001050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ + b _021D7BDE +_021D7B76: + mov r0, #3 + str r0, [r3, #0x78] + b _021D7BDE +_021D7B7C: + ldr r2, [r3, #0x7c] + cmp r2, #0 + beq _021D7BC0 + sub r2, r2, #1 + str r2, [r3, #0x7c] + add r2, r3, #0 + add r2, #0x80 + ldr r2, [r2] + add r4, r2, #1 + add r2, r3, #0 + add r2, #0x80 + str r4, [r2] + cmp r0, #0 + bne _021D7BAC + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE4 ; =0x04000050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ + b _021D7BDE +_021D7BAC: + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE8 ; =0x04001050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ + b _021D7BDE +_021D7BC0: + mov r0, #3 + str r0, [r3, #0x78] + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + mov r1, #0 + bl FUN_0201797C + b _021D7BDE +_021D7BD0: + ldr r0, _021D7BE4 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + ldr r0, _021D7BE8 ; =0x04001050 + mov r5, #1 + strh r1, [r0] + str r1, [r3, #0x78] +_021D7BDE: + add r0, r5, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021D7BE4: .word 0x04000050 +_021D7BE8: .word 0x04001050 + thumb_func_end MOD59_021D7A68 + + thumb_func_start MOD59_021D7BEC +MOD59_021D7BEC: ; 0x021D7BEC + add r2, r0, #0 + add r2, #0x90 + ldr r2, [r2] + cmp r2, r1 + bge _021D7C06 + add r1, r0, #0 + add r1, #0x90 + ldr r1, [r1] + add r0, #0x90 + add r1, r1, #1 + str r1, [r0] + mov r0, #0 + bx lr +_021D7C06: + mov r1, #0 + add r0, #0x90 + str r1, [r0] + mov r0, #1 + bx lr + thumb_func_end MOD59_021D7BEC + + thumb_func_start MOD59_021D7C10 +MOD59_021D7C10: ; 0x021D7C10 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + lsl r0, r2, #0x18 + add r4, r1, #0 + lsr r0, r0, #0x18 + str r0, [sp, #8] + lsl r1, r4, #0x18 + mov r2, #0 + ldr r0, [r5, #0x18] + lsr r1, r1, #0x18 + add r3, r2, #0 + bl FUN_020186B4 + lsl r1, r4, #0x18 + ldr r0, [r5, #0x18] + lsr r1, r1, #0x18 + bl FUN_02017CD0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD59_021D7C10 + + thumb_func_start MOD59_021D7C44 +MOD59_021D7C44: ; 0x021D7C44 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r5, #0x50] + add r7, r1, #0 + mov r4, #0 + cmp r0, #0 + beq _021D7C5E + cmp r0, #1 + beq _021D7D1C + cmp r0, #2 + beq _021D7D36 + b _021D7D54 +_021D7C5E: + add r1, r5, #0 + ldr r0, [r5, #0x18] + ldr r2, _021D7D5C ; =0x021D9DB8 + add r1, #0x1c + bl FUN_02019150 + mov r0, #0xd8 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + add r0, r5, #0 + add r2, r4, #0 + add r0, #0x1c + mov r1, #0xf + add r3, r2, #0 + bl FUN_020196F4 + add r0, r5, #0 + ldr r2, _021D7D60 ; =0x000003E2 + add r0, #0x1c + add r1, r4, #0 + mov r3, #4 + bl FUN_0200D0BC + mov r0, #1 + bl FUN_02002B60 + add r0, r4, #0 + bl FUN_02002B7C + mov r0, #1 + ldr r1, [r5] + lsl r0, r0, #0xa + bl FUN_020219F4 + add r6, r0, #0 + mov r0, #1 + ldr r1, [r5] + lsl r0, r0, #0xa + bl FUN_020219F4 + str r0, [r5, #0x5c] + ldr r0, [r5, #0x4c] + add r1, r7, #0 + add r2, r6, #0 + bl FUN_0200A8E0 + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r2, [r5, #0x70] + add r3, r5, #0 + add r3, #0x84 + ldr r0, [r5, #0x64] + ldr r2, [r2, #0x18] + ldr r3, [r3] + add r1, r4, #0 + bl FUN_0200ABB4 + mov r1, #1 + str r1, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r2, [r5, #0x74] + ldr r0, [r5, #0x64] + ldr r2, [r2, #0x18] + add r3, r4, #0 + bl FUN_0200ABB4 + ldr r0, [r5, #0x64] + ldr r1, [r5, #0x5c] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, [r5, #8] + bl FUN_02024FF4 + add r3, r4, #0 + str r3, [sp] + str r0, [sp, #4] + str r3, [sp, #8] + add r0, r5, #0 + ldr r2, [r5, #0x5c] + add r0, #0x1c + mov r1, #1 + bl FUN_0201BD84 + str r0, [r5, #0x58] + mov r0, #1 + str r0, [r5, #0x50] + b _021D7D54 +_021D7D1C: + ldr r0, [r5, #0x58] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _021D7D54 + ldr r0, [r5, #0x5c] + bl FUN_02021A20 + mov r0, #2 + str r0, [r5, #0x50] + b _021D7D54 +_021D7D36: + cmp r2, #0 + bne _021D7D46 + ldr r0, _021D7D64 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + and r0, r1 + cmp r0, #1 + bne _021D7D54 +_021D7D46: + add r0, r5, #0 + add r0, #0x1c + bl FUN_02019178 + mov r0, #0 + str r0, [r5, #0x50] + mov r4, #1 +_021D7D54: + add r0, r4, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_021D7D5C: .word 0x021D9DB8 +_021D7D60: .word 0x000003E2 +_021D7D64: .word 0x021C48B8 + thumb_func_end MOD59_021D7C44 + + thumb_func_start MOD59_021D7D68 +MOD59_021D7D68: ; 0x021D7D68 + push {r3, lr} + cmp r2, #0 + bne _021D7D74 + ldr r0, _021D7D78 ; =0x000005DC + bl FUN_020054C8 +_021D7D74: + pop {r3, pc} + nop +_021D7D78: .word 0x000005DC + thumb_func_end MOD59_021D7D68 + + thumb_func_start MOD59_021D7D7C +MOD59_021D7D7C: ; 0x021D7D7C + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, [r5, #0x2c] + add r4, r2, #0 + cmp r0, #0 + beq _021D7D94 + cmp r0, #1 + beq _021D7E4C + b _021D7E96 +_021D7D94: + cmp r1, #0 + beq _021D7DA0 + cmp r1, #1 + beq _021D7DA8 + cmp r1, #2 + beq _021D7DB0 +_021D7DA0: + ldr r2, _021D7E9C ; =0x021D9DA8 + ldr r4, _021D7EA0 ; =0x021D9E0C + mov r6, #2 + b _021D7DC4 +_021D7DA8: + ldr r2, _021D7EA4 ; =0x021D9DB0 + ldr r4, _021D7EA8 ; =0x021D9E58 + mov r6, #3 + b _021D7DC4 +_021D7DB0: + ldr r0, _021D7EAC ; =0x020ECAC0 + ldr r2, _021D7EB0 ; =0x021D9DA0 + ldrb r0, [r0] + cmp r0, #0xa + bne _021D7DC0 + ldr r4, _021D7EB4 ; =0x021D9F40 + mov r6, #5 + b _021D7DC4 +_021D7DC0: + ldr r4, _021D7EB8 ; =0x021D9F68 + mov r6, #5 +_021D7DC4: + add r1, r5, #0 + ldr r0, [r5, #0x18] + add r1, #0x30 + bl FUN_02019150 + ldr r1, [r5] + add r0, r6, #0 + bl FUN_02012838 + mov r7, #0 + str r0, [r5, #0x44] + cmp r6, #0 + ble _021D7DF2 +_021D7DDE: + ldr r0, [r5, #0x44] + ldr r1, [r5, #0x4c] + ldr r2, [r4] + ldr r3, [r4, #4] + bl FUN_02012880 + add r7, r7, #1 + add r4, #8 + cmp r7, r6 + blt _021D7DDE +_021D7DF2: + ldr r4, _021D7EBC ; =0x021D9EF8 + add r3, sp, #4 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5, #0x44] + str r0, [sp, #4] + lsl r0, r6, #0x10 + lsr r1, r0, #0x10 + add r0, sp, #4 + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + ldr r0, _021D7EC0 ; =MOD59_021D7D68 + mov r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x30 + str r0, [sp, #0x10] + ldr r3, [r5] + add r0, r2, #0 + lsl r3, r3, #0x18 + add r2, r1, #0 + lsr r3, r3, #0x18 + bl FUN_020010A8 + str r0, [r5, #0x40] + ldr r0, [sp, #0x10] + ldr r2, _021D7EC4 ; =0x000003D9 + mov r1, #1 + mov r3, #3 + bl FUN_0200CCA4 + add r0, r5, #0 + add r0, #0x30 + bl FUN_020191D0 + mov r0, #1 + str r0, [r5, #0x2c] + b _021D7E96 +_021D7E4C: + ldr r0, [r5, #0x40] + bl FUN_02001204 + mov r1, #0 + mvn r1, r1 + str r0, [r5, #0x48] + cmp r0, r1 + beq _021D7E96 + sub r1, r1, #1 + cmp r0, r1 + bne _021D7E66 + cmp r4, #1 + beq _021D7E96 +_021D7E66: + add r0, r5, #0 + add r0, #0x30 + mov r1, #0 + bl FUN_0200CCF8 + add r0, r5, #0 + add r0, #0x30 + bl FUN_02019178 + mov r1, #0 + ldr r0, [r5, #0x40] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, [r5, #0x44] + bl FUN_02012870 + ldr r0, _021D7EC8 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0 + str r0, [r5, #0x2c] + mov r0, #1 + str r0, [sp] +_021D7E96: + ldr r0, [sp] + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D7E9C: .word 0x021D9DA8 +_021D7EA0: .word 0x021D9E0C +_021D7EA4: .word 0x021D9DB0 +_021D7EA8: .word 0x021D9E58 +_021D7EAC: .word 0x020ECAC0 +_021D7EB0: .word 0x021D9DA0 +_021D7EB4: .word 0x021D9F40 +_021D7EB8: .word 0x021D9F68 +_021D7EBC: .word 0x021D9EF8 +_021D7EC0: .word MOD59_021D7D68 +_021D7EC4: .word 0x000003D9 +_021D7EC8: .word 0x000005DC + thumb_func_end MOD59_021D7D7C + + thumb_func_start MOD59_021D7ECC +MOD59_021D7ECC: ; 0x021D7ECC + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r0, #0 + str r1, [sp, #0x10] + ldr r1, [r4, #0x54] + add r6, r2, #0 + add r7, r3, #0 + mov r5, #0 + cmp r1, #5 + bls _021D7EE2 + b _021D803C +_021D7EE2: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7EEE: ; jump table + .short _021D7EFA - _021D7EEE - 2 ; case 0 + .short _021D7FD8 - _021D7EEE - 2 ; case 1 + .short _021D7FE4 - _021D7EEE - 2 ; case 2 + .short _021D7FF6 - _021D7EEE - 2 ; case 3 + .short _021D8016 - _021D7EEE - 2 ; case 4 + .short _021D8028 - _021D7EEE - 2 ; case 5 +_021D7EFA: + add r0, r5, #0 + add r1, r5, #0 + bl FUN_0201797C + mov r0, #1 + ldr r1, [r4] + lsl r0, r0, #0xa + bl FUN_020219F4 + str r0, [r4, #0x5c] + ldr r0, [r4, #0x4c] + ldr r1, [sp, #0x10] + ldr r2, [r4, #0x5c] + bl FUN_0200A8E0 + cmp r6, #1 + add r0, sp, #0x14 + bne _021D7F7C + ldr r1, _021D8044 ; =0x021D9D90 + ldrh r2, [r1, #8] + strh r2, [r0] + ldrh r2, [r1, #0xa] + strh r2, [r0, #2] + ldrh r2, [r1, #0xc] + ldrh r1, [r1, #0xe] + strh r2, [r0, #4] + strh r1, [r0, #6] + ldr r0, [r4, #0x5c] + bl FUN_02002F90 + mov r1, #0xc + sub r2, r1, r0 + add r1, sp, #0x14 + strb r2, [r1, #2] + lsl r0, r0, #1 + strb r0, [r1, #4] + add r1, r4, #0 + ldr r0, [r4, #0x18] + add r1, #0x1c + add r2, sp, #0x14 + bl FUN_02019150 + add r1, r5, #0 + mov r0, #0xc0 + str r0, [sp] + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x1c + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + add r1, r5, #0 + str r1, [sp] + ldr r0, _021D8048 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x5c] + add r0, #0x1c + add r3, r1, #0 + bl FUN_0201BDE0 + b _021D7FCC +_021D7F7C: + ldr r1, _021D8044 ; =0x021D9D90 + add r2, sp, #0x14 + ldrh r3, [r1] + strh r3, [r0] + ldrh r3, [r1, #2] + strh r3, [r0, #2] + ldrh r3, [r1, #4] + ldrh r1, [r1, #6] + strh r3, [r0, #4] + strh r1, [r0, #6] + ldr r1, [sp, #0x30] + strb r7, [r0, #2] + strb r1, [r0, #4] + add r1, r4, #0 + ldr r0, [r4, #0x18] + add r1, #0x1c + bl FUN_02019150 + add r1, r5, #0 + mov r0, #0xc0 + str r0, [sp] + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x1c + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + add r1, r5, #0 + str r1, [sp] + ldr r0, _021D804C ; =0x000F0200 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x5c] + add r0, #0x1c + add r3, r1, #0 + bl FUN_0201BDE0 +_021D7FCC: + ldr r0, [r4, #0x5c] + bl FUN_02021A20 + mov r0, #1 + str r0, [r4, #0x54] + b _021D803C +_021D7FD8: + add r0, #0x1c + bl FUN_020191D0 + mov r0, #2 + str r0, [r4, #0x54] + b _021D803C +_021D7FE4: + add r1, r5, #0 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D803C + mov r0, #3 + str r0, [r4, #0x54] + b _021D803C +_021D7FF6: + ldr r0, _021D8050 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + and r0, r1 + cmp r0, #1 + beq _021D800A + mov r0, #2 + and r0, r1 + cmp r0, #2 + bne _021D803C +_021D800A: + ldr r0, _021D8054 ; =0x000005DC + bl FUN_020054C8 + mov r0, #4 + str r0, [r4, #0x54] + b _021D803C +_021D8016: + add r1, r5, #0 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D803C + mov r0, #5 + str r0, [r4, #0x54] + b _021D803C +_021D8028: + add r0, #0x1c + bl FUN_02019178 + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + add r0, r5, #0 + str r0, [r4, #0x54] + mov r5, #1 +_021D803C: + add r0, r5, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021D8044: .word 0x021D9D90 +_021D8048: .word 0x00010200 +_021D804C: .word 0x000F0200 +_021D8050: .word 0x021C48B8 +_021D8054: .word 0x000005DC + thumb_func_end MOD59_021D7ECC + + thumb_func_start MOD59_021D8058 +MOD59_021D8058: ; 0x021D8058 + push {r3, r4, r5, lr} + sub sp, #0x10 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + add r5, r0, #0 + str r1, [sp, #8] + ldr r0, [r5] + mov r3, #3 + str r0, [sp, #0xc] + ldr r2, [r5, #0x18] + mov r0, #0x7d + bl FUN_0200687C + mov r0, #0 + ldr r3, [r5] + mov r1, #0x20 + add r2, r0, #0 + bl FUN_02017F18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + mov r1, #0x17 + str r0, [sp, #0xc] + ldr r2, [r5, #0x18] + mov r0, #0x7d + mov r3, #7 + bl FUN_0200687C + ldr r0, _021D80F8 ; =0x020ECAC0 + ldrb r0, [r0] + cmp r0, #0xa + bne _021D80A6 + mov r1, #1 + mov r4, #0x18 + b _021D80AA +_021D80A6: + mov r1, #2 + mov r4, #0x19 +_021D80AA: + mov r0, #0x60 + str r0, [sp] + ldr r0, [r5] + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x7d + add r3, r2, #0 + bl FUN_02006930 + mov r0, #0xa0 + str r0, [sp] + ldr r0, [r5] + add r1, r4, #0 + str r0, [sp, #4] + mov r0, #0x7d + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + add r0, r5, #0 + bl MOD59_021D80FC + add r0, r5, #0 + bl MOD59_021D8140 + add r0, r5, #0 + bl MOD59_021D8234 + mov r0, #0 + add r1, r0, #0 + bl FUN_02017FE4 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D80F8: .word 0x020ECAC0 + thumb_func_end MOD59_021D8058 + + thumb_func_start MOD59_021D80FC +MOD59_021D80FC: ; 0x021D80FC + push {r4, r5, lr} + sub sp, #0x24 + ldr r5, _021D813C ; =0x021D9E1C + add r3, r0, #0 + ldmia r5!, {r0, r1} + add r4, sp, #0x10 + add r2, r4, #0 + stmia r4!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r4!, {r0, r1} + ldr r0, [r5] + str r0, [r4] + add r0, r3, #0 + add r0, #0x88 + ldrb r1, [r0] + cmp r1, #5 + bhs _021D8138 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r3] + lsl r1, r1, #2 + str r0, [sp, #0xc] + ldr r1, [r2, r1] + ldr r2, [r3, #0x18] + mov r0, #0x7d + mov r3, #3 + bl FUN_020068C8 +_021D8138: + add sp, #0x24 + pop {r4, r5, pc} + .align 2, 0 +_021D813C: .word 0x021D9E1C + thumb_func_end MOD59_021D80FC + + thumb_func_start MOD59_021D8140 +MOD59_021D8140: ; 0x021D8140 + push {r3, r4, r5, lr} + sub sp, #0x68 + ldr r5, _021D8230 ; =0x021D9F90 + add r4, r0, #0 + add r3, sp, #0x10 + mov r2, #0xb +_021D814C: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D814C + add r0, r4, #0 + add r0, #0x89 + ldrb r1, [r0] + cmp r1, #0 + beq _021D81BE + cmp r1, #0xc + bhs _021D81BE + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + lsl r2, r1, #3 + str r0, [sp, #0xc] + add r1, sp, #0x10 + ldr r1, [r1, r2] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #1 + bl FUN_0200687C + mov r0, #0x20 + str r0, [sp] + ldr r0, [r4] + add r1, r4, #0 + str r0, [sp, #4] + add r1, #0x89 + ldrb r1, [r1] + mov r0, #0x7d + mov r3, #0xe0 + lsl r2, r1, #3 + add r1, sp, #0x14 + ldr r1, [r1, r2] + mov r2, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x16 + str r0, [sp, #0xc] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #1 + bl FUN_020068C8 + add r0, r4, #0 + mov r1, #1 + mov r2, #7 + bl MOD59_021D7C10 +_021D81BE: + add r0, r4, #0 + add r0, #0x8a + ldrb r1, [r0] + cmp r1, #0 + beq _021D822A + cmp r1, #0xc + bhs _021D822A + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + lsl r2, r1, #3 + str r0, [sp, #0xc] + add r1, sp, #0x10 + ldr r1, [r1, r2] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #2 + bl FUN_0200687C + mov r0, #0x20 + str r0, [sp] + ldr r0, [r4] + add r1, r4, #0 + str r0, [sp, #4] + add r1, #0x8a + ldrb r1, [r1] + mov r0, #0x7d + add r3, r0, #0 + lsl r2, r1, #3 + add r1, sp, #0x14 + ldr r1, [r1, r2] + mov r2, #0 + add r3, #0x83 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x16 + str r0, [sp, #0xc] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #2 + bl FUN_020068C8 + add r0, r4, #0 + mov r1, #2 + mov r2, #8 + bl MOD59_021D7C10 +_021D822A: + add sp, #0x68 + pop {r3, r4, r5, pc} + nop +_021D8230: .word 0x021D9F90 + thumb_func_end MOD59_021D8140 + + thumb_func_start MOD59_021D8234 +MOD59_021D8234: ; 0x021D8234 + push {r4, r5, lr} + sub sp, #0x24 + ldr r5, _021D829C ; =0x021D9E30 + add r4, r0, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x10 + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + add r0, r4, #0 + add r0, #0x8b + ldrb r1, [r0] + cmp r1, #5 + bhs _021D8296 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + lsl r1, r1, #2 + str r0, [sp, #0xc] + ldr r1, [r2, r1] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #7 + bl FUN_020068C8 + add r0, r4, #0 + add r0, #0x8b + ldrb r0, [r0] + cmp r0, #1 + bne _021D8288 + add r0, r4, #0 + mov r1, #7 + mov r2, #3 + bl MOD59_021D7C10 + add sp, #0x24 + pop {r4, r5, pc} +_021D8288: + cmp r0, #2 + bne _021D8296 + add r0, r4, #0 + mov r1, #7 + mov r2, #2 + bl MOD59_021D7C10 +_021D8296: + add sp, #0x24 + pop {r4, r5, pc} + nop +_021D829C: .word 0x021D9E30 + thumb_func_end MOD59_021D8234 + + thumb_func_start MOD59_021D82A0 +MOD59_021D82A0: ; 0x021D82A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + mov r2, #0 + str r2, [sp] + str r2, [sp, #4] + add r5, r0, #0 + ldr r1, _021D83EC ; =0x000001BE + str r2, [sp, #8] + add r0, sp, #0x10 + mov r3, #2 + bl FUN_02068C00 + ldr r0, [r5] + mov r1, #0xc8 + bl FUN_02016998 + add r7, r0, #0 + ldr r2, _021D83F0 ; =0x021D9FE8 + mov r1, #0 + add r3, r7, #0 +_021D82C8: + ldrb r0, [r2] + add r1, r1, #1 + add r2, r2, #1 + add r0, r0, #1 + strh r0, [r3] + add r3, r3, #2 + cmp r1, #0x64 + blt _021D82C8 + add r1, sp, #0x10 + ldrh r0, [r1] + ldrh r1, [r1, #2] + ldr r2, [r5] + bl FUN_0201244C + add r1, sp, #0x10 + add r4, r0, #0 + ldrh r0, [r1] + ldrh r1, [r1, #4] + ldr r2, [r5] + bl FUN_02012470 + mov r2, #0 + add r6, r0, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #9 + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + mov r1, #2 + add r3, r2, #0 + bl FUN_02018540 + mov r3, #0xb + str r3, [sp] + mov r0, #0xa + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5, #0x18] + mov r1, #2 + add r2, r7, #0 + bl FUN_02018148 + add r0, r5, #0 + mov r1, #2 + mov r2, #9 + bl MOD59_021D7C10 + ldr r3, [r5] + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + mov r0, #1 + str r0, [sp] + mov r3, #0x32 + ldr r0, [r5, #0x18] + mov r1, #2 + add r2, r4, #0 + lsl r3, r3, #6 + bl FUN_02017E14 + mov r3, #0x20 + add r2, r3, #0 + mov r0, #2 + add r1, r6, #0 + add r3, #0xe0 + bl FUN_02017FB4 + mov r3, #0x12 + ldr r1, _021D83F4 ; =0x021D9ED8 + mov r0, #2 + mov r2, #0x20 + lsl r3, r3, #4 + bl FUN_02017FB4 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + mov r1, #5 + add r3, r2, #0 + bl FUN_02018540 + mov r0, #7 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5, #0x18] + mov r1, #5 + add r2, r7, #0 + mov r3, #0xb + bl FUN_02018148 + add r0, r5, #0 + mov r1, #5 + mov r2, #0xa + bl MOD59_021D7C10 + ldr r3, [r5] + mov r0, #5 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + mov r0, #1 + str r0, [sp] + mov r3, #0x32 + ldr r0, [r5, #0x18] + mov r1, #5 + add r2, r4, #0 + lsl r3, r3, #6 + bl FUN_02017E14 + mov r0, #5 + add r1, r6, #0 + mov r2, #0x20 + lsl r3, r0, #6 + bl FUN_02017FB4 + mov r0, #5 + ldr r1, _021D83F4 ; =0x021D9ED8 + mov r2, #0x20 + lsl r3, r0, #6 + bl FUN_02017FB4 + add r0, r6, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r7, #0 + bl FUN_02016A18 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D83EC: .word 0x000001BE +_021D83F0: .word 0x021D9FE8 +_021D83F4: .word 0x021D9ED8 + thumb_func_end MOD59_021D82A0 + + thumb_func_start MOD59_021D83F8 +MOD59_021D83F8: ; 0x021D83F8 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x26 + str r0, [sp, #0xc] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #6 + bl FUN_020068C8 + add r0, r4, #0 + mov r1, #6 + mov r2, #9 + bl MOD59_021D7C10 + mov r0, #0x60 + str r0, [sp] + ldr r0, [r4] + mov r1, #0x27 + str r0, [sp, #4] + mov r0, #0x7d + mov r2, #4 + mov r3, #0xe0 + bl FUN_02006930 + ldr r3, [r4] + mov r0, #6 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + mov r0, #0x20 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x1e + str r0, [sp, #0xc] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #6 + bl FUN_0200687C + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD59_021D83F8 + + thumb_func_start MOD59_021D8460 +MOD59_021D8460: ; 0x021D8460 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r6, #0 + cmp r2, #0 + bne _021D849C + ldr r0, [r5, #0x18] + bl FUN_02017B48 + cmp r0, #0 + beq _021D8498 + cmp r0, #0 + ldr r0, [r5, #0x18] + ble _021D848A + lsl r1, r4, #0x18 + lsr r1, r1, #0x18 + mov r2, #2 + mov r3, #4 + bl FUN_020179E0 + b _021D84E2 +_021D848A: + lsl r1, r4, #0x18 + lsr r1, r1, #0x18 + mov r2, #1 + mov r3, #4 + bl FUN_020179E0 + b _021D84E2 +_021D8498: + mov r6, #1 + b _021D84E2 +_021D849C: + cmp r2, #1 + bne _021D84C2 + ldr r0, [r5, #0x18] + bl FUN_02017B48 + add r1, r6, #0 + sub r1, #0x30 + cmp r0, r1 + beq _021D84BE + lsl r1, r4, #0x18 + ldr r0, [r5, #0x18] + lsr r1, r1, #0x18 + mov r2, #2 + mov r3, #4 + bl FUN_020179E0 + b _021D84E2 +_021D84BE: + mov r6, #1 + b _021D84E2 +_021D84C2: + cmp r2, #2 + bne _021D84E2 + ldr r0, [r5, #0x18] + bl FUN_02017B48 + cmp r0, #0 + beq _021D84E0 + lsl r1, r4, #0x18 + ldr r0, [r5, #0x18] + lsr r1, r1, #0x18 + mov r2, #1 + mov r3, #4 + bl FUN_020179E0 + b _021D84E2 +_021D84E0: + mov r6, #1 +_021D84E2: + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD59_021D8460 + + thumb_func_start MOD59_021D84E8 +MOD59_021D84E8: ; 0x021D84E8 + add r1, r0, #0 + mov r2, #0 + add r1, #0x8c + strb r2, [r1] + add r1, r0, #0 + add r1, #0x8d + strb r2, [r1] + add r1, r0, #0 + add r1, #0x8e + strb r2, [r1] + add r0, #0x8f + strb r2, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD59_021D84E8 + + thumb_func_start MOD59_021D8504 +MOD59_021D8504: ; 0x021D8504 + push {r3, r4, r5, lr} + sub sp, #0x30 + add r4, r0, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D858E + add r0, r4, #0 + add r0, #0x8d + ldrb r0, [r0] + cmp r0, #0 + beq _021D8526 + add r0, r4, #0 + add r0, #0x8d + ldrb r0, [r0] + sub r1, r0, #1 + b _021D8546 +_021D8526: + add r0, r4, #0 + add r0, #0x8c + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x8c + strb r1, [r0] + add r0, r4, #0 + add r0, #0x8c + ldrb r1, [r0] + mov r0, #3 + and r1, r0 + add r0, r4, #0 + add r0, #0x8c + strb r1, [r0] + mov r1, #4 +_021D8546: + add r0, r4, #0 + add r0, #0x8d + strb r1, [r0] + mov r0, #0xa + str r0, [sp] + ldr r0, _021D860C ; =0x04000050 + mov r1, #4 + mov r2, #8 + mov r3, #6 + bl G2x_SetBlendAlpha_ + ldr r5, _021D8610 ; =0x021D9DEC + add r3, sp, #0x20 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + add r1, r4, #0 + str r0, [sp, #0xc] + add r1, #0x8c + ldrb r1, [r1] + mov r0, #0x7d + mov r3, #1 + lsl r1, r1, #2 + ldr r1, [r2, r1] + ldr r2, [r4, #0x18] + bl FUN_0200687C + add sp, #0x30 + pop {r3, r4, r5, pc} +_021D858E: + add r0, r4, #0 + add r0, #0x8f + ldrb r0, [r0] + cmp r0, #0 + beq _021D85A2 + add r0, r4, #0 + add r0, #0x8f + ldrb r0, [r0] + sub r1, r0, #1 + b _021D85C2 +_021D85A2: + add r0, r4, #0 + add r0, #0x8e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x8e + strb r1, [r0] + add r0, r4, #0 + add r0, #0x8e + ldrb r1, [r0] + mov r0, #3 + and r1, r0 + add r0, r4, #0 + add r0, #0x8e + strb r1, [r0] + mov r1, #4 +_021D85C2: + add r0, r4, #0 + add r0, #0x8f + strb r1, [r0] + mov r0, #0xa + str r0, [sp] + ldr r0, _021D860C ; =0x04000050 + mov r1, #2 + mov r2, #8 + mov r3, #6 + bl G2x_SetBlendAlpha_ + ldr r5, _021D8614 ; =0x021D9DFC + add r3, sp, #0x10 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + add r1, r4, #0 + str r0, [sp, #0xc] + add r1, #0x8e + ldrb r1, [r1] + mov r0, #0x7d + mov r3, #2 + lsl r1, r1, #2 + ldr r1, [r2, r1] + ldr r2, [r4, #0x18] + bl FUN_0200687C + add sp, #0x30 + pop {r3, r4, r5, pc} + nop +_021D860C: .word 0x04000050 +_021D8610: .word 0x021D9DEC +_021D8614: .word 0x021D9DFC + thumb_func_end MOD59_021D8504 + + thumb_func_start MOD59_021D8618 +MOD59_021D8618: ; 0x021D8618 + ldr r0, _021D8620 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + bx lr + .align 2, 0 +_021D8620: .word 0x04000050 + thumb_func_end MOD59_021D8618 + + thumb_func_start MOD59_021D8624 +MOD59_021D8624: ; 0x021D8624 + add r1, r0, #0 + mov r2, #0 + add r1, #0x94 + str r2, [r1] + add r0, #0x98 + str r2, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD59_021D8624 + + thumb_func_start MOD59_021D8634 +MOD59_021D8634: ; 0x021D8634 + push {r4, r5, r6, lr} + sub sp, #0x40 + add r3, r0, #0 + add r0, #0x98 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + beq _021D864E + add r0, r3, #0 + add r0, #0x98 + ldr r0, [r0] + sub r1, r0, #1 + b _021D865E +_021D864E: + add r0, r3, #0 + add r0, #0x94 + ldr r0, [r0] + add r1, r0, #1 + add r0, r3, #0 + add r0, #0x94 + str r1, [r0] + mov r1, #8 +_021D865E: + add r0, r3, #0 + add r0, #0x98 + str r1, [r0] + add r0, r3, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D8674 + ldr r6, _021D86B4 ; =0x021D9E88 + add r5, sp, #0x28 + b _021D8678 +_021D8674: + ldr r6, _021D86B8 ; =0x021D9E70 + add r5, sp, #0x10 +_021D8678: + add r2, r5, #0 + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + add r0, r3, #0 + add r0, #0x94 + ldr r0, [r0] + lsl r0, r0, #2 + ldr r1, [r2, r0] + cmp r1, #0xff + bne _021D8698 + mov r4, #1 + b _021D86AE +_021D8698: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r3] + str r0, [sp, #0xc] + ldr r2, [r3, #0x18] + mov r0, #0x7d + mov r3, #1 + bl FUN_0200687C +_021D86AE: + add r0, r4, #0 + add sp, #0x40 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D86B4: .word 0x021D9E88 +_021D86B8: .word 0x021D9E70 + thumb_func_end MOD59_021D8634 + + thumb_func_start MOD59_021D86BC +MOD59_021D86BC: ; 0x021D86BC + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r4, r0, #0 + ldr r0, [r6] + mov r7, #0 + cmp r0, #5 + bls _021D86CC + b _021D890A +_021D86CC: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D86D8: ; jump table + .short _021D86E4 - _021D86D8 - 2 ; case 0 + .short _021D8728 - _021D86D8 - 2 ; case 1 + .short _021D87A6 - _021D86D8 - 2 ; case 2 + .short _021D87E0 - _021D86D8 - 2 ; case 3 + .short _021D887C - _021D86D8 - 2 ; case 4 + .short _021D88F8 - _021D86D8 - 2 ; case 5 +_021D86E4: + ldr r0, [r4, #0x18] + mov r1, #2 + add r2, r7, #0 + add r3, r7, #0 + bl FUN_020179E0 + mov r2, #3 + add r3, r2, #0 + ldr r0, [r4, #0x18] + mov r1, #2 + sub r3, #0x6b + bl FUN_020179E0 + mov r0, #2 + add r1, r7, #0 + bl FUN_020178BC + mov r0, #5 + mov r1, #1 + bl FUN_0201797C + add r0, r4, #0 + add r2, r7, #0 + add r0, #0xa8 + str r2, [r0] + add r0, r4, #0 + mov r1, #8 + add r0, #0xac + str r1, [r0] + add r4, #0xb0 + str r2, [r4] + mov r0, #1 + str r0, [r6] + b _021D890A +_021D8728: + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02017B48 + ldr r0, [r4, #0x18] + mov r1, #5 + bl FUN_02017B54 + add r1, r4, #0 + add r1, #0xb0 + ldr r3, [r1] + add r1, r4, #0 + add r1, #0xac + ldr r2, [r1] + lsl r1, r2, #3 + add r1, r2, r1 + add r2, r3, #0 + mul r2, r1 + lsl r1, r3, #3 + add r1, r3, r1 + mul r1, r3 + lsr r3, r1, #0x1f + add r3, r1, r3 + asr r1, r3, #1 + sub r5, r2, r1 + cmp r0, #0x58 + bge _021D8792 + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + mov r2, #1 + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xb0 + str r1, [r0] + mov r1, #2 + ldr r0, [r4, #0x18] + add r3, r1, #0 + bl FUN_020179E0 + ldr r0, [r4, #0x18] + mov r1, #5 + mov r2, #1 + mov r3, #2 + bl FUN_020179E0 + ldr r0, [r4, #0x18] + mov r1, #5 + mov r2, #3 + add r3, r5, #0 + bl FUN_020179E0 + b _021D890A +_021D8792: + mov r0, #5 + add r1, r7, #0 + bl FUN_0201797C + mov r0, #0x1e + add r4, #0xb0 + str r0, [r4] + mov r0, #2 + str r0, [r6] + b _021D890A +_021D87A6: + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + cmp r0, #0 + beq _021D87BE + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + add r4, #0xb0 + sub r0, r0, #1 + str r0, [r4] + b _021D890A +_021D87BE: + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + add r0, r4, #0 + add r2, r7, #0 + add r0, #0xa8 + str r2, [r0] + add r0, r4, #0 + mov r1, #9 + add r0, #0xac + str r1, [r0] + add r4, #0xb0 + str r2, [r4] + mov r0, #3 + str r0, [r6] + b _021D890A +_021D87E0: + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02017B48 + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02017B54 + add r0, r4, #0 + add r0, #0xb0 + ldr r1, [r0] + add r0, r4, #0 + add r0, #0xac + ldr r2, [r0] + lsl r0, r2, #3 + add r0, r2, r0 + lsl r2, r1, #3 + add r2, r1, r2 + mul r0, r1 + mul r2, r1 + lsr r1, r2, #0x1f + add r1, r2, r1 + sub r0, #0x68 + asr r1, r1, #1 + sub r5, r0, r1 + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + ble _021D8846 + cmp r5, #0 + bgt _021D8846 + ldr r0, [r4, #0x18] + mov r1, #2 + mov r2, #3 + add r3, r7, #0 + bl FUN_020179E0 + add r0, r4, #0 + add r2, r7, #0 + add r0, #0xa8 + str r2, [r0] + add r0, r4, #0 + mov r1, #1 + add r0, #0xac + str r1, [r0] + add r4, #0xb0 + str r2, [r4] + mov r0, #4 + str r0, [r6] + b _021D890A +_021D8846: + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + mov r2, #1 + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xb0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xa8 + str r5, [r0] + ldr r0, [r4, #0x18] + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 + asr r5, r5, #1 + cmp r5, #0x90 + ble _021D886E + mov r5, #0x90 +_021D886E: + ldr r0, [r4, #0x18] + mov r1, #2 + mov r2, #3 + add r3, r5, #0 + bl FUN_020179E0 + b _021D890A +_021D887C: + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02017B48 + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02017B54 + add r0, r4, #0 + add r0, #0xb0 + ldr r1, [r0] + add r0, r4, #0 + add r0, #0xac + ldr r2, [r0] + lsl r0, r2, #3 + add r0, r2, r0 + lsl r2, r1, #3 + add r2, r1, r2 + mul r2, r1 + mul r0, r1 + lsr r1, r2, #0x1f + add r1, r2, r1 + asr r1, r1, #1 + sub r5, r0, r1 + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + ble _021D88CC + cmp r5, #0 + bgt _021D88CC + ldr r0, [r4, #0x18] + mov r1, #2 + mov r2, #3 + add r3, r7, #0 + bl FUN_020179E0 + mov r0, #5 + str r0, [r6] + b _021D890A +_021D88CC: + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + mov r2, #1 + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xb0 + str r1, [r0] + mov r1, #2 + ldr r0, [r4, #0x18] + add r3, r1, #0 + bl FUN_020179E0 + ldr r0, [r4, #0x18] + mov r1, #2 + mov r2, #3 + add r3, r5, #0 + bl FUN_020179E0 + add r4, #0xa8 + str r5, [r4] + b _021D890A +_021D88F8: + ldr r0, _021D8910 ; =0x000001BE + bl FUN_02005578 + add r0, r4, #0 + mov r1, #2 + mov r2, #8 + bl MOD59_021D7C10 + mov r7, #1 +_021D890A: + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8910: .word 0x000001BE + thumb_func_end MOD59_021D86BC + + thumb_func_start MOD59_021D8914 +MOD59_021D8914: ; 0x021D8914 + ldr r3, _021D891C ; =0x020178BD + mov r0, #2 + mov r1, #1 + bx r3 + .align 2, 0 +_021D891C: .word 0x020178BD + thumb_func_end MOD59_021D8914 + + thumb_func_start MOD59_021D8920 +MOD59_021D8920: ; 0x021D8920 + push {r4, r5, r6, lr} + sub sp, #0x30 + add r4, r0, #0 + ldr r1, [r4, #0xc] + mov r5, #0 + cmp r1, #0x6d + bls _021D8932 + bl _021D985C +_021D8932: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D893E: ; jump table + .short _021D8A1A - _021D893E - 2 ; case 0 + .short _021D8A5A - _021D893E - 2 ; case 1 + .short _021D8A76 - _021D893E - 2 ; case 2 + .short _021D8A92 - _021D893E - 2 ; case 3 + .short _021D8ADE - _021D893E - 2 ; case 4 + .short _021D8AEE - _021D893E - 2 ; case 5 + .short _021D8B02 - _021D893E - 2 ; case 6 + .short _021D8B16 - _021D893E - 2 ; case 7 + .short _021D8B60 - _021D893E - 2 ; case 8 + .short _021D8B80 - _021D893E - 2 ; case 9 + .short _021D8BA0 - _021D893E - 2 ; case 10 + .short _021D8BD8 - _021D893E - 2 ; case 11 + .short _021D8BE8 - _021D893E - 2 ; case 12 + .short _021D8C02 - _021D893E - 2 ; case 13 + .short _021D8C16 - _021D893E - 2 ; case 14 + .short _021D8C30 - _021D893E - 2 ; case 15 + .short _021D8C44 - _021D893E - 2 ; case 16 + .short _021D8C5E - _021D893E - 2 ; case 17 + .short _021D8C72 - _021D893E - 2 ; case 18 + .short _021D8C98 - _021D893E - 2 ; case 19 + .short _021D8CA8 - _021D893E - 2 ; case 20 + .short _021D8CBC - _021D893E - 2 ; case 21 + .short _021D8CF8 - _021D893E - 2 ; case 22 + .short _021D8D1C - _021D893E - 2 ; case 23 + .short _021D8D3E - _021D893E - 2 ; case 24 + .short _021D8D7C - _021D893E - 2 ; case 25 + .short _021D8D94 - _021D893E - 2 ; case 26 + .short _021D8DD6 - _021D893E - 2 ; case 27 + .short _021D8DEA - _021D893E - 2 ; case 28 + .short _021D8E34 - _021D893E - 2 ; case 29 + .short _021D8E44 - _021D893E - 2 ; case 30 + .short _021D8E58 - _021D893E - 2 ; case 31 + .short _021D8E90 - _021D893E - 2 ; case 32 + .short _021D8EA0 - _021D893E - 2 ; case 33 + .short _021D8EBE - _021D893E - 2 ; case 34 + .short _021D8ED6 - _021D893E - 2 ; case 35 + .short _021D8EF0 - _021D893E - 2 ; case 36 + .short _021D8F0A - _021D893E - 2 ; case 37 + .short _021D8F24 - _021D893E - 2 ; case 38 + .short _021D8F3E - _021D893E - 2 ; case 39 + .short _021D8F5E - _021D893E - 2 ; case 40 + .short _021D8F7E - _021D893E - 2 ; case 41 + .short _021D8F92 - _021D893E - 2 ; case 42 + .short _021D8FA6 - _021D893E - 2 ; case 43 + .short _021D8FC6 - _021D893E - 2 ; case 44 + .short _021D900C - _021D893E - 2 ; case 45 + .short _021D901C - _021D893E - 2 ; case 46 + .short _021D9030 - _021D893E - 2 ; case 47 + .short _021D9062 - _021D893E - 2 ; case 48 + .short _021D90CE - _021D893E - 2 ; case 49 + .short _021D90E2 - _021D893E - 2 ; case 50 + .short _021D9106 - _021D893E - 2 ; case 51 + .short _021D913E - _021D893E - 2 ; case 52 + .short _021D9178 - _021D893E - 2 ; case 53 + .short _021D9192 - _021D893E - 2 ; case 54 + .short _021D91E4 - _021D893E - 2 ; case 55 + .short _021D9208 - _021D893E - 2 ; case 56 + .short _021D921A - _021D893E - 2 ; case 57 + .short _021D922A - _021D893E - 2 ; case 58 + .short _021D9244 - _021D893E - 2 ; case 59 + .short _021D925C - _021D893E - 2 ; case 60 + .short _021D926C - _021D893E - 2 ; case 61 + .short _021D927E - _021D893E - 2 ; case 62 + .short _021D9290 - _021D893E - 2 ; case 63 + .short _021D92CA - _021D893E - 2 ; case 64 + .short _021D92DC - _021D893E - 2 ; case 65 + .short _021D92EE - _021D893E - 2 ; case 66 + .short _021D930A - _021D893E - 2 ; case 67 + .short _021D9384 - _021D893E - 2 ; case 68 + .short _021D9396 - _021D893E - 2 ; case 69 + .short _021D93AE - _021D893E - 2 ; case 70 + .short _021D93C0 - _021D893E - 2 ; case 71 + .short _021D93D8 - _021D893E - 2 ; case 72 + .short _021D93F8 - _021D893E - 2 ; case 73 + .short _021D942A - _021D893E - 2 ; case 74 + .short _021D944A - _021D893E - 2 ; case 75 + .short _021D945C - _021D893E - 2 ; case 76 + .short _021D9476 - _021D893E - 2 ; case 77 + .short _021D94DE - _021D893E - 2 ; case 78 + .short _021D94EC - _021D893E - 2 ; case 79 + .short _021D950C - _021D893E - 2 ; case 80 + .short _021D954E - _021D893E - 2 ; case 81 + .short _021D956E - _021D893E - 2 ; case 82 + .short _021D9586 - _021D893E - 2 ; case 83 + .short _021D9598 - _021D893E - 2 ; case 84 + .short _021D95AA - _021D893E - 2 ; case 85 + .short _021D95BC - _021D893E - 2 ; case 86 + .short _021D95D4 - _021D893E - 2 ; case 87 + .short _021D95E6 - _021D893E - 2 ; case 88 + .short _021D95F8 - _021D893E - 2 ; case 89 + .short _021D960A - _021D893E - 2 ; case 90 + .short _021D9672 - _021D893E - 2 ; case 91 + .short _021D9684 - _021D893E - 2 ; case 92 + .short _021D9696 - _021D893E - 2 ; case 93 + .short _021D96DE - _021D893E - 2 ; case 94 + .short _021D96EC - _021D893E - 2 ; case 95 + .short _021D96FE - _021D893E - 2 ; case 96 + .short _021D9738 - _021D893E - 2 ; case 97 + .short _021D974C - _021D893E - 2 ; case 98 + .short _021D9764 - _021D893E - 2 ; case 99 + .short _021D9788 - _021D893E - 2 ; case 100 + .short _021D9798 - _021D893E - 2 ; case 101 + .short _021D97B2 - _021D893E - 2 ; case 102 + .short _021D97CC - _021D893E - 2 ; case 103 + .short _021D97DC - _021D893E - 2 ; case 104 + .short _021D9812 - _021D893E - 2 ; case 105 + .short _021D982A - _021D893E - 2 ; case 106 + .short _021D983A - _021D893E - 2 ; case 107 + .short _021D9848 - _021D893E - 2 ; case 108 + .short _021D985A - _021D893E - 2 ; case 109 +_021D8A1A: + ldr r1, _021D8D70 ; =0x00000405 + mov r0, #2 + mov r2, #1 + bl FUN_0200433C + ldr r0, _021D8D70 ; =0x00000405 + add r1, r5, #0 + bl FUN_02005350 + add r0, r5, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #7 + mov r1, #1 + bl FUN_0201797C + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #1 + str r0, [r4, #0xc] + bl _021D985C +_021D8A5A: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8B22 + add r0, r4, #0 + mov r1, #0x28 + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D8B22 + mov r0, #2 + str r0, [r4, #0xc] + bl _021D985C +_021D8A76: + add r1, r5, #0 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8B22 + mov r0, #3 + str r0, [r4, #0xc] + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + bl _021D985C +_021D8A92: + ldr r0, _021D8D70 ; =0x00000405 + bl FUN_0200521C + add r0, r4, #0 + mov r1, #1 + add r0, #0x89 + strb r1, [r0] + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x8a + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8140 + mov r0, #3 + mov r1, #1 + bl FUN_0201797C + mov r0, #1 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #0x10 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r4] + mov r1, #1 + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r5, #0 + bl FUN_0200E1D0 + mov r0, #4 + str r0, [r4, #0xc] + bl _021D985C +_021D8ADE: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8B22 + mov r0, #5 + str r0, [r4, #0xc] + bl _021D985C +_021D8AEE: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8B22 + mov r0, #6 + str r0, [r4, #0xc] + bl _021D985C +_021D8B02: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D8B22 + mov r0, #7 + str r0, [r4, #0xc] + bl _021D985C +_021D8B16: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7D7C + cmp r0, #1 + beq _021D8B26 +_021D8B22: + bl _021D985C +_021D8B26: + ldr r0, [r4, #0x48] + cmp r0, #1 + beq _021D8B38 + cmp r0, #2 + beq _021D8B44 + cmp r0, #3 + beq _021D8B58 + bl _021D985C +_021D8B38: + mov r0, #0xa + str r0, [r4, #0x10] + mov r0, #8 + str r0, [r4, #0xc] + bl _021D985C +_021D8B44: + mov r0, #0x1f + str r0, [r4, #0x10] + mov r0, #8 + str r0, [r4, #0xc] + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + bl _021D985C +_021D8B58: + mov r0, #0x29 + str r0, [r4, #0xc] + bl _021D985C +_021D8B60: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, r5, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r2, r5, #0 + add r3, r5, #0 + bl FUN_0200E1D0 + mov r0, #9 + str r0, [r4, #0xc] + bl _021D985C +_021D8B80: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8C84 + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + mov r0, #1 + add r1, r5, #0 + bl FUN_0201797C + ldr r0, [r4, #0x10] + str r0, [r4, #0xc] + bl _021D985C +_021D8BA0: + add r1, r4, #0 + mov r2, #1 + add r1, #0x88 + strb r2, [r1] + bl MOD59_021D80FC + add r0, r4, #0 + mov r1, #1 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0xb + str r0, [r4, #0xc] + bl _021D985C +_021D8BD8: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8C84 + mov r0, #0xc + str r0, [r4, #0xc] + bl _021D985C +_021D8BE8: + mov r1, #0x12 + str r1, [sp] + mov r1, #2 + add r2, r5, #0 + mov r3, #3 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8C84 + mov r0, #0xd + str r0, [r4, #0xc] + bl _021D985C +_021D8C02: + add r1, r4, #0 + mov r2, #2 + add r1, #0x88 + strb r2, [r1] + bl MOD59_021D80FC + mov r0, #0xe + str r0, [r4, #0xc] + bl _021D985C +_021D8C16: + mov r1, #0xc + str r1, [sp] + mov r1, #3 + add r2, r5, #0 + mov r3, #7 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8C84 + mov r0, #0xf + str r0, [r4, #0xc] + bl _021D985C +_021D8C30: + add r1, r4, #0 + mov r2, #3 + add r1, #0x88 + strb r2, [r1] + bl MOD59_021D80FC + mov r0, #0x10 + str r0, [r4, #0xc] + bl _021D985C +_021D8C44: + mov r1, #0xc + str r1, [sp] + mov r1, #4 + add r2, r5, #0 + add r3, r1, #0 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8C84 + mov r0, #0x11 + str r0, [r4, #0xc] + bl _021D985C +_021D8C5E: + mov r1, #6 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8C84 + mov r0, #0x12 + str r0, [r4, #0xc] + bl _021D985C +_021D8C72: + mov r1, #0xa + str r1, [sp] + mov r1, #5 + add r2, r5, #0 + mov r3, #4 + bl MOD59_021D7ECC + cmp r0, #1 + beq _021D8C88 +_021D8C84: + bl _021D985C +_021D8C88: + mov r0, #0x13 + str r0, [r4, #0xc] + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + bl _021D985C +_021D8C98: + add r0, r5, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #0x14 + str r0, [r4, #0xc] + bl _021D985C +_021D8CA8: + mov r1, #7 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8DA0 + mov r0, #0x15 + str r0, [r4, #0xc] + bl _021D985C +_021D8CBC: + ldr r6, _021D8D74 ; =0x021D9E44 + add r3, sp, #0x1c + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x18] + str r0, [sp, #0x1c] + ldr r0, [r4, #0x68] + bl FUN_020145C8 + mov r0, #6 + mov r1, #1 + bl FUN_0201797C + add r0, r4, #0 + mov r1, #3 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #0x16 + str r0, [r4, #0xc] + bl _021D985C +_021D8CF8: + ldr r0, _021D8D78 ; =0x021C48B8 + ldr r0, [r0, #0x48] + cmp r0, #0 + beq _021D8D08 + mov r0, #0x1b + str r0, [r4, #0xc] + bl _021D985C +_021D8D08: + ldr r0, [r4, #0x68] + bl FUN_02014630 + sub r0, r0, #3 + cmp r0, #1 + bhi _021D8DA0 + mov r0, #0x17 + str r0, [r4, #0xc] + bl _021D985C +_021D8D1C: + ldr r0, [r4, #0x68] + bl FUN_02014630 + cmp r0, #1 + beq _021D8D2E + cmp r0, #2 + beq _021D8D36 + bl _021D985C +_021D8D2E: + mov r0, #0x18 + str r0, [r4, #0xc] + bl _021D985C +_021D8D36: + mov r0, #0x1a + str r0, [r4, #0xc] + bl _021D985C +_021D8D3E: + mov r1, #6 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D8DA0 + ldr r0, [r4, #0x68] + bl FUN_020146C4 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + str r0, [sp, #8] + add r0, r5, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0x19 + str r0, [r4, #0xc] + bl _021D985C + .align 2, 0 +_021D8D70: .word 0x00000405 +_021D8D74: .word 0x021D9E44 +_021D8D78: .word 0x021C48B8 +_021D8D7C: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8DA0 + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + mov r0, #0x1c + str r0, [r4, #0xc] + bl _021D985C +_021D8D94: + mov r1, #6 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + beq _021D8DA4 +_021D8DA0: + bl _021D985C +_021D8DA4: + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + ldr r0, [r4, #0x68] + bl FUN_020146C4 + add r0, r4, #0 + mov r1, #1 + add r0, #0x88 + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D80FC + add r0, r4, #0 + mov r1, #1 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #0xc + str r0, [r4, #0xc] + bl _021D985C +_021D8DD6: + mov r1, #8 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8EB2 + mov r0, #0x16 + str r0, [r4, #0xc] + bl _021D985C +_021D8DEA: + add r1, r4, #0 + add r1, #0x88 + strb r5, [r1] + bl MOD59_021D80FC + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201797C + add r2, r5, #0 + ldr r0, [r4, #0x18] + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0x1d + str r0, [r4, #0xc] + bl _021D985C +_021D8E34: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8EB2 + mov r0, #0x1e + str r0, [r4, #0xc] + bl _021D985C +_021D8E44: + mov r1, #9 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8EB2 + mov r0, #6 + str r0, [r4, #0xc] + bl _021D985C +_021D8E58: + add r1, r4, #0 + mov r2, #4 + add r1, #0x88 + strb r2, [r1] + bl MOD59_021D80FC + add r0, r4, #0 + mov r1, #2 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0x20 + str r0, [r4, #0xc] + bl _021D985C +_021D8E90: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8EB2 + mov r0, #0x21 + str r0, [r4, #0xc] + bl _021D985C +_021D8EA0: + mov r1, #6 + str r1, [sp] + mov r1, #0xa + mov r2, #1 + mov r3, #9 + bl MOD59_021D7ECC + cmp r0, #1 + beq _021D8EB6 +_021D8EB2: + bl _021D985C +_021D8EB6: + mov r0, #0x22 + str r0, [r4, #0xc] + bl _021D985C +_021D8EBE: + mov r3, #8 + mov r1, #0xb + mov r2, #1 + str r3, [sp] + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8FCE + mov r0, #0x23 + str r0, [r4, #0xc] + bl _021D985C +_021D8ED6: + mov r1, #6 + str r1, [sp] + mov r1, #0xc + mov r2, #1 + mov r3, #9 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8FCE + mov r0, #0x24 + str r0, [r4, #0xc] + bl _021D985C +_021D8EF0: + mov r1, #0xe + str r1, [sp] + mov r1, #0xd + mov r2, #1 + mov r3, #5 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8FCE + mov r0, #0x25 + str r0, [r4, #0xc] + bl _021D985C +_021D8F0A: + mov r1, #4 + str r1, [sp] + mov r1, #0xe + mov r2, #1 + mov r3, #0xa + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8FCE + mov r0, #0x26 + str r0, [r4, #0xc] + bl _021D985C +_021D8F24: + mov r1, #0xc + str r1, [sp] + mov r1, #0xf + mov r2, #1 + mov r3, #6 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8FCE + mov r0, #0x27 + str r0, [r4, #0xc] + bl _021D985C +_021D8F3E: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, r5, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r2, r5, #0 + add r3, r5, #0 + bl FUN_0200E1D0 + mov r0, #0x28 + str r0, [r4, #0xc] + bl _021D985C +_021D8F5E: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8FCE + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + add r0, r5, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #0x1c + str r0, [r4, #0xc] + bl _021D985C +_021D8F7E: + mov r1, #1 + mov r2, #2 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D8FCE + mov r0, #0x2a + str r0, [r4, #0xc] + bl _021D985C +_021D8F92: + mov r1, #0x10 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8FCE + mov r0, #0x2b + str r0, [r4, #0xc] + bl _021D985C +_021D8FA6: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, r5, #0 + str r0, [sp, #8] + mov r0, #4 + add r2, r5, #0 + add r3, r5, #0 + bl FUN_0200E1D0 + mov r0, #0x2c + str r0, [r4, #0xc] + bl _021D985C +_021D8FC6: + bl FUN_0200E308 + cmp r0, #1 + beq _021D8FD2 +_021D8FCE: + bl _021D985C +_021D8FD2: + add r0, r4, #0 + bl MOD59_021D83F8 + add r0, r4, #0 + mov r1, #4 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #6 + mov r1, #1 + bl FUN_0201797C + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + mov r0, #4 + add r3, r5, #0 + bl FUN_0200E1D0 + mov r0, #0x2d + str r0, [r4, #0xc] + bl _021D985C +_021D900C: + bl FUN_0200E308 + cmp r0, #1 + bne _021D90DA + mov r0, #0x2e + str r0, [r4, #0xc] + bl _021D985C +_021D901C: + mov r1, #0x11 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D90DA + mov r0, #0x2f + str r0, [r4, #0xc] + bl _021D985C +_021D9030: + bl MOD59_021D7730 + cmp r0, #1 + bne _021D9054 + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x94 + str r1, [r0] + add r0, r4, #0 + add r0, #0x98 + str r1, [r0] + ldr r0, [r4, #0x18] + bl FUN_02018744 + mov r0, #0x30 + str r0, [r4, #0xc] + bl _021D985C +_021D9054: + ldr r0, _021D9370 ; =0x021C48B8 + ldr r0, [r0, #0x48] + cmp r0, #0 + beq _021D90DA + mov r0, #0x31 + str r0, [r4, #0xc] + b _021D985C +_021D9062: + add r0, #0x98 + ldr r0, [r0] + cmp r0, #0 + beq _021D9078 + add r0, r4, #0 + add r0, #0x98 + ldr r0, [r0] + add r4, #0x98 + sub r0, r0, #1 + str r0, [r4] + b _021D985C +_021D9078: + ldr r6, _021D9374 ; =0x021D9DC0 + add r3, sp, #0x10 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + add r0, r4, #0 + add r0, #0x94 + ldr r0, [r0] + lsl r0, r0, #2 + ldr r1, [r2, r0] + ldr r0, _021D9378 ; =0x0000FFFF + cmp r1, r0 + bne _021D90A2 + ldr r0, _021D937C ; =0x00000706 + bl FUN_020054C8 + mov r0, #0x32 + str r0, [r4, #0xc] + b _021D985C +_021D90A2: + mov r0, #0x20 + str r0, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + ldr r0, [r4] + mov r3, #6 + str r0, [sp, #0xc] + ldr r2, [r4, #0x18] + mov r0, #0x7d + bl FUN_0200687C + add r0, r4, #0 + add r0, #0x94 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x94 + str r1, [r0] + mov r0, #4 + add r4, #0x98 + str r0, [r4] + b _021D985C +_021D90CE: + mov r1, #0x12 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + beq _021D90DC +_021D90DA: + b _021D985C +_021D90DC: + mov r0, #0x2f + str r0, [r4, #0xc] + b _021D985C +_021D90E2: + mov r0, #1 + mov r1, #0x10 + add r2, r5, #0 + mov r3, #0xb + str r0, [sp] + bl FUN_0200A208 + mov r0, #2 + str r0, [sp] + mov r0, #1 + mov r1, #0x10 + add r2, r5, #0 + mov r3, #0xd + bl FUN_0200A208 + mov r0, #0x33 + str r0, [r4, #0xc] + b _021D985C +_021D9106: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #2 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #1 + add r1, r5, #0 + mov r2, #0x10 + mov r3, #0xb + str r0, [sp] + bl FUN_0200A208 + mov r0, #2 + str r0, [sp] + mov r0, #1 + add r1, r5, #0 + mov r2, #0x10 + mov r3, #0xd + bl FUN_0200A208 + mov r0, #0x34 + str r0, [r4, #0xc] + b _021D985C +_021D913E: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #2 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #1 + str r0, [sp] + mov r0, #4 + mov r1, #0x10 + add r2, r5, #0 + mov r3, #0xb + bl FUN_0200A208 + mov r0, #2 + str r0, [sp] + mov r0, #4 + mov r1, #0x10 + add r2, r5, #0 + mov r3, #0xd + bl FUN_0200A208 + mov r0, #0x35 + str r0, [r4, #0xc] + b _021D985C +_021D9178: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #2 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #0x36 + str r0, [r4, #0xc] + b _021D985C +_021D9192: + bl MOD59_021D82A0 + mov r0, #6 + add r1, r5, #0 + bl FUN_0201797C + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x94 + str r1, [r0] + add r1, r4, #0 + add r0, r4, #0 + add r1, #0x94 + bl MOD59_021D86BC + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #1 + str r0, [sp] + mov r0, #0x10 + add r1, r5, #0 + add r2, r0, #0 + mov r3, #0xb + bl FUN_0200A208 + mov r0, #2 + str r0, [sp] + mov r0, #0x10 + add r1, r5, #0 + add r2, r0, #0 + mov r3, #0xd + bl FUN_0200A208 + mov r0, #0x37 + str r0, [r4, #0xc] + b _021D985C +_021D91E4: + add r1, r4, #0 + add r1, #0x94 + bl MOD59_021D86BC + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + beq _021D91F8 +_021D91F6: + b _021D985C +_021D91F8: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #1 + bne _021D92FA + mov r0, #0x38 + str r0, [r4, #0xc] + b _021D985C +_021D9208: + add r1, r4, #0 + add r1, #0x94 + bl MOD59_021D86BC + cmp r0, #1 + bne _021D92FA + mov r0, #0x39 + str r0, [r4, #0xc] + b _021D985C +_021D921A: + mov r1, #0x28 + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D92FA + mov r0, #0x3a + str r0, [r4, #0xc] + b _021D985C +_021D922A: + mov r1, #0x13 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D92FA + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + mov r0, #0x3b + str r0, [r4, #0xc] + b _021D985C +_021D9244: + mov r1, #2 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D92FA + add r0, r4, #0 + bl MOD59_021D8914 + mov r0, #0x3c + str r0, [r4, #0xc] + b _021D985C +_021D925C: + mov r1, #0x1e + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D92FA + mov r0, #0x3d + str r0, [r4, #0xc] + b _021D985C +_021D926C: + mov r1, #0x14 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D92FA + mov r0, #0x3e + str r0, [r4, #0xc] + b _021D985C +_021D927E: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D92FA + mov r0, #0x3f + str r0, [r4, #0xc] + b _021D985C +_021D9290: + bl MOD59_021D84E8 + add r0, r4, #0 + mov r1, #2 + add r0, #0x89 + strb r1, [r0] + add r0, r4, #0 + mov r1, #6 + add r0, #0x8a + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8140 + add r2, r5, #0 + add r3, r2, #0 + ldr r0, [r4, #0x18] + mov r1, #1 + sub r3, #0x30 + bl FUN_020179E0 + ldr r0, [r4, #0x18] + mov r1, #2 + add r2, r5, #0 + mov r3, #0x30 + bl FUN_020179E0 + mov r0, #0x40 + str r0, [r4, #0xc] + b _021D985C +_021D92CA: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D92FA + mov r0, #0x41 + str r0, [r4, #0xc] + b _021D985C +_021D92DC: + mov r1, #2 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D92FA + mov r0, #0x42 + str r0, [r4, #0xc] + b _021D985C +_021D92EE: + mov r1, #0x15 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + beq _021D92FC +_021D92FA: + b _021D985C +_021D92FC: + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x84 + str r1, [r0] + mov r0, #0x43 + str r0, [r4, #0xc] + b _021D985C +_021D930A: + ldr r0, _021D9370 ; =0x021C48B8 + mov r1, #1 + ldr r0, [r0, #0x48] + and r1, r0 + cmp r1, #1 + bne _021D933C + mov r0, #6 + str r0, [r4, #0x7c] + add r0, r4, #0 + mov r1, #0xa + add r0, #0x80 + str r1, [r0] + mov r0, #2 + str r0, [r4, #0x78] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D9336 + mov r0, #0x44 + str r0, [r4, #0xc] + b _021D985C +_021D9336: + mov r0, #0x46 + str r0, [r4, #0xc] + b _021D985C +_021D933C: + mov r1, #0x20 + and r1, r0 + cmp r1, #0x20 + beq _021D934C + mov r1, #0x10 + and r0, r1 + cmp r0, #0x10 + bne _021D9368 +_021D934C: + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D935A + mov r1, #1 + b _021D935C +_021D935A: + mov r1, #0 +_021D935C: + add r0, r4, #0 + add r0, #0x84 + str r1, [r0] + ldr r0, _021D9380 ; =0x000005DC + bl FUN_020054C8 +_021D9368: + add r0, r4, #0 + bl MOD59_021D8504 + b _021D985C + .align 2, 0 +_021D9370: .word 0x021C48B8 +_021D9374: .word 0x021D9DC0 +_021D9378: .word 0x0000FFFF +_021D937C: .word 0x00000706 +_021D9380: .word 0x000005DC +_021D9384: + mov r1, #2 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9414 + mov r0, #0x45 + str r0, [r4, #0xc] + b _021D985C +_021D9396: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D9414 + add r0, r4, #0 + bl MOD59_021D8618 + mov r0, #0x48 + str r0, [r4, #0xc] + b _021D985C +_021D93AE: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9414 + mov r0, #0x47 + str r0, [r4, #0xc] + b _021D985C +_021D93C0: + mov r1, #2 + add r2, r5, #0 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D9414 + add r0, r4, #0 + bl MOD59_021D8618 + mov r0, #0x48 + str r0, [r4, #0xc] + b _021D985C +_021D93D8: + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D93E4 + mov r1, #0x16 + b _021D93E6 +_021D93E4: + mov r1, #0x17 +_021D93E6: + add r0, r4, #0 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D9414 + mov r0, #0x49 + str r0, [r4, #0xc] + b _021D985C +_021D93F8: + add r1, r5, #0 + add r2, r5, #0 + bl MOD59_021D7D7C + cmp r0, #1 + bne _021D9414 + ldr r1, [r4, #0x48] + sub r0, r5, #2 + cmp r1, r0 + beq _021D941C + cmp r1, #1 + beq _021D9416 + cmp r1, #2 + beq _021D941C +_021D9414: + b _021D985C +_021D9416: + mov r0, #0x4b + str r0, [r4, #0xc] + b _021D985C +_021D941C: + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_02018744 + mov r0, #0x4a + str r0, [r4, #0xc] + b _021D985C +_021D942A: + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D9436 + mov r1, #1 + b _021D9438 +_021D9436: + mov r1, #2 +_021D9438: + add r0, r4, #0 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9530 + mov r0, #0x3f + str r0, [r4, #0xc] + b _021D985C +_021D944A: + mov r1, #0x18 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D9530 + mov r0, #0x4c + str r0, [r4, #0xc] + b _021D985C +_021D945C: + add r0, #0x84 + ldr r1, [r0] + ldr r0, [r4, #0x70] + str r1, [r0, #4] + ldr r0, _021D9778 ; =0x020FA5FC + ldr r1, [r4, #0x70] + ldr r2, [r4] + bl FUN_02006234 + str r0, [r4, #0x14] + mov r0, #0x4d + str r0, [r4, #0xc] + b _021D985C +_021D9476: + add r0, r5, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #3 + mov r1, #1 + bl FUN_0201797C + mov r0, #7 + mov r1, #1 + bl FUN_0201797C + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D94AE + mov r0, #1 + add r1, r0, #0 + bl FUN_0201797C + add r2, r5, #0 + ldr r0, [r4, #0x18] + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + b _021D94C2 +_021D94AE: + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + add r2, r5, #0 + ldr r0, [r4, #0x18] + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 +_021D94C2: + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + mov r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0x4e + str r0, [r4, #0xc] + b _021D985C +_021D94DE: + bl FUN_0200E308 + cmp r0, #1 + bne _021D9530 + mov r0, #0x4f + str r0, [r4, #0xc] + b _021D985C +_021D94EC: + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D94F8 + mov r1, #0x19 + b _021D94FA +_021D94F8: + mov r1, #0x1a +_021D94FA: + add r0, r4, #0 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D9530 + mov r0, #0x50 + str r0, [r4, #0xc] + b _021D985C +_021D950C: + add r1, r5, #0 + add r2, r5, #0 + bl MOD59_021D7D7C + cmp r0, #1 + bne _021D9530 + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + ldr r1, [r4, #0x48] + sub r0, r5, #2 + cmp r1, r0 + beq _021D953C + cmp r1, #1 + beq _021D9532 + cmp r1, #2 + beq _021D953C +_021D9530: + b _021D985C +_021D9532: + mov r0, #0x52 + str r0, [r4, #0x10] + mov r0, #0x51 + str r0, [r4, #0xc] + b _021D985C +_021D953C: + ldr r0, [r4, #0x70] + ldr r0, [r0, #0x18] + bl FUN_02021A4C + mov r0, #0x3f + str r0, [r4, #0x10] + mov r0, #0x51 + str r0, [r4, #0xc] + b _021D985C +_021D954E: + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D955A + mov r1, #1 + b _021D955C +_021D955A: + mov r1, #2 +_021D955C: + add r0, r4, #0 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9616 + ldr r0, [r4, #0x10] + str r0, [r4, #0xc] + b _021D985C +_021D956E: + add r1, r4, #0 + mov r2, #1 + add r1, #0x89 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x8a + strb r5, [r1] + bl MOD59_021D8140 + mov r0, #0x53 + str r0, [r4, #0xc] + b _021D985C +_021D9586: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9616 + mov r0, #0x54 + str r0, [r4, #0xc] + b _021D985C +_021D9598: + mov r1, #0x1b + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D9616 + mov r0, #0x55 + str r0, [r4, #0xc] + b _021D985C +_021D95AA: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9616 + mov r0, #0x56 + str r0, [r4, #0xc] + b _021D985C +_021D95BC: + add r1, r4, #0 + mov r2, #0xa + add r1, #0x89 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x8a + strb r5, [r1] + bl MOD59_021D8140 + mov r0, #0x57 + str r0, [r4, #0xc] + b _021D985C +_021D95D4: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9616 + mov r0, #0x58 + str r0, [r4, #0xc] + b _021D985C +_021D95E6: + mov r1, #0x1c + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D9616 + mov r0, #0x59 + str r0, [r4, #0xc] + b _021D985C +_021D95F8: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D9616 + mov r0, #0x5a + str r0, [r4, #0xc] + b _021D985C +_021D960A: + mov r1, #2 + mov r2, #1 + bl MOD59_021D7D7C + cmp r0, #1 + beq _021D9618 +_021D9616: + b _021D985C +_021D9618: + ldr r0, [r4, #0x48] + cmp r0, #5 + bhi _021D971A + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D962A: ; jump table + .short _021D985C - _021D962A - 2 ; case 0 + .short _021D9636 - _021D962A - 2 ; case 1 + .short _021D963C - _021D962A - 2 ; case 2 + .short _021D963C - _021D962A - 2 ; case 3 + .short _021D963C - _021D962A - 2 ; case 4 + .short _021D963C - _021D962A - 2 ; case 5 +_021D9636: + mov r0, #0x5c + str r0, [r4, #0xc] + b _021D985C +_021D963C: + ldr r1, _021D977C ; =0x020ECAC0 + ldrb r1, [r1] + cmp r1, #0xa + bne _021D964C + sub r0, r0, #1 + lsl r1, r0, #3 + ldr r0, _021D9780 ; =0x021D9F40 + b _021D9652 +_021D964C: + sub r0, r0, #1 + lsl r1, r0, #3 + ldr r0, _021D9784 ; =0x021D9F68 +_021D9652: + ldr r1, [r0, r1] + ldr r0, [r4, #0x4c] + bl FUN_0200A914 + add r6, r0, #0 + ldr r0, [r4, #0x74] + add r1, r6, #0 + ldr r0, [r0, #0x18] + bl FUN_02021A74 + add r0, r6, #0 + bl FUN_02021A20 + mov r0, #0x5b + str r0, [r4, #0xc] + b _021D985C +_021D9672: + mov r1, #1 + mov r2, #2 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D971A + mov r0, #0x5f + str r0, [r4, #0xc] + b _021D985C +_021D9684: + ldr r0, _021D9778 ; =0x020FA5FC + ldr r1, [r4, #0x74] + ldr r2, [r4] + bl FUN_02006234 + str r0, [r4, #0x14] + mov r0, #0x5d + str r0, [r4, #0xc] + b _021D985C +_021D9696: + add r0, r5, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #3 + mov r1, #1 + bl FUN_0201797C + mov r0, #7 + mov r1, #1 + bl FUN_0201797C + mov r0, #1 + add r1, r0, #0 + bl FUN_0201797C + add r2, r5, #0 + ldr r0, [r4, #0x18] + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0x5e + str r0, [r4, #0xc] + b _021D985C +_021D96DE: + bl FUN_0200E308 + cmp r0, #1 + bne _021D971A + mov r0, #0x5f + str r0, [r4, #0xc] + b _021D985C +_021D96EC: + mov r1, #0x1d + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D971A + mov r0, #0x60 + str r0, [r4, #0xc] + b _021D985C +_021D96FE: + add r1, r5, #0 + add r2, r5, #0 + bl MOD59_021D7D7C + cmp r0, #1 + bne _021D971A + ldr r1, [r4, #0x48] + sub r0, r5, #2 + cmp r1, r0 + beq _021D972A + cmp r1, #1 + beq _021D971C + cmp r1, #2 + beq _021D972A +_021D971A: + b _021D985C +_021D971C: + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + mov r0, #0x61 + str r0, [r4, #0xc] + b _021D985C +_021D972A: + ldr r0, [r4, #0x74] + ldr r0, [r0, #0x18] + bl FUN_02021A4C + mov r0, #0x58 + str r0, [r4, #0xc] + b _021D985C +_021D9738: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7A68 + cmp r0, #1 + beq _021D9746 + b _021D985C +_021D9746: + mov r0, #0x62 + str r0, [r4, #0xc] + b _021D985C +_021D974C: + add r1, r4, #0 + mov r2, #1 + add r1, #0x89 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x8a + strb r5, [r1] + bl MOD59_021D8140 + mov r0, #0x63 + str r0, [r4, #0xc] + b _021D985C +_021D9764: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D985C + mov r0, #0x64 + str r0, [r4, #0xc] + b _021D985C + nop +_021D9778: .word 0x020FA5FC +_021D977C: .word 0x020ECAC0 +_021D9780: .word 0x021D9F40 +_021D9784: .word 0x021D9F68 +_021D9788: + mov r1, #0x1e + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D985C + mov r0, #0x65 + str r0, [r4, #0xc] + b _021D985C +_021D9798: + mov r1, #0x1e + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D985C + add r0, r5, #0 + mov r1, #0x32 + bl FUN_020053CC + mov r0, #0x66 + str r0, [r4, #0xc] + b _021D985C +_021D97B2: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D985C + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + mov r0, #0x67 + str r0, [r4, #0xc] + b _021D985C +_021D97CC: + mov r1, #0x1e + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D985C + mov r0, #0x68 + str r0, [r4, #0xc] + b _021D985C +_021D97DC: + add r1, r4, #0 + add r1, #0x84 + ldr r1, [r1] + cmp r1, #0 + bne _021D97FA + add r1, r4, #0 + mov r2, #2 + add r1, #0x89 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x8a + strb r5, [r1] + bl MOD59_021D8140 + b _021D980C +_021D97FA: + add r1, r4, #0 + mov r2, #6 + add r1, #0x89 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x8a + strb r5, [r1] + bl MOD59_021D8140 +_021D980C: + mov r0, #0x69 + str r0, [r4, #0xc] + b _021D985C +_021D9812: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D985C + add r0, r4, #0 + bl MOD59_021D8624 + mov r0, #0x6a + str r0, [r4, #0xc] + b _021D985C +_021D982A: + mov r1, #0x1e + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D985C + mov r0, #0x6b + str r0, [r4, #0xc] + b _021D985C +_021D983A: + bl MOD59_021D8634 + cmp r0, #1 + bne _021D985C + mov r0, #0x6c + str r0, [r4, #0xc] + b _021D985C +_021D9848: + ldr r0, _021D9864 ; =0x021D9DDC + ldr r2, [r4] + add r1, r5, #0 + bl FUN_02006234 + str r0, [r4, #0x14] + mov r0, #0x6d + str r0, [r4, #0xc] + b _021D985C +_021D985A: + mov r5, #1 +_021D985C: + add r0, r5, #0 + add sp, #0x30 + pop {r4, r5, r6, pc} + nop +_021D9864: .word 0x021D9DDC + thumb_func_end MOD59_021D8920 + + thumb_func_start MOD59_021D9868 +MOD59_021D9868: ; 0x021D9868 + push {r4, lr} + mov r2, #1 + add r4, r0, #0 + mov r0, #3 + mov r1, #0x53 + lsl r2, r2, #0x12 + bl FUN_0201681C + add r0, r4, #0 + mov r1, #0x28 + mov r2, #0x53 + bl FUN_02006268 + mov r1, #0 + mov r2, #0x28 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x53 + str r0, [r4] + mov r0, #0 + str r0, [r4, #0x24] + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD59_021D9868 + + thumb_func_start MOD59_021D9898 +MOD59_021D9898: ; 0x021D9898 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + ldr r1, [r5] + add r4, r0, #0 + mov r6, #0 + cmp r1, #5 + bls _021D98AE + b _021D99E2 +_021D98AE: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D98BA: ; jump table + .short _021D98C6 - _021D98BA - 2 ; case 0 + .short _021D992C - _021D98BA - 2 ; case 1 + .short _021D9952 - _021D98BA - 2 ; case 2 + .short _021D997C - _021D98BA - 2 ; case 3 + .short _021D998E - _021D98BA - 2 ; case 4 + .short _021D99C0 - _021D98BA - 2 ; case 5 +_021D98C6: + add r0, r6, #0 + add r1, r6, #0 + bl FUN_0200E3A0 + mov r0, #1 + add r1, r6, #0 + bl FUN_0200E3A0 + add r0, r6, #0 + add r1, r0, #0 + bl FUN_02015F10 + add r0, r6, #0 + add r1, r0, #0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D99E8 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D99EC ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + add r0, r4, #0 + bl MOD59_021D9A20 + add r0, r4, #0 + bl MOD59_021D9C48 + ldr r0, _021D99F0 ; =MOD59_021D9A14 + add r1, r4, #0 + bl FUN_02015F10 + bl FUN_0201E788 + mov r0, #0x3c + str r0, [r4, #0x24] + mov r0, #1 + str r0, [r5] + b _021D99E2 +_021D992C: + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021D9938 + sub r0, r0, #1 + str r0, [r4, #0x24] + b _021D99E2 +_021D9938: + ldr r0, _021D99F4 ; =0x00000406 + bl FUN_0200414C + ldr r1, _021D99F4 ; =0x00000406 + mov r0, #4 + mov r2, #1 + bl FUN_0200433C + mov r0, #0x5a + str r0, [r4, #0x24] + mov r0, #2 + str r0, [r5] + b _021D99E2 +_021D9952: + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021D995E + sub r0, r0, #1 + str r0, [r4, #0x24] + b _021D99E2 +_021D995E: + str r6, [r4, #0x24] + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r3, r6, #0 + bl FUN_0200E1D0 + mov r0, #3 + str r0, [r5] + b _021D99E2 +_021D997C: + bl MOD59_021D9D78 + bl FUN_0200E308 + cmp r0, #1 + bne _021D99E2 + mov r0, #4 + str r0, [r5] + b _021D99E2 +_021D998E: + bl MOD59_021D9D78 + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x28 + mov r3, #0x30 + bl MOD59_021D9C74 + cmp r0, #1 + bne _021D99E2 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + str r0, [sp, #8] + add r0, r6, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #5 + str r0, [r5] + b _021D99E2 +_021D99C0: + bl MOD59_021D9D78 + bl FUN_0200E308 + cmp r0, #1 + bne _021D99E2 + add r0, r4, #0 + bl MOD59_021D9C68 + add r0, r4, #0 + bl MOD59_021D9BD0 + add r0, r6, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r6, #1 +_021D99E2: + add r0, r6, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021D99E8: .word 0xFFFFE0FF +_021D99EC: .word 0x04001000 +_021D99F0: .word MOD59_021D9A14 +_021D99F4: .word 0x00000406 + thumb_func_end MOD59_021D9898 + + thumb_func_start MOD59_021D99F8 +MOD59_021D99F8: ; 0x021D99F8 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + ldr r4, [r0] + add r0, r5, #0 + bl FUN_0200627C + add r0, r4, #0 + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD59_021D99F8 + + thumb_func_start MOD59_021D9A14 +MOD59_021D9A14: ; 0x021D9A14 + ldr r3, _021D9A1C ; =0x0201AB61 + ldr r0, [r0, #4] + bx r3 + nop +_021D9A1C: .word 0x0201AB61 + thumb_func_end MOD59_021D9A14 + + thumb_func_start MOD59_021D9A20 +MOD59_021D9A20: ; 0x021D9A20 + push {r3, r4, r5, lr} + sub sp, #0xb8 + ldr r5, _021D9BB4 ; =0x021DA0D4 + add r4, r0, #0 + add r3, sp, #0x90 + mov r2, #5 +_021D9A2C: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D9A2C + add r0, sp, #0x90 + bl FUN_0201E66C + ldr r0, [r4] + bl FUN_02016B94 + add r3, sp, #0x80 + ldr r5, _021D9BB8 ; =0x021DA054 + str r0, [r4, #4] + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _021D9BBC ; =0x021DA080 + add r3, sp, #0x64 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + ldr r3, [r4] + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02018744 + ldr r5, _021D9BC0 ; =0x021DA09C + add r3, sp, #0x48 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + ldr r0, [r4, #4] + add r3, r1, #0 + bl FUN_02016C18 + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + ldr r0, [r4] + mov r1, #1 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x88 + bl FUN_0200687C + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + ldr r0, [r4] + mov r1, #4 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x88 + bl FUN_020068C8 + ldr r5, _021D9BC4 ; =0x021DA064 + add r3, sp, #0x2c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #2 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x88 + mov r3, #1 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #5 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x88 + mov r3, #1 + bl FUN_020068C8 + ldr r5, _021D9BC8 ; =0x021DA0B8 + add r3, sp, #0x10 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #3 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldr r0, [r4] + mov r3, #3 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x88 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #3 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x88 + add r3, r1, #0 + bl FUN_020068C8 + mov r2, #0 + str r2, [sp] + ldr r0, [r4] + mov r1, #6 + str r0, [sp, #4] + mov r0, #0x88 + add r3, r2, #0 + bl FUN_02006930 + ldr r2, [r4] + mov r0, #0 + mov r1, #0x20 + bl FUN_02002ED0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02017FE4 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + mov r2, #0xc + ldr r0, _021D9BCC ; =0x04000050 + mov r1, #2 + mov r3, #4 + str r2, [sp] + bl G2x_SetBlendAlpha_ + add sp, #0xb8 + pop {r3, r4, r5, pc} + nop +_021D9BB4: .word 0x021DA0D4 +_021D9BB8: .word 0x021DA054 +_021D9BBC: .word 0x021DA080 +_021D9BC0: .word 0x021DA09C +_021D9BC4: .word 0x021DA064 +_021D9BC8: .word 0x021DA0B8 +_021D9BCC: .word 0x04000050 + thumb_func_end MOD59_021D9A20 + + thumb_func_start MOD59_021D9BD0 +MOD59_021D9BD0: ; 0x021D9BD0 + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #1 + mov r1, #0 + bl FUN_0201797C + mov r0, #2 + mov r1, #0 + bl FUN_0201797C + mov r0, #3 + mov r1, #0 + bl FUN_0201797C + mov r0, #4 + mov r1, #0 + bl FUN_0201797C + mov r0, #5 + mov r1, #0 + bl FUN_0201797C + mov r0, #6 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + ldr r0, _021D9C44 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + ldr r0, [r4, #4] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #4] + bl FUN_02016A18 + pop {r4, pc} + nop +_021D9C44: .word 0x04000050 + thumb_func_end MOD59_021D9BD0 + + thumb_func_start MOD59_021D9C48 +MOD59_021D9C48: ; 0x021D9C48 + push {r4, lr} + add r4, r0, #0 + ldr r2, _021D9C64 ; =0x00000225 + ldr r3, [r4] + mov r0, #1 + mov r1, #0x1a + bl FUN_0200A86C + str r0, [r4, #8] + bl FUN_0201BD5C + mov r0, #0 + str r0, [r4, #0xc] + pop {r4, pc} + .align 2, 0 +_021D9C64: .word 0x00000225 + thumb_func_end MOD59_021D9C48 + + thumb_func_start MOD59_021D9C68 +MOD59_021D9C68: ; 0x021D9C68 + ldr r3, _021D9C70 ; =0x0200A8B9 + ldr r0, [r0, #8] + bx r3 + nop +_021D9C70: .word 0x0200A8B9 + thumb_func_end MOD59_021D9C68 + + thumb_func_start MOD59_021D9C74 +MOD59_021D9C74: ; 0x021D9C74 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4, #0xc] + str r1, [sp, #0x10] + add r7, r3, #0 + mov r5, #0 + cmp r0, #3 + bhi _021D9D66 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9C92: ; jump table + .short _021D9C9A - _021D9C92 - 2 ; case 0 + .short _021D9D24 - _021D9C92 - 2 ; case 1 + .short _021D9D36 - _021D9C92 - 2 ; case 2 + .short _021D9D50 - _021D9C92 - 2 ; case 3 +_021D9C9A: + mov r0, #2 + add r1, r5, #0 + bl FUN_0201797C + mov r0, #1 + ldr r1, [r4] + lsl r0, r0, #0xa + bl FUN_020219F4 + add r6, r0, #0 + ldr r0, [r4, #8] + ldr r1, [sp, #0x10] + add r2, r6, #0 + bl FUN_0200A8E0 + add r1, r4, #0 + ldr r0, [r4, #4] + ldr r2, _021D9D6C ; =0x021DA04C + add r1, #0x10 + bl FUN_02019150 + add r1, r5, #0 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + mov r0, #0xc0 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x10 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + add r0, r5, #0 + add r1, r6, #0 + add r2, r0, #0 + bl FUN_02002F08 + mov r1, #1 + lsl r1, r1, #8 + sub r0, r1, r0 + lsr r3, r0, #1 + str r7, [sp] + add r1, r5, #0 + ldr r0, _021D9D70 ; =0x000F0200 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x10 + add r2, r6, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r4, #0 + add r0, #0x10 + bl FUN_020191D0 + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + mov r0, #0xf0 + str r0, [r4, #0x24] + mov r0, #1 + str r0, [r4, #0xc] + b _021D9D66 +_021D9D24: + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021D9D30 + sub r0, r0, #1 + str r0, [r4, #0x24] + b _021D9D66 +_021D9D30: + mov r0, #2 + str r0, [r4, #0xc] + b _021D9D66 +_021D9D36: + ldr r0, _021D9D74 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + and r0, r1 + cmp r0, #1 + beq _021D9D4A + mov r0, #2 + and r0, r1 + cmp r0, #2 + bne _021D9D66 +_021D9D4A: + mov r0, #3 + str r0, [r4, #0xc] + b _021D9D66 +_021D9D50: + add r0, r4, #0 + add r0, #0x10 + bl FUN_02019178 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02018744 + add r0, r5, #0 + str r0, [r4, #0xc] + mov r5, #1 +_021D9D66: + add r0, r5, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D9D6C: .word 0x021DA04C +_021D9D70: .word 0x000F0200 +_021D9D74: .word 0x021C48B8 + thumb_func_end MOD59_021D9C74 + + thumb_func_start MOD59_021D9D78 +MOD59_021D9D78: ; 0x021D9D78 + push {r3, lr} + ldr r1, [r0, #0x20] + mov r2, #3 + add r3, r1, #4 + str r3, [r0, #0x20] + ldr r0, [r0, #4] + mov r1, #1 + asr r3, r3, #4 + bl FUN_020179E0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD59_021D9D78 + + .section .rodata + ; 0x021D9D90 + .incbin "baserom.nds", 0x2AC6B0, 0x36C diff --git a/arm9/modules/60/asm/module_60.s b/arm9/modules/60/asm/module_60.s new file mode 100644 index 00000000..6318e002 --- /dev/null +++ b/arm9/modules/60/asm/module_60.s @@ -0,0 +1,1491 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD60_021D74E0 +MOD60_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_0200628C + mov r2, #1 + add r5, r0, #0 + mov r0, #3 + mov r1, #0x26 + lsl r2, r2, #0x10 + bl FUN_0201681C + mov r1, #0xad + add r0, r4, #0 + lsl r1, r1, #2 + mov r2, #0x26 + bl FUN_02006268 + mov r2, #0xad + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl Call_FillMemWithValue + add r0, r5, #0 + bl FUN_02024FD8 + ldrh r1, [r4, #0x18] + mov r2, #0xf + lsl r0, r0, #0x10 + bic r1, r2 + lsr r2, r0, #0x10 + mov r0, #0xf + and r0, r2 + orr r0, r1 + strh r0, [r4, #0x18] + add r0, r5, #0 + bl FUN_0202502C + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x1f + ldrh r1, [r4, #0x18] + mov r2, #0x40 + lsr r0, r0, #0x19 + bic r1, r2 + orr r0, r1 + strh r0, [r4, #0x18] + add r0, r5, #0 + bl FUN_02025048 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x1f + ldrh r1, [r4, #0x18] + mov r2, #0x80 + lsr r0, r0, #0x18 + bic r1, r2 + orr r0, r1 + strh r0, [r4, #0x18] + add r0, r5, #0 + bl FUN_02025010 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x1e + ldrh r1, [r4, #0x18] + mov r2, #0x30 + lsr r0, r0, #0x1a + bic r1, r2 + orr r0, r1 + strh r0, [r4, #0x18] + add r0, r5, #0 + bl FUN_02025064 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x1e + ldrh r2, [r4, #0x18] + ldr r1, _021D75A8 ; =0xFFFFFCFF + lsr r0, r0, #0x16 + and r1, r2 + orr r0, r1 + strh r0, [r4, #0x18] + add r0, r5, #0 + bl FUN_02025084 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x1b + ldrh r2, [r4, #0x18] + ldr r1, _021D75AC ; =0xFFFF83FF + lsr r0, r0, #0x11 + and r1, r2 + orr r0, r1 + strh r0, [r4, #0x18] + mov r0, #0x26 + str r0, [r4] + str r5, [r4, #0x1c] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D75A8: .word 0xFFFFFCFF +_021D75AC: .word 0xFFFF83FF + thumb_func_end MOD60_021D74E0 + + thumb_func_start MOD60_021D75B0 +MOD60_021D75B0: ; 0x021D75B0 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4, #0x10] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1e + cmp r0, #1 + bne _021D7680 + ldrh r1, [r4, #0x18] + mov r0, #0xf + bic r1, r0 + add r0, r4, #0 + add r0, #0x5e + ldrh r2, [r0] + mov r0, #0xf + and r2, r0 + orr r1, r2 + strh r1, [r4, #0x18] + ldrh r1, [r4, #0x18] + mov r2, #0x40 + add r0, #0xf7 + bic r1, r2 + add r2, r4, #0 + add r2, #0xb2 + ldrh r2, [r2] + lsl r2, r2, #0x1f + lsr r2, r2, #0x19 + orr r1, r2 + strh r1, [r4, #0x18] + ldrh r0, [r4, r0] + ldrh r1, [r4, #0x18] + mov r2, #0x80 + lsl r0, r0, #0x1f + bic r1, r2 + lsr r0, r0, #0x18 + orr r0, r1 + strh r0, [r4, #0x18] + ldrh r1, [r4, #0x18] + mov r0, #0x30 + bic r1, r0 + ldr r0, _021D76AC ; =0x0000015A + ldrh r2, [r4, r0] + lsl r2, r2, #0x1e + lsr r2, r2, #0x1a + orr r1, r2 + strh r1, [r4, #0x18] + ldrh r2, [r4, #0x18] + ldr r1, _021D76B0 ; =0xFFFFFCFF + and r1, r2 + add r2, r0, #0 + add r2, #0x54 + ldrh r2, [r4, r2] + add r0, #0xa8 + lsl r2, r2, #0x1e + lsr r2, r2, #0x16 + orr r1, r2 + strh r1, [r4, #0x18] + ldrh r0, [r4, r0] + ldrh r2, [r4, #0x18] + ldr r1, _021D76B4 ; =0xFFFF83FF + lsl r0, r0, #0x1b + and r1, r2 + lsr r0, r0, #0x11 + orr r0, r1 + strh r0, [r4, #0x18] + ldrh r1, [r4, #0x18] + ldr r0, [r4, #0x1c] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + bl FUN_02024FE0 + ldrh r1, [r4, #0x18] + ldr r0, [r4, #0x1c] + lsl r1, r1, #0x19 + lsr r1, r1, #0x1f + bl FUN_02025034 + ldrh r1, [r4, #0x18] + ldr r0, [r4, #0x1c] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1f + bl FUN_02025050 + ldrh r1, [r4, #0x18] + ldr r0, [r4, #0x1c] + lsl r1, r1, #0x1a + lsr r1, r1, #0x1e + bl FUN_02025018 + ldrh r1, [r4, #0x18] + ldr r0, [r4, #0x1c] + lsl r1, r1, #0x16 + lsr r1, r1, #0x1e + bl FUN_0202506C + ldrh r1, [r4, #0x18] + ldr r0, [r4, #0x1c] + lsl r1, r1, #0x11 + lsr r1, r1, #0x1b + bl FUN_0202508C + b _021D769A +_021D7680: + cmp r0, #2 + bne _021D769A + ldrh r0, [r4, #0x18] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1e + bl FUN_02004D60 + ldrh r1, [r4, #0x18] + mov r0, #0 + lsl r1, r1, #0x16 + lsr r1, r1, #0x1e + bl FUN_02024F9C +_021D769A: + add r0, r5, #0 + bl FUN_0200627C + ldr r0, [r4] + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_021D76AC: .word 0x0000015A +_021D76B0: .word 0xFFFFFCFF +_021D76B4: .word 0xFFFF83FF + thumb_func_end MOD60_021D75B0 + + thumb_func_start MOD60_021D76B8 +MOD60_021D76B8: ; 0x021D76B8 + push {r3, r4, lr} + sub sp, #0xc + bl FUN_02006278 + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #4 + bhi _021D77A0 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D76D4: ; jump table + .short _021D76DE - _021D76D4 - 2 ; case 0 + .short _021D7706 - _021D76D4 - 2 ; case 1 + .short _021D7714 - _021D76D4 - 2 ; case 2 + .short _021D777E - _021D76D4 - 2 ; case 3 + .short _021D778C - _021D76D4 - 2 ; case 4 +_021D76DE: + bl MOD60_021D7834 + cmp r0, #0 + bne _021D76EC + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D76EC: + mov r3, #0 + str r3, [r4, #0xc] + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + mov r0, #3 + bl FUN_0200E1D0 + b _021D77A0 +_021D7706: + bl FUN_0200E308 + cmp r0, #0 + bne _021D77A0 + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D7714: + ldr r0, _021D77AC ; =0x021C48B8 + mov r1, #1 + ldr r0, [r0, #0x48] + tst r1, r0 + beq _021D773C + ldr r1, [r4, #0x10] + lsl r1, r1, #0x1b + lsr r1, r1, #0x1d + cmp r1, #6 + bne _021D773C + ldr r0, _021D77B0 ; =0x0000061B + bl FUN_020054C8 + ldr r1, [r4, #0x10] + mov r0, #3 + bic r1, r0 + mov r0, #1 + orr r0, r1 + str r0, [r4, #0x10] + b _021D774E +_021D773C: + mov r1, #2 + tst r0, r1 + beq _021D774E + ldr r2, [r4, #0x10] + mov r0, #3 + bic r2, r0 + add r0, r2, #0 + orr r0, r1 + str r0, [r4, #0x10] +_021D774E: + ldr r0, [r4, #0x10] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1e + beq _021D7772 + mov r1, #0 + str r1, [r4, #0xc] + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + mov r0, #3 + add r3, r1, #0 + bl FUN_0200E1D0 + b _021D77A0 +_021D7772: + add r0, r4, #0 + bl MOD60_021D801C + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D777E: + bl FUN_0200E308 + cmp r0, #0 + bne _021D77A0 + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D778C: + bl MOD60_021D78E8 + cmp r0, #0 + beq _021D779A + add sp, #0xc + mov r0, #1 + pop {r3, r4, pc} +_021D779A: + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D77A0: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_021D77AC: .word 0x021C48B8 +_021D77B0: .word 0x0000061B + thumb_func_end MOD60_021D76B8 + + thumb_func_start MOD60_021D77B4 +MOD60_021D77B4: ; 0x021D77B4 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D77D0 ; =0x021D8140 + add r3, sp, #0 + mov r2, #5 +_021D77BE: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D77BE + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D77D0: .word 0x021D8140 + thumb_func_end MOD60_021D77B4 + + thumb_func_start MOD60_021D77D4 +MOD60_021D77D4: ; 0x021D77D4 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0x10] + lsl r0, r0, #0xa + lsr r0, r0, #0x1f + beq _021D7804 + ldr r2, _021D7824 ; =0x00000202 + mov r1, #1 + ldrh r0, [r4, r2] + add r2, #0x39 + mov r3, #0xf + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [r4] + str r0, [sp, #4] + ldr r0, [r4, #0x14] + bl FUN_0200CD68 + ldr r1, [r4, #0x10] + ldr r0, _021D7828 ; =0xFFDFFFFF + and r0, r1 + str r0, [r4, #0x10] +_021D7804: + bl FUN_0200BC30 + bl FUN_020AEEB8 + ldr r0, [r4, #0x14] + bl FUN_0201AB60 + ldr r3, _021D782C ; =0x027E0000 + ldr r1, _021D7830 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + add sp, #8 + pop {r4, pc} + nop +_021D7824: .word 0x00000202 +_021D7828: .word 0xFFDFFFFF +_021D782C: .word 0x027E0000 +_021D7830: .word 0x00003FF8 + thumb_func_end MOD60_021D77D4 + + thumb_func_start MOD60_021D7834 +MOD60_021D7834: ; 0x021D7834 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #8] + cmp r1, #0 + beq _021D7848 + cmp r1, #1 + beq _021D7888 + cmp r1, #2 + beq _021D78A2 + b _021D78D0 +_021D7848: + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D78DC ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D78E0 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + bl MOD60_021D77B4 + mov r0, #0 + bl FUN_0200E388 + mov r0, #1 + bl FUN_0200E388 + add r0, r4, #0 + bl MOD60_021D7990 + b _021D78D0 +_021D7888: + bl MOD60_021D7A40 + ldr r3, [r4] + mov r0, #1 + mov r1, #0x1a + mov r2, #0xce + bl FUN_0200A86C + str r0, [r4, #0x20] + add r0, r4, #0 + bl MOD60_021D7DF8 + b _021D78D0 +_021D78A2: + bl MOD60_021D7BA4 + add r0, r4, #0 + bl MOD60_021D7D18 + ldr r1, [r4] + mov r0, #0x20 + bl FUN_0201C24C + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + bl FUN_02033F20 + ldr r0, _021D78E4 ; =MOD60_021D77D4 + add r1, r4, #0 + bl FUN_02015F10 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} +_021D78D0: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0 + pop {r4, pc} + nop +_021D78DC: .word 0xFFFFE0FF +_021D78E0: .word 0x04001000 +_021D78E4: .word MOD60_021D77D4 + thumb_func_end MOD60_021D7834 + + thumb_func_start MOD60_021D78E8 +MOD60_021D78E8: ; 0x021D78E8 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + ldr r0, [r0, #8] + cmp r0, #0 + beq _021D78F8 + cmp r0, #1 + beq _021D7946 + b _021D7978 +_021D78F8: + bl FUN_0201C29C + ldr r0, [sp] + bl MOD60_021D7CD4 + ldr r6, [sp] + mov r7, #0 +_021D7906: + add r0, r6, #0 + add r0, #0x5c + ldrh r0, [r0] + mov r4, #0 + cmp r0, #0 + ble _021D7928 + add r5, r6, #0 +_021D7914: + ldr r0, [r5, #0x60] + bl FUN_02021A20 + add r0, r6, #0 + add r0, #0x5c + ldrh r0, [r0] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blt _021D7914 +_021D7928: + add r7, r7, #1 + add r6, #0x54 + cmp r7, #7 + blt _021D7906 + ldr r0, [sp] + ldr r0, [r0, #0x20] + bl FUN_0200A8B8 + ldr r0, [sp] + bl MOD60_021D7B98 + ldr r0, [sp] + bl MOD60_021D7A14 + b _021D7978 +_021D7946: + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D7988 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D798C ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + ldr r0, [sp] + mov r1, #0 + str r1, [r0, #8] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D7978: + ldr r0, [sp] + ldr r0, [r0, #8] + add r1, r0, #1 + ldr r0, [sp] + str r1, [r0, #8] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D7988: .word 0xFFFFE0FF +_021D798C: .word 0x04001000 + thumb_func_end MOD60_021D78E8 + + thumb_func_start MOD60_021D7990 +MOD60_021D7990: ; 0x021D7990 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x80 + add r6, r0, #0 + ldr r0, [r6] + bl FUN_02016B94 + add r3, sp, #0 + ldr r4, _021D7A08 ; =0x021D8114 + str r0, [r6, #0x14] + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r4, _021D7A0C ; =0x021D8168 + add r3, sp, #0x10 + mov r2, #0xe +_021D79B8: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D79B8 + ldr r5, _021D7A10 ; =0x021D8104 + mov r7, #0 + add r4, sp, #0x10 +_021D79C6: + ldr r1, [r5] + ldr r0, [r6, #0x14] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r2, r4, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r1, [r5] + ldr r0, [r6, #0x14] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_02018744 + add r7, r7, #1 + add r4, #0x1c + add r5, r5, #4 + cmp r7, #4 + blt _021D79C6 + mov r0, #0 + ldr r3, [r6] + mov r1, #0x20 + add r2, r0, #0 + bl FUN_02017F18 + ldr r3, [r6] + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + add sp, #0x80 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D7A08: .word 0x021D8114 +_021D7A0C: .word 0x021D8168 +_021D7A10: .word 0x021D8104 + thumb_func_end MOD60_021D7990 + + thumb_func_start MOD60_021D7A14 +MOD60_021D7A14: ; 0x021D7A14 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r4, #0x14] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x14] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x14] + mov r1, #0 + bl FUN_020178A0 + ldr r0, [r4, #0x14] + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD60_021D7A14 + + thumb_func_start MOD60_021D7A40 +MOD60_021D7A40: ; 0x021D7A40 + push {r3, r4, r5, r6, lr} + sub sp, #0x24 + add r5, r0, #0 + ldr r1, [r5] + mov r0, #0x49 + bl FUN_02006670 + add r4, r0, #0 + mov r0, #0x49 + mov r1, #1 + bl LoadFromNARC_7 + add r1, r0, #0 + ldr r0, [r5] + bl FUN_020169D8 + add r6, r0, #0 + add r0, r4, #0 + mov r1, #1 + add r2, r6, #0 + bl FUN_02006774 + add r0, r6, #0 + add r1, sp, #0x20 + bl FUN_020B0088 + ldr r3, [sp, #0x20] + mov r1, #0 + str r1, [sp] + ldr r2, [r3, #0x14] + ldr r0, [r5, #0x14] + ldr r3, [r3, #0x10] + bl FUN_02017E14 + ldr r3, [sp, #0x20] + mov r0, #0 + str r0, [sp] + ldr r2, [r3, #0x14] + ldr r0, [r5, #0x14] + ldr r3, [r3, #0x10] + mov r1, #4 + bl FUN_02017E14 + add r0, r6, #0 + bl FUN_02016A18 + mov r0, #0x49 + mov r1, #0 + bl LoadFromNARC_7 + add r1, r0, #0 + ldr r0, [r5] + bl FUN_020169D8 + add r6, r0, #0 + add r0, r4, #0 + mov r1, #0 + add r2, r6, #0 + bl FUN_02006774 + add r0, r6, #0 + add r1, sp, #0x1c + bl FUN_020B0138 + ldr r1, [sp, #0x1c] + mov r0, #0 + ldr r1, [r1, #0xc] + mov r2, #0x20 + add r3, r0, #0 + bl FUN_02017FB4 + ldr r1, [sp, #0x1c] + mov r0, #4 + ldr r1, [r1, #0xc] + mov r2, #0x20 + mov r3, #0 + bl FUN_02017FB4 + add r0, r6, #0 + bl FUN_02016A18 + mov r0, #0x49 + mov r1, #2 + bl LoadFromNARC_7 + add r1, r0, #0 + ldr r0, [r5] + bl FUN_02016998 + str r0, [r5, #0x24] + ldr r2, [r5, #0x24] + add r0, r4, #0 + mov r1, #2 + bl FUN_02006774 + add r1, r5, #0 + ldr r0, [r5, #0x24] + add r1, #0x28 + bl FUN_020B0180 + add r0, r4, #0 + bl FUN_020066F4 + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r5, #0x14] + mov r1, #2 + mov r2, #1 + bl FUN_02018540 + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r5, #0x14] + mov r1, #4 + mov r2, #1 + bl FUN_02018540 + ldr r0, [r5, #0x28] + mov r1, #0x20 + str r1, [sp] + mov r1, #2 + str r1, [sp, #4] + add r1, r0, #0 + add r1, #0xc + str r1, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + str r1, [sp, #0x10] + ldrh r2, [r0] + add r3, r1, #0 + lsl r2, r2, #0x15 + lsr r2, r2, #0x18 + str r2, [sp, #0x14] + ldrh r0, [r0, #2] + add r2, r1, #0 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + ldr r0, [r5, #0x14] + bl FUN_020181EC + mov r2, #3 + add r3, r2, #0 + ldr r0, [r5, #0x14] + mov r1, #0 + sub r3, #0x1b + bl FUN_020179E0 + ldr r0, [r5, #0x14] + mov r1, #2 + bl FUN_0201AC68 + ldr r0, [r5, #0x14] + mov r1, #0 + bl FUN_0201AC68 + ldr r0, [r5, #0x14] + mov r1, #4 + bl FUN_0201AC68 + add sp, #0x24 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD60_021D7A40 + + thumb_func_start MOD60_021D7B98 +MOD60_021D7B98: ; 0x021D7B98 + ldr r3, _021D7BA0 ; =0x02016A19 + ldr r0, [r0, #0x24] + bx r3 + nop +_021D7BA0: .word 0x02016A19 + thumb_func_end MOD60_021D7B98 + + thumb_func_start MOD60_021D7BA4 +MOD60_021D7BA4: ; 0x021D7BA4 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0xc + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xa + str r0, [sp, #0x10] + add r1, r4, #0 + mov r2, #1 + ldr r0, [r4, #0x14] + add r1, #0x2c + add r3, r2, #0 + bl FUN_02019064 + mov r0, #3 + str r0, [sp] + mov r0, #0x1e + str r0, [sp, #4] + mov r0, #0xe + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x22 + str r0, [sp, #0x10] + add r1, r4, #0 + mov r2, #1 + ldr r0, [r4, #0x14] + add r1, #0x3c + add r3, r2, #0 + bl FUN_02019064 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xc + str r0, [sp, #0xc] + ldr r0, _021D7CC8 ; =0x000001C6 + add r1, r4, #0 + str r0, [sp, #0x10] + ldr r0, [r4, #0x14] + add r1, #0x4c + mov r2, #1 + mov r3, #2 + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + ldr r0, [r4] + ldr r2, _021D7CCC ; =0x00000232 + str r0, [sp, #4] + ldr r0, [r4, #0x14] + mov r1, #1 + mov r3, #0xe + bl FUN_0200CB00 + ldrh r0, [r4, #0x18] + ldr r2, _021D7CD0 ; =0x0000023B + mov r1, #1 + lsl r0, r0, #0x11 + lsr r0, r0, #0x1b + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [r4] + mov r3, #0xf + str r0, [sp, #4] + ldr r0, [r4, #0x14] + bl FUN_0200CD68 + mov r1, #0x1a + ldr r2, [r4] + mov r0, #0 + lsl r1, r1, #4 + bl FUN_02002ED0 + mov r1, #0x1a + ldr r2, [r4] + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02002ED0 + mov r1, #6 + ldr r2, [r4] + mov r0, #0 + lsl r1, r1, #6 + bl FUN_02002EEC + mov r1, #6 + ldr r2, [r4] + mov r0, #4 + lsl r1, r1, #6 + bl FUN_02002EEC + add r0, r4, #0 + add r0, #0x2c + mov r1, #0 + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x3c + mov r1, #0xff + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x4c + mov r1, #0xff + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x4c + bl FUN_020192B8 + add r0, r4, #0 + add r0, #0x3c + bl FUN_020192B8 + add r0, r4, #0 + add r0, #0x2c + bl FUN_020192B8 + add r0, r4, #0 + ldr r2, _021D7CCC ; =0x00000232 + add r0, #0x3c + mov r1, #1 + mov r3, #0xe + bl FUN_0200CCA4 + add r4, #0x4c + ldr r2, _021D7CD0 ; =0x0000023B + add r0, r4, #0 + mov r1, #1 + mov r3, #0xf + bl FUN_0200D0BC + add sp, #0x14 + pop {r3, r4, pc} + nop +_021D7CC8: .word 0x000001C6 +_021D7CCC: .word 0x00000232 +_021D7CD0: .word 0x0000023B + thumb_func_end MOD60_021D7BA4 + + thumb_func_start MOD60_021D7CD4 +MOD60_021D7CD4: ; 0x021D7CD4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, #0x3c + mov r1, #0 + bl FUN_0200CCF8 + add r0, r5, #0 + add r0, #0x4c + mov r1, #0 + bl FUN_0200D0E0 + mov r6, #0 + add r5, #0x2c + add r7, r6, #0 +_021D7CF0: + lsl r4, r6, #4 + add r0, r5, r4 + bl FUN_02019570 + add r0, r5, r4 + add r1, r7, #0 + bl FUN_02019620 + add r0, r5, r4 + bl FUN_020192B8 + add r0, r5, r4 + bl FUN_02019178 + add r0, r6, #1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #3 + blo _021D7CF0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD60_021D7CD4 + + thumb_func_start MOD60_021D7D18 +MOD60_021D7D18: ; 0x021D7D18 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r0, #0 + ldr r1, [r6] + mov r0, #0x28 + bl FUN_020219F4 + add r5, r0, #0 + ldr r0, [r6, #0x20] + mov r1, #0 + add r2, r5, #0 + bl FUN_0200A8E0 + mov r3, #2 + str r3, [sp] + mov r1, #0 + ldr r0, _021D7DEC ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r6, #0 + add r0, #0x2c + add r2, r5, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r5, #0 + bl FUN_02021A4C + ldr r1, _021D7DF0 ; =0x020ECAC0 + ldr r0, [r6, #0x20] + ldrb r1, [r1] + add r2, r5, #0 + sub r1, #9 + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + ldr r0, _021D7DF4 ; =0x0001020F + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r6, #0 + str r1, [sp, #0xc] + add r0, #0x4c + mov r1, #1 + add r2, r5, #0 + mov r3, #4 + bl FUN_0201BDE0 + add r7, r6, #0 + mov r4, #0 + add r7, #0x3c +_021D7D7E: + add r0, r5, #0 + bl FUN_02021A4C + ldr r0, [r6, #0x20] + add r1, r4, #3 + add r2, r5, #0 + bl FUN_0200A8E0 + lsl r0, r4, #4 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D7DF4 ; =0x0001020F + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r7, #0 + add r2, r5, #0 + mov r3, #4 + bl FUN_0201BDE0 + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #7 + blo _021D7D7E + mov r4, #0 +_021D7DB6: + add r0, r6, #0 + add r1, r4, #0 + bl MOD60_021D7EA4 + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #7 + blo _021D7DB6 + add r0, r6, #0 + add r0, #0x2c + bl FUN_020191D0 + add r0, r6, #0 + add r0, #0x3c + bl FUN_020191D0 + add r6, #0x4c + add r0, r6, #0 + bl FUN_020191D0 + add r0, r5, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D7DEC: .word 0x00010200 +_021D7DF0: .word 0x020ECAC0 +_021D7DF4: .word 0x0001020F + thumb_func_end MOD60_021D7D18 + + thumb_func_start MOD60_021D7DF8 +MOD60_021D7DF8: ; 0x021D7DF8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r5, #0 + add r6, r0, #0 + str r5, [sp, #4] +_021D7E02: + ldr r0, [sp, #4] + ldr r2, [sp, #4] + lsl r7, r0, #2 + ldr r0, _021D7E9C ; =0x021D8124 + mov r1, #0x54 + mul r1, r2 + add r1, r6, r1 + str r1, [sp] + ldr r0, [r0, r7] + add r1, #0x5c + mov r4, #0 + strh r0, [r1] + cmp r0, #0 + ble _021D7E44 +_021D7E1E: + add r0, r5, #1 + lsl r0, r0, #0x10 + add r1, r5, #0 + lsr r5, r0, #0x10 + ldr r0, [r6, #0x20] + add r1, #0xa + bl FUN_0200A914 + ldr r1, [sp] + lsl r2, r4, #2 + add r1, r1, r2 + str r0, [r1, #0x60] + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, _021D7E9C ; =0x021D8124 + ldr r0, [r0, r7] + cmp r4, r0 + blt _021D7E1E +_021D7E44: + ldr r0, [sp, #4] + add r0, r0, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + cmp r0, #7 + blo _021D7E02 + ldrh r0, [r6, #0x18] + lsl r0, r0, #0x1c + lsr r1, r0, #0x1c + add r0, r6, #0 + add r0, #0x5e + strh r1, [r0] + ldrh r0, [r6, #0x18] + lsl r0, r0, #0x19 + lsr r1, r0, #0x1f + add r0, r6, #0 + add r0, #0xb2 + strh r1, [r0] + ldrh r0, [r6, #0x18] + ldr r1, _021D7EA0 ; =0x00000106 + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + strh r0, [r6, r1] + ldrh r0, [r6, #0x18] + lsl r0, r0, #0x1a + lsr r2, r0, #0x1e + add r0, r1, #0 + add r0, #0x54 + strh r2, [r6, r0] + ldrh r0, [r6, #0x18] + lsl r0, r0, #0x16 + lsr r2, r0, #0x1e + add r0, r1, #0 + add r0, #0xa8 + strh r2, [r6, r0] + ldrh r0, [r6, #0x18] + add r1, #0xfc + lsl r0, r0, #0x11 + lsr r0, r0, #0x1b + strh r0, [r6, r1] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D7E9C: .word 0x021D8124 +_021D7EA0: .word 0x00000106 + thumb_func_end MOD60_021D7DF8 + + thumb_func_start MOD60_021D7EA4 +MOD60_021D7EA4: ; 0x021D7EA4 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #0x10] + lsl r0, r1, #4 + str r0, [sp, #0x18] + mov r0, #6 + str r1, [sp, #0x14] + lsl r0, r0, #6 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + ldr r3, _021D8010 ; =0x021D80FC + ldr r2, [sp, #0x14] + ldr r0, [sp, #0x10] + ldrsb r2, [r3, r2] + ldr r3, [sp, #0x18] + add r0, #0x3c + add r2, #0x64 + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + mov r1, #0xff + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl FUN_020196F4 + ldr r0, [sp, #0x14] + cmp r0, #5 + bne _021D7F26 + add r2, r0, #0 + ldr r0, [sp, #0x18] + mov r1, #0x54 + str r0, [sp] + mov r0, #0xff + mul r2, r1 + ldr r3, [sp, #0x10] + str r0, [sp, #4] + ldr r0, _021D8014 ; =0x0003040F + add r3, r3, r2 + str r0, [sp, #8] + mov r1, #0 + add r2, r3, #0 + ldr r0, [sp, #0x10] + str r1, [sp, #0xc] + add r2, #0x5e + ldrh r2, [r2] + add r0, #0x3c + lsl r2, r2, #2 + add r2, r3, r2 + ldr r2, [r2, #0x60] + mov r3, #0x94 + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + add r0, #0x3c + bl FUN_020191D0 + ldr r0, [sp, #0x10] + ldr r1, [r0, #0x10] + mov r0, #2 + lsl r0, r0, #0x14 + orr r1, r0 + ldr r0, [sp, #0x10] + add sp, #0x24 + str r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_021D7F26: + cmp r0, #3 + bne _021D7F3C + mov r1, #0x54 + mul r1, r0 + ldr r0, [sp, #0x10] + add r0, r0, r1 + add r0, #0x5e + ldrh r0, [r0] + bl FUN_02004D60 + b _021D7F54 +_021D7F3C: + cmp r0, #4 + bne _021D7F54 + ldr r1, [sp, #0x14] + mov r2, #0x54 + mul r2, r1 + ldr r1, [sp, #0x10] + mov r0, #0 + add r1, r1, r2 + add r1, #0x5e + ldrh r1, [r1] + bl FUN_02024F9C +_021D7F54: + ldr r0, [sp, #0x14] + mov r1, #0x54 + mul r1, r0 + ldr r0, [sp, #0x10] + mov r7, #0 + add r5, r0, r1 + add r0, r5, #0 + add r0, #0x5c + ldrh r0, [r0] + add r4, r7, #0 + cmp r0, #0 + bls _021D8002 + bls _021D8002 + ldr r1, _021D8010 ; =0x021D80FC + ldr r0, [sp, #0x14] + add r0, r1, r0 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x10] + str r0, [sp, #0x20] + add r0, #0x3c + str r0, [sp, #0x20] +_021D7F7E: + add r0, r5, #0 + add r0, #0x5e + ldrh r0, [r0] + cmp r4, r0 + bne _021D7F8C + ldr r0, _021D8014 ; =0x0003040F + b _021D7F8E +_021D7F8C: + ldr r0, _021D8018 ; =0x0001020F +_021D7F8E: + ldr r1, [sp, #0x14] + cmp r1, #4 + bne _021D7FC8 + lsl r1, r4, #2 + add r6, r5, r1 + ldr r1, [sp, #0x18] + add r3, r7, #0 + str r1, [sp] + mov r1, #0xff + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x20] + ldr r2, [r6, #0x60] + mov r1, #0 + add r3, #0x64 + bl FUN_0201BDE0 + mov r0, #0 + ldr r1, [r6, #0x60] + add r2, r0, #0 + bl FUN_02002E14 + add r0, #0xc + add r0, r7, r0 + lsl r0, r0, #0x18 + asr r7, r0, #0x18 + b _021D7FF2 +_021D7FC8: + ldr r1, [sp, #0x18] + lsl r2, r4, #2 + str r1, [sp] + mov r1, #0xff + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + mov r1, #0 + str r0, [sp, #0xc] + add r2, r5, r2 + ldr r6, [sp, #0x1c] + add r3, r1, #0 + ldrsb r6, [r6, r3] + mov r3, #0x30 + mul r3, r4 + add r3, #0x64 + ldr r0, [sp, #0x20] + ldr r2, [r2, #0x60] + add r3, r6, r3 + bl FUN_0201BDE0 +_021D7FF2: + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r5, #0 + add r0, #0x5c + ldrh r0, [r0] + cmp r4, r0 + blo _021D7F7E +_021D8002: + ldr r0, [sp, #0x10] + add r0, #0x3c + str r0, [sp, #0x10] + bl FUN_020191D0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D8010: .word 0x021D80FC +_021D8014: .word 0x0003040F +_021D8018: .word 0x0001020F + thumb_func_end MOD60_021D7EA4 + + thumb_func_start MOD60_021D801C +MOD60_021D801C: ; 0x021D801C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + add r1, r5, #0 + lsl r0, r0, #0x1b + lsr r2, r0, #0x1d + mov r0, #0x54 + add r1, #0x5c + mul r0, r2 + add r4, r1, r0 + cmp r2, #6 + beq _021D8080 + ldr r0, _021D80F8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x10 + tst r0, r1 + beq _021D805C + ldrh r0, [r4, #2] + ldrh r1, [r4] + add r0, r0, #1 + bl _s32_div_f + strh r1, [r4, #2] + ldr r1, [r5, #0x10] + add r0, r5, #0 + lsl r1, r1, #0x1b + lsr r1, r1, #0x1d + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl MOD60_021D7EA4 + b _021D8080 +_021D805C: + mov r0, #0x20 + tst r0, r1 + beq _021D8080 + ldrh r1, [r4] + ldrh r0, [r4, #2] + add r0, r0, r1 + sub r0, r0, #1 + bl _s32_div_f + strh r1, [r4, #2] + ldr r1, [r5, #0x10] + add r0, r5, #0 + lsl r1, r1, #0x1b + lsr r1, r1, #0x1d + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl MOD60_021D7EA4 +_021D8080: + ldr r0, _021D80F8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x40 + tst r0, r1 + beq _021D80BE + ldr r0, [r5, #0x10] + mov r1, #7 + lsl r0, r0, #0x1b + lsr r0, r0, #0x1d + add r0, r0, #6 + bl _u32_div_f + ldr r2, [r5, #0x10] + mov r0, #0x1c + bic r2, r0 + lsl r0, r1, #0x1d + add r3, r2, #0 + lsr r0, r0, #0x1b + orr r3, r0 + str r3, [r5, #0x10] + lsl r3, r3, #0x1b + lsr r3, r3, #0x1d + lsl r3, r3, #4 + add r3, #0x18 + ldr r0, [r5, #0x14] + mov r1, #0 + mov r2, #3 + neg r3, r3 + bl FUN_0201AEE4 + pop {r3, r4, r5, pc} +_021D80BE: + mov r0, #0x80 + tst r0, r1 + beq _021D80F6 + ldr r0, [r5, #0x10] + mov r1, #7 + lsl r0, r0, #0x1b + lsr r0, r0, #0x1d + add r0, r0, #1 + bl _u32_div_f + ldr r2, [r5, #0x10] + mov r0, #0x1c + bic r2, r0 + lsl r0, r1, #0x1d + add r3, r2, #0 + lsr r0, r0, #0x1b + orr r3, r0 + str r3, [r5, #0x10] + lsl r3, r3, #0x1b + lsr r3, r3, #0x1d + lsl r3, r3, #4 + add r3, #0x18 + ldr r0, [r5, #0x14] + mov r1, #0 + mov r2, #3 + neg r3, r3 + bl FUN_0201AEE4 +_021D80F6: + pop {r3, r4, r5, pc} + .align 2, 0 +_021D80F8: .word 0x021C48B8 + thumb_func_end MOD60_021D801C + + .section .rodata + ; 0x021D80FC + .incbin "baserom.nds", 0x2AD81C, 0xDC diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s new file mode 100644 index 00000000..c81d3a4a --- /dev/null +++ b/arm9/modules/61/asm/module_61.s @@ -0,0 +1,1907 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD61_021D74E0 +MOD61_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + mov r2, #2 + mov r0, #3 + mov r1, #0x29 + lsl r2, r2, #0x10 + bl FUN_0201681C + add r0, r5, #0 + mov r1, #0xbc + mov r2, #0x29 + bl FUN_02006268 + mov r1, #0 + mov r2, #0xbc + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x29 + str r0, [r4] + add r0, r5, #0 + bl FUN_0200628C + str r0, [r4, #0x1c] + ldrh r0, [r0] + ldr r1, _021D754C ; =0x0000FFFF + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xc] + strb r0, [r4, #0xd] + ldr r0, [r4, #0x1c] + ldrb r0, [r0, #2] + strb r0, [r4, #0x11] + ldr r0, [r4, #0x1c] + ldrb r0, [r0, #3] + strb r0, [r4, #0x12] + ldrb r0, [r4, #0x11] + strb r0, [r4, #0x16] + strb r0, [r4, #0x17] + ldr r0, [r4, #0x1c] + strh r1, [r0] + ldr r0, [r4, #0x1c] + ldr r0, [r0, #4] + bl FUN_02024FF4 + strb r0, [r4, #0x10] + ldr r0, [r4, #0x1c] + ldr r0, [r0, #4] + bl FUN_02025084 + strh r0, [r4, #0xa] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D754C: .word 0x0000FFFF + thumb_func_end MOD61_021D74E0 + + thumb_func_start MOD61_021D7550 +MOD61_021D7550: ; 0x021D7550 + push {r3, lr} + bl FUN_02006278 + bl MOD61_021D78D4 + cmp r0, #0 + beq _021D7562 + mov r0, #1 + pop {r3, pc} +_021D7562: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD61_021D7550 + + thumb_func_start MOD61_021D7568 +MOD61_021D7568: ; 0x021D7568 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + ldr r4, [r0] + add r0, r5, #0 + bl FUN_0200627C + add r0, r4, #0 + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD61_021D7568 + + thumb_func_start MOD61_021D7584 +MOD61_021D7584: ; 0x021D7584 + push {r4, r5, r6, lr} + mov r4, #0 + add r6, r0, #0 + add r5, r4, #0 +_021D758C: + ldr r0, [r6, #0x1c] + add r0, #0x1a + add r0, r0, r5 + bl FUN_0201385C + cmp r0, #0 + beq _021D759E + mov r0, #0 + pop {r4, r5, r6, pc} +_021D759E: + add r4, r4, #1 + add r5, #8 + cmp r4, #3 + blt _021D758C + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD61_021D7584 + + thumb_func_start MOD61_021D75AC +MOD61_021D75AC: ; 0x021D75AC + push {r3, lr} + ldr r0, _021D75C8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D75C2 + ldr r0, _021D75CC ; =0x000005E3 + bl FUN_020054C8 + mov r0, #1 + pop {r3, pc} +_021D75C2: + mov r0, #0 + pop {r3, pc} + nop +_021D75C8: .word 0x021C48B8 +_021D75CC: .word 0x000005E3 + thumb_func_end MOD61_021D75AC + + thumb_func_start MOD61_021D75D0 +MOD61_021D75D0: ; 0x021D75D0 + push {r3, r4, r5, lr} + ldr r1, _021D76E0 ; =0x021C48B8 + add r4, r0, #0 + ldr r2, [r1, #0x48] + mov r1, #1 + add r5, r2, #0 + mov r3, #0 + tst r5, r1 + beq _021D7648 + ldrb r1, [r4, #0x11] + cmp r1, #3 + bne _021D762E + ldrb r1, [r4, #0x12] + cmp r1, #0 + bne _021D7612 + bl MOD61_021D7584 + cmp r0, #0 + beq _021D7604 + ldr r0, _021D76E4 ; =0x000005DD + bl FUN_020054C8 + mov r0, #2 + strb r0, [r4, #0xc] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D7604: + ldr r0, [r4, #0x1c] + mov r1, #3 + strh r1, [r0] + ldr r0, _021D76E8 ; =0x000005E3 + bl FUN_020054C8 + b _021D7620 +_021D7612: + ldr r0, _021D76E4 ; =0x000005DD + bl FUN_020054C8 + mov r0, #3 + strb r0, [r4, #0xc] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D7620: + ldr r0, [r4, #0x1c] + mov r1, #0 + strb r1, [r0, #3] + ldr r1, [r4, #0x1c] + ldrb r0, [r1, #3] + strb r0, [r1, #2] + b _021D7644 +_021D762E: + ldr r0, [r4, #0x1c] + strb r1, [r0, #2] + ldr r1, [r4, #0x1c] + ldrb r0, [r1, #2] + strh r0, [r1] + ldrb r1, [r4, #0x12] + ldr r0, [r4, #0x1c] + strb r1, [r0, #3] + ldr r0, _021D76E4 ; =0x000005DD + bl FUN_020054C8 +_021D7644: + mov r0, #1 + pop {r3, r4, r5, pc} +_021D7648: + mov r0, #2 + tst r0, r2 + beq _021D765C + ldr r0, _021D76E4 ; =0x000005DD + bl FUN_020054C8 + mov r0, #3 + strb r0, [r4, #0xc] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D765C: + mov r0, #8 + tst r0, r2 + beq _021D766C + mov r0, #3 + strb r0, [r4, #0x11] + strb r3, [r4, #0x12] + add r3, r1, #0 + b _021D76BE +_021D766C: + mov r0, #0x80 + tst r0, r2 + beq _021D7688 + ldrb r0, [r4, #0x11] + add r0, r0, #1 + lsr r3, r0, #0x1f + lsl r2, r0, #0x1e + sub r2, r2, r3 + mov r0, #0x1e + ror r2, r0 + add r0, r3, r2 + strb r0, [r4, #0x11] + add r3, r1, #0 + b _021D76BE +_021D7688: + mov r0, #0x40 + tst r0, r2 + beq _021D76A4 + ldrb r0, [r4, #0x11] + add r0, r0, #3 + lsr r3, r0, #0x1f + lsl r2, r0, #0x1e + sub r2, r2, r3 + mov r0, #0x1e + ror r2, r0 + add r0, r3, r2 + strb r0, [r4, #0x11] + add r3, r1, #0 + b _021D76BE +_021D76A4: + mov r0, #0x30 + tst r0, r2 + beq _021D76BA + ldrb r0, [r4, #0x11] + cmp r0, #3 + bne _021D76BE + ldrb r0, [r4, #0x12] + add r3, r1, #0 + eor r0, r1 + strb r0, [r4, #0x12] + b _021D76BE +_021D76BA: + add r0, r3, #0 + pop {r3, r4, r5, pc} +_021D76BE: + cmp r3, #0 + bne _021D76C6 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D76C6: + ldr r0, _021D76EC ; =0x000005DC + bl FUN_020054C8 + ldrb r1, [r4, #0x11] + cmp r1, #3 + bne _021D76DA + ldrb r0, [r4, #0x12] + add r0, r1, r0 + strb r0, [r4, #0x16] + b _021D76DC +_021D76DA: + strb r1, [r4, #0x16] +_021D76DC: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D76E0: .word 0x021C48B8 +_021D76E4: .word 0x000005DD +_021D76E8: .word 0x000005E3 +_021D76EC: .word 0x000005DC + thumb_func_end MOD61_021D75D0 + + thumb_func_start MOD61_021D76F0 +MOD61_021D76F0: ; 0x021D76F0 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldrh r0, [r5, #8] + cmp r0, #0 + beq _021D7702 + cmp r0, #1 + beq _021D774E + b _021D777C +_021D7702: + add r0, r5, #0 + add r0, #0x94 + mov r1, #1 + mov r2, #0xa + mov r3, #6 + bl FUN_0200D0BC + add r0, r5, #0 + add r0, #0x94 + mov r1, #0xff + bl FUN_02019620 + ldr r1, [r5] + mov r0, #0x4c + bl FUN_020219F4 + add r4, r0, #0 + ldr r0, [r5, #0x20] + mov r1, #2 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r3, #0 + str r3, [sp] + ldr r0, _021D7788 ; =0x0001020F + str r3, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x94 + mov r1, #1 + add r2, r4, #0 + str r3, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + b _021D777C +_021D774E: + ldr r0, _021D778C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + bne _021D775E + add sp, #0x10 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D775E: + add r0, r5, #0 + add r0, #0x94 + mov r1, #1 + bl FUN_0200D0E0 + add r0, r5, #0 + add r0, #0x94 + bl FUN_02019570 + mov r0, #0 + strh r0, [r5, #8] + ldrb r1, [r5, #0xd] + add sp, #0x10 + strb r1, [r5, #0xc] + pop {r3, r4, r5, pc} +_021D777C: + ldrh r0, [r5, #8] + add r0, r0, #1 + strh r0, [r5, #8] + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7788: .word 0x0001020F +_021D778C: .word 0x021C48B8 + thumb_func_end MOD61_021D76F0 + + thumb_func_start MOD61_021D7790 +MOD61_021D7790: ; 0x021D7790 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4] + ldr r1, _021D77B0 ; =0x021D842C + str r0, [sp] + ldr r0, [r4, #0x18] + mov r2, #1 + mov r3, #5 + bl FUN_02002198 + add r4, #0xa4 + str r0, [r4] + add sp, #4 + pop {r3, r4, pc} + nop +_021D77B0: .word 0x021D842C + thumb_func_end MOD61_021D7790 + + thumb_func_start MOD61_021D77B4 +MOD61_021D77B4: ; 0x021D77B4 + push {r3, lr} + add r1, r0, #0 + add r0, #0xa4 + ldr r0, [r0] + ldr r1, [r1] + bl FUN_020021AC + cmp r0, #0 + beq _021D77D0 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _021D77D4 + b _021D77D8 +_021D77D0: + mov r0, #1 + pop {r3, pc} +_021D77D4: + mov r0, #0 + pop {r3, pc} +_021D77D8: + add r0, r1, #1 + pop {r3, pc} + thumb_func_end MOD61_021D77B4 + + thumb_func_start MOD61_021D77DC +MOD61_021D77DC: ; 0x021D77DC + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldrh r1, [r5, #8] + cmp r1, #0 + beq _021D77F2 + cmp r1, #1 + beq _021D7864 + cmp r1, #2 + beq _021D787C + b _021D78BA +_021D77F2: + mov r1, #1 + add r0, #0x94 + mov r2, #0xa + mov r3, #6 + strb r1, [r5, #0x13] + bl FUN_0200D0BC + add r0, r5, #0 + add r0, #0x94 + mov r1, #0xff + bl FUN_02019620 + ldr r1, [r5] + mov r0, #0x4c + bl FUN_020219F4 + add r4, r0, #0 + ldr r0, [r5, #0x20] + mov r1, #3 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r3, #0 + str r3, [sp] + ldrb r0, [r5, #0x10] + mov r1, #1 + add r2, r4, #0 + str r0, [sp, #4] + ldr r0, _021D78C8 ; =0x0001020F + str r0, [sp, #8] + add r0, r5, #0 + str r3, [sp, #0xc] + add r0, #0x94 + bl FUN_0201BDE0 + strb r0, [r5, #0xf] + add r0, r4, #0 + bl FUN_02021A20 + mov r1, #0 + ldr r0, _021D78CC ; =0x00007FFF + str r1, [sp] + str r0, [sp, #4] + ldrb r2, [r5, #0x17] + ldr r0, [r5, #0x30] + mov r3, #1 + add r2, #0x22 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + bl FUN_020039E8 + ldrb r0, [r5, #0x16] + strb r0, [r5, #0x17] + mov r0, #0 + strb r0, [r5, #0x15] + strb r0, [r5, #0x14] + b _021D78BA +_021D7864: + ldrb r0, [r5, #0xf] + bl FUN_0201BD70 + cmp r0, #0 + beq _021D7874 + add sp, #0x10 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D7874: + add r0, r5, #0 + bl MOD61_021D7790 + b _021D78BA +_021D787C: + bl MOD61_021D77B4 + add r4, r0, #0 + bpl _021D788A + add sp, #0x10 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D788A: + add r0, r5, #0 + add r0, #0x94 + mov r1, #1 + bl FUN_0200D0E0 + add r0, r5, #0 + add r0, #0x94 + bl FUN_02019570 + mov r0, #0 + strh r0, [r5, #8] + cmp r4, #0 + beq _021D78B0 + ldr r1, _021D78D0 ; =0x0000FFFF + ldr r0, [r5, #0x1c] + add sp, #0x10 + strh r1, [r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D78B0: + ldrb r1, [r5, #0xd] + add sp, #0x10 + strb r1, [r5, #0xc] + strb r0, [r5, #0x13] + pop {r3, r4, r5, pc} +_021D78BA: + ldrh r0, [r5, #8] + add r0, r0, #1 + strh r0, [r5, #8] + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D78C8: .word 0x0001020F +_021D78CC: .word 0x00007FFF +_021D78D0: .word 0x0000FFFF + thumb_func_end MOD61_021D77DC + + thumb_func_start MOD61_021D78D4 +MOD61_021D78D4: ; 0x021D78D4 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #5 + bls _021D78E2 + b _021D7A46 +_021D78E2: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D78EE: ; jump table + .short _021D78FA - _021D78EE - 2 ; case 0 + .short _021D7940 - _021D78EE - 2 ; case 1 + .short _021D798A - _021D78EE - 2 ; case 2 + .short _021D79A6 - _021D78EE - 2 ; case 3 + .short _021D79E0 - _021D78EE - 2 ; case 4 + .short _021D7A32 - _021D78EE - 2 ; case 5 +_021D78FA: + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D7A54 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D7A58 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + mov r0, #0 + bl FUN_0200E388 + mov r0, #1 + bl FUN_0200E388 + b _021D7A46 +_021D7940: + bl MOD61_021D7B38 + cmp r0, #0 + bne _021D794E + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D794E: + ldr r0, _021D7A5C ; =MOD61_021D7A6C + add r1, r4, #0 + bl FUN_02015F10 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0 + bl FUN_0200E394 + mov r1, #4 + ldr r0, _021D7A60 ; =0x04000050 + mov r2, #8 + mov r3, #0x1c + str r1, [sp] + bl G2x_SetBlendAlpha_ + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #5 + ldr r0, [r4, #0x30] + ldr r2, _021D7A64 ; =0x0000FFFF + sub r3, r1, #6 + bl FUN_02003210 + b _021D7A46 +_021D798A: + add r0, #0xac + ldr r0, [r0] + cmp r0, #0 + beq _021D7996 + bl FUN_0200BC1C +_021D7996: + ldr r0, [r4, #0x30] + bl FUN_020038E4 + cmp r0, #0 + beq _021D7A46 + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D79A6: + add r0, #0xac + ldr r0, [r0] + cmp r0, #0 + beq _021D79B2 + bl FUN_0200BC1C +_021D79B2: + ldrb r1, [r4, #0xc] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _021D7A68 ; =0x021D8444 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + bne _021D79C8 + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D79C8: + mov r1, #0 + str r1, [sp] + mov r0, #0x10 + str r0, [sp, #4] + str r1, [sp, #8] + mov r1, #5 + ldr r0, [r4, #0x30] + ldr r2, _021D7A64 ; =0x0000FFFF + sub r3, r1, #6 + bl FUN_02003210 + b _021D7A46 +_021D79E0: + ldr r0, [r4, #0x30] + bl FUN_020038E4 + cmp r0, #0 + beq _021D79FC + add r4, #0xac + ldr r0, [r4] + cmp r0, #0 + beq _021D79F6 + bl FUN_0200BC1C +_021D79F6: + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D79FC: + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D7A54 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D7A58 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + b _021D7A46 +_021D7A32: + bl MOD61_021D7B84 + cmp r0, #0 + beq _021D7A40 + add sp, #0xc + mov r0, #1 + pop {r3, r4, pc} +_021D7A40: + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D7A46: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + nop +_021D7A54: .word 0xFFFFE0FF +_021D7A58: .word 0x04001000 +_021D7A5C: .word MOD61_021D7A6C +_021D7A60: .word 0x04000050 +_021D7A64: .word 0x0000FFFF +_021D7A68: .word 0x021D8444 + thumb_func_end MOD61_021D78D4 + + thumb_func_start MOD61_021D7A6C +MOD61_021D7A6C: ; 0x021D7A6C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + cmp r0, #0 + beq _021D7A7A + bl FUN_0200372C +_021D7A7A: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021D7A88 + bl FUN_0200BC30 +_021D7A88: + bl FUN_020AEEB8 + ldr r0, [r4, #0x18] + bl FUN_0201AB60 + ldr r3, _021D7AA0 ; =0x027E0000 + ldr r1, _021D7AA4 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + .align 2, 0 +_021D7AA0: .word 0x027E0000 +_021D7AA4: .word 0x00003FF8 + thumb_func_end MOD61_021D7A6C + + thumb_func_start MOD61_021D7AA8 +MOD61_021D7AA8: ; 0x021D7AA8 + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + ldr r2, [r4, #0x30] + cmp r2, #0 + bne _021D7ABC + bl FUN_0200CAB4 + add sp, #8 + pop {r4, pc} +_021D7ABC: + ldrb r0, [r4, #0x13] + cmp r0, #0 + bne _021D7B30 + ldrb r3, [r4, #0x17] + ldrb r0, [r4, #0x16] + cmp r3, r0 + beq _021D7AEA + mov r1, #0 + ldr r0, _021D7B34 ; =0x00007FFF + str r1, [sp] + str r0, [sp, #4] + add r3, #0x22 + add r0, r2, #0 + lsl r2, r3, #0x10 + lsr r2, r2, #0x10 + mov r3, #1 + bl FUN_020039E8 + ldrb r0, [r4, #0x16] + strb r0, [r4, #0x17] + mov r0, #0 + strb r0, [r4, #0x15] + strb r0, [r4, #0x14] +_021D7AEA: + ldrb r0, [r4, #0x14] + mov r1, #0 + mov r3, #1 + str r0, [sp] + ldr r0, _021D7B34 ; =0x00007FFF + str r0, [sp, #4] + ldrb r2, [r4, #0x16] + ldr r0, [r4, #0x30] + add r2, #0x22 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + bl FUN_020039E8 + ldrb r0, [r4, #0x15] + ldrb r1, [r4, #0x14] + cmp r0, #0 + beq _021D7B20 + sub r0, r1, #1 + strb r0, [r4, #0x14] + cmp r1, #1 + bne _021D7B30 + ldrb r1, [r4, #0x15] + mov r0, #1 + add sp, #8 + eor r0, r1 + strb r0, [r4, #0x15] + pop {r4, pc} +_021D7B20: + add r0, r1, #1 + strb r0, [r4, #0x14] + cmp r1, #0xc + bne _021D7B30 + ldrb r1, [r4, #0x15] + mov r0, #1 + eor r0, r1 + strb r0, [r4, #0x15] +_021D7B30: + add sp, #8 + pop {r4, pc} + .align 2, 0 +_021D7B34: .word 0x00007FFF + thumb_func_end MOD61_021D7AA8 + + thumb_func_start MOD61_021D7B38 +MOD61_021D7B38: ; 0x021D7B38 + push {r4, lr} + add r4, r0, #0 + ldrh r1, [r4, #8] + cmp r1, #3 + bhi _021D7B7A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7B4E: ; jump table + .short _021D7B56 - _021D7B4E - 2 ; case 0 + .short _021D7B5C - _021D7B4E - 2 ; case 1 + .short _021D7B62 - _021D7B4E - 2 ; case 2 + .short _021D7B6E - _021D7B4E - 2 ; case 3 +_021D7B56: + bl MOD61_021D7BD0 + b _021D7B7A +_021D7B5C: + bl MOD61_021D7CE8 + b _021D7B7A +_021D7B62: + bl MOD61_021D7FF4 + add r0, r4, #0 + bl MOD61_021D8114 + b _021D7B7A +_021D7B6E: + bl MOD61_021D8228 + mov r0, #0 + strh r0, [r4, #8] + mov r0, #1 + pop {r4, pc} +_021D7B7A: + ldrh r0, [r4, #8] + add r0, r0, #1 + strh r0, [r4, #8] + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD61_021D7B38 + + thumb_func_start MOD61_021D7B84 +MOD61_021D7B84: ; 0x021D7B84 + push {r4, lr} + add r4, r0, #0 + bl MOD61_021D83E8 + add r0, r4, #0 + add r0, #0x24 + beq _021D7B98 + ldr r0, [r4, #0x20] + bl FUN_0200A8B8 +_021D7B98: + add r0, r4, #0 + bl MOD61_021D80F4 + add r0, r4, #0 + bl MOD61_021D7FB4 + add r0, r4, #0 + bl MOD61_021D7CB4 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD61_021D7B84 + + thumb_func_start MOD61_021D7BB0 +MOD61_021D7BB0: ; 0x021D7BB0 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D7BCC ; =0x021D84A0 + add r3, sp, #0 + mov r2, #5 +_021D7BBA: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7BBA + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D7BCC: .word 0x021D84A0 + thumb_func_end MOD61_021D7BB0 + + thumb_func_start MOD61_021D7BD0 +MOD61_021D7BD0: ; 0x021D7BD0 + push {r4, r5, lr} + sub sp, #0x9c + add r4, r0, #0 + bl MOD61_021D7BB0 + ldr r0, [r4] + bl FUN_02016B94 + add r3, sp, #0 + ldr r5, _021D7CAC ; =0x021D8434 + str r0, [r4, #0x18] + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _021D7CB0 ; =0x021D84C8 + add r3, sp, #0x10 + mov r2, #0x11 +_021D7BFC: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7BFC + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + ldr r0, [r4, #0x18] + add r2, sp, #0x10 + add r3, r1, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #1 + add r2, sp, #0x2c + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #2 + add r2, sp, #0x48 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #3 + add r2, sp, #0x64 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #4 + add r2, sp, #0x80 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_02018744 + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_02018744 + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02018744 + ldr r0, [r4, #0x18] + mov r1, #3 + bl FUN_02018744 + ldr r0, [r4, #0x18] + mov r1, #4 + bl FUN_02018744 + mov r0, #0 + ldr r3, [r4] + mov r1, #0x20 + add r2, r0, #0 + bl FUN_02017F18 + ldr r3, [r4] + mov r0, #1 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r3, [r4] + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r3, [r4] + mov r0, #3 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r3, [r4] + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + add sp, #0x9c + pop {r4, r5, pc} + .align 2, 0 +_021D7CAC: .word 0x021D8434 +_021D7CB0: .word 0x021D84C8 + thumb_func_end MOD61_021D7BD0 + + thumb_func_start MOD61_021D7CB4 +MOD61_021D7CB4: ; 0x021D7CB4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD61_021D7CB4 + + thumb_func_start MOD61_021D7CE8 +MOD61_021D7CE8: ; 0x021D7CE8 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + ldr r0, [r5, #0x1c] + ldr r1, [r5] + ldrb r4, [r0, #0xf] + str r4, [sp, #0x1c] + ldr r0, [sp, #0x1c] + add r4, #0xc + str r0, [sp, #0x20] + add r0, #0x18 + str r0, [sp, #0x20] + mov r0, #0x4f + bl FUN_02006670 + mov r1, #0 + str r1, [sp] + add r6, r0, #0 + ldr r0, [r5] + mov r2, #1 + str r0, [sp, #4] + ldr r0, [r5, #0x18] + mov r3, #5 + bl FUN_0200CB00 + ldrh r0, [r5, #0xa] + mov r1, #0 + mov r2, #0xa + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [r5] + mov r3, #6 + str r0, [sp, #4] + ldr r0, [r5, #0x18] + bl FUN_0200CD68 + mov r0, #0x4f + add r1, r4, #0 + bl LoadFromNARC_7 + add r1, r0, #0 + ldr r0, [r5] + bl FUN_020169D8 + add r7, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + add r2, r7, #0 + bl FUN_02006774 + add r0, r7, #0 + add r1, sp, #0x28 + bl FUN_020B0088 + ldr r3, [sp, #0x28] + mov r0, #0 + str r0, [sp] + ldr r2, [r3, #0x14] + ldr r0, [r5, #0x18] + ldr r3, [r3, #0x10] + mov r1, #1 + bl FUN_02017E14 + ldr r3, [sp, #0x28] + mov r0, #0 + str r0, [sp] + ldr r2, [r3, #0x14] + ldr r0, [r5, #0x18] + ldr r3, [r3, #0x10] + mov r1, #4 + bl FUN_02017E14 + add r0, r7, #0 + bl FUN_02016A18 + ldr r1, [sp, #0x1c] + mov r0, #0x4f + bl LoadFromNARC_7 + add r1, r0, #0 + ldr r0, [r5] + bl FUN_020169D8 + add r4, r0, #0 + ldr r1, [sp, #0x1c] + add r0, r6, #0 + add r2, r4, #0 + bl FUN_02006774 + add r0, r4, #0 + add r1, sp, #0x24 + bl FUN_020B0138 + ldr r2, [sp, #0x24] + mov r0, #4 + ldr r1, [r2, #0xc] + ldr r2, [r2, #8] + mov r3, #0 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + bl FUN_02017FB4 + ldr r0, [r5] + bl FUN_02002FD0 + str r0, [r5, #0x30] + ldr r3, [r5] + mov r1, #0 + mov r2, #0xe0 + bl FUN_02003008 + ldr r0, [r5, #0x30] + ldr r3, [r5] + mov r1, #2 + mov r2, #0x60 + bl FUN_02003008 + mov r0, #0x60 + str r0, [sp] + ldr r1, [sp, #0x24] + mov r2, #0 + ldr r0, [r5, #0x30] + ldr r1, [r1, #0xc] + add r3, r2, #0 + bl FUN_02003054 + ldrb r0, [r5, #0xc] + cmp r0, #1 + bne _021D7E00 + mov r0, #0x20 + str r0, [sp] + ldr r1, [sp, #0x24] + ldr r0, [r5, #0x30] + ldr r1, [r1, #0xc] + mov r2, #0 + add r1, #0x60 + mov r3, #0x10 + bl FUN_02003054 +_021D7E00: + mov r0, #2 + str r0, [sp] + mov r0, #0x60 + str r0, [sp, #4] + mov r2, #0 + str r2, [sp, #8] + ldr r0, [r5, #0x30] + ldr r3, [r5] + mov r1, #0x13 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x30 + str r0, [sp, #8] + ldr r0, [r5, #0x30] + ldr r3, [r5] + mov r1, #0xe + mov r2, #6 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x40 + str r0, [sp, #8] + ldr r0, [r5, #0x30] + ldr r3, [r5] + mov r1, #0xe + mov r2, #7 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x50 + str r0, [sp, #8] + ldr r0, [r5, #0x30] + ldr r3, [r5] + mov r1, #0x26 + mov r2, #0x18 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x60 + str r0, [sp, #8] + ldrh r2, [r5, #0xa] + ldr r0, [r5, #0x30] + ldr r3, [r5] + mov r1, #0x26 + add r2, #0x19 + bl FUN_020030E8 + mov r0, #0x10 + mov r1, #0 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r5, #0x30] + add r2, r1, #0 + mov r3, #0x70 + bl FUN_020039E8 + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + ldr r0, [r5, #0x30] + mov r1, #2 + mov r3, #0x30 + bl FUN_020039E8 + ldr r0, [r5, #0x30] + mov r1, #1 + bl FUN_020038F0 + ldr r0, [r5, #0x30] + bl FUN_0200372C + add r0, r4, #0 + bl FUN_02016A18 + ldr r1, [sp, #0x20] + mov r0, #0x4f + bl LoadFromNARC_7 + add r1, r0, #0 + ldr r0, [r5] + bl FUN_02016998 + str r0, [r5, #0x34] + ldr r1, [sp, #0x20] + ldr r2, [r5, #0x34] + add r0, r6, #0 + bl FUN_02006774 + add r1, r5, #0 + ldr r0, [r5, #0x34] + add r1, #0x3c + bl FUN_020B0180 + mov r0, #0x4f + mov r1, #0x24 + bl LoadFromNARC_7 + add r1, r0, #0 + ldr r0, [r5] + bl FUN_02016998 + str r0, [r5, #0x38] + ldr r2, [r5, #0x38] + add r0, r6, #0 + mov r1, #0x24 + bl FUN_02006774 + add r1, r5, #0 + ldr r0, [r5, #0x38] + add r1, #0x40 + bl FUN_020B0180 + add r0, r6, #0 + bl FUN_020066F4 + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + ldr r2, _021D7FAC ; =0x00002001 + mov r1, #4 + bl FUN_02018540 + mov r2, #0 + ldr r0, [r5, #0x3c] + mov r1, #0x20 + str r1, [sp] + mov r1, #0x18 + str r1, [sp, #4] + add r1, r0, #0 + add r1, #0xc + str r1, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + ldrh r1, [r0] + add r3, r2, #0 + lsl r1, r1, #0x15 + lsr r1, r1, #0x18 + str r1, [sp, #0x14] + ldrh r0, [r0, #2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + ldr r0, [r5, #0x18] + bl FUN_02018170 + ldr r0, [r5, #0x18] + mov r1, #3 + bl FUN_0201AC68 + ldr r0, [r5, #0x18] + mov r1, #4 + bl FUN_0201AC68 + ldrb r0, [r5, #0xc] + cmp r0, #1 + bne _021D7FA6 + ldr r0, [r5, #0x40] + mov r1, #0x20 + str r1, [sp] + mov r1, #0x18 + str r1, [sp, #4] + add r1, r0, #0 + add r1, #0xc + mov r2, #0 + str r1, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + ldrh r1, [r0] + add r3, r2, #0 + lsl r1, r1, #0x15 + lsr r1, r1, #0x18 + str r1, [sp, #0x14] + ldrh r0, [r0, #2] + mov r1, #2 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + ldr r0, [r5, #0x18] + bl FUN_02018170 + ldr r0, [r5, #0x18] + mov r1, #2 + bl FUN_0201AC68 + mov r2, #0 + strb r2, [r5, #0x14] + ldr r0, _021D7FB0 ; =MOD61_021D7AA8 + add r1, r5, #0 + strb r2, [r5, #0x15] + bl FUN_0200CA44 +_021D7FA6: + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_021D7FAC: .word 0x00002001 +_021D7FB0: .word MOD61_021D7AA8 + thumb_func_end MOD61_021D7CE8 + + thumb_func_start MOD61_021D7FB4 +MOD61_021D7FB4: ; 0x021D7FB4 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #0x38] + bl FUN_02016A18 + ldr r0, [r4, #0x34] + bl FUN_02016A18 + ldr r0, [r4, #0x30] + mov r1, #2 + bl FUN_02003038 + ldr r0, [r4, #0x30] + mov r1, #0 + bl FUN_02003038 + ldr r0, [r4, #0x30] + bl FUN_02002FEC + mov r1, #0 + str r1, [r4, #0x30] + ldr r0, _021D7FF0 ; =0x04000050 + add r2, r1, #0 + mov r3, #0x1f + str r1, [sp] + bl G2x_SetBlendAlpha_ + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021D7FF0: .word 0x04000050 + thumb_func_end MOD61_021D7FB4 + + thumb_func_start MOD61_021D7FF4 +MOD61_021D7FF4: ; 0x021D7FF4 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + mov r3, #3 + add r5, r0, #0 + str r3, [sp] + mov r0, #0x1a + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r2, #1 + add r1, r5, #0 + ldr r0, _021D80DC ; =0x00000397 + str r2, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x18] + add r1, #0x44 + bl FUN_02019064 + mov r0, #8 + str r0, [sp] + mov r0, #0x1a + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r2, #1 + add r1, r5, #0 + ldr r0, _021D80E0 ; =0x0000032F + str r2, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x18] + add r1, #0x54 + mov r3, #3 + bl FUN_02019064 + mov r0, #0xd + str r0, [sp] + mov r0, #0x1a + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r2, #1 + add r1, r5, #0 + ldr r0, _021D80E4 ; =0x000002C7 + str r2, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x18] + add r1, #0x64 + mov r3, #3 + bl FUN_02019064 + mov r0, #0x14 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r2, #1 + add r1, r5, #0 + ldr r0, _021D80E8 ; =0x000002B7 + str r2, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x18] + add r1, #0x74 + mov r3, #0x15 + bl FUN_02019064 + mov r0, #0x14 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r2, #1 + add r1, r5, #0 + ldr r0, _021D80EC ; =0x000002A7 + str r2, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x18] + add r1, #0x84 + mov r3, #3 + bl FUN_02019064 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, _021D80F0 ; =0x00000297 + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #0x18] + add r1, #0x94 + mov r2, #0 + mov r3, #2 + bl FUN_02019064 + mov r4, #0 + add r5, #0x44 + add r6, r4, #0 +_021D80BE: + add r0, r5, #0 + add r1, r6, #0 + bl FUN_02019620 + cmp r4, #5 + bge _021D80D0 + add r0, r5, #0 + bl FUN_020191D0 +_021D80D0: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #6 + blt _021D80BE + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021D80DC: .word 0x00000397 +_021D80E0: .word 0x0000032F +_021D80E4: .word 0x000002C7 +_021D80E8: .word 0x000002B7 +_021D80EC: .word 0x000002A7 +_021D80F0: .word 0x00000297 + thumb_func_end MOD61_021D7FF4 + + thumb_func_start MOD61_021D80F4 +MOD61_021D80F4: ; 0x021D80F4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 + add r5, #0x44 +_021D80FC: + add r0, r5, #0 + bl FUN_02019570 + add r0, r5, #0 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #6 + blt _021D80FC + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD61_021D80F4 + + thumb_func_start MOD61_021D8114 +MOD61_021D8114: ; 0x021D8114 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r0, #0 + mov r7, #0 + add r6, r4, #0 + add r5, r7, #0 + add r6, #0x44 +_021D8122: + ldr r0, [r4, #0x1c] + add r0, #0x1a + add r0, r0, r5 + bl FUN_0201385C + cmp r0, #0 + beq _021D8164 + ldr r0, [r4, #0x1c] + ldr r1, [r4] + add r0, #0x1a + add r0, r0, r5 + bl FUN_020137D4 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _021D8220 ; =0x00010200 + ldr r2, [sp, #0x10] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r6, #0 + mov r1, #1 + mov r3, #0 + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_020191D0 +_021D8164: + add r7, r7, #1 + add r5, #8 + add r6, #0x10 + cmp r7, #3 + blt _021D8122 + ldrb r0, [r4, #0xc] + cmp r0, #1 + bne _021D81F8 + ldr r2, _021D8224 ; =0x00000169 + ldr r3, [r4] + mov r0, #1 + mov r1, #0x1a + bl FUN_0200A86C + str r0, [r4, #0x20] + ldr r1, [r4] + mov r0, #0x10 + bl FUN_020219F4 + add r5, r0, #0 + add r0, r4, #0 + str r0, [sp, #0x18] + add r0, #0x44 + mov r6, #0 + str r0, [sp, #0x18] +_021D8196: + add r0, r5, #0 + bl FUN_02021A4C + ldr r0, [r4, #0x20] + add r1, r6, #0 + add r2, r5, #0 + bl FUN_0200A8E0 + mov r0, #1 + add r1, r5, #0 + mov r2, #0 + bl FUN_02002E14 + mov r1, #0x40 + sub r7, r1, r0 + add r0, r6, #3 + lsl r0, r0, #4 + str r0, [sp, #0x14] + mov r0, #2 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _021D8220 ; =0x00010200 + lsr r3, r7, #0x1f + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r3, r7, r3 + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x18] + add r2, r5, #0 + add r0, r0, r1 + mov r1, #1 + asr r3, r3, #1 + bl FUN_0201BDE0 + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x18] + add r0, r0, r1 + bl FUN_020191D0 + add r6, r6, #1 + cmp r6, #2 + blt _021D8196 + add r0, r5, #0 + bl FUN_02021A20 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} +_021D81F8: + mov r0, #2 + str r0, [sp] + mov r3, #0 + ldr r0, _021D8220 ; =0x00010200 + str r3, [sp, #4] + str r0, [sp, #8] + str r3, [sp, #0xc] + ldr r2, [r4, #0x1c] + add r0, r4, #0 + ldr r2, [r2, #0x10] + add r0, #0x74 + mov r1, #1 + bl FUN_0201BDE0 + add r4, #0x74 + add r0, r4, #0 + bl FUN_020191D0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D8220: .word 0x00010200 +_021D8224: .word 0x00000169 + thumb_func_end MOD61_021D8114 + + thumb_func_start MOD61_021D8228 +MOD61_021D8228: ; 0x021D8228 + push {r4, r5, r6, r7, lr} + sub sp, #0x94 + add r5, r0, #0 + bl FUN_02033F20 + ldrb r0, [r5, #0xc] + cmp r0, #1 + bne _021D823A + b _021D83D4 +_021D823A: + ldr r1, [r5] + mov r0, #0x20 + bl FUN_0201C24C + ldr r0, [r5] + bl FUN_0200BB14 + add r1, r5, #0 + add r1, #0xa8 + str r0, [r1] + add r0, r5, #0 + add r0, #0xa8 + ldr r0, [r0] + bl FUN_0200BB34 + add r1, r5, #0 + add r1, #0xac + add r2, sp, #0x40 + ldr r4, _021D83D8 ; =0x021D8480 + str r0, [r1] + ldmia r4!, {r0, r1} + add r3, r2, #0 + stmia r2!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r4!, {r0, r1} + ldr r6, _021D83DC ; =0x021D8454 + stmia r2!, {r0, r1} + add r4, sp, #0x2c + ldmia r6!, {r0, r1} + add r2, r4, #0 + stmia r4!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r4!, {r0, r1} + ldr r0, [r6] + ldr r6, _021D83E0 ; =0x021D8468 + str r0, [r4] + add r4, sp, #0x14 + ldmia r6!, {r0, r1} + stmia r4!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r4!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r4!, {r0, r1} + add r0, r5, #0 + add r0, #0xa8 + add r1, r3, #0 + ldr r0, [r0] + mov r3, #0x20 + bl FUN_0200BB6C + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xa8 + add r1, #0xac + ldr r0, [r0] + ldr r1, [r1] + mov r2, #3 + bl FUN_0200BBF0 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xa8 + add r1, #0xac + ldr r0, [r0] + ldr r1, [r1] + add r2, sp, #0x14 + bl FUN_0200BF60 + ldr r0, [r5] + bl FUN_0200A064 + bl FUN_0206B888 + mov r1, #0 + add r3, r0, #0 + str r1, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xa8 + add r1, #0xac + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0x13 + bl FUN_0200C06C + bl FUN_0206B88C + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xa8 + add r1, #0xac + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0x13 + bl FUN_0200C124 + bl FUN_0206B898 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xa8 + add r1, #0xac + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0x13 + bl FUN_0200C13C + mov r6, #0 + add r4, r6, #0 + add r7, r6, #0 + str r5, [sp, #0x10] +_021D8338: + ldr r0, [r5, #0x1c] + add r3, r0, r4 + ldrh r1, [r3, #0x14] + ldr r0, _021D83E4 ; =0x0000FFFF + cmp r1, r0 + beq _021D83D4 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r6, [sp, #8] + ldrh r3, [r3, #0x14] + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xa8 + add r1, #0xac + lsl r3, r3, #0x14 + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0x13 + lsr r3, r3, #0x14 + bl FUN_0200C918 + add r0, sp, #0x60 + mov r1, #0 + mov r2, #0x34 + bl MI_CpuFill8 + mov r0, #0x80 + sub r1, r0, r7 + add r0, sp, #0x60 + strh r1, [r0] + mov r1, #0xa0 + strh r1, [r0, #2] + mov r1, #0 + strh r1, [r0, #4] + strh r1, [r0, #6] + mov r0, #2 + str r0, [sp, #0x8c] + ldr r0, [r5, #0x1c] + add r2, sp, #0x60 + add r0, r0, r4 + ldrh r0, [r0, #0x14] + lsl r0, r0, #0x10 + lsr r0, r0, #0x1c + str r0, [sp, #0x6c] + add r0, r1, #0 + str r0, [sp, #0x90] + mov r0, #1 + str r0, [sp, #0x70] + add r0, r1, #0 + str r0, [sp, #0x78] + str r0, [sp, #0x7c] + str r0, [sp, #0x80] + sub r0, r1, #1 + str r0, [sp, #0x84] + sub r0, r1, #1 + str r0, [sp, #0x88] + add r0, r5, #0 + add r1, r5, #0 + str r6, [sp, #0x74] + add r0, #0xa8 + add r1, #0xac + ldr r0, [r0] + ldr r1, [r1] + bl FUN_0200C154 + ldr r1, [sp, #0x10] + add r6, r6, #1 + add r1, #0xb0 + str r0, [r1] + ldr r0, [sp, #0x10] + add r4, r4, #2 + add r0, r0, #4 + add r7, #0x28 + str r0, [sp, #0x10] + cmp r6, #3 + blt _021D8338 +_021D83D4: + add sp, #0x94 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D83D8: .word 0x021D8480 +_021D83DC: .word 0x021D8454 +_021D83E0: .word 0x021D8468 +_021D83E4: .word 0x0000FFFF + thumb_func_end MOD61_021D8228 + + thumb_func_start MOD61_021D83E8 +MOD61_021D83E8: ; 0x021D83E8 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldrb r0, [r6, #0xc] + cmp r0, #0 + bne _021D8428 + mov r4, #0 + add r5, r6, #0 +_021D83F6: + add r0, r5, #0 + add r0, #0xb0 + ldr r0, [r0] + cmp r0, #0 + beq _021D8404 + bl FUN_0200C3DC +_021D8404: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021D83F6 + add r0, r6, #0 + add r1, r6, #0 + add r0, #0xa8 + add r1, #0xac + ldr r0, [r0] + ldr r1, [r1] + bl FUN_0200C398 + add r6, #0xa8 + ldr r0, [r6] + bl FUN_0200BD04 + bl FUN_0201C29C +_021D8428: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD61_021D83E8 + + .section .rodata + ; 0x021D842C + .incbin "baserom.nds", 0x2AE94C, 0x128 diff --git a/arm9/modules/62/asm/module_62.s b/arm9/modules/62/asm/module_62.s new file mode 100644 index 00000000..4623b0ae --- /dev/null +++ b/arm9/modules/62/asm/module_62.s @@ -0,0 +1,7543 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD62_0222D5C0 +MOD62_0222D5C0: ; 0x0222D5C0 + ldr r3, _0222D5C8 ; =HandleLoadOverlay + ldr r0, _0222D5CC ; =SDK_OVERLAY_MODULE_08_ID + mov r1, #2 + bx r3 + .align 2, 0 +_0222D5C8: .word HandleLoadOverlay +_0222D5CC: .word SDK_OVERLAY_MODULE_08_ID + thumb_func_end MOD62_0222D5C0 + + thumb_func_start MOD62_0222D5D0 +MOD62_0222D5D0: ; 0x0222D5D0 + add r3, r2, #0 + sub r3, #0xa + strb r3, [r0] + add r3, r1, #0 + sub r3, #0xa + strb r3, [r0, #2] + add r2, #0xa + strb r2, [r0, #1] + add r1, #0xa + strb r1, [r0, #3] + bx lr + .align 2, 0 + thumb_func_end MOD62_0222D5D0 + + thumb_func_start MOD62_0222D5E8 +MOD62_0222D5E8: ; 0x0222D5E8 + mov r1, #0 + strb r1, [r0] + strb r1, [r0, #2] + mov r1, #0xc0 + strb r1, [r0, #1] + mov r1, #0xff + strb r1, [r0, #3] + bx lr + thumb_func_end MOD62_0222D5E8 + + thumb_func_start MOD62_0222D5F8 +MOD62_0222D5F8: ; 0x0222D5F8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + beq _0222D64C + cmp r2, #1 + bne _0222D628 + ldr r3, _0222D650 ; =0x021C48F8 + mov r1, #0x1c + mov r2, #0x1e + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, r4, #0 + bl FUN_0200C714 + add r1, sp, #0 + add r0, r4, #0 + add r1, #2 + add r2, sp, #0 + bl FUN_0200C7A0 + add r0, r5, #0 + bl MOD62_0222D5E8 + pop {r3, r4, r5, pc} +_0222D628: + add r1, sp, #0 + add r0, r4, #0 + add r1, #2 + add r2, sp, #0 + bl FUN_0200C7A0 + add r3, sp, #0 + mov r1, #2 + mov r2, #0 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, r5, #0 + lsl r1, r1, #0x18 + lsl r2, r2, #0x18 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + bl MOD62_0222D5D0 +_0222D64C: + pop {r3, r4, r5, pc} + nop +_0222D650: .word 0x021C48F8 + thumb_func_end MOD62_0222D5F8 + + thumb_func_start MOD62_0222D654 +MOD62_0222D654: ; 0x0222D654 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r7, r4, #0 + mov r6, #0xcb + add r5, r0, #0 + sub r7, #0x38 + lsl r6, r6, #2 +_0222D662: + ldr r0, [r5, r6] + cmp r0, #0 + beq _0222D670 + add r1, r7, #0 + mov r2, #0x10 + bl FUN_0200C82C +_0222D670: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #8 + blt _0222D662 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD62_0222D654 + + thumb_func_start MOD62_0222D67C +MOD62_0222D67C: ; 0x0222D67C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0xf1 + lsl r0, r0, #2 + ldr r0, [r7, r0] + mov r6, #0 + lsl r0, r0, #3 + add r0, r7, r0 + ldr r4, [r0, #8] + add r5, r7, #0 +_0222D690: + ldrb r1, [r4] + cmp r1, #0 + beq _0222D6CE + mov r0, #0xca + lsl r0, r0, #2 + strb r1, [r5, r0] + ldrb r1, [r4, #1] + add r0, r0, #1 + strb r1, [r5, r0] + ldrb r1, [r4, #2] + ldr r0, _0222D6E8 ; =0x0000032A + strb r1, [r5, r0] + lsl r1, r6, #0x18 + add r0, r7, #0 + lsr r1, r1, #0x18 + bl MOD62_0222D9A0 + mov r0, #0x33 + mov r1, #0xcb + lsl r0, r0, #4 + lsl r1, r1, #2 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + mov r2, #0 + bl MOD62_0222D5F8 + mov r0, #0xc9 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r5, r0] + b _0222D6DA +_0222D6CE: + mov r0, #0xc9 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] + add r0, r0, #4 + strb r1, [r5, r0] +_0222D6DA: + add r6, r6, #1 + add r4, r4, #3 + add r5, #0x10 + cmp r6, #8 + blt _0222D690 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222D6E8: .word 0x0000032A + thumb_func_end MOD62_0222D67C + + thumb_func_start MOD62_0222D6EC +MOD62_0222D6EC: ; 0x0222D6EC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + mov r0, #0xc9 + mov r4, #0 + add r3, r6, #0 + lsl r0, r0, #2 +_0222D6FA: + ldr r2, [r3, r0] + cmp r2, #1 + beq _0222D75C + add r0, r6, r1 + mov r1, #0x42 + lsl r1, r1, #4 + ldrb r3, [r0, r1] + lsl r5, r4, #4 + add r0, r1, #0 + add r2, r6, r5 + sub r0, #0xf8 + strb r3, [r2, r0] + add r0, r1, #0 + sub r0, #0xf7 + add r7, r6, r0 + mov r0, #0xbe + sub r1, #0xf6 + strb r0, [r7, r5] + add r0, r6, r1 + mov r1, #0x46 + strb r1, [r0, r5] + str r0, [sp] + add r0, sp, #8 + add r1, sp, #4 + bl FUN_02020AB0 + ldr r0, [sp, #8] + strb r0, [r7, r5] + ldr r1, [sp, #4] + ldr r0, [sp] + strb r1, [r0, r5] + lsl r1, r4, #0x18 + add r0, r6, #0 + lsr r1, r1, #0x18 + bl MOD62_0222D9A0 + lsl r1, r4, #0x18 + add r0, r6, #0 + lsr r1, r1, #0x18 + bl MOD62_0222D788 + mov r0, #0xc9 + mov r2, #1 + add r1, r6, r5 + lsl r0, r0, #2 + str r2, [r1, r0] + add sp, #0xc + add r0, r4, #0 + pop {r4, r5, r6, r7, pc} +_0222D75C: + add r4, r4, #1 + add r3, #0x10 + cmp r4, #8 + blt _0222D6FA + mov r0, #0xff + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD62_0222D6EC + + thumb_func_start MOD62_0222D76C +MOD62_0222D76C: ; 0x0222D76C + mov r1, #0xc9 + mov r3, #0 + lsl r1, r1, #2 +_0222D772: + ldr r2, [r0, r1] + cmp r2, #1 + beq _0222D77C + mov r0, #1 + bx lr +_0222D77C: + add r3, r3, #1 + add r0, #0x10 + cmp r3, #8 + blt _0222D772 + mov r0, #0 + bx lr + thumb_func_end MOD62_0222D76C + + thumb_func_start MOD62_0222D788 +MOD62_0222D788: ; 0x0222D788 + push {r3, r4, r5, r6, r7, lr} + mov r7, #0xc9 + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 + lsl r7, r7, #2 +_0222D794: + ldr r0, [r5, r7] + cmp r0, #1 + bne _0222D7D4 + cmp r4, r6 + bne _0222D7AC + mov r0, #0xcb + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_0200C6C4 + b _0222D7D4 +_0222D7AC: + mov r0, #0xcb + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0200C6D8 + add r1, r0, #0 + bne _0222D7C8 + mov r0, #0xcb + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r1, #1 + bl FUN_0200C6C4 + b _0222D7D4 +_0222D7C8: + mov r0, #0xcb + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r1, #2 + bl FUN_0200C6C4 +_0222D7D4: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #8 + blt _0222D794 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD62_0222D788 + + thumb_func_start MOD62_0222D7E0 +MOD62_0222D7E0: ; 0x0222D7E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xdc + ldr r4, [r1] + add r1, r0, #0 + add r1, #0xe0 + ldr r5, [r1] + mov r1, #0x5b + str r1, [sp] + add r1, #0xca + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + mov r1, #1 + str r1, [sp, #0xc] + mov r1, #2 + str r1, [sp, #0x10] + ldr r1, _0222D864 ; =0x0000532D + add r6, r2, #0 + str r1, [sp, #0x14] + add r0, #0xe8 + ldr r0, [r0] + mov r1, #3 + add r2, r4, #0 + add r3, r5, #0 + bl FUN_0200C0DC + add r0, r7, #0 + bl FUN_02085FAC + add r3, r0, #0 + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _0222D868 ; =0x00004E20 + add r1, r5, #0 + add r0, r6, r0 + str r0, [sp, #8] + add r0, r4, #0 + mov r2, #0x5b + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0222D86C ; =0x0000564D + add r1, r5, #0 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x5b + mov r3, #0x5d + bl FUN_0200C124 + mov r3, #1 + ldr r0, _0222D870 ; =0x000059D9 + str r3, [sp] + str r0, [sp, #4] + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0x5b + bl FUN_0200C13C + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222D864: .word 0x0000532D +_0222D868: .word 0x00004E20 +_0222D86C: .word 0x0000564D +_0222D870: .word 0x000059D9 + thumb_func_end MOD62_0222D7E0 + + thumb_func_start MOD62_0222D874 +MOD62_0222D874: ; 0x0222D874 + push {r4, r5, r6, r7, lr} + sub sp, #0x74 + mov r1, #0x26 + lsl r1, r1, #4 + str r0, [sp] + ldr r0, [r0, r1] + cmp r0, #0 + bne _0222D886 + b _0222D994 +_0222D886: + ldr r0, [sp] + mov r7, #0 + str r7, [r0, r1] + add r4, sp, #0x54 + add r5, sp, #0x34 + add r6, r0, #0 +_0222D892: + mov r0, #0xff + str r0, [r4] + str r0, [r5] + mov r0, #0xcb + lsl r0, r0, #2 + ldr r0, [r6, r0] + cmp r0, #0 + beq _0222D8AA + bl FUN_0200C6D8 + str r0, [r4] + str r7, [r5] +_0222D8AA: + add r7, r7, #1 + add r4, r4, #4 + add r5, r5, #4 + add r6, #0x10 + cmp r7, #8 + blt _0222D892 + mov r0, #0 + mov ip, r0 +_0222D8BA: + mov r0, ip + mov r3, #7 + cmp r0, #7 + bge _0222D8EA + add r4, sp, #0x70 + add r5, sp, #0x50 +_0222D8C6: + sub r7, r4, #4 + ldr r2, [r4] + ldr r0, [r7] + cmp r0, r2 + blt _0222D8DE + ldr r1, [r5] + sub r6, r5, #4 + str r0, [r4] + ldr r0, [r6] + str r0, [r5] + str r2, [r7] + str r1, [r6] +_0222D8DE: + sub r3, r3, #1 + mov r0, ip + sub r4, r4, #4 + sub r5, r5, #4 + cmp r3, r0 + bgt _0222D8C6 +_0222D8EA: + mov r0, ip + add r0, r0, #1 + mov ip, r0 + cmp r0, #7 + blt _0222D8BA + mov r3, #0xca + lsl r3, r3, #2 + ldr r0, [sp] + mov r2, #0 + add r1, sp, #0x1c + add r4, r3, #1 + add r5, r3, #2 +_0222D902: + ldrb r6, [r0, r3] + add r2, r2, #1 + strb r6, [r1] + ldrb r6, [r0, r4] + strb r6, [r1, #1] + ldrb r6, [r0, r5] + add r0, #0x10 + strb r6, [r1, #2] + add r1, r1, #3 + cmp r2, #8 + blt _0222D902 + add r3, sp, #0x1c + add r2, sp, #4 + mov r1, #0x18 +_0222D91E: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _0222D91E + ldr r5, [sp] + mov r6, #0 + add r4, sp, #0x34 + add r7, sp, #4 +_0222D932: + ldr r1, [r4] + cmp r1, #0xff + bne _0222D94A + mov r0, #0xca + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r5, r0] + add r0, r0, #1 + strb r1, [r5, r0] + ldr r0, _0222D998 ; =0x0000032A + strb r1, [r5, r0] + b _0222D98A +_0222D94A: + lsl r0, r1, #1 + add r0, r1, r0 + ldrb r1, [r7, r0] + mov r0, #0xca + lsl r0, r0, #2 + strb r1, [r5, r0] + ldr r1, [r4] + lsl r0, r1, #1 + add r0, r1, r0 + add r0, r7, r0 + ldrb r1, [r0, #1] + ldr r0, _0222D99C ; =0x00000329 + strb r1, [r5, r0] + ldr r1, [r4] + lsl r0, r1, #1 + add r0, r1, r0 + add r0, r7, r0 + ldrb r1, [r0, #2] + ldr r0, _0222D998 ; =0x0000032A + strb r1, [r5, r0] + ldr r0, [r4] + lsl r1, r0, #4 + ldr r0, [sp] + add r1, r0, r1 + mov r0, #0xcb + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0222D98A + add r1, r6, #0 + bl FUN_0200C6C4 +_0222D98A: + add r6, r6, #1 + add r4, r4, #4 + add r5, #0x10 + cmp r6, #8 + blt _0222D932 +_0222D994: + add sp, #0x74 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0222D998: .word 0x0000032A +_0222D99C: .word 0x00000329 + thumb_func_end MOD62_0222D874 + + thumb_func_start MOD62_0222D9A0 +MOD62_0222D9A0: ; 0x0222D9A0 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r1, #0 + add r1, r0, #0 + add r1, #0xdc + ldr r7, [r1] + add r1, r0, #0 + add r1, #0xe0 + ldr r6, [r1] + mov r1, #0xc9 + lsl r1, r1, #2 + add r2, r0, r1 + lsl r1, r5, #4 + add r4, r2, r1 + ldr r1, [r2, r1] + cmp r1, #1 + bne _0222D9CC + bl ErrorHandling + add sp, #0x34 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0222D9CC: + ldrb r1, [r4, #4] + add r2, r5, #0 + bl MOD62_0222D7E0 + ldrb r1, [r4, #5] + add r0, sp, #0 + strh r1, [r0] + ldrb r1, [r4, #6] + strh r1, [r0, #2] + mov r1, #0 + strh r1, [r0, #4] + strh r1, [r0, #6] + mov r0, #2 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x2c] + sub r0, r0, #2 + str r1, [sp, #0xc] + str r1, [sp, #0x30] + str r1, [sp, #8] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + ldrb r0, [r4, #4] + bl FUN_02085FAC + ldr r0, _0222DA28 ; =0x00004E20 + add r1, r6, #0 + add r0, r5, r0 + str r0, [sp, #0x14] + ldr r0, _0222DA2C ; =0x0000532D + add r2, sp, #0 + str r0, [sp, #0x18] + ldr r0, _0222DA30 ; =0x0000564D + str r0, [sp, #0x1c] + ldr r0, _0222DA34 ; =0x000059D9 + str r0, [sp, #0x20] + add r0, r7, #0 + bl FUN_0200C154 + str r0, [r4, #8] + bl FUN_0200C5A8 + mov r0, #1 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_0222DA28: .word 0x00004E20 +_0222DA2C: .word 0x0000532D +_0222DA30: .word 0x0000564D +_0222DA34: .word 0x000059D9 + thumb_func_end MOD62_0222D9A0 + + thumb_func_start MOD62_0222DA38 +MOD62_0222DA38: ; 0x0222DA38 + push {r3, r4, r5, r6, r7, lr} + add r5, r2, #0 + add r6, r1, #0 + mov r1, #0xc9 + add r4, r0, #0 + lsl r7, r5, #4 + add r3, r4, r7 + lsl r1, r1, #2 + ldr r2, [r3, r1] + cmp r2, #0 + bne _0222DA52 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0222DA52: + cmp r6, #3 + bhi _0222DAE2 + add r2, r6, r6 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0222DA62: ; jump table + .short _0222DA6A - _0222DA62 - 2 ; case 0 + .short _0222DAAA - _0222DA62 - 2 ; case 1 + .short _0222DA80 - _0222DA62 - 2 ; case 2 + .short _0222DAAA - _0222DA62 - 2 ; case 3 +_0222DA6A: + add r1, r4, #0 + add r1, #0xd4 + ldr r1, [r1] + cmp r1, #0xff + bne _0222DAE6 + add r4, #0xd4 + add r1, r5, #0 + str r5, [r4] + bl MOD62_0222D788 + b _0222DAE6 +_0222DA80: + add r0, #0xd4 + ldr r0, [r0] + cmp r0, r5 + bne _0222DAE6 + add r0, r1, #0 + add r0, #0xc + add r1, #8 + ldr r0, [r3, r0] + ldr r1, [r3, r1] + mov r2, #1 + bl MOD62_0222D5F8 + add r0, r4, #0 + add r1, r5, #0 + bl MOD62_0222DBCC + add r0, r4, #0 + add r1, r5, #0 + bl MOD62_0222DC48 + b _0222DAE6 +_0222DAAA: + add r1, r4, #0 + add r1, #0xd4 + ldr r1, [r1] + cmp r1, #0xff + bne _0222DAE6 + add r1, r5, #0 + bl MOD62_0222DB38 + mov r1, #0x33 + add r2, r4, r7 + lsl r1, r1, #4 + add r6, r0, #0 + ldr r0, [r2, r1] + sub r1, r1, #4 + ldr r1, [r2, r1] + mov r2, #0 + bl MOD62_0222D5F8 + cmp r6, #0 + bne _0222DADA + add r0, r4, #0 + add r1, r5, #0 + bl MOD62_0222DB78 +_0222DADA: + mov r0, #0xff + add r4, #0xd4 + str r0, [r4] + b _0222DAE6 +_0222DAE2: + bl ErrorHandling +_0222DAE6: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD62_0222DA38 + + thumb_func_start MOD62_0222DAEC +MOD62_0222DAEC: ; 0x0222DAEC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r7, #0xc9 + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_0222DAF8: + ldr r0, [r5, r7] + cmp r0, #1 + bne _0222DB06 + add r0, r6, #0 + add r1, r4, #0 + bl MOD62_0222DB78 +_0222DB06: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #8 + blt _0222DAF8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD62_0222DAEC + + thumb_func_start MOD62_0222DB10 +MOD62_0222DB10: ; 0x0222DB10 + push {r3, r4, r5, r6, r7, lr} + mov r7, #0xc9 + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 + lsl r7, r7, #2 +_0222DB1C: + ldr r0, [r5, r7] + cmp r0, #1 + bne _0222DB2E + mov r0, #0xcb + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r6, #0 + bl FUN_0200C644 +_0222DB2E: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #8 + blt _0222DB1C + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD62_0222DB10 + + thumb_func_start MOD62_0222DB38 +MOD62_0222DB38: ; 0x0222DB38 + push {r3, lr} + lsl r1, r1, #4 + add r2, r0, r1 + mov r0, #0xc9 + lsl r0, r0, #2 + ldr r1, [r2, r0] + cmp r1, #0 + bne _0222DB4C + mov r0, #1 + pop {r3, pc} +_0222DB4C: + add r0, #8 + ldr r0, [r2, r0] + add r1, sp, #0 + add r1, #2 + add r2, sp, #0 + bl FUN_0200C7A0 + add r2, sp, #0 + mov r0, #2 + mov r1, #0 + ldrsh r0, [r2, r0] + ldrsh r1, [r2, r1] + mov r2, #0xbe + mov r3, #0x46 + bl MOD08_0222A02C + cmp r0, #0x3c + bgt _0222DB74 + mov r0, #1 + pop {r3, pc} +_0222DB74: + mov r0, #0 + pop {r3, pc} + thumb_func_end MOD62_0222DB38 + + thumb_func_start MOD62_0222DB78 +MOD62_0222DB78: ; 0x0222DB78 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0xca + add r7, r1, #0 + lsl r0, r0, #2 + lsl r4, r7, #4 + add r6, r5, r0 + ldrb r0, [r6, r4] + bl FUN_02085FAC + add r0, r5, #0 + add r0, #0xe0 + ldr r1, _0222DBC8 ; =0x00004E20 + ldr r0, [r0] + add r1, r7, r1 + bl FUN_0200C358 + mov r0, #0xcb + lsl r0, r0, #2 + add r7, r5, r0 + ldr r0, [r7, r4] + bl FUN_0200C3DC + mov r1, #0 + mov r2, #0xc9 + lsl r2, r2, #2 + str r1, [r7, r4] + add r3, r5, r4 + str r1, [r3, r2] + strb r1, [r6, r4] + add r0, r2, #5 + strb r1, [r3, r0] + add r0, r2, #6 + add r2, #0xc + strb r1, [r3, r0] + ldr r0, [r3, r2] + add r2, r1, #0 + bl MOD62_0222D5D0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222DBC8: .word 0x00004E20 + thumb_func_end MOD62_0222DB78 + + thumb_func_start MOD62_0222DBCC +MOD62_0222DBCC: ; 0x0222DBCC + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + bl MOD62_0222DB38 + cmp r0, #0 + bne _0222DBEC + lsl r0, r5, #4 + add r1, r4, r0 + mov r0, #0xcb + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_0200C90C + pop {r3, r4, r5, pc} +_0222DBEC: + lsl r0, r5, #4 + add r1, r4, r0 + mov r0, #0xcb + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_0200C90C + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD62_0222DBCC + + thumb_func_start MOD62_0222DC00 +MOD62_0222DC00: ; 0x0222DC00 + push {r4, r5, r6, r7} + mov r2, #0xf1 + lsl r2, r2, #2 + ldr r2, [r0, r2] + ldr r4, _0222DC44 ; =0x00000329 + lsl r2, r2, #3 + add r2, r0, r2 + ldr r2, [r2, #8] + mov r1, #0 + add r3, r4, #1 + sub r5, r4, #1 +_0222DC16: + ldrb r7, [r0, r5] + ldrb r6, [r2] + cmp r7, r6 + bne _0222DC2E + ldrb r7, [r0, r4] + ldrb r6, [r2, #1] + cmp r7, r6 + bne _0222DC2E + ldrb r7, [r0, r3] + ldrb r6, [r2, #2] + cmp r7, r6 + beq _0222DC34 +_0222DC2E: + mov r0, #1 + pop {r4, r5, r6, r7} + bx lr +_0222DC34: + add r1, r1, #1 + add r2, r2, #3 + add r0, #0x10 + cmp r1, #8 + blt _0222DC16 + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_0222DC44: .word 0x00000329 + thumb_func_end MOD62_0222DC00 + + thumb_func_start MOD62_0222DC48 +MOD62_0222DC48: ; 0x0222DC48 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r4, r1, #4 + mov r0, #0xcb + add r1, r5, r4 + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0 + add r1, #2 + add r2, sp, #0 + bl FUN_0200C7A0 + add r2, sp, #0 + mov r0, #2 + ldrsh r1, [r2, r0] + ldr r0, _0222DC78 ; =0x00000329 + add r3, r5, r4 + strb r1, [r3, r0] + mov r1, #0 + ldrsh r1, [r2, r1] + add r0, r0, #1 + strb r1, [r3, r0] + pop {r3, r4, r5, pc} + nop +_0222DC78: .word 0x00000329 + thumb_func_end MOD62_0222DC48 + + thumb_func_start MOD62_0222DC7C +MOD62_0222DC7C: ; 0x0222DC7C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + mov r3, #0xca + add r7, r0, #0 + lsl r3, r3, #2 + mov r0, #0 + add r1, r7, #0 + add r2, sp, #0 + add r4, r3, #1 + add r5, r3, #2 +_0222DC90: + ldrb r6, [r1, r3] + add r0, r0, #1 + strb r6, [r2] + ldrb r6, [r1, r4] + strb r6, [r2, #1] + ldrb r6, [r1, r5] + add r1, #0x10 + strb r6, [r2, #2] + add r2, r2, #3 + cmp r0, #8 + blt _0222DC90 + ldr r0, [r7] + mov r2, #0xf1 + lsl r2, r2, #2 + ldr r0, [r0, #0x20] + ldr r2, [r7, r2] + add r1, sp, #0 + bl FUN_02029CA4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD62_0222DC7C + + thumb_func_start MOD62_0222DCBC +MOD62_0222DCBC: ; 0x0222DCBC + push {r3, r4, r5, r6} + mov r3, #0xca + lsl r3, r3, #2 + mov r2, #0 + add r4, r3, #1 + add r5, r3, #2 +_0222DCC8: + ldrb r6, [r1, r3] + add r2, r2, #1 + strb r6, [r0] + ldrb r6, [r1, r4] + strb r6, [r0, #1] + ldrb r6, [r1, r5] + add r1, #0x10 + strb r6, [r0, #2] + add r0, r0, #3 + cmp r2, #8 + blt _0222DCC8 + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 + thumb_func_end MOD62_0222DCBC + + thumb_func_start MOD62_0222DCE4 +MOD62_0222DCE4: ; 0x0222DCE4 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r0, r1, #0 + add r1, sp, #0 + add r4, r2, #0 + add r1, #2 + add r2, sp, #0 + add r6, r3, #0 + bl FUN_0200C7A0 + add r1, sp, #0 + mov r0, #0 + ldrsh r2, [r1, r0] + sub r2, r2, r6 + strb r2, [r5] + ldrsh r0, [r1, r0] + add r0, r0, r6 + strb r0, [r5, #1] + mov r0, #2 + ldrsh r2, [r1, r0] + sub r2, r2, r4 + strb r2, [r5, #2] + ldrsh r0, [r1, r0] + add r0, r0, r4 + strb r0, [r5, #3] + add sp, #4 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD62_0222DCE4 + + thumb_func_start MOD62_0222DD1C +MOD62_0222DD1C: ; 0x0222DD1C + push {r4, lr} + add r4, r0, #0 + mov r0, #2 + mov r1, #0x35 + bl FUN_02011744 + mov r1, #0x8d + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #2 + mov r1, #0x35 + bl FUN_02002C50 + pop {r4, pc} + thumb_func_end MOD62_0222DD1C + + thumb_func_start MOD62_0222DD38 +MOD62_0222DD38: ; 0x0222DD38 + push {r4, lr} + add r4, r0, #0 + mov r0, #2 + bl FUN_02002CF8 + mov r0, #0x8e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02011870 + mov r0, #9 + lsl r0, r0, #6 + add r0, r4, r0 + bl FUN_0201D5E8 + mov r0, #0x8f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02011870 + mov r0, #0x93 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_0201D5E8 + mov r0, #0x8d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_020117BC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD62_0222DD38 + + thumb_func_start MOD62_0222DD78 +MOD62_0222DD78: ; 0x0222DD78 + push {r3, lr} + sub sp, #0x18 + add r3, r0, #0 + mov r0, #0xe + str r0, [sp] + mov r0, #7 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + ldr r0, _0222DDB0 ; =0x00007530 + add r2, r3, #0 + str r0, [sp, #0x14] + add r0, r3, #0 + add r0, #0xe8 + add r2, #0xdc + add r3, #0xe0 + ldr r0, [r0] + ldr r2, [r2] + ldr r3, [r3] + mov r1, #3 + bl FUN_0200C0DC + add sp, #0x18 + pop {r3, pc} + .align 2, 0 +_0222DDB0: .word 0x00007530 + thumb_func_end MOD62_0222DD78 + + thumb_func_start MOD62_0222DDB4 +MOD62_0222DDB4: ; 0x0222DDB4 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + bl MOD62_0222DD78 + mov r1, #0 + add r0, r4, #0 + mov r2, #0x4e + mov r3, #0xa5 + str r1, [sp] + bl MOD62_0222DE00 + mov r0, #0 + str r0, [sp] + add r0, r4, #0 + mov r1, #1 + mov r2, #0xac + mov r3, #0xa5 + bl MOD62_0222DE00 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD62_0222DDB4 + + thumb_func_start MOD62_0222DDE0 +MOD62_0222DDE0: ; 0x0222DDE0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x8e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + bl FUN_020119D0 + mov r0, #0x8f + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_020119D0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD62_0222DDE0 + + thumb_func_start MOD62_0222DE00 +MOD62_0222DE00: ; 0x0222DE00 + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + add r5, r0, #0 + add r4, r1, #0 + str r2, [sp, #0x10] + add r7, r3, #0 + mov r0, #0 + mov r1, #0x1a + mov r2, #8 + mov r3, #0x35 + bl FUN_0200A86C + add r1, r4, #5 + str r0, [sp, #0x14] + bl FUN_0200A914 + str r0, [sp, #0x18] + add r0, sp, #0x1c + bl FUN_0201901C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xe4 + ldr r0, [r0] + add r1, sp, #0x1c + mov r2, #0xa + mov r3, #2 + bl FUN_020190EC + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0222DEF0 ; =0x000F0D02 + ldr r2, [sp, #0x18] + str r0, [sp, #8] + add r0, sp, #0x1c + mov r1, #2 + str r3, [sp, #0xc] + bl FUN_0201BDE0 + add r0, sp, #0x1c + mov r1, #2 + mov r2, #0x35 + bl FUN_02011898 + mov r3, #9 + lsl r3, r3, #6 + mov r1, #0xc + add r6, r4, #0 + mul r6, r1 + add r3, r5, r3 + mov r1, #1 + mov r2, #2 + add r3, r3, r6 + bl FUN_0201D568 + mov r0, #0x8d + lsl r0, r0, #2 + ldr r0, [r5, r0] + str r0, [sp, #0x2c] + add r0, sp, #0x1c + str r0, [sp, #0x30] + add r0, r5, #0 + add r0, #0xe0 + ldr r0, [r0] + bl FUN_0200CA40 + str r0, [sp, #0x34] + add r0, r5, #0 + add r0, #0xe0 + ldr r0, [r0] + ldr r1, _0222DEF4 ; =0x00007530 + bl FUN_0200C334 + str r0, [sp, #0x38] + mov r0, #0 + mov r1, #0x91 + str r0, [sp, #0x3c] + add r0, r5, r6 + lsl r1, r1, #2 + ldr r0, [r0, r1] + str r0, [sp, #0x40] + ldr r0, [sp, #0x10] + add r7, #0xc0 + str r0, [sp, #0x44] + mov r0, #1 + str r0, [sp, #0x4c] + mov r0, #0x28 + str r0, [sp, #0x50] + mov r0, #2 + str r0, [sp, #0x54] + mov r0, #0x35 + sub r1, #0xc + str r0, [sp, #0x58] + str r7, [sp, #0x48] + add r5, r5, r1 + lsl r4, r4, #2 + add r0, sp, #0x2c + bl FUN_020117E8 + str r0, [r5, r4] + ldr r0, [r5, r4] + ldr r1, [sp, #0x70] + bl FUN_02011AC0 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + ldr r0, [sp, #0x14] + bl FUN_0200A8B8 + add r0, sp, #0x1c + bl FUN_02019178 + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + nop +_0222DEF0: .word 0x000F0D02 +_0222DEF4: .word 0x00007530 + thumb_func_end MOD62_0222DE00 + + thumb_func_start MOD62_0222DEF8 +MOD62_0222DEF8: ; 0x0222DEF8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r6, #0 + add r5, r0, #0 + mov r0, #0x42 + add r3, r1, #0 + add r7, r6, #0 + add r2, r6, #0 + add r4, r6, #0 + lsl r0, r0, #4 +_0222DF0C: + add r1, r5, r2 + add r2, r2, #1 + strb r4, [r1, r0] + cmp r2, #8 + blt _0222DF0C + lsl r0, r3, #3 + str r0, [sp, #4] + add r0, r5, #0 + str r0, [sp] + add r0, #0x68 + str r0, [sp] +_0222DF22: + ldr r0, [sp] + add r1, r4, #0 + bl FUN_02029CF8 + add r1, r5, r4 + add r1, #0x80 + ldrb r1, [r1] + cmp r1, #0 + bne _0222DF38 + cmp r0, #1 + bne _0222DF50 +_0222DF38: + ldr r0, [sp, #4] + add r7, r7, #1 + cmp r7, r0 + ble _0222DF50 + mov r0, #0x42 + add r1, r5, r6 + add r2, r4, #1 + lsl r0, r0, #4 + add r6, r6, #1 + strb r2, [r1, r0] + cmp r6, #8 + bge _0222DF56 +_0222DF50: + add r4, r4, #1 + cmp r4, #0x51 + blt _0222DF22 +_0222DF56: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD62_0222DEF8 + + thumb_func_start MOD62_0222DF5C +MOD62_0222DF5C: ; 0x0222DF5C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r7, r0, #0 + add r0, #0xdc + ldr r6, [r0] + add r0, r7, #0 + add r0, #0xe0 + ldr r5, [r0] + add r0, r7, #0 + add r0, #0xe8 + ldr r0, [r0] + mov r4, #0 + str r0, [sp, #0x18] +_0222DF76: + mov r0, #0x42 + add r1, r7, r4 + lsl r0, r0, #4 + ldrb r0, [r1, r0] + bl FUN_02085FAC + add r3, r0, #0 + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _0222DFF4 ; =0x000061A8 + add r1, r5, #0 + add r0, r4, r0 + str r0, [sp, #8] + add r0, r6, #0 + mov r2, #0x5b + bl FUN_0200C00C + add r4, r4, #1 + cmp r4, #8 + blt _0222DF76 + mov r0, #0x5b + str r0, [sp] + add r0, #0xca + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + ldr r0, _0222DFF8 ; =0x000066B4 + mov r1, #3 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r2, r6, #0 + add r3, r5, #0 + bl FUN_0200C0DC + mov r0, #1 + str r0, [sp] + ldr r0, _0222DFFC ; =0x00006A2C + add r1, r5, #0 + str r0, [sp, #4] + add r0, r6, #0 + mov r2, #0x5b + mov r3, #0xb4 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0222E000 ; =0x00006DB8 + add r1, r5, #0 + str r0, [sp, #4] + add r0, r6, #0 + mov r2, #0x5b + mov r3, #0x58 + bl FUN_0200C13C + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_0222DFF4: .word 0x000061A8 +_0222DFF8: .word 0x000066B4 +_0222DFFC: .word 0x00006A2C +_0222E000: .word 0x00006DB8 + thumb_func_end MOD62_0222DF5C + + thumb_func_start MOD62_0222E004 +MOD62_0222E004: ; 0x0222E004 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x58 + add r5, r0, #0 + add r0, #0xdc + ldr r0, [r0] + mov r4, #0 + str r0, [sp] + add r0, r5, #0 + add r0, #0xe0 + ldr r7, [r0] + add r0, sp, #4 + strh r4, [r0, #0x20] + strh r4, [r0, #0x22] + strh r4, [r0, #0x24] + strh r4, [r0, #0x26] + mov r0, #0x3c + str r0, [sp, #0x2c] + mov r0, #2 + str r0, [sp, #0x34] + mov r0, #1 + str r0, [sp, #0x50] + sub r0, r0, #2 + str r0, [sp, #0x48] + str r0, [sp, #0x4c] + ldr r0, _0222E0B4 ; =0x000066B4 + str r4, [sp, #0x54] + str r0, [sp, #0x3c] + ldr r0, _0222E0B8 ; =0x00006A2C + str r4, [sp, #0x30] + str r0, [sp, #0x40] + ldr r0, _0222E0BC ; =0x00006DB8 + str r0, [sp, #0x44] + mov r0, #0xf9 + lsl r0, r0, #2 + add r6, r5, r0 +_0222E04A: + ldr r0, _0222E0C0 ; =0x000061A8 + add r1, r7, #0 + add r0, r4, r0 + str r0, [sp, #0x38] + ldr r0, [sp] + add r2, sp, #0x24 + bl FUN_0200C154 + add r4, r4, #1 + stmia r6!, {r0} + cmp r4, #8 + blt _0222E04A + ldr r3, _0222E0C4 ; =0x02231158 + add r2, sp, #4 + mov r1, #0x10 +_0222E068: + ldrh r0, [r3] + add r3, r3, #2 + strh r0, [r2] + add r2, r2, #2 + sub r1, r1, #1 + bne _0222E068 + mov r7, #0xf9 + mov r6, #0 + add r4, sp, #4 + lsl r7, r7, #2 +_0222E07C: + mov r2, #2 + ldrsh r2, [r4, r2] + mov r0, #0xf9 + mov r1, #0 + lsl r0, r0, #2 + sub r2, r2, #1 + lsl r2, r2, #0x10 + ldrsh r1, [r4, r1] + ldr r0, [r5, r0] + asr r2, r2, #0x10 + bl FUN_0200C714 + mov r0, #0xf9 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0200C5A8 + ldr r0, [r5, r7] + mov r1, #0 + bl FUN_0200C61C + add r6, r6, #1 + add r4, r4, #4 + add r5, r5, #4 + cmp r6, #8 + blt _0222E07C + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222E0B4: .word 0x000066B4 +_0222E0B8: .word 0x00006A2C +_0222E0BC: .word 0x00006DB8 +_0222E0C0: .word 0x000061A8 +_0222E0C4: .word 0x02231158 + thumb_func_end MOD62_0222E004 + + thumb_func_start MOD62_0222E0C8 +MOD62_0222E0C8: ; 0x0222E0C8 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r7, #0xf9 + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_0222E0D4: + add r0, r6, #0 + add r0, #0xe0 + ldr r1, _0222E0F4 ; =0x000061A8 + ldr r0, [r0] + add r1, r4, r1 + bl FUN_0200C358 + ldr r0, [r5, r7] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _0222E0D4 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222E0F4: .word 0x000061A8 + thumb_func_end MOD62_0222E0C8 + + thumb_func_start MOD62_0222E0F8 +MOD62_0222E0F8: ; 0x0222E0F8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r1, #0 + mov r4, #0 + str r0, [sp] + str r4, [sp, #4] + add r5, r7, #0 + add r6, r7, #0 +_0222E108: + mov r0, #0x51 + lsl r0, r0, #2 + ldr r1, [r5, r0] + cmp r1, #0 + beq _0222E120 + add r0, r6, #0 + bl MOD08_02217F08 + cmp r0, #1 + bne _0222E120 + mov r0, #1 + str r0, [sp, #4] +_0222E120: + add r4, r4, #1 + add r5, r5, #4 + add r6, #0x24 + cmp r4, #8 + blt _0222E108 + mov r0, #0x12 + lsl r0, r0, #4 + add r0, r7, r0 + bl MOD08_02217ECC + cmp r0, #1 + bne _0222E160 + mov r3, #0x59 + mov r0, #1 + lsl r3, r3, #2 + str r0, [sp, #4] + ldr r0, [r7, r3] + sub r3, #0x44 + ldrsh r3, [r7, r3] + mov r1, #5 + mov r2, #0 + bl FUN_020179E0 + mov r3, #0x59 + lsl r3, r3, #2 + ldr r0, [r7, r3] + sub r3, #0x42 + ldrsh r3, [r7, r3] + mov r1, #5 + mov r2, #3 + bl FUN_020179E0 +_0222E160: + ldr r0, [sp, #4] + cmp r0, #0 + bne _0222E17C + mov r0, #0x5b + lsl r0, r0, #2 + ldr r0, [r7, r0] + mov r1, #0 + str r1, [r0] + add r0, r7, #0 + bl FUN_02016A18 + ldr r0, [sp] + bl FUN_0200CAB4 +_0222E17C: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD62_0222E0F8 + + thumb_func_start MOD62_0222E180 +MOD62_0222E180: ; 0x0222E180 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r1, [sp, #0xc] + mov r1, #0x17 + str r0, [sp, #8] + mov r0, #0x35 + lsl r1, r1, #4 + str r2, [sp, #0x10] + bl FUN_02016998 + str r0, [sp, #0x1c] + ldr r0, [sp, #8] + mov r1, #0x59 + add r0, #0xe4 + ldr r2, [r0] + ldr r0, [sp, #0x1c] + lsl r1, r1, #2 + str r2, [r0, r1] + add r4, r0, #0 + add r5, r0, #0 + ldr r0, [sp, #0xc] + mov r1, #0x38 + lsl r0, r0, #4 + neg r0, r0 + str r0, [sp, #0x18] + ldr r0, [sp, #0xc] + ldr r6, [sp, #8] + mul r1, r0 + ldr r0, [sp, #0x10] + mov r7, #0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r1, [sp, #0x14] + str r0, [sp, #0x20] +_0222E1C4: + mov r0, #0xc9 + lsl r0, r0, #2 + ldr r0, [r6, r0] + cmp r0, #0 + bne _0222E1D8 + mov r0, #0x51 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + b _0222E22E +_0222E1D8: + mov r0, #0xcb + lsl r0, r0, #2 + ldr r1, [r6, r0] + mov r0, #0x51 + lsl r0, r0, #2 + str r1, [r4, r0] + add r1, sp, #0x24 + ldr r0, [r4, r0] + add r1, #2 + add r2, sp, #0x24 + bl FUN_0200C7A0 + add r1, sp, #0x24 + mov r0, #0 + ldrsh r3, [r1, r0] + mov r0, #2 + ldrsh r1, [r1, r0] + ldr r0, [sp, #0x18] + ldr r2, [sp, #0x14] + add r0, r3, r0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + ldr r0, [sp, #0x20] + add r2, r1, r2 + lsl r2, r2, #0x10 + str r0, [sp, #4] + add r0, r5, #0 + asr r2, r2, #0x10 + bl MOD08_02217E80 + mov r1, #0x51 + lsl r1, r1, #2 + ldr r1, [r4, r1] + add r0, r5, #0 + bl MOD08_02217F08 + mov r1, #0x51 + lsl r1, r1, #2 + ldr r1, [r4, r1] + add r0, r5, #0 + bl MOD08_02217F08 +_0222E22E: + add r7, r7, #1 + add r6, #0x10 + add r4, r4, #4 + add r5, #0x24 + cmp r7, #8 + blt _0222E1C4 + mov r1, #0x59 + ldr r0, [sp, #0x1c] + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #5 + bl FUN_02017B48 + add r4, r0, #0 + mov r1, #0x59 + ldr r0, [sp, #0x1c] + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #5 + bl FUN_02017B54 + add r3, r0, #0 + ldr r0, [sp, #0xc] + mov r5, #0x37 + lsl r0, r0, #4 + add r0, r3, r0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + ldr r0, [sp, #0x10] + mov r1, #0x12 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + lsl r3, r3, #0x10 + ldr r2, [sp, #0xc] + mvn r5, r5 + mul r5, r2 + add r2, r4, r5 + lsl r2, r2, #0x10 + ldr r0, [sp, #0x1c] + lsl r1, r1, #4 + add r0, r0, r1 + lsl r1, r4, #0x10 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + asr r3, r3, #0x10 + bl MOD08_02217E80 + mov r2, #0x96 + lsl r2, r2, #2 + ldr r0, [sp, #8] + add r1, r2, #0 + add r3, r0, r2 + ldr r0, [sp, #0x1c] + sub r1, #0xec + str r3, [r0, r1] + sub r2, #0xec + ldr r0, [r0, r2] + mov r3, #1 + str r3, [r0] + ldr r0, _0222E2B8 ; =MOD62_0222E0F8 + ldr r1, [sp, #0x1c] + lsl r2, r3, #0xc + bl FUN_0200CA44 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222E2B8: .word MOD62_0222E0F8 + thumb_func_end MOD62_0222E180 + + thumb_func_start MOD62_0222E2BC +MOD62_0222E2BC: ; 0x0222E2BC + push {r3, lr} + sub sp, #8 + mov r2, #2 + mov r1, #0 + ldr r0, _0222E2D8 ; =MOD62_0222E2DC + str r2, [sp] + str r0, [sp, #4] + mov r0, #0x35 + add r3, r1, #0 + bl FUN_02022318 + add sp, #8 + pop {r3, pc} + nop +_0222E2D8: .word MOD62_0222E2DC + thumb_func_end MOD62_0222E2BC + + thumb_func_start MOD62_0222E2DC +MOD62_0222E2DC: ; 0x0222E2DC + push {r3, lr} + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r0, _0222E348 ; =0x04000008 + mov r1, #3 + ldrh r2, [r0] + bic r2, r1 + mov r1, #1 + orr r1, r2 + strh r1, [r0] + add r0, #0x58 + ldrh r2, [r0] + ldr r1, _0222E34C ; =0xFFFFCFFD + and r2, r1 + strh r2, [r0] + add r2, r1, #2 + ldrh r3, [r0] + add r1, r1, #2 + and r3, r2 + mov r2, #0x10 + orr r2, r3 + strh r2, [r0] + ldrh r3, [r0] + ldr r2, _0222E350 ; =0x0000CFFB + and r3, r2 + strh r3, [r0] + ldrh r3, [r0] + sub r2, #0x1c + and r3, r1 + mov r1, #8 + orr r1, r3 + strh r1, [r0] + ldrh r1, [r0] + and r1, r2 + strh r1, [r0] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl G3X_SetFog + mov r0, #0 + ldr r2, _0222E354 ; =0x00007FFF + add r1, r0, #0 + mov r3, #0x3f + str r0, [sp] + bl G3X_SetClearColor + ldr r1, _0222E358 ; =0xBFFF0000 + ldr r0, _0222E35C ; =0x04000580 + str r1, [r0] + pop {r3, pc} + .align 2, 0 +_0222E348: .word 0x04000008 +_0222E34C: .word 0xFFFFCFFD +_0222E350: .word 0x0000CFFB +_0222E354: .word 0x00007FFF +_0222E358: .word 0xBFFF0000 +_0222E35C: .word 0x04000580 + thumb_func_end MOD62_0222E2DC + + thumb_func_start MOD62_0222E360 +MOD62_0222E360: ; 0x0222E360 + push {r3, r4, r5, lr} + ldr r3, _0222E398 ; =0x021064B8 + mov r0, #2 + mov r1, #0 + ldr r3, [r3] + lsl r0, r0, #0xe + add r2, r1, #0 + blx r3 + ldr r3, _0222E39C ; =0x021064C0 + mov r1, #0 + add r4, r0, #0 + ldr r3, [r3] + mov r0, #0x80 + add r2, r1, #0 + blx r3 + add r5, r0, #0 + cmp r4, #0 + bne _0222E388 + bl ErrorHandling +_0222E388: + cmp r5, #0 + bne _0222E390 + bl ErrorHandling +_0222E390: + bl FUN_02012CC8 + pop {r3, r4, r5, pc} + nop +_0222E398: .word 0x021064B8 +_0222E39C: .word 0x021064C0 + thumb_func_end MOD62_0222E360 + + thumb_func_start MOD62_0222E3A0 +MOD62_0222E3A0: ; 0x0222E3A0 + push {r3, lr} + bl FUN_020222AC + bl FUN_02013364 + cmp r0, #0 + ble _0222E3B6 + bl FUN_020222AC + bl FUN_020B02C8 +_0222E3B6: + bl FUN_02013388 + mov r0, #1 + mov r1, #0 + bl FUN_020222B4 + pop {r3, pc} + thumb_func_end MOD62_0222E3A0 + + thumb_func_start MOD62_0222E3C4 +MOD62_0222E3C4: ; 0x0222E3C4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + str r1, [sp, #0x18] + str r0, [sp, #0x14] + ldr r1, [sp, #0x58] + add r0, r3, #0 + add r6, r2, #0 + str r3, [sp, #0x1c] + bl MOD62_0222F89C + cmp r0, #3 + bhi _0222E442 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222E3E8: ; jump table + .short _0222E3F0 - _0222E3E8 - 2 ; case 0 + .short _0222E402 - _0222E3E8 - 2 ; case 1 + .short _0222E418 - _0222E3E8 - 2 ; case 2 + .short _0222E42E - _0222E3E8 - 2 ; case 3 +_0222E3F0: + mov r0, #0 + str r0, [sp, #0x24] + mov r0, #4 + str r0, [sp, #0x28] + mov r0, #1 + mov r5, #0xd + mov r4, #6 + str r0, [sp, #0x2c] + b _0222E442 +_0222E402: + mov r0, #2 + str r0, [sp, #0x24] + mov r0, #0 + str r0, [sp, #0x28] + mov r0, #4 + str r0, [sp, #0x2c] + mov r0, #1 + mov r5, #0xb + mov r4, #8 + str r0, [sp, #0x30] + b _0222E442 +_0222E418: + mov r0, #3 + str r0, [sp, #0x24] + mov r0, #0 + str r0, [sp, #0x28] + mov r0, #4 + str r0, [sp, #0x2c] + mov r0, #1 + mov r5, #0xb + mov r4, #8 + str r0, [sp, #0x30] + b _0222E442 +_0222E42E: + mov r0, #2 + str r0, [sp, #0x24] + mov r0, #0 + str r0, [sp, #0x28] + mov r0, #4 + str r0, [sp, #0x2c] + mov r0, #1 + mov r5, #0xb + mov r4, #8 + str r0, [sp, #0x30] +_0222E442: + lsr r0, r4, #0x1f + add r0, r4, r0 + asr r7, r0, #1 + ldr r0, [sp, #0x18] + bl FUN_0201901C + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xe + str r0, [sp, #0xc] + mov r0, #0xa6 + str r0, [sp, #0x10] + lsl r2, r6, #0x18 + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + lsr r2, r2, #0x18 + mov r3, #0x15 + bl FUN_02019064 + add r0, r7, #0 + mov r1, #0x35 + bl FUN_02012838 + mov r2, #0x67 + ldr r1, [sp, #0x1c] + lsl r2, r2, #2 + str r0, [r1, r2] + mov r0, #0 + mov r1, #0x1a + mov r2, #8 + mov r3, #0x35 + bl FUN_0200A86C + mov r6, #0 + str r0, [sp, #0x20] + cmp r7, #0 + ble _0222E4D0 + add r5, sp, #0x24 +_0222E49A: + ldr r1, [r5] + ldr r0, [sp, #0x20] + lsl r2, r1, #3 + ldr r1, _0222E538 ; =0x02231358 + ldr r1, [r1, r2] + bl FUN_0200A914 + ldr r2, [r5] + add r4, r0, #0 + lsl r3, r2, #3 + ldr r2, _0222E538 ; =0x02231358 + mov r0, #0x67 + add r2, r2, r3 + ldr r1, [sp, #0x1c] + lsl r0, r0, #2 + ldr r0, [r1, r0] + ldr r2, [r2, #4] + add r1, r4, #0 + bl FUN_020128A0 + add r0, r4, #0 + bl FUN_02021A20 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, r7 + blt _0222E49A +_0222E4D0: + ldr r0, [sp, #0x20] + bl FUN_0200A8B8 + mov r1, #0x67 + ldr r0, [sp, #0x1c] + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #0 + str r0, [sp, #0x34] + add r0, sp, #0x24 + strb r1, [r0, #0x18] + ldr r1, [sp, #0x18] + mov r2, #0xf + str r1, [sp, #0x38] + mov r1, #1 + strb r1, [r0, #0x19] + strb r7, [r0, #0x1a] + ldrb r3, [r0, #0x1b] + bic r3, r2 + strb r3, [r0, #0x1b] + ldrb r3, [r0, #0x1b] + mov r2, #0x30 + bic r3, r2 + strb r3, [r0, #0x1b] + ldrb r3, [r0, #0x1b] + mov r2, #0xc0 + bic r3, r2 + mov r2, #0x40 + orr r2, r3 + strb r2, [r0, #0x1b] + ldr r0, [sp, #0x18] + mov r2, #0x1f + mov r3, #0xd + bl FUN_0200CCA4 + mov r0, #0x35 + str r0, [sp] + mov r0, #2 + mov r2, #0 + str r0, [sp, #4] + add r0, sp, #0x34 + mov r1, #8 + add r3, r2, #0 + bl FUN_02001C14 + mov r2, #0x1a + ldr r1, [sp, #0x1c] + lsl r2, r2, #4 + str r0, [r1, r2] + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222E538: .word 0x02231358 + thumb_func_end MOD62_0222E3C4 + + thumb_func_start MOD62_0222E53C +MOD62_0222E53C: ; 0x0222E53C + push {r4, r5} + lsr r5, r0, #0x1f + lsl r4, r0, #0x1e + sub r4, r4, r5 + mov r3, #0x1e + ror r4, r3 + add r4, r5, r4 + mov r3, #0x38 + mul r3, r4 + add r3, #0x28 + strh r3, [r1] + asr r1, r0, #2 + mov r0, #0x35 + mul r0, r1 + add r0, #0x1b + strh r0, [r2] + pop {r4, r5} + bx lr + thumb_func_end MOD62_0222E53C + + thumb_func_start MOD62_0222E560 +MOD62_0222E560: ; 0x0222E560 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r1, r0, #0 + add r1, #0xdc + ldr r4, [r1] + add r1, r0, #0 + add r1, #0xe0 + add r0, #0xe8 + ldr r5, [r1] + ldr r6, [r0] + bl FUN_0206B888 + mov r1, #0x13 + str r1, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #3 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + mov r0, #0xfa + lsl r0, r0, #6 + str r0, [sp, #0x14] + add r0, r6, #0 + mov r1, #2 + add r2, r4, #0 + add r3, r5, #0 + bl FUN_0200C0DC + bl FUN_0206B894 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _0222E5D0 ; =0x00004268 + add r1, r5, #0 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x13 + bl FUN_0200C124 + bl FUN_0206B8A0 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _0222E5D4 ; =0x00004650 + add r1, r5, #0 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x13 + bl FUN_0200C13C + add sp, #0x18 + pop {r4, r5, r6, pc} + .align 2, 0 +_0222E5D0: .word 0x00004268 +_0222E5D4: .word 0x00004650 + thumb_func_end MOD62_0222E560 + + thumb_func_start MOD62_0222E5D8 +MOD62_0222E5D8: ; 0x0222E5D8 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + add r5, r0, #0 + ldr r1, [r5] + mov r6, #0 + ldr r0, [r1] + cmp r0, #0 + ble _0222E6C6 + str r6, [sp, #0xc] + add r4, r5, #0 +_0222E5EC: + ldr r0, [sp, #0xc] + add r0, r1, r0 + ldr r7, [r0, #4] + add r0, r7, #0 + bl FUN_0206B6C8 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _0222E6CC ; =0x00003A98 + add r1, r5, #0 + add r0, r6, r0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xdc + add r1, #0xe0 + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0x13 + bl FUN_0200C978 + mov r1, #0 + add r0, sp, #0x18 + strh r1, [r0] + strh r1, [r0, #2] + strh r1, [r0, #4] + strh r1, [r0, #6] + mov r0, #0xa + str r0, [sp, #0x20] + add r0, r1, #0 + str r0, [sp, #0x24] + mov r0, #1 + str r0, [sp, #0x28] + mov r0, #2 + str r0, [sp, #0x44] + add r0, r1, #0 + str r0, [sp, #0x48] + ldr r0, _0222E6CC ; =0x00003A98 + add r2, sp, #0x18 + add r0, r6, r0 + str r0, [sp, #0x2c] + mov r0, #0xfa + lsl r0, r0, #6 + str r0, [sp, #0x30] + ldr r0, _0222E6D0 ; =0x00004268 + str r0, [sp, #0x34] + ldr r0, _0222E6D4 ; =0x00004650 + str r0, [sp, #0x38] + sub r0, r1, #1 + str r0, [sp, #0x3c] + sub r0, r1, #1 + str r0, [sp, #0x40] + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xdc + add r1, #0xe0 + ldr r0, [r0] + ldr r1, [r1] + bl FUN_0200C154 + mov r1, #0xbf + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r7, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x10] + add r0, r7, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x14] + add r0, r7, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020671BC + add r1, r0, #0 + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x14] + bl FUN_0206B7BC + add r1, r0, #0 + mov r0, #0xbf + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r0, [r0] + bl FUN_020202DC + mov r0, #0xbf + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200C5C0 + ldr r0, [sp, #0xc] + ldr r1, [r5] + add r0, r0, #4 + str r0, [sp, #0xc] + ldr r0, [r1] + add r6, r6, #1 + add r4, r4, #4 + cmp r6, r0 + blt _0222E5EC +_0222E6C6: + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + nop +_0222E6CC: .word 0x00003A98 +_0222E6D0: .word 0x00004268 +_0222E6D4: .word 0x00004650 + thumb_func_end MOD62_0222E5D8 + + thumb_func_start MOD62_0222E6D8 +MOD62_0222E6D8: ; 0x0222E6D8 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6] + mov r4, #0 + ldr r0, [r0] + cmp r0, #0 + ble _0222E700 + mov r7, #0xbf + add r5, r6, #0 + lsl r7, r7, #2 +_0222E6EC: + ldr r0, [r5, r7] + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r6] + add r4, r4, #1 + ldr r0, [r0] + add r5, r5, #4 + cmp r4, r0 + blt _0222E6EC +_0222E700: + mov r5, #0 + add r4, r6, #0 +_0222E704: + ldr r7, [r4, #4] + cmp r7, #0xff + beq _0222E748 + add r1, sp, #0 + add r0, r5, #0 + add r1, #2 + add r2, sp, #0 + bl MOD62_0222E53C + add r2, sp, #0 + mov r1, #2 + ldrsh r1, [r2, r1] + add r3, r2, #0 + mov r2, #0 + ldrsh r2, [r3, r2] + lsl r0, r7, #2 + add r7, r6, r0 + mov r0, #0xbf + lsl r0, r0, #2 + sub r1, #0x10 + add r2, #0xc + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r7, r0] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + mov r0, #0xbf + lsl r0, r0, #2 + ldr r0, [r7, r0] + mov r1, #1 + bl FUN_0200C644 +_0222E748: + add r5, r5, #1 + add r4, #8 + cmp r5, #0xc + blt _0222E704 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD62_0222E6D8 + + thumb_func_start MOD62_0222E754 +MOD62_0222E754: ; 0x0222E754 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6] + mov r4, #0 + ldr r0, [r0] + cmp r0, #0 + ble _0222E77A + mov r7, #0xbf + add r5, r6, #0 + lsl r7, r7, #2 +_0222E768: + ldr r0, [r5, r7] + bl FUN_0200C5A8 + ldr r0, [r6] + add r4, r4, #1 + ldr r0, [r0] + add r5, r5, #4 + cmp r4, r0 + blt _0222E768 +_0222E77A: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD62_0222E754 + + thumb_func_start MOD62_0222E77C +MOD62_0222E77C: ; 0x0222E77C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6] + mov r4, #0 + ldr r0, [r0] + cmp r0, #0 + ble _0222E7A2 + mov r7, #0xbf + add r5, r6, #0 + lsl r7, r7, #2 +_0222E790: + ldr r0, [r5, r7] + bl FUN_0200C3DC + ldr r0, [r6] + add r4, r4, #1 + ldr r0, [r0] + add r5, r5, #4 + cmp r4, r0 + blt _0222E790 +_0222E7A2: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD62_0222E77C + + thumb_func_start MOD62_0222E7A4 +MOD62_0222E7A4: ; 0x0222E7A4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r6, #0 + add r4, r7, #0 + add r5, r7, #0 +_0222E7AE: + ldr r0, [r4, #8] + bl MOD62_0222F870 + mov r1, #0x9a + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x99 + ldr r1, [r4, #4] + lsl r0, r0, #2 + str r1, [r5, r0] + add r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + bne _0222E7DC + mov r0, #0x99 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0xff + beq _0222E7DC + add r0, r7, #0 + add r1, r6, #0 + bl MOD62_02230D38 +_0222E7DC: + add r6, r6, #1 + add r4, #8 + add r5, #0xc + cmp r6, #0xc + blt _0222E7AE + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD62_0222E7A4 + + thumb_func_start MOD62_0222E7E8 +MOD62_0222E7E8: ; 0x0222E7E8 + push {r3, r4, r5, r6, lr} + sub sp, #0x4c + add r4, r0, #0 + mov r0, #0x35 + bl FUN_0200BB14 + add r2, sp, #0x2c + ldr r5, _0222E868 ; =0x02231138 + str r0, [r4, #8] + ldmia r5!, {r0, r1} + add r3, r2, #0 + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + ldr r6, _0222E86C ; =0x0223110C + stmia r2!, {r0, r1} + add r5, sp, #0x18 + ldmia r6!, {r0, r1} + add r2, r5, #0 + stmia r5!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + ldr r0, [r6] + add r1, r3, #0 + str r0, [r5] + ldr r0, [r4, #8] + mov r3, #0x20 + bl FUN_0200BB6C + ldr r3, _0222E870 ; =0x02231120 + add r2, sp, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4, #8] + bl FUN_0200BB34 + str r0, [r4, #0xc] + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + mov r2, #0x80 + bl FUN_0200BBF0 + cmp r0, #0 + bne _0222E852 + bl ErrorHandling +_0222E852: + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + add r2, sp, #0 + bl FUN_0200BF60 + cmp r0, #0 + bne _0222E864 + bl ErrorHandling +_0222E864: + add sp, #0x4c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0222E868: .word 0x02231138 +_0222E86C: .word 0x0223110C +_0222E870: .word 0x02231120 + thumb_func_end MOD62_0222E7E8 + + thumb_func_start MOD62_0222E874 +MOD62_0222E874: ; 0x0222E874 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + bl FUN_0200C398 + ldr r0, [r4, #8] + bl FUN_0200BD04 + pop {r4, pc} + thumb_func_end MOD62_0222E874 + + thumb_func_start MOD62_0222E888 +MOD62_0222E888: ; 0x0222E888 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _0222E8EC ; =0x0000AFC8 + add r1, r4, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0xdc + add r1, #0xe0 + mov r2, #0x5b + add r3, r2, #0 + ldr r0, [r0] + ldr r1, [r1] + add r3, #0xae + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0222E8F0 ; =0x0000B798 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0xdc + add r1, #0xe0 + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0x5b + mov r3, #0xad + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0222E8F4 ; =0x0000BB80 + mov r2, #0x5b + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0xdc + add r4, #0xe0 + ldr r0, [r0] + ldr r1, [r4] + mov r3, #0x51 + bl FUN_0200C13C + add sp, #0xc + pop {r3, r4, pc} + nop +_0222E8EC: .word 0x0000AFC8 +_0222E8F0: .word 0x0000B798 +_0222E8F4: .word 0x0000BB80 + thumb_func_end MOD62_0222E888 + + thumb_func_start MOD62_0222E8F8 +MOD62_0222E8F8: ; 0x0222E8F8 + push {r4, r5, r6, r7, lr} + sub sp, #0x64 + ldr r4, _0222E97C ; =0x02231178 + add r6, r0, #0 + add r3, sp, #0 + mov r2, #6 +_0222E904: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222E904 + mov r7, #0 + add r4, sp, #0 + add r5, r6, #0 +_0222E912: + ldr r1, [r4] + add r0, sp, #0 + strh r1, [r0, #0x30] + ldr r1, [r4, #4] + add r2, sp, #0x30 + strh r1, [r0, #0x32] + mov r1, #0 + strh r1, [r0, #0x34] + strh r1, [r0, #0x36] + mov r0, #0x28 + str r0, [sp, #0x38] + mov r0, #2 + str r0, [sp, #0x3c] + str r0, [sp, #0x40] + mov r0, #1 + str r0, [sp, #0x5c] + add r0, r1, #0 + str r0, [sp, #0x60] + ldr r0, _0222E980 ; =0x0000AFC8 + str r0, [sp, #0x44] + ldr r0, _0222E984 ; =0x000066B2 + str r0, [sp, #0x48] + ldr r0, _0222E988 ; =0x0000B798 + str r0, [sp, #0x4c] + ldr r0, _0222E98C ; =0x0000BB80 + str r0, [sp, #0x50] + sub r0, r1, #1 + str r0, [sp, #0x54] + sub r0, r1, #1 + str r0, [sp, #0x58] + add r0, r6, #0 + add r1, r6, #0 + add r0, #0xdc + add r1, #0xe0 + ldr r0, [r0] + ldr r1, [r1] + bl FUN_0200C154 + mov r1, #0xc5 + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + ldr r1, [r4, #8] + bl FUN_0200C8D0 + add r7, r7, #1 + add r4, #0xc + add r5, r5, #4 + cmp r7, #4 + blt _0222E912 + add sp, #0x64 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0222E97C: .word 0x02231178 +_0222E980: .word 0x0000AFC8 +_0222E984: .word 0x000066B2 +_0222E988: .word 0x0000B798 +_0222E98C: .word 0x0000BB80 + thumb_func_end MOD62_0222E8F8 + + thumb_func_start MOD62_0222E990 +MOD62_0222E990: ; 0x0222E990 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0xd8 + ldr r0, [r0] + cmp r0, #0 + beq _0222E9B0 + mov r6, #0xc5 + mov r4, #0 + lsl r6, r6, #2 +_0222E9A2: + ldr r0, [r5, r6] + bl FUN_0200C5A8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0222E9A2 +_0222E9B0: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD62_0222E990 + + thumb_func_start MOD62_0222E9B4 +MOD62_0222E9B4: ; 0x0222E9B4 + push {r3, r4, r5, r6, r7, lr} + mov r7, #0xc5 + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 + lsl r7, r7, #2 +_0222E9C0: + ldr r0, [r5, r7] + add r1, r6, #0 + bl FUN_0200C644 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0222E9C0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD62_0222E9B4 + + thumb_func_start MOD62_0222E9D4 +MOD62_0222E9D4: ; 0x0222E9D4 + push {r4, r5, r6, lr} + mov r6, #0xc5 + add r5, r0, #0 + mov r4, #0 + lsl r6, r6, #2 +_0222E9DE: + ldr r0, [r5, r6] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0222E9DE + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD62_0222E9D4 + + thumb_func_start MOD62_0222E9F0 +MOD62_0222E9F0: ; 0x0222E9F0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + mov r6, #1 + str r6, [sp] + ldr r6, [sp, #0x3c] + add r7, r2, #0 + str r6, [sp, #4] + ldr r6, _0222EA68 ; =0x00002AF8 + add r2, r3, #0 + add r2, r2, r6 + str r2, [sp, #8] + mov r2, #0x5b + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #0x5b + str r0, [sp] + ldr r0, [sp, #0x30] + mov r1, #0 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r1, [sp, #0x44] + add r2, r5, #0 + str r1, [sp, #0xc] + ldr r1, [sp, #0x3c] + add r3, r4, #0 + str r1, [sp, #0x10] + add r1, r6, #0 + add r0, r0, r1 + str r0, [sp, #0x14] + ldr r1, [sp, #0x40] + add r0, r7, #0 + bl FUN_0200C0DC + mov r0, #1 + str r0, [sp] + ldr r3, [sp, #0x34] + add r0, r6, #0 + add r0, r3, r0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x5b + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r3, [sp, #0x38] + add r0, r6, #0 + add r0, r3, r0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x5b + bl FUN_0200C13C + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222EA68: .word 0x00002AF8 + thumb_func_end MOD62_0222E9F0 + + thumb_func_start MOD62_0222EA6C +MOD62_0222EA6C: ; 0x0222EA6C + push {r4, r5, r6, r7, lr} + sub sp, #0x54 + add r5, r0, #0 + ldr r0, _0222EC14 ; =0x0000011E + add r2, r5, #0 + str r0, [sp] + mov r0, #0xae + str r0, [sp, #4] + mov r3, #0x52 + str r3, [sp, #8] + mov r1, #1 + str r1, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + str r1, [sp, #0x14] + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xdc + add r1, #0xe0 + add r2, #0xe8 + ldr r0, [r0] + ldr r1, [r1] + ldr r2, [r2] + add r3, #0xb8 + bl MOD62_0222E9F0 + ldr r0, _0222EC18 ; =0x00000123 + add r2, r5, #0 + str r0, [sp] + mov r0, #0xb3 + str r0, [sp, #4] + mov r3, #0x57 + str r3, [sp, #8] + mov r1, #1 + str r1, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + str r1, [sp, #0x14] + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xdc + add r1, #0xe0 + add r2, #0xe8 + ldr r0, [r0] + ldr r1, [r1] + ldr r2, [r2] + add r3, #0xbc + bl MOD62_0222E9F0 + mov r6, #0 + add r4, r5, #0 + add r7, sp, #0x18 +_0222EAD4: + mov r0, #0 + strh r0, [r7, #8] + strh r0, [r7, #0xa] + strh r0, [r7, #0xc] + mov r0, #0x9a + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r5, #0 + strh r0, [r7, #0xe] + mov r0, #0x28 + sub r0, r0, r6 + str r0, [sp, #0x28] + mov r0, #0 + str r0, [sp, #0x2c] + mov r0, #1 + str r0, [sp, #0x30] + mov r0, #2 + str r0, [sp, #0x4c] + mov r0, #0 + str r0, [sp, #0x50] + ldr r0, _0222EC1C ; =0x00002C02 + add r1, #0xe0 + str r0, [sp, #0x34] + add r0, #0x14 + str r0, [sp, #0x38] + ldr r0, _0222EC20 ; =0x00002BA6 + add r2, sp, #0x20 + str r0, [sp, #0x3c] + sub r0, #0x5c + str r0, [sp, #0x40] + mov r0, #0 + mvn r0, r0 + str r0, [sp, #0x44] + str r0, [sp, #0x48] + add r0, r5, #0 + add r0, #0xdc + ldr r0, [r0] + ldr r1, [r1] + bl FUN_0200C154 + mov r1, #0x9b + lsl r1, r1, #2 + str r0, [r4, r1] + add r1, sp, #0x1c + add r0, r6, #0 + add r1, #2 + add r2, sp, #0x1c + bl MOD62_0222E53C + mov r0, #0x9b + mov r1, #6 + mov r2, #4 + lsl r0, r0, #2 + ldrsh r1, [r7, r1] + ldrsh r2, [r7, r2] + ldr r0, [r4, r0] + bl FUN_0200C714 + add r6, r6, #1 + add r4, #0xc + cmp r6, #0xc + blt _0222EAD4 + mov r1, #0 + add r0, sp, #0x18 + strh r1, [r0, #8] + strh r1, [r0, #0xa] + strh r1, [r0, #0xc] + strh r1, [r0, #0xe] + mov r0, #0x14 + str r0, [sp, #0x28] + mov r0, #1 + str r1, [sp, #0x2c] + str r1, [sp, #0x50] + ldr r1, _0222EC24 ; =0x00002C0B + str r0, [sp, #0x30] + add r0, r1, #0 + add r0, #0x10 + str r0, [sp, #0x38] + add r0, r1, #0 + mov r2, #2 + sub r0, #0x60 + str r1, [sp, #0x34] + str r0, [sp, #0x3c] + sub r0, r2, #3 + sub r1, #0xbc + str r1, [sp, #0x40] + add r1, r5, #0 + str r2, [sp, #0x4c] + str r0, [sp, #0x44] + str r0, [sp, #0x48] + add r0, r5, #0 + add r0, #0xdc + add r1, #0xe0 + ldr r0, [r0] + ldr r1, [r1] + add r2, sp, #0x20 + bl FUN_0200C154 + mov r1, #0xbd + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xdc + add r1, #0xe0 + ldr r0, [r0] + ldr r1, [r1] + add r2, sp, #0x20 + bl FUN_0200C154 + mov r1, #0xbe + lsl r1, r1, #2 + str r0, [r5, r1] + add r1, #0xcc + ldr r0, [r5, r1] + add r1, sp, #0x18 + add r1, #2 + add r2, sp, #0x18 + bl MOD62_0222E53C + mov r0, #0xbd + lsl r0, r0, #2 + add r3, sp, #0x18 + mov r1, #2 + mov r2, #0 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + ldr r0, [r5, r0] + bl FUN_0200C714 + mov r0, #0xbe + lsl r0, r0, #2 + add r3, sp, #0x18 + mov r1, #2 + mov r2, #0 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + ldr r0, [r5, r0] + bl FUN_0200C714 + mov r0, #0xbe + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x19 + bl FUN_0200C6C4 + mov r0, #0xbd + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_0200C5C0 + mov r0, #0xbe + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_0200C5C0 + add sp, #0x54 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0222EC14: .word 0x0000011E +_0222EC18: .word 0x00000123 +_0222EC1C: .word 0x00002C02 +_0222EC20: .word 0x00002BA6 +_0222EC24: .word 0x00002C0B + thumb_func_end MOD62_0222EA6C + + thumb_func_start MOD62_0222EC28 +MOD62_0222EC28: ; 0x0222EC28 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl MOD62_0222E7A4 + add r0, r5, #0 + bl MOD62_0222E6D8 + mov r7, #0x9a + lsl r7, r7, #2 + mov r4, #0 + add r6, r7, #4 +_0222EC3E: + ldr r0, [r5, r6] + cmp r0, #0 + beq _0222EC4A + ldr r1, [r5, r7] + bl FUN_0200C5C0 +_0222EC4A: + add r4, r4, #1 + add r5, #0xc + cmp r4, #0xc + blt _0222EC3E + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD62_0222EC28 + + thumb_func_start MOD62_0222EC54 +MOD62_0222EC54: ; 0x0222EC54 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + lsl r6, r1, #3 + add r0, r5, r6 + ldr r0, [r0, #4] + lsl r4, r2, #3 + str r1, [sp] + add r1, r5, r4 + ldr r7, [r1, #4] + cmp r0, #0xff + beq _0222EC80 + add r1, r2, #1 + str r1, [sp, #0xc] + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #4] + mov r1, #0xa1 + add r2, sp, #0xc + bl FUN_02067830 +_0222EC80: + cmp r7, #0xff + beq _0222EC9A + ldr r0, [sp] + add r2, sp, #8 + add r0, r0, #1 + str r0, [sp, #8] + ldr r1, [r5] + lsl r0, r7, #2 + add r0, r1, r0 + ldr r0, [r0, #4] + mov r1, #0xa1 + bl FUN_02067830 +_0222EC9A: + add r2, r5, #4 + ldr r1, [r2, r6] + ldr r0, [r2, r4] + add r7, r5, #0 + str r0, [r2, r6] + str r1, [r2, r4] + add r7, #8 + ldr r0, [r7, r6] + add r1, sp, #0x10 + bl FUN_02029C74 + add r0, r5, #0 + str r0, [sp, #4] + add r0, #8 + str r0, [sp, #4] + ldr r0, [r0, r4] + ldr r1, [r7, r6] + bl FUN_02029C74 + ldr r1, [sp, #4] + add r0, sp, #0x10 + ldr r1, [r1, r4] + bl FUN_02029C74 + add r0, r5, #0 + bl MOD62_0222EC28 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD62_0222EC54 + + thumb_func_start MOD62_0222ECD4 +MOD62_0222ECD4: ; 0x0222ECD4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r6, #0x9b + mov r4, #0 + add r5, r7, #0 + lsl r6, r6, #2 +_0222ECE0: + ldr r0, [r5, r6] + bl FUN_0200C5A8 + add r4, r4, #1 + add r5, #0xc + cmp r4, #0xc + blt _0222ECE0 + mov r0, #0xbd + lsl r0, r0, #2 + ldr r0, [r7, r0] + bl FUN_0200C5A8 + mov r0, #0xbe + lsl r0, r0, #2 + ldr r0, [r7, r0] + bl FUN_0200C5A8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD62_0222ECD4 + + thumb_func_start MOD62_0222ED04 +MOD62_0222ED04: ; 0x0222ED04 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r6, #0x9b + mov r4, #0 + add r5, r7, #0 + lsl r6, r6, #2 +_0222ED10: + ldr r0, [r5, r6] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, #0xc + cmp r4, #0xc + blt _0222ED10 + mov r0, #0xbd + lsl r0, r0, #2 + ldr r0, [r7, r0] + bl FUN_0200C3DC + mov r0, #0xbe + lsl r0, r0, #2 + ldr r0, [r7, r0] + bl FUN_0200C3DC + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD62_0222ED04 + + thumb_func_start MOD62_0222ED34 +MOD62_0222ED34: ; 0x0222ED34 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r6, r2, #0 + add r4, r1, #0 + lsl r1, r6, #0x18 + lsr r1, r1, #0x18 + str r1, [sp] + mov r1, #0x35 + str r1, [sp, #4] + mov r1, #1 + add r2, r1, #0 + mov r3, #0xf + add r5, r0, #0 + bl FUN_0200CD68 + add r0, r6, #0 + bl FUN_0200CD64 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xc0 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x26 + mov r3, #0x35 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x35 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #1 + mov r2, #0x1f + mov r3, #0xd + bl FUN_0200CB00 + bl FUN_0200CAFC + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xd0 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x26 + mov r3, #0x35 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xe0 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0xe + mov r2, #7 + mov r3, #0x35 + bl FUN_020030E8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD62_0222ED34 + + thumb_func_start MOD62_0222EDBC +MOD62_0222EDBC: ; 0x0222EDBC + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r6, r2, #0 + add r4, r1, #0 + lsl r1, r6, #0x18 + lsr r1, r1, #0x18 + str r1, [sp] + mov r1, #0x35 + str r1, [sp, #4] + mov r1, #4 + mov r2, #1 + mov r3, #0xf + add r5, r0, #0 + bl FUN_0200CD68 + add r0, r6, #0 + bl FUN_0200CD64 + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xc0 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x26 + mov r3, #0x35 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x35 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #4 + mov r2, #0x1f + mov r3, #0xd + bl FUN_0200CB00 + bl FUN_0200CAFC + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xd0 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x26 + mov r3, #0x35 + bl FUN_020030E8 + mov r0, #1 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xe0 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0xe + mov r2, #7 + mov r3, #0x35 + bl FUN_020030E8 + mov r0, #1 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x30 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0xe + mov r2, #7 + mov r3, #0x35 + bl FUN_020030E8 + mov r0, #1 + str r0, [sp] + mov r0, #0x20 + mov r1, #0x5b + str r0, [sp, #4] + mov r0, #0xb0 + add r2, r1, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r2, #0xcb + mov r3, #0x35 + bl FUN_020030E8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD62_0222EDBC + + thumb_func_start MOD62_0222EE78 +MOD62_0222EE78: ; 0x0222EE78 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + ldr r1, _0222EEDC ; =0x0000FFFF + add r4, r0, #0 + cmp r5, r1 + bne _0222EE96 + mov r1, #0xf + bl FUN_02019620 + add r0, r4, #0 + bl FUN_020191D0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0222EE96: + mov r0, #0 + mov r1, #0x1a + mov r2, #8 + mov r3, #0x35 + bl FUN_0200A86C + add r1, r5, #0 + add r6, r0, #0 + bl FUN_0200A914 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #0xf + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + add r0, r4, #0 + add r2, r5, #0 + add r3, r1, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r4, #0 + bl FUN_020191D0 + add r0, r5, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_0200A8B8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0222EEDC: .word 0x0000FFFF + thumb_func_end MOD62_0222EE78 + + thumb_func_start MOD62_0222EEE0 +MOD62_0222EEE0: ; 0x0222EEE0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + add r4, r2, #0 + add r6, r3, #0 + bl FUN_0201901C + ldr r0, [sp, #0x28] + lsl r2, r4, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [sp, #0x2c] + lsl r3, r6, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldr r0, [sp, #0x30] + add r1, r5, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xe + str r0, [sp, #0xc] + ldr r0, [sp, #0x34] + lsr r2, r2, #0x18 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + add r0, r7, #0 + lsr r3, r3, #0x18 + bl FUN_02019064 + mov r1, #1 + add r0, r5, #0 + add r2, r1, #0 + mov r3, #0xc + bl FUN_0200D0BC + add r0, r5, #0 + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0 + bl FUN_020191D0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD62_0222EEE0 + + thumb_func_start MOD62_0222EF44 +MOD62_0222EF44: ; 0x0222EF44 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + add r4, r2, #0 + add r6, r3, #0 + bl FUN_0201901C + ldr r0, [sp, #0x28] + lsl r2, r4, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [sp, #0x2c] + lsl r3, r6, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldr r0, [sp, #0x30] + add r1, r5, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [sp, #0x38] + lsr r2, r2, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + ldr r0, [sp, #0x34] + lsr r3, r3, #0x18 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + add r0, r7, #0 + bl FUN_02019064 + add r0, r5, #0 + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0 + bl FUN_020191D0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD62_0222EF44 + + thumb_func_start MOD62_0222EFA0 +MOD62_0222EFA0: ; 0x0222EFA0 + push {r3, r4, lr} + sub sp, #0x14 + mov r1, #2 + add r4, r0, #0 + str r1, [sp] + mov r0, #4 + str r0, [sp, #4] + str r1, [sp, #8] + mov r1, #0x94 + str r1, [sp, #0xc] + mov r0, #0xb + str r0, [sp, #0x10] + add r0, r4, #0 + add r0, #0xe4 + add r1, #0x88 + ldr r0, [r0] + add r1, r4, r1 + mov r2, #6 + mov r3, #3 + bl MOD62_0222EF44 + mov r1, #2 + str r1, [sp] + mov r0, #4 + str r0, [sp, #4] + str r1, [sp, #8] + mov r1, #0x9c + str r1, [sp, #0xc] + mov r0, #0xb + str r0, [sp, #0x10] + add r0, r4, #0 + add r0, #0xe4 + add r1, #0x90 + ldr r0, [r0] + add r1, r4, r1 + mov r2, #6 + mov r3, #0xa + bl MOD62_0222EF44 + mov r0, #5 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r1, #0xa4 + str r1, [sp, #0xc] + mov r0, #0xb + str r0, [sp, #0x10] + add r0, r4, #0 + add r0, #0xe4 + add r1, #0x98 + ldr r0, [r0] + add r1, r4, r1 + mov r2, #6 + mov r3, #3 + bl MOD62_0222EF44 + mov r0, #5 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r1, #0xac + str r1, [sp, #0xc] + mov r0, #0xb + str r0, [sp, #0x10] + add r0, r4, #0 + add r0, #0xe4 + add r1, #0xa0 + ldr r0, [r0] + add r1, r4, r1 + mov r2, #6 + mov r3, #0xa + bl MOD62_0222EF44 + mov r0, #8 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r1, #0xb4 + str r1, [sp, #0xc] + mov r0, #0xb + str r0, [sp, #0x10] + add r0, r4, #0 + add r0, #0xe4 + add r1, #0xa8 + ldr r0, [r0] + add r1, r4, r1 + mov r2, #6 + mov r3, #3 + bl MOD62_0222EF44 + mov r0, #8 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r1, #0xbc + str r1, [sp, #0xc] + mov r0, #0xb + str r0, [sp, #0x10] + add r0, r4, #0 + add r0, #0xe4 + add r1, #0xb0 + ldr r0, [r0] + add r1, r4, r1 + mov r2, #6 + mov r3, #0xa + bl MOD62_0222EF44 + mov r2, #0xb + str r2, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r1, #0xc4 + str r1, [sp, #0xc] + add r0, r4, #0 + str r2, [sp, #0x10] + add r0, #0xe4 + add r1, #0xb8 + ldr r0, [r0] + add r1, r4, r1 + mov r2, #6 + mov r3, #3 + bl MOD62_0222EF44 + mov r2, #0xb + str r2, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r1, #0xcc + str r1, [sp, #0xc] + add r0, r4, #0 + str r2, [sp, #0x10] + add r0, #0xe4 + add r1, #0xc0 + ldr r0, [r0] + add r1, r4, r1 + mov r2, #6 + mov r3, #0xa + bl MOD62_0222EF44 + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD62_0222EFA0 + + thumb_func_start MOD62_0222F0D4 +MOD62_0222F0D4: ; 0x0222F0D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + add r5, r7, #0 + add r5, #0xec + mov r6, #3 + add r5, #0x30 +_0222F0E2: + ldr r0, _0222F160 ; =0x0000041D + add r1, r7, r6 + ldrb r0, [r1, r0] + str r0, [sp, #0x10] + cmp r0, #0 + bne _0222F0FE + add r0, r5, #0 + mov r1, #0xee + bl FUN_02019620 + add r0, r5, #0 + bl FUN_020191D0 + b _0222F152 +_0222F0FE: + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + mov r0, #0x64 + mov r1, #0x35 + bl FUN_020219F4 + ldr r1, [sp, #0x10] + add r4, r0, #0 + ldr r0, [r7, #0x64] + sub r1, r1, #1 + bl FUN_02029CF4 + add r1, r0, #0 + mov r0, #1 + str r0, [sp] + add r0, r4, #0 + mov r2, #3 + mov r3, #1 + bl FUN_02021B04 + mov r0, #0 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0222F164 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r5, #0 + add r2, r4, #0 + mov r3, #7 + bl FUN_0201BDE0 + add r0, r5, #0 + bl FUN_020191D0 + add r0, r4, #0 + bl FUN_02021A20 +_0222F152: + add r6, r6, #1 + add r5, #0x10 + cmp r6, #0xb + blt _0222F0E2 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0222F160: .word 0x0000041D +_0222F164: .word 0x00010200 + thumb_func_end MOD62_0222F0D4 + + thumb_func_start MOD62_0222F168 +MOD62_0222F168: ; 0x0222F168 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + add r0, r1, #3 + lsl r4, r0, #4 + mov r0, #0x42 + add r1, r6, r1 + lsl r0, r0, #4 + add r5, r6, #0 + ldrb r7, [r1, r0] + add r5, #0xec + cmp r7, #0 + bne _0222F194 + add r0, r5, r4 + mov r1, #0xee + bl FUN_02019620 + add r0, r5, r4 + bl FUN_020191D0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_0222F194: + add r0, r5, r4 + mov r1, #0 + bl FUN_02019620 + mov r0, #0x64 + mov r1, #0x35 + bl FUN_020219F4 + str r0, [sp, #0x10] + ldr r0, [r6, #0x64] + sub r1, r7, #1 + bl FUN_02029CF4 + add r1, r0, #0 + mov r3, #1 + ldr r0, [sp, #0x10] + mov r2, #3 + str r3, [sp] + bl FUN_02021B04 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0222F1E4 ; =0x00010200 + ldr r2, [sp, #0x10] + str r0, [sp, #8] + add r0, r5, r4 + mov r3, #7 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r5, r4 + bl FUN_020191D0 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0222F1E4: .word 0x00010200 + thumb_func_end MOD62_0222F168 + + thumb_func_start MOD62_0222F1E8 +MOD62_0222F1E8: ; 0x0222F1E8 + push {r3, r4, r5, lr} + add r0, #0xec + add r5, r0, #0 + mov r4, #3 + add r5, #0x30 +_0222F1F2: + add r0, r5, #0 + bl FUN_02019570 + add r0, r5, #0 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #0xb + blt _0222F1F2 + pop {r3, r4, r5, pc} + thumb_func_end MOD62_0222F1E8 + + thumb_func_start MOD62_0222F208 +MOD62_0222F208: ; 0x0222F208 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + ldr r1, _0222F26C ; =0x0000FFFF + add r4, r0, #0 + cmp r5, r1 + bne _0222F226 + mov r1, #0xf + bl FUN_02019620 + add r0, r4, #0 + bl FUN_020191D0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0222F226: + mov r0, #0 + mov r1, #0x1a + mov r2, #0xa + mov r3, #0x35 + bl FUN_0200A86C + add r1, r5, #0 + add r6, r0, #0 + bl FUN_0200A914 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #0xf + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + add r0, r4, #0 + add r2, r5, #0 + add r3, r1, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r4, #0 + bl FUN_020191D0 + add r0, r5, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_0200A8B8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0222F26C: .word 0x0000FFFF + thumb_func_end MOD62_0222F208 + + thumb_func_start MOD62_0222F270 +MOD62_0222F270: ; 0x0222F270 + push {r3, lr} + bl FUN_0201E788 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + pop {r3, pc} + thumb_func_end MOD62_0222F270 + + thumb_func_start MOD62_0222F288 +MOD62_0222F288: ; 0x0222F288 + push {lr} + sub sp, #0xc + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x35 + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + add sp, #0xc + pop {pc} + .align 2, 0 + thumb_func_end MOD62_0222F288 + + thumb_func_start MOD62_0222F2A8 +MOD62_0222F2A8: ; 0x0222F2A8 + push {lr} + sub sp, #0xc + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x35 + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + add sp, #0xc + pop {pc} + thumb_func_end MOD62_0222F2A8 + + thumb_func_start MOD62_0222F2C8 +MOD62_0222F2C8: ; 0x0222F2C8 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x35 + add r2, r4, #0 + str r0, [sp, #0xc] + mov r0, #0x5b + add r2, #0xe4 + add r1, r0, #0 + ldr r2, [r2] + add r1, #0xb1 + mov r3, #2 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x35 + add r2, r4, #0 + str r0, [sp, #0xc] + mov r0, #0x5b + add r2, #0xe4 + add r1, r0, #0 + ldr r2, [r2] + add r1, #0xc1 + mov r3, #2 + bl FUN_020068C8 + mov r1, #0 + str r1, [sp] + mov r0, #0x40 + str r0, [sp, #4] + add r0, r4, #0 + str r1, [sp, #8] + add r0, #0xe8 + mov r1, #0x5b + add r2, r1, #0 + ldr r0, [r0] + add r2, #0xc5 + mov r3, #0x35 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x35 + add r2, r4, #0 + str r0, [sp, #0xc] + mov r0, #0x5b + add r2, #0xe4 + add r1, r0, #0 + ldr r2, [r2] + add r1, #0xb2 + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x35 + str r0, [sp, #0xc] + mov r0, #0x5b + add r4, #0xe4 + add r1, r0, #0 + ldr r2, [r4] + add r1, #0xc2 + mov r3, #3 + bl FUN_020068C8 + add sp, #0x10 + pop {r4, pc} + thumb_func_end MOD62_0222F2C8 + + thumb_func_start MOD62_0222F36C +MOD62_0222F36C: ; 0x0222F36C + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x35 + add r2, r4, #0 + str r0, [sp, #0xc] + mov r0, #0x5b + add r2, #0xe4 + add r1, r0, #0 + ldr r2, [r2] + add r1, #0xb0 + mov r3, #5 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x35 + add r2, r4, #0 + str r0, [sp, #0xc] + mov r0, #0x5b + add r2, #0xe4 + add r1, r0, #0 + ldr r2, [r2] + add r1, #0xc0 + mov r3, #5 + bl FUN_020068C8 + mov r0, #1 + str r0, [sp] + mov r0, #0x40 + str r0, [sp, #4] + mov r0, #0 + mov r1, #0x5b + add r2, r1, #0 + add r4, #0xe8 + str r0, [sp, #8] + ldr r0, [r4] + add r2, #0xc4 + mov r3, #0x35 + bl FUN_020030E8 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD62_0222F36C + + thumb_func_start MOD62_0222F3D4 +MOD62_0222F3D4: ; 0x0222F3D4 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x35 + add r2, r4, #0 + str r0, [sp, #0xc] + mov r0, #0x5b + add r2, #0xe4 + add r1, r0, #0 + ldr r2, [r2] + add r1, #0xb0 + mov r3, #7 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x35 + add r2, r4, #0 + str r0, [sp, #0xc] + mov r0, #0x5b + add r2, #0xe4 + add r1, r0, #0 + ldr r2, [r2] + add r1, #0xbf + mov r3, #7 + bl FUN_020068C8 + mov r0, #1 + str r0, [sp] + mov r0, #0x40 + str r0, [sp, #4] + mov r0, #0 + mov r1, #0x5b + add r2, r1, #0 + add r4, #0xe8 + str r0, [sp, #8] + ldr r0, [r4] + add r2, #0xc4 + mov r3, #0x35 + bl FUN_020030E8 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD62_0222F3D4 + + thumb_func_start MOD62_0222F43C +MOD62_0222F43C: ; 0x0222F43C + push {r3, r4, r5, lr} + sub sp, #0x18 + add r1, r0, #0 + add r1, #0xdc + ldr r4, [r1] + add r1, r0, #0 + add r1, #0xe0 + ldr r5, [r1] + mov r1, #0x5b + str r1, [sp] + add r1, #0xc7 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + mov r1, #3 + str r1, [sp, #0xc] + mov r2, #2 + str r2, [sp, #0x10] + ldr r2, _0222F57C ; =0x000066B2 + add r0, #0xe8 + str r2, [sp, #0x14] + ldr r0, [r0] + add r2, r4, #0 + add r3, r5, #0 + bl FUN_0200C0DC + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _0222F580 ; =0x000062B9 + mov r2, #0x5b + add r3, r2, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, r5, #0 + add r3, #0xb6 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0222F584 ; =0x00006A29 + add r1, r5, #0 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x5b + mov r3, #0xb1 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0222F588 ; =0x00006DB5 + add r1, r5, #0 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x5b + mov r3, #0x55 + bl FUN_0200C13C + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _0222F58C ; =0x000062BA + mov r2, #0x5b + add r3, r2, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, r5, #0 + add r3, #0xb7 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0222F590 ; =0x00006A2A + add r1, r5, #0 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x5b + mov r3, #0xb2 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0222F594 ; =0x00006DB6 + add r1, r5, #0 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x5b + mov r3, #0x56 + bl FUN_0200C13C + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _0222F598 ; =0x000062B6 + mov r2, #0x5b + add r3, r2, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, r5, #0 + add r3, #0xb3 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0222F59C ; =0x00006A27 + add r1, r5, #0 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x5b + mov r3, #0xaf + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0222F5A0 ; =0x00006DB3 + add r1, r5, #0 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x5b + mov r3, #0x53 + bl FUN_0200C13C + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _0222F5A4 ; =0x000089C8 + mov r2, #0x5b + add r3, r2, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, r5, #0 + add r3, #0xb5 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0222F5A8 ; =0x00006A28 + add r1, r5, #0 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x5b + mov r3, #0xb0 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0222F5AC ; =0x00006DB4 + add r1, r5, #0 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x5b + mov r3, #0x54 + bl FUN_0200C13C + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222F57C: .word 0x000066B2 +_0222F580: .word 0x000062B9 +_0222F584: .word 0x00006A29 +_0222F588: .word 0x00006DB5 +_0222F58C: .word 0x000062BA +_0222F590: .word 0x00006A2A +_0222F594: .word 0x00006DB6 +_0222F598: .word 0x000062B6 +_0222F59C: .word 0x00006A27 +_0222F5A0: .word 0x00006DB3 +_0222F5A4: .word 0x000089C8 +_0222F5A8: .word 0x00006A28 +_0222F5AC: .word 0x00006DB4 + thumb_func_end MOD62_0222F43C + + thumb_func_start MOD62_0222F5B0 +MOD62_0222F5B0: ; 0x0222F5B0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0xa0 + add r7, r0, #0 + add r0, #0xdc + ldr r6, [r0] + add r0, r7, #0 + add r0, #0xe0 + ldr r5, [r0] + mov r0, #0xf9 + lsl r0, r0, #2 + add r4, r7, r0 + mov r1, #0 + add r2, sp, #0x6c + strh r1, [r2] + strh r1, [r2, #2] + strh r1, [r2, #4] + strh r1, [r2, #6] + mov r0, #0x3c + str r0, [sp, #0x74] + mov r0, #2 + str r0, [sp, #0x7c] + mov r0, #1 + str r1, [sp, #0x9c] + sub r1, r0, #2 + str r0, [sp, #0x98] + str r0, [sp, #0x78] + ldr r0, _0222F6FC ; =0x000062B9 + str r1, [sp, #0x90] + str r0, [sp, #0x80] + ldr r0, _0222F700 ; =0x000066B2 + str r1, [sp, #0x94] + str r0, [sp, #0x84] + ldr r0, _0222F704 ; =0x00006A29 + add r1, r5, #0 + str r0, [sp, #0x88] + ldr r0, _0222F708 ; =0x00006DB5 + str r0, [sp, #0x8c] + add r0, r6, #0 + bl FUN_0200C154 + str r0, [r4, #0x20] + ldr r0, _0222F70C ; =0x000062BA + add r1, r5, #0 + str r0, [sp, #0x80] + ldr r0, _0222F700 ; =0x000066B2 + add r2, sp, #0x6c + str r0, [sp, #0x84] + ldr r0, _0222F710 ; =0x00006A2A + str r0, [sp, #0x88] + ldr r0, _0222F714 ; =0x00006DB6 + str r0, [sp, #0x8c] + add r0, r6, #0 + bl FUN_0200C154 + str r0, [r4, #0x24] + mov r0, #1 + str r0, [sp, #0x98] + str r0, [sp, #0x78] + ldr r0, _0222F718 ; =0x000089C8 + add r1, r5, #0 + str r0, [sp, #0x80] + ldr r0, _0222F700 ; =0x000066B2 + add r2, sp, #0x6c + str r0, [sp, #0x84] + ldr r0, _0222F71C ; =0x00006A28 + str r0, [sp, #0x88] + ldr r0, _0222F720 ; =0x00006DB4 + str r0, [sp, #0x8c] + add r0, r6, #0 + bl FUN_0200C154 + str r0, [r4, #0x28] + mov r0, #1 + str r0, [sp, #0x98] + mov r0, #0 + str r0, [sp, #0x78] + ldr r0, _0222F724 ; =0x000062B6 + add r1, r5, #0 + str r0, [sp, #0x80] + ldr r0, _0222F700 ; =0x000066B2 + add r2, sp, #0x6c + str r0, [sp, #0x84] + ldr r0, _0222F728 ; =0x00006A27 + str r0, [sp, #0x88] + ldr r0, _0222F72C ; =0x00006DB3 + str r0, [sp, #0x8c] + add r0, r6, #0 + bl FUN_0200C154 + str r0, [r4, #0x2c] + add r0, r6, #0 + add r1, r5, #0 + add r2, sp, #0x6c + bl FUN_0200C154 + ldr r3, _0222F730 ; =0x022311A8 + str r0, [r4, #0x30] + add r2, sp, #0x38 + mov r1, #0x1a +_0222F676: + ldrh r0, [r3] + add r3, r3, #2 + strh r0, [r2] + add r2, r2, #2 + sub r1, r1, #1 + bne _0222F676 + ldr r3, _0222F734 ; =0x022311DC + add r2, sp, #4 + mov r1, #0x1a +_0222F688: + ldrh r0, [r3] + add r3, r3, #2 + strh r0, [r2] + add r2, r2, #2 + sub r1, r1, #1 + bne _0222F688 + mov r0, #8 + str r0, [sp] + mov r0, #0x1d + add r4, r7, #0 + lsl r0, r0, #4 + add r7, r7, r0 + add r6, sp, #0x58 + add r4, #0x20 + add r5, sp, #0x24 + add r7, #0x20 +_0222F6A8: + mov r0, #0xf9 + mov r1, #0 + mov r2, #2 + lsl r0, r0, #2 + ldrsh r1, [r6, r1] + ldrsh r2, [r6, r2] + ldr r0, [r4, r0] + bl FUN_0200C714 + mov r0, #0xf9 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200C5A8 + mov r0, #0xf9 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200C61C + mov r1, #0xf9 + mov r2, #0 + mov r3, #2 + lsl r1, r1, #2 + ldrsh r2, [r5, r2] + ldrsh r3, [r5, r3] + ldr r1, [r4, r1] + add r0, r7, #0 + bl MOD62_0222DCE4 + ldr r0, [sp] + add r6, r6, #4 + add r0, r0, #1 + add r4, r4, #4 + add r5, r5, #4 + add r7, r7, #4 + str r0, [sp] + cmp r0, #0xd + blt _0222F6A8 + add sp, #0xa0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222F6FC: .word 0x000062B9 +_0222F700: .word 0x000066B2 +_0222F704: .word 0x00006A29 +_0222F708: .word 0x00006DB5 +_0222F70C: .word 0x000062BA +_0222F710: .word 0x00006A2A +_0222F714: .word 0x00006DB6 +_0222F718: .word 0x000089C8 +_0222F71C: .word 0x00006A28 +_0222F720: .word 0x00006DB4 +_0222F724: .word 0x000062B6 +_0222F728: .word 0x00006A27 +_0222F72C: .word 0x00006DB3 +_0222F730: .word 0x022311A8 +_0222F734: .word 0x022311DC + thumb_func_end MOD62_0222F5B0 + + thumb_func_start MOD62_0222F738 +MOD62_0222F738: ; 0x0222F738 + push {r3, r4, r5, r6, r7, lr} + mov r7, #0xf9 + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 + lsl r7, r7, #2 +_0222F744: + ldr r0, [r5, r7] + add r1, r6, #0 + bl FUN_0200C644 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xd + blt _0222F744 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD62_0222F738 + + thumb_func_start MOD62_0222F758 +MOD62_0222F758: ; 0x0222F758 + bx lr + .align 2, 0 + thumb_func_end MOD62_0222F758 + + thumb_func_start MOD62_0222F75C +MOD62_0222F75C: ; 0x0222F75C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r6, #0xf9 + mov r4, #8 + add r5, #0x20 + lsl r6, r6, #2 +_0222F768: + ldr r0, [r5, r6] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xd + blt _0222F768 + pop {r4, r5, r6, pc} + thumb_func_end MOD62_0222F75C + + thumb_func_start MOD62_0222F778 +MOD62_0222F778: ; 0x0222F778 + add r1, r0, #0 + mov r0, #0xf1 + lsl r0, r0, #2 + ldr r0, [r1, r0] + ldr r3, _0222F78C ; =0x02029C75 + lsl r0, r0, #3 + add r0, r1, r0 + ldr r0, [r0, #8] + add r1, #0x68 + bx r3 + .align 2, 0 +_0222F78C: .word 0x02029C75 + thumb_func_end MOD62_0222F778 + + thumb_func_start MOD62_0222F790 +MOD62_0222F790: ; 0x0222F790 + mov r1, #0xf1 + add r2, r0, #0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + ldr r3, _0222F7A4 ; =0x02029C75 + lsl r1, r1, #3 + add r1, r2, r1 + add r0, #0x68 + ldr r1, [r1, #8] + bx r3 + .align 2, 0 +_0222F7A4: .word 0x02029C75 + thumb_func_end MOD62_0222F790 + + thumb_func_start MOD62_0222F7A8 +MOD62_0222F7A8: ; 0x0222F7A8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_0222F7AE: + ldr r0, [r5, #0x64] + add r1, r4, #0 + bl FUN_02029CF4 + add r1, r5, r4 + add r1, #0x80 + add r4, r4, #1 + strb r0, [r1] + cmp r4, #0x51 + blt _0222F7AE + pop {r3, r4, r5, pc} + thumb_func_end MOD62_0222F7A8 + + thumb_func_start MOD62_0222F7C4 +MOD62_0222F7C4: ; 0x0222F7C4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_0222F7CA: + add r2, r5, r4 + add r2, #0x80 + ldrb r2, [r2] + ldr r0, [r5, #0x64] + add r1, r4, #0 + bl FUN_02029D40 + add r4, r4, #1 + cmp r4, #0x51 + blt _0222F7CA + pop {r3, r4, r5, pc} + thumb_func_end MOD62_0222F7C4 + + thumb_func_start MOD62_0222F7E0 +MOD62_0222F7E0: ; 0x0222F7E0 + push {r3, lr} + mov r0, #7 + str r0, [sp] + ldr r0, _0222F804 ; =0x04000050 + mov r1, #0 + mov r2, #6 + mov r3, #0xb + bl G2x_SetBlendAlpha_ + mov r0, #8 + str r0, [sp] + ldr r0, _0222F808 ; =0x04001050 + mov r1, #0 + mov r2, #0xe + mov r3, #7 + bl G2x_SetBlendAlpha_ + pop {r3, pc} + .align 2, 0 +_0222F804: .word 0x04000050 +_0222F808: .word 0x04001050 + thumb_func_end MOD62_0222F7E0 + + thumb_func_start MOD62_0222F80C +MOD62_0222F80C: ; 0x0222F80C + push {r3, r4, r5, r6, r7, lr} + mov r1, #0xf1 + add r5, r0, #0 + lsl r1, r1, #2 + ldr r0, [r5, r1] + lsl r0, r0, #3 + add r0, r5, r0 + ldr r0, [r0, #4] + cmp r0, #0xff + beq _0222F832 + ldr r2, [r5] + lsl r0, r0, #2 + add r0, r2, r0 + add r1, #0x64 + ldr r0, [r0, #4] + ldr r1, [r5, r1] + bl FUN_02069B88 + pop {r3, r4, r5, r6, r7, pc} +_0222F832: + ldr r1, [r5] + mov r6, #0 + ldr r0, [r1] + cmp r0, #0 + ble _0222F868 + add r4, r6, #0 +_0222F83E: + add r0, r1, r4 + ldr r7, [r0, #4] + mov r1, #0x4c + add r0, r7, #0 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222F85C + ldr r1, _0222F86C ; =0x00000428 + add r0, r7, #0 + ldr r1, [r5, r1] + bl FUN_02069B88 + pop {r3, r4, r5, r6, r7, pc} +_0222F85C: + ldr r1, [r5] + add r6, r6, #1 + ldr r0, [r1] + add r4, r4, #4 + cmp r6, r0 + blt _0222F83E +_0222F868: + pop {r3, r4, r5, r6, r7, pc} + nop +_0222F86C: .word 0x00000428 + thumb_func_end MOD62_0222F80C + + thumb_func_start MOD62_0222F870 +MOD62_0222F870: ; 0x0222F870 + push {r3, r4, r5, r6, r7, lr} + mov r7, #0 + add r6, r0, #0 + add r5, r7, #0 + add r4, r7, #0 +_0222F87A: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02029CC8 + bl FUN_02029CE0 + cmp r0, #0 + beq _0222F88C + add r5, r5, #1 +_0222F88C: + add r4, r4, #1 + cmp r4, #8 + blt _0222F87A + cmp r5, #0 + beq _0222F898 + mov r7, #1 +_0222F898: + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD62_0222F870 + + thumb_func_start MOD62_0222F89C +MOD62_0222F89C: ; 0x0222F89C + mov r2, #0xc + mul r2, r1 + add r1, r0, r2 + mov r0, #0x99 + lsl r0, r0, #2 + ldr r2, [r1, r0] + add r0, r0, #4 + ldr r0, [r1, r0] + cmp r2, #0xff + bne _0222F8B8 + cmp r0, #0 + bne _0222F8B8 + mov r0, #0 + bx lr +_0222F8B8: + cmp r2, #0xff + bne _0222F8C4 + cmp r0, #1 + bne _0222F8C4 + mov r0, #1 + bx lr +_0222F8C4: + cmp r2, #0xff + beq _0222F8D0 + cmp r0, #1 + bne _0222F8D0 + mov r0, #2 + bx lr +_0222F8D0: + mov r0, #3 + bx lr + thumb_func_end MOD62_0222F89C + + thumb_func_start MOD62_0222F8D4 +MOD62_0222F8D4: ; 0x0222F8D4 + push {r3, r4} + cmp r2, #0xff + bne _0222F8E6 + mov r2, #0xf6 + lsl r2, r2, #2 + ldr r4, [r0, r2] + sub r2, r2, #4 + str r4, [r0, r2] + b _0222F8EC +_0222F8E6: + mov r4, #0xf5 + lsl r4, r4, #2 + str r2, [r0, r4] +_0222F8EC: + mov r2, #0xf3 + lsl r2, r2, #2 + str r1, [r0, r2] + add r1, r2, #0 + add r1, #0xc + str r3, [r0, r1] + mov r1, #0 + add r2, #0x10 + str r1, [r0, r2] + pop {r3, r4} + bx lr + .align 2, 0 + thumb_func_end MOD62_0222F8D4 + + thumb_func_start MOD62_0222F904 +MOD62_0222F904: ; 0x0222F904 + push {r4, lr} + add r4, r0, #0 + add r0, #0xfc + mov r1, #1 + bl FUN_0200CCF8 + add r0, r4, #0 + add r0, #0xfc + bl FUN_02019570 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02001C5C + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02012870 + add r4, #0xfc + add r0, r4, #0 + bl FUN_02019178 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD62_0222F904 + + thumb_func_start MOD62_0222F93C +MOD62_0222F93C: ; 0x0222F93C + push {r3, lr} + mov r1, #1 + mov r2, #0 + mov r3, #3 + bl MOD62_0222F8D4 + mov r0, #0 + pop {r3, pc} + thumb_func_end MOD62_0222F93C + + thumb_func_start MOD62_0222F94C +MOD62_0222F94C: ; 0x0222F94C + push {r4, lr} + add r4, r0, #0 + bl MOD62_0222D874 + add r0, r4, #0 + bl MOD62_0222DC7C + add r0, r4, #0 + bl MOD62_0222EC28 + mov r2, #0 + add r0, r4, #0 + mov r1, #2 + add r3, r2, #0 + bl MOD62_0222F8D4 + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD62_0222F94C + + thumb_func_start MOD62_0222F970 +MOD62_0222F970: ; 0x0222F970 + push {r3, lr} + mov r1, #3 + mov r2, #0 + add r3, r1, #0 + bl MOD62_0222F8D4 + mov r0, #0 + pop {r3, pc} + thumb_func_end MOD62_0222F970 + + thumb_func_start MOD62_0222F980 +MOD62_0222F980: ; 0x0222F980 + push {r3, lr} + mov r1, #4 + mov r2, #0 + mov r3, #3 + bl MOD62_0222F8D4 + mov r0, #0 + pop {r3, pc} + thumb_func_end MOD62_0222F980 + + thumb_func_start MOD62_0222F990 +MOD62_0222F990: ; 0x0222F990 + push {r3, r4, r5, lr} + mov r1, #0xf3 + add r4, r0, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + lsl r2, r1, #2 + ldr r1, _0222F9B0 ; =0x02231220 + ldr r1, [r1, r2] + blx r1 + add r4, #0xe0 + add r5, r0, #0 + ldr r0, [r4] + bl FUN_0200BC1C + add r0, r5, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222F9B0: .word 0x02231220 + thumb_func_end MOD62_0222F990 + + thumb_func_start MOD62_0222F9B4 +MOD62_0222F9B4: ; 0x0222F9B4 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0222FA3C ; =0x021C48B8 + mov r1, #0x10 + ldr r0, [r0, #0x4c] + tst r1, r0 + beq _0222F9D2 + ldr r0, [r4] + mov r1, #0xc + add r0, r0, #1 + str r0, [r4] + bl _s32_div_f + str r1, [r4] + b _0222FA38 +_0222F9D2: + mov r1, #0x20 + tst r1, r0 + beq _0222F9EA + ldr r0, [r4] + cmp r0, #0 + ble _0222F9E4 + sub r0, r0, #1 + str r0, [r4] + b _0222FA38 +_0222F9E4: + mov r0, #0xb + str r0, [r4] + b _0222FA38 +_0222F9EA: + mov r1, #0x40 + tst r1, r0 + beq _0222FA0E + ldr r1, [r4] + asr r0, r1, #1 + lsr r0, r0, #0x1e + add r0, r1, r0 + asr r0, r0, #2 + beq _0222FA0A + sub r0, r1, #4 + mov r1, #0xc + str r0, [r4] + bl _s32_div_f + str r1, [r4] + b _0222FA38 +_0222FA0A: + mov r0, #0 + pop {r4, pc} +_0222FA0E: + mov r1, #0x80 + tst r0, r1 + beq _0222FA34 + ldr r1, [r4] + asr r0, r1, #1 + lsr r0, r0, #0x1e + add r0, r1, r0 + asr r0, r0, #2 + cmp r0, #2 + beq _0222FA30 + add r0, r1, #4 + mov r1, #0xc + str r0, [r4] + bl _s32_div_f + str r1, [r4] + b _0222FA38 +_0222FA30: + mov r0, #0 + pop {r4, pc} +_0222FA34: + mov r0, #0 + pop {r4, pc} +_0222FA38: + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_0222FA3C: .word 0x021C48B8 + thumb_func_end MOD62_0222F9B4 + + thumb_func_start MOD62_0222FA40 +MOD62_0222FA40: ; 0x0222FA40 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + mov r4, #0 + str r2, [sp] + cmp r1, #0 + bne _0222FA50 + mov r4, #1 +_0222FA50: + mov r0, #0xf1 + lsl r0, r0, #2 + lsl r6, r1, #2 + add r7, r5, r0 + add r1, sp, #4 + ldr r0, [r7, r6] + add r1, #2 + add r2, sp, #4 + bl MOD62_0222E53C + mov r0, #0xbd + add r1, r5, r6 + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r3, sp, #4 + mov r1, #2 + mov r2, #0 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + bl FUN_0200C714 + ldr r0, [sp] + cmp r0, #1 + bne _0222FAAE + mov r0, #0xf1 + lsl r0, r0, #2 + add r1, r5, r0 + ldr r0, [r7, r6] + lsl r4, r4, #2 + str r0, [r1, r4] + ldr r0, [r1, r4] + add r1, sp, #4 + add r1, #2 + add r2, sp, #4 + bl MOD62_0222E53C + mov r0, #0xbd + add r1, r5, r4 + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r3, sp, #4 + mov r1, #2 + mov r2, #0 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + bl FUN_0200C714 +_0222FAAE: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD62_0222FA40 + + thumb_func_start MOD62_0222FAB4 +MOD62_0222FAB4: ; 0x0222FAB4 + push {r4, r5, r6, lr} + sub sp, #0x10 + mov r1, #0xf5 + add r4, r0, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + cmp r1, #6 + bls _0222FAC6 + b _0222FD4C +_0222FAC6: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222FAD2: ; jump table + .short _0222FAE0 - _0222FAD2 - 2 ; case 0 + .short _0222FBBC - _0222FAD2 - 2 ; case 1 + .short _0222FBCC - _0222FAD2 - 2 ; case 2 + .short _0222FBE0 - _0222FAD2 - 2 ; case 3 + .short _0222FCA2 - _0222FAD2 - 2 ; case 4 + .short _0222FD00 - _0222FAD2 - 2 ; case 5 + .short _0222FD10 - _0222FAD2 - 2 ; case 6 +_0222FAE0: + bl MOD62_0222E560 + add r0, r4, #0 + bl MOD62_0222E5D8 + add r0, r4, #0 + bl MOD62_0222E6D8 + add r0, r4, #0 + bl MOD62_0222F2C8 + add r0, r4, #0 + bl MOD62_0222F36C + add r0, r4, #0 + bl MOD62_0222F3D4 + add r0, r4, #0 + bl MOD62_0222E7A4 + add r0, r4, #0 + bl MOD62_0222EA6C + mov r0, #0x15 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r3, #2 + add r1, r4, #0 + str r3, [sp, #8] + mov r0, #0x28 + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0xe4 + ldr r0, [r0] + add r1, #0xec + mov r2, #1 + bl MOD62_0222EEE0 + add r0, r4, #0 + bl MOD62_0222D67C + add r0, r4, #0 + mov r1, #1 + bl MOD62_0222DB10 + add r0, r4, #0 + bl MOD62_0222D654 + add r0, r4, #0 + bl MOD62_0222F43C + add r0, r4, #0 + bl MOD62_0222F5B0 + add r0, r4, #0 + bl MOD62_0222E888 + add r0, r4, #0 + bl MOD62_0222E8F8 + add r0, r4, #0 + bl MOD62_0222F778 + add r0, r4, #0 + bl MOD62_0222F7A8 + ldr r1, _0222FD60 ; =0x00000418 + add r0, r4, #0 + ldr r1, [r4, r1] + bl MOD62_0222DEF8 + add r0, r4, #0 + bl MOD62_0222DF5C + add r0, r4, #0 + bl MOD62_0222E004 + add r0, r4, #0 + mov r1, #0 + bl MOD62_0222F738 + add r0, r4, #0 + mov r1, #0 + bl MOD62_0222E9B4 + add r0, r4, #0 + bl MOD62_0222DDB4 + add r0, r4, #0 + mov r1, #0 + bl MOD62_0222DDE0 + add r0, r4, #0 + add r0, #0xec + mov r1, #7 + bl MOD62_0222EE78 + bl MOD62_0222F270 + add r0, r4, #0 + mov r1, #0 + bl MOD62_022300DC + mov r0, #0xf5 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _0222FD4C +_0222FBBC: + bl MOD62_0222F288 + mov r0, #0xf5 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _0222FD4C +_0222FBCC: + bl FUN_0200E308 + cmp r0, #1 + beq _0222FBD6 + b _0222FD4C +_0222FBD6: + mov r0, #0xf5 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] +_0222FBE0: + bl FUN_02020AA4 + cmp r0, #1 + bne _0222FBF0 + add r0, r4, #0 + bl MOD62_0222F93C + b _0222FD4C +_0222FBF0: + mov r0, #0xf1 + lsl r0, r0, #2 + ldr r6, [r4, r0] + add r0, r4, r0 + bl MOD62_0222F9B4 + mov r1, #0xf1 + lsl r1, r1, #2 + ldr r5, [r4, r1] + cmp r0, #1 + str r6, [r4, r1] + bne _0222FC4C + add r0, r4, #0 + bl MOD62_0222D874 + add r0, r4, #0 + bl MOD62_0222DC7C + add r0, r4, #0 + bl MOD62_0222EC28 + mov r0, #0xf1 + lsl r0, r0, #2 + str r5, [r4, r0] + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + bl MOD62_0222FA40 + add r0, r4, #0 + bl MOD62_0222DAEC + add r0, r4, #0 + bl MOD62_0222D67C + add r0, r4, #0 + mov r1, #1 + bl MOD62_0222DB10 + add r0, r4, #0 + bl MOD62_0222D654 + ldr r0, _0222FD64 ; =0x000005DC + bl FUN_020054C8 + b _0222FD4C +_0222FC4C: + ldr r0, _0222FD68 ; =0x021C48B8 + ldr r2, [r0, #0x48] + mov r0, #1 + tst r0, r2 + beq _0222FC8E + add r0, r1, #0 + add r0, #0x10 + ldr r0, [r4, r0] + add r1, #0x10 + add r0, r0, #1 + str r0, [r4, r1] + add r0, r4, #0 + add r0, #0xec + mov r1, #8 + bl MOD62_0222EE78 + mov r0, #0xf1 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r4, #0 + str r0, [sp] + add r0, r4, #0 + add r0, #0xe4 + ldr r0, [r0] + add r1, #0xfc + mov r2, #1 + add r3, r4, #0 + bl MOD62_0222E3C4 + ldr r0, _0222FD64 ; =0x000005DC + bl FUN_020054C8 + b _0222FD4C +_0222FC8E: + mov r0, #2 + tst r0, r2 + beq _0222FD4C + mov r0, #5 + add r1, #0x10 + str r0, [r4, r1] + ldr r0, _0222FD6C ; =0x000005DD + bl FUN_020054C8 + b _0222FD4C +_0222FCA2: + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02001C78 + add r1, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r1, r0 + beq _0222FCBE + add r0, r0, #1 + cmp r1, r0 + beq _0222FD4C + b _0222FCD8 +_0222FCBE: + add r0, r4, #0 + bl MOD62_0222F904 + add r0, r4, #0 + add r0, #0xec + mov r1, #7 + bl MOD62_0222EE78 + mov r0, #0xf5 + mov r1, #3 + lsl r0, r0, #2 + str r1, [r4, r0] + b _0222FD4C +_0222FCD8: + cmp r1, #0 + beq _0222FD4C + add r0, r4, #0 + blx r1 + cmp r0, #1 + beq _0222FCEC + add r0, r4, #0 + bl MOD62_0222F904 + b _0222FD4C +_0222FCEC: + add r0, r4, #0 + add r0, #0xec + mov r1, #7 + bl MOD62_0222EE78 + mov r0, #0xf5 + mov r1, #3 + lsl r0, r0, #2 + str r1, [r4, r0] + b _0222FD4C +_0222FD00: + bl MOD62_0222F2A8 + mov r0, #0xf5 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _0222FD4C +_0222FD10: + bl FUN_0200E308 + cmp r0, #1 + bne _0222FD4C + add r0, r4, #0 + add r0, #0xec + bl FUN_02019178 + add r0, r4, #0 + bl MOD62_0222ED04 + add r0, r4, #0 + bl MOD62_0222E77C + add r0, r4, #0 + bl MOD62_0222F75C + add r0, r4, #0 + bl MOD62_0222E9D4 + add r0, r4, #0 + bl MOD62_0222E0C8 + ldr r0, [r4] + mov r1, #0 + bl FUN_02085D9C + add sp, #0x10 + mov r0, #0 + pop {r4, r5, r6, pc} +_0222FD4C: + add r0, r4, #0 + bl MOD62_0222E754 + add r0, r4, #0 + bl MOD62_0222ECD4 + mov r0, #1 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_0222FD60: .word 0x00000418 +_0222FD64: .word 0x000005DC +_0222FD68: .word 0x021C48B8 +_0222FD6C: .word 0x000005DD + thumb_func_end MOD62_0222FAB4 + + thumb_func_start MOD62_0222FD70 +MOD62_0222FD70: ; 0x0222FD70 + push {r3, lr} + cmp r1, #3 + bhi _0222FDA2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222FD82: ; jump table + .short _0222FD8A - _0222FD82 - 2 ; case 0 + .short _0222FD9A - _0222FD82 - 2 ; case 1 + .short _0222FD92 - _0222FD82 - 2 ; case 2 + .short _0222FD9A - _0222FD82 - 2 ; case 3 +_0222FD8A: + mov r1, #1 + bl FUN_0200C61C + pop {r3, pc} +_0222FD92: + mov r1, #2 + bl FUN_0200C61C + pop {r3, pc} +_0222FD9A: + mov r1, #0 + bl FUN_0200C61C + pop {r3, pc} +_0222FDA2: + bl ErrorHandling + pop {r3, pc} + thumb_func_end MOD62_0222FD70 + + thumb_func_start MOD62_0222FDA8 +MOD62_0222FDA8: ; 0x0222FDA8 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + cmp r5, #0 + beq _0222FDCC + add r1, sp, #4 + add r2, sp, #0 + bl FUN_020119A4 + ldr r1, [sp, #4] + ldr r2, [sp] + add r0, r5, #0 + add r1, r1, r4 + add r2, r2, r6 + bl FUN_020118C4 +_0222FDCC: + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD62_0222FDA8 + + thumb_func_start MOD62_0222FDD0 +MOD62_0222FDD0: ; 0x0222FDD0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #3 + beq _0222FDE2 + cmp r0, #6 + beq _0222FDFC + b _0222FE1C +_0222FDE2: + mov r1, #0 + ldr r0, [r4, #8] + sub r2, r1, #1 + bl MOD62_0222FDA8 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_0200C61C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_0222FDFC: + ldr r0, [r4, #8] + mov r1, #0 + mov r2, #2 + bl MOD62_0222FDA8 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_0200C61C + add r0, r5, #0 + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} +_0222FE1C: + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD62_0222FDD0 + + thumb_func_start MOD62_0222FE24 +MOD62_0222FE24: ; 0x0222FE24 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #0x35 + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0 + mov r0, #1 + str r0, [r4] + mov r1, #0 + str r6, [r4, #4] + add r0, r5, #0 + sub r2, r1, #1 + str r5, [r4, #8] + bl MOD62_0222FDA8 + mov r2, #0xfa + ldr r0, _0222FE54 ; =MOD62_0222FDD0 + add r1, r4, #0 + lsl r2, r2, #2 + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + .align 2, 0 +_0222FE54: .word MOD62_0222FDD0 + thumb_func_end MOD62_0222FE24 + + thumb_func_start MOD62_0222FE58 +MOD62_0222FE58: ; 0x0222FE58 + push {r4, r5, r6, lr} + add r4, r2, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0xd8 + ldr r0, [r0] + add r6, r1, #0 + cmp r0, #0 + bne _0222FE6C + b _022300A8 +_0222FE6C: + cmp r5, #0x14 + bls _0222FE72 + b _022300A4 +_0222FE72: + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222FE7E: ; jump table + .short _0222FFE6 - _0222FE7E - 2 ; case 0 + .short _0222FFE6 - _0222FE7E - 2 ; case 1 + .short _0222FFE6 - _0222FE7E - 2 ; case 2 + .short _0222FFE6 - _0222FE7E - 2 ; case 3 + .short _0222FFE6 - _0222FE7E - 2 ; case 4 + .short _0222FFE6 - _0222FE7E - 2 ; case 5 + .short _0222FFE6 - _0222FE7E - 2 ; case 6 + .short _0222FFE6 - _0222FE7E - 2 ; case 7 + .short _0222FEA8 - _0222FE7E - 2 ; case 8 + .short _0222FEF2 - _0222FE7E - 2 ; case 9 + .short _0222FF40 - _0222FE7E - 2 ; case 10 + .short _0222FF6E - _0222FE7E - 2 ; case 11 + .short _0222FFAC - _0222FE7E - 2 ; case 12 + .short _02230074 - _0222FE7E - 2 ; case 13 + .short _02230074 - _0222FE7E - 2 ; case 14 + .short _02230074 - _0222FE7E - 2 ; case 15 + .short _02230074 - _0222FE7E - 2 ; case 16 + .short _02230074 - _0222FE7E - 2 ; case 17 + .short _02230074 - _0222FE7E - 2 ; case 18 + .short _02230074 - _0222FE7E - 2 ; case 19 + .short _02230074 - _0222FE7E - 2 ; case 20 +_0222FEA8: + cmp r6, #0 + bne _0222FEE6 + ldr r1, _022300AC ; =0x00000418 + ldr r0, [r4, r1] + cmp r0, #0 + ble _0222FEB6 + b _0222FEBA +_0222FEB6: + add r0, r1, #4 + ldr r0, [r4, r0] +_0222FEBA: + sub r0, r0, #1 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD62_0222E0C8 + ldr r1, _022300AC ; =0x00000418 + add r0, r4, #0 + ldr r1, [r4, r1] + bl MOD62_0222DEF8 + add r0, r4, #0 + bl MOD62_0222DF5C + add r0, r4, #0 + bl MOD62_0222E004 + add r0, r4, #0 + bl MOD62_0222F0D4 + ldr r0, _022300B0 ; =0x000006C5 + bl FUN_020054C8 +_0222FEE6: + ldr r0, _022300B4 ; =0x00000404 + add r1, r6, #0 + ldr r0, [r4, r0] + bl MOD62_0222FD70 + pop {r4, r5, r6, pc} +_0222FEF2: + cmp r6, #0 + bne _0222FF34 + ldr r1, _022300AC ; =0x00000418 + ldr r0, [r4, r1] + add r0, r0, #1 + str r0, [r4, r1] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + bl _s32_div_f + ldr r0, _022300AC ; =0x00000418 + str r1, [r4, r0] + add r0, r4, #0 + bl MOD62_0222E0C8 + ldr r1, _022300AC ; =0x00000418 + add r0, r4, #0 + ldr r1, [r4, r1] + bl MOD62_0222DEF8 + add r0, r4, #0 + bl MOD62_0222DF5C + add r0, r4, #0 + bl MOD62_0222E004 + add r0, r4, #0 + bl MOD62_0222F0D4 + ldr r0, _022300B0 ; =0x000006C5 + bl FUN_020054C8 +_0222FF34: + ldr r0, _022300B8 ; =0x00000408 + add r1, r6, #0 + ldr r0, [r4, r0] + bl MOD62_0222FD70 + pop {r4, r5, r6, pc} +_0222FF40: + cmp r6, #0 + bne _0222FF62 + mov r0, #0xf5 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #5 + beq _0222FF58 + mov r1, #5 + str r1, [r4, r0] + ldr r0, _022300BC ; =0x000005DD + bl FUN_020054C8 +_0222FF58: + ldr r0, _022300C0 ; =0x0000040C + mov r1, #0 + ldr r0, [r4, r0] + bl MOD62_0222FE24 +_0222FF62: + ldr r0, _022300C0 ; =0x0000040C + add r1, r6, #0 + ldr r0, [r4, r0] + bl MOD62_0222FD70 + pop {r4, r5, r6, pc} +_0222FF6E: + cmp r6, #0 + bne _0222FF9E + mov r0, #0xf5 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #6 + beq _0222FF8E + mov r1, #6 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #0 + bl MOD62_022300DC + ldr r0, _022300C4 ; =0x000005E2 + bl FUN_020054C8 +_0222FF8E: + mov r0, #0x41 + mov r1, #0x8e + lsl r0, r0, #4 + lsl r1, r1, #2 + ldr r0, [r4, r0] + ldr r1, [r4, r1] + bl MOD62_0222FE24 +_0222FF9E: + mov r0, #0x41 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, r6, #0 + bl MOD62_0222FD70 + pop {r4, r5, r6, pc} +_0222FFAC: + cmp r6, #0 + bne _0222FFDA + mov r0, #0xf5 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #7 + beq _0222FFCC + mov r1, #7 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #0 + bl MOD62_022300DC + ldr r0, _022300BC ; =0x000005DD + bl FUN_020054C8 +_0222FFCC: + ldr r0, _022300C8 ; =0x00000414 + mov r1, #0x8f + lsl r1, r1, #2 + ldr r0, [r4, r0] + ldr r1, [r4, r1] + bl MOD62_0222FE24 +_0222FFDA: + ldr r0, _022300C8 ; =0x00000414 + add r1, r6, #0 + ldr r0, [r4, r0] + bl MOD62_0222FD70 + pop {r4, r5, r6, pc} +_0222FFE6: + cmp r6, #0 + bne _022300A8 + add r0, r4, #0 + bl MOD62_0222D76C + cmp r0, #0 + bne _02230006 + ldr r0, _022300CC ; =0x000005F2 + bl FUN_020054C8 + add r4, #0xec + add r0, r4, #0 + mov r1, #0xf + bl MOD62_0222EE78 + pop {r4, r5, r6, pc} +_02230006: + mov r0, #0x42 + lsl r0, r0, #4 + add r6, r4, r0 + ldrb r1, [r6, r5] + cmp r1, #0 + beq _0223005C + ldr r0, [r4, #0x64] + sub r1, r1, #1 + bl FUN_02029CF4 + cmp r0, #0 + beq _0223005C + lsl r1, r5, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD62_0222D6EC + add r1, r4, #0 + add r1, #0xd4 + str r0, [r1] + ldrb r0, [r6, r5] + bl FUN_02085FD0 + add r1, r0, #0 + add r0, r4, #0 + add r0, #0xec + bl MOD62_0222F208 + ldr r0, [r4] + mov r2, #0 + ldrb r1, [r6, r5] + ldr r0, [r0, #0x20] + mvn r2, r2 + bl FUN_02029D44 + add r0, r4, #0 + add r1, r5, #0 + bl MOD62_0222F168 + ldr r0, _022300D0 ; =0x000005EB + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_0223005C: + ldrb r0, [r6, r5] + cmp r0, #0 + beq _022300A8 + ldr r0, _022300CC ; =0x000005F2 + bl FUN_020054C8 + add r4, #0xec + add r0, r4, #0 + mov r1, #0x10 + bl MOD62_0222EE78 + pop {r4, r5, r6, pc} +_02230074: + cmp r6, #0 + bne _022300A8 + sub r5, #0xd + lsl r2, r5, #0x18 + add r0, r4, #0 + lsr r2, r2, #0x18 + bl MOD62_0222DA38 + lsl r0, r5, #4 + add r1, r4, r0 + mov r0, #0xca + lsl r0, r0, #2 + ldrb r0, [r1, r0] + bl FUN_02085FD0 + add r4, #0xec + add r1, r0, #0 + add r0, r4, #0 + bl MOD62_0222F208 + ldr r0, _022300D0 ; =0x000005EB + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_022300A4: + bl ErrorHandling +_022300A8: + pop {r4, r5, r6, pc} + nop +_022300AC: .word 0x00000418 +_022300B0: .word 0x000006C5 +_022300B4: .word 0x00000404 +_022300B8: .word 0x00000408 +_022300BC: .word 0x000005DD +_022300C0: .word 0x0000040C +_022300C4: .word 0x000005E2 +_022300C8: .word 0x00000414 +_022300CC: .word 0x000005F2 +_022300D0: .word 0x000005EB + thumb_func_end MOD62_0222FE58 + + thumb_func_start MOD62_022300D4 +MOD62_022300D4: ; 0x022300D4 + mov r1, #0x96 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + thumb_func_end MOD62_022300D4 + + thumb_func_start MOD62_022300DC +MOD62_022300DC: ; 0x022300DC + add r0, #0xd8 + str r1, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD62_022300DC + + thumb_func_start MOD62_022300E4 +MOD62_022300E4: ; 0x022300E4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp, #4] + add r1, sp, #0x10 + mov r0, #0 + strb r0, [r1] + strb r0, [r1, #1] + strb r0, [r1, #2] + mov r7, #0x1d + lsl r7, r7, #4 + strb r0, [r1, #3] + ldr r1, _022301A0 ; =0x02231260 + ldr r2, [sp, #4] + add r3, r7, #1 + add r4, r7, #2 + add r5, r7, #3 +_02230104: + ldrb r6, [r1] + add r0, r0, #1 + strb r6, [r2, r7] + ldrb r6, [r1, #1] + strb r6, [r2, r3] + ldrb r6, [r1, #2] + strb r6, [r2, r4] + ldrb r6, [r1, #3] + add r1, r1, #4 + strb r6, [r2, r5] + add r2, r2, #4 + cmp r0, #0xd + blt _02230104 + cmp r0, #0x15 + bge _0223017E + mov r3, #0x1d + ldr r2, [sp, #4] + lsl r3, r3, #4 + add r2, r2, r3 + lsl r4, r0, #2 + ldr r1, [sp, #4] + ldr r3, [sp, #4] + add r1, r1, r4 + add r2, r2, r4 + lsl r4, r0, #4 + add r5, sp, #0xc + add r3, r3, r4 + ldrb r4, [r5, #4] + strb r4, [r5] + ldrb r4, [r5, #5] + strb r4, [r5, #1] + ldrb r4, [r5, #6] + strb r4, [r5, #2] + ldrb r4, [r5, #7] + strb r4, [r5, #3] + ldrb r4, [r5, #2] + ldrb r6, [r5] + ldrb r7, [r5, #1] + str r4, [sp, #8] + ldrb r4, [r5, #3] + mov ip, r4 +_02230156: + mov r4, #0x1d + lsl r4, r4, #4 + strb r6, [r1, r4] + add r4, r4, #1 + strb r7, [r1, r4] + ldr r5, _022301A4 ; =0x000001D2 + ldr r4, [sp, #8] + add r0, r0, #1 + strb r4, [r1, r5] + add r5, r5, #1 + mov r4, ip + strb r4, [r1, r5] + mov r4, #0x26 + lsl r4, r4, #4 + str r2, [r3, r4] + add r1, r1, #4 + add r2, r2, #4 + add r3, #0x10 + cmp r0, #0x15 + blt _02230156 +_0223017E: + mov r0, #0x35 + str r0, [sp] + mov r1, #0x1d + ldr r0, [sp, #4] + lsl r1, r1, #4 + add r0, r0, r1 + ldr r2, _022301A8 ; =MOD62_0222FE58 + ldr r3, [sp, #4] + mov r1, #0x15 + bl FUN_020220C4 + mov r2, #0x73 + ldr r1, [sp, #4] + lsl r2, r2, #2 + str r0, [r1, r2] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022301A0: .word 0x02231260 +_022301A4: .word 0x000001D2 +_022301A8: .word MOD62_0222FE58 + thumb_func_end MOD62_022300E4 + + thumb_func_start MOD62_022301AC +MOD62_022301AC: ; 0x022301AC + push {r3, r4, r5, r6, lr} + sub sp, #0x34 + ldr r1, _02230214 ; =0x00000428 + add r5, r0, #0 + ldr r1, [r5, r1] + add r0, sp, #0x24 + mov r2, #2 + bl FUN_02068B68 + ldr r0, _02230214 ; =0x00000428 + mov r1, #5 + ldr r0, [r5, r0] + mov r2, #0 + bl FUN_020671BC + add r4, r0, #0 + ldr r0, _02230214 ; =0x00000428 + mov r1, #2 + ldr r0, [r5, r0] + bl FUN_02068E14 + add r6, r0, #0 + mov r0, #0x6b + lsl r0, r0, #2 + lsl r1, r4, #0x10 + str r6, [r5, r0] + add r0, sp, #0x10 + lsr r1, r1, #0x10 + bl FUN_02069010 + ldr r0, _02230218 ; =0xFFFFFD80 + add r6, #0x30 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + add r0, sp, #0x10 + str r0, [sp, #8] + mov r0, #0x69 + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, sp, #0x24 + mov r2, #0xc0 + add r3, r6, #0 + bl FUN_020073A0 + mov r1, #0x6a + lsl r1, r1, #2 + str r0, [r5, r1] + add sp, #0x34 + pop {r3, r4, r5, r6, pc} + nop +_02230214: .word 0x00000428 +_02230218: .word 0xFFFFFD80 + thumb_func_end MOD62_022301AC + + thumb_func_start MOD62_0223021C +MOD62_0223021C: ; 0x0223021C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _02230268 ; =0x00000428 + mov r1, #5 + ldr r0, [r5, r0] + mov r2, #0 + bl FUN_020671BC + add r4, r0, #0 + ldr r0, _02230268 ; =0x00000428 + ldr r0, [r5, r0] + bl FUN_02068854 + add r6, r0, #0 + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02007314 + mov r1, #0x97 + lsl r2, r4, #0x10 + str r6, [sp] + mov r0, #0 + str r0, [sp, #4] + lsl r1, r1, #2 + str r0, [sp, #8] + ldr r0, [r5, r1] + sub r1, #0xb4 + ldr r1, [r5, r1] + lsr r2, r2, #0x10 + mov r3, #2 + bl FUN_02069038 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_02230268: .word 0x00000428 + thumb_func_end MOD62_0223021C + + thumb_func_start MOD62_0223026C +MOD62_0223026C: ; 0x0223026C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xc + mov r2, #0 + bl FUN_02007558 + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xd + mov r2, #0 + bl FUN_02007558 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD62_0223026C + + thumb_func_start MOD62_02230290 +MOD62_02230290: ; 0x02230290 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xc + bl FUN_0200782C + mov r1, #1 + lsl r1, r1, #8 + cmp r0, r1 + bne _022302AC + mov r0, #0 + pop {r4, pc} +_022302AC: + add r1, #0xa8 + ldr r0, [r4, r1] + mov r1, #0xc + bl FUN_0200782C + mov r2, #1 + lsl r2, r2, #8 + cmp r0, r2 + blt _022302DE + add r0, r2, #0 + add r0, #0xa8 + ldr r0, [r4, r0] + mov r1, #0xc + bl FUN_02007558 + mov r0, #0x6a + lsl r0, r0, #2 + mov r1, #0xd + add r2, r1, #0 + ldr r0, [r4, r0] + add r2, #0xf3 + bl FUN_02007558 + mov r0, #0 + pop {r4, pc} +_022302DE: + add r2, #0xa8 + ldr r0, [r4, r2] + mov r1, #0xc + mov r2, #0x20 + bl FUN_020079E0 + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xd + mov r2, #0x20 + bl FUN_020079E0 + mov r1, #0x6a + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + bl FUN_02007F34 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD62_02230290 + + thumb_func_start MOD62_0223030C +MOD62_0223030C: ; 0x0223030C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xc + bl FUN_0200782C + cmp r0, #0 + bne _02230324 + mov r0, #0 + pop {r4, pc} +_02230324: + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xc + bl FUN_0200782C + cmp r0, #0 + bgt _02230354 + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xc + mov r2, #0 + bl FUN_02007558 + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xd + mov r2, #0 + bl FUN_02007558 + mov r0, #0 + pop {r4, pc} +_02230354: + mov r0, #0x6a + lsl r0, r0, #2 + mov r1, #0xc + add r2, r1, #0 + ldr r0, [r4, r0] + sub r2, #0x2c + bl FUN_020079E0 + mov r0, #0x6a + lsl r0, r0, #2 + mov r1, #0xd + add r2, r1, #0 + ldr r0, [r4, r0] + sub r2, #0x2d + bl FUN_020079E0 + mov r1, #0x6a + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + bl FUN_02007F34 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD62_0223030C + + thumb_func_start MOD62_02230388 +MOD62_02230388: ; 0x02230388 + add r2, r1, #0 + mov r1, #0x6a + lsl r1, r1, #2 + ldr r0, [r0, r1] + ldr r3, _02230398 ; =0x02007559 + mov r1, #6 + bx r3 + nop +_02230398: .word 0x02007559 + thumb_func_end MOD62_02230388 + + thumb_func_start MOD62_0223039C +MOD62_0223039C: ; 0x0223039C + mov r1, #0x6a + lsl r1, r1, #2 + ldr r3, _022303A8 ; =0x02007535 + ldr r0, [r0, r1] + bx r3 + nop +_022303A8: .word 0x02007535 + thumb_func_end MOD62_0223039C + + thumb_func_start MOD62_022303AC +MOD62_022303AC: ; 0x022303AC + push {r4, r5, r6, r7, lr} + sub sp, #0xa4 + mov r1, #0xf5 + add r4, r0, #0 + lsl r1, r1, #2 + ldr r2, [r4, r1] + cmp r2, #0xa + bhi _0223042C + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_022303C8: ; jump table + .short _022303DE - _022303C8 - 2 ; case 0 + .short _02230424 - _022303C8 - 2 ; case 1 + .short _0223049A - _022303C8 - 2 ; case 2 + .short _022304D2 - _022303C8 - 2 ; case 3 + .short _02230BDA - _022303C8 - 2 ; case 4 + .short _022304F2 - _022303C8 - 2 ; case 5 + .short _02230846 - _022303C8 - 2 ; case 6 + .short _022308B2 - _022303C8 - 2 ; case 7 + .short _02230AD4 - _022303C8 - 2 ; case 8 + .short _02230B00 - _022303C8 - 2 ; case 9 + .short _02230B96 - _022303C8 - 2 ; case 10 +_022303DE: + mov r1, #0 + bl MOD62_022300DC + add r0, r4, #0 + ldr r1, _0223071C ; =0x0000FFFF + add r0, #0xec + bl MOD62_0222EE78 + add r0, r4, #0 + bl MOD62_0222EFA0 + add r0, r4, #0 + bl MOD62_0222F0D4 + add r0, r4, #0 + mov r1, #1 + mov r2, #4 + bl MOD62_0222E180 + add r0, r4, #0 + bl MOD62_0222F778 + add r0, r4, #0 + bl MOD62_0222F7A8 + mov r0, #0x26 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + mov r0, #0xf5 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _02230BDA +_02230424: + bl MOD62_022300D4 + cmp r0, #1 + bne _0223042E +_0223042C: + b _02230BDA +_0223042E: + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r0, r4, #0 + str r3, [sp, #8] + add r0, #0xe8 + ldr r0, [r0] + mov r1, #1 + mov r2, #3 + bl FUN_02003210 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r0, r4, #0 + str r3, [sp, #8] + add r0, #0xe8 + ldr r0, [r0] + ldr r2, _0223071C ; =0x0000FFFF + mov r1, #4 + bl FUN_02003210 + mov r0, #0x10 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #1 + bl FUN_0201E74C + mov r0, #7 + mov r1, #1 + bl FUN_020178BC + add r0, r4, #0 + mov r1, #1 + bl MOD62_0222F738 + add r0, r4, #0 + mov r1, #1 + bl MOD62_0222E9B4 + add r0, r4, #0 + mov r1, #1 + bl MOD62_0222DDE0 + mov r0, #0xf5 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _02230BDA +_0223049A: + add r0, #0xe8 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + bne _02230598 + mov r0, #3 + mov r1, #1 + bl FUN_020178BC + mov r0, #0x10 + str r0, [sp] + mov r3, #0 + str r3, [sp, #4] + add r0, r4, #0 + str r3, [sp, #8] + add r0, #0xe8 + ldr r0, [r0] + mov r1, #1 + mov r2, #2 + bl FUN_02003210 + mov r0, #0xf5 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _02230BDA +_022304D2: + add r0, #0xe8 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + bne _02230598 + add r0, r4, #0 + mov r1, #1 + bl MOD62_022300DC + mov r0, #0xf5 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _02230BDA +_022304F2: + add r2, r1, #0 + add r2, #8 + ldr r2, [r4, r2] + cmp r2, #7 + bls _022304FE + b _0223080C +_022304FE: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0223050A: ; jump table + .short _0223051A - _0223050A - 2 ; case 0 + .short _0223058C - _0223050A - 2 ; case 1 + .short _022305E2 - _0223050A - 2 ; case 2 + .short _02230646 - _0223050A - 2 ; case 3 + .short _02230692 - _0223050A - 2 ; case 4 + .short _022306D6 - _0223050A - 2 ; case 5 + .short _0223072C - _0223050A - 2 ; case 6 + .short _022307A0 - _0223050A - 2 ; case 7 +_0223051A: + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r3, #0 + str r3, [sp] + mov r0, #0xa + str r0, [sp, #4] + add r0, r4, #0 + str r3, [sp, #8] + add r0, #0xe8 + ldr r0, [r0] + ldr r2, _02230720 ; =0x0000080B + mov r1, #2 + bl FUN_02003210 + mov r3, #0 + str r3, [sp] + mov r0, #0xa + str r0, [sp, #4] + add r0, r4, #0 + str r3, [sp, #8] + add r0, #0xe8 + ldr r0, [r0] + ldr r2, _0223071C ; =0x0000FFFF + mov r1, #8 + bl FUN_02003210 + add r0, r4, #0 + mov r1, #0 + bl MOD62_022300DC + mov r0, #0x3e + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + add r0, r4, #0 + bl MOD62_0222F80C + add r0, r4, #0 + bl MOD62_022301AC + add r0, r4, #0 + mov r1, #1 + bl MOD62_02230388 + add r0, r4, #0 + add r0, #0xec + mov r1, #0xd + bl MOD62_0222EE78 + mov r0, #0xf7 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _02230BDA +_0223058C: + add r0, #0xe8 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + beq _0223059A +_02230598: + b _02230BDA +_0223059A: + mov r0, #0x35 + str r0, [sp, #0x80] + mov r1, #1 + mov r2, #0 + mov r0, #0xff + str r0, [sp, #0x88] + add r0, r4, #0 + str r1, [sp, #0x7c] + str r1, [sp, #0x94] + str r2, [sp, #0x84] + str r2, [sp, #0x90] + add r0, #0xdc + ldr r0, [r0] + mov r1, #0x9a + str r0, [sp, #0x98] + add r0, r4, #0 + add r0, #0xe8 + ldr r0, [r0] + str r0, [sp, #0x9c] + ldr r0, _02230724 ; =0x00000428 + ldr r0, [r4, r0] + bl FUN_020671BC + str r0, [sp, #0x8c] + add r0, sp, #0x7c + bl MOD08_02229918 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0xf7 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _02230BDA +_022305E2: + add r2, sp, #0x58 + mov r0, #0 + str r0, [r2] + str r0, [r2, #4] + str r0, [r2, #8] + mov r0, #1 + str r0, [sp, #0x58] + add r0, r1, #0 + add r0, #0x54 + ldr r0, [r4, r0] + sub r1, #0x10 + str r0, [sp, #0x60] + ldr r0, [r4, r1] + add r1, r4, #0 + add r0, r0, #1 + str r0, [sp, #0x18] + add r0, sp, #0x64 + bl MOD62_0222DCBC + ldr r0, _02230724 ; =0x00000428 + mov r1, #0xa1 + ldr r0, [r4, r0] + add r2, sp, #0x18 + bl FUN_02067830 + ldr r0, _02230724 ; =0x00000428 + mov r1, #0xaa + ldr r0, [r4, r0] + add r2, sp, #0x64 + bl FUN_02067830 + mov r0, #0x35 + add r1, sp, #0x58 + bl MOD08_02228218 + mov r1, #0x8a + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + bl MOD08_02228524 + mov r0, #0xf7 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + mov r1, #0 + add r0, r0, #4 + str r1, [r4, r0] + b _02230BDA +_02230646: + mov r0, #0x8a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD08_02228570 + cmp r0, #1 + bne _02230702 + mov r0, #0x8b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD08_02229A00 + cmp r0, #1 + bne _02230702 + add r0, r4, #0 + bl MOD62_02230290 + mov r0, #0x8a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD08_022285A4 + add r0, r4, #0 + mov r1, #0 + bl MOD62_02230388 + add r0, r4, #0 + bl MOD62_0223026C + ldr r0, _02230728 ; =0x000006C6 + bl FUN_020054C8 + mov r0, #0xf7 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _02230BDA +_02230692: + bl MOD62_02230290 + add r5, r0, #0 + mov r0, #0x8b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD08_022299E8 + cmp r0, #0 + bne _02230702 + cmp r5, #0 + bne _02230702 + mov r0, #0x8b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD08_02229A2C + mov r0, #0x10 + mov r1, #0 + bl FUN_0201E6E4 + add r0, r4, #0 + bl MOD62_0223021C + mov r0, #0x3e + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + sub r1, r0, #4 + ldr r1, [r4, r1] + sub r0, r0, #4 + add r1, r1, #1 + str r1, [r4, r0] + b _02230BDA +_022306D6: + mov r0, #0x8a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD08_022285B4 + cmp r0, #0 + bne _02230702 + mov r0, #0x97 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02014D7C + cmp r0, #1 + bne _02230702 + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02007390 + cmp r0, #0 + beq _02230704 +_02230702: + b _02230BDA +_02230704: + mov r0, #0x8a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD08_02228618 + mov r0, #0xf7 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _02230BDA + nop +_0223071C: .word 0x0000FFFF +_02230720: .word 0x0000080B +_02230724: .word 0x00000428 +_02230728: .word 0x000006C6 +_0223072C: + add r0, r1, #0 + add r0, #0xc + ldr r0, [r4, r0] + add r2, r0, #1 + add r0, r1, #0 + add r0, #0xc + str r2, [r4, r0] + add r0, r1, #0 + add r0, #0xc + ldr r0, [r4, r0] + cmp r0, #0x1e + blt _0223081A + add r0, r1, #0 + mov r2, #0 + add r0, #0xc + str r2, [r4, r0] + mov r0, #0x35 + mov r3, #1 + str r0, [sp, #0x34] + mov r0, #5 + str r0, [sp, #0x38] + mov r0, #0xff + str r0, [sp, #0x3c] + add r0, r4, #0 + str r3, [sp, #0x30] + str r2, [sp, #0x44] + str r3, [sp, #0x48] + add r0, #0xdc + ldr r0, [r0] + add r1, #0x54 + str r0, [sp, #0x4c] + add r0, r4, #0 + add r0, #0xe8 + ldr r0, [r0] + str r0, [sp, #0x50] + ldr r0, [r4, r1] + mov r1, #0x9a + bl FUN_020671BC + str r0, [sp, #0x40] + add r0, sp, #0x30 + bl MOD08_02229918 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + bl MOD62_0222F7E0 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0xf7 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _02230BDA +_022307A0: + bl MOD62_0223030C + add r5, r0, #0 + mov r0, #0x8b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD08_022299E8 + cmp r0, #0 + bne _0223081A + cmp r5, #0 + bne _0223081A + mov r0, #0xa + str r0, [sp] + mov r3, #0 + str r3, [sp, #4] + add r0, r4, #0 + str r3, [sp, #8] + add r0, #0xe8 + ldr r0, [r0] + ldr r2, _02230B38 ; =0x0000080B + mov r1, #2 + bl FUN_02003210 + mov r0, #0xa + str r0, [sp] + mov r3, #0 + str r3, [sp, #4] + add r0, r4, #0 + str r3, [sp, #8] + add r0, #0xe8 + ldr r0, [r0] + ldr r2, _02230B3C ; =0x0000FFFF + mov r1, #8 + bl FUN_02003210 + add r0, r4, #0 + mov r1, #1 + bl MOD62_02230388 + add r0, r4, #0 + bl MOD62_0223039C + mov r0, #0x8b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD08_02229A2C + mov r0, #0xf7 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _02230BDA +_0223080C: + add r0, r4, #0 + add r0, #0xe8 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + beq _0223081C +_0223081A: + b _02230BDA +_0223081C: + mov r0, #0x10 + mov r1, #0 + bl FUN_0201E6E4 + add r0, r4, #0 + mov r1, #1 + bl MOD62_022300DC + mov r0, #0xf7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r1, #4 + sub r0, #8 + str r1, [r4, r0] + add r0, r4, #0 + ldr r1, _02230B3C ; =0x0000FFFF + add r0, #0xec + bl MOD62_0222EE78 + b _02230BDA +_02230846: + add r0, #0xec + mov r1, #0xc + bl MOD62_0222EE78 + add r0, r4, #0 + bl MOD62_0222DC00 + cmp r0, #1 + bne _02230860 + mov r0, #0x26 + mov r1, #1 + lsl r0, r0, #4 + str r1, [r4, r0] +_02230860: + add r0, r4, #0 + bl MOD62_0222DC7C + add r0, r4, #0 + bl MOD62_0222EC28 + ldr r0, [r4] + ldr r0, [r0, #0x28] + bl FUN_02029FC8 + mov r1, #6 + bl FUN_0202A170 + mov r0, #0xf1 + lsl r0, r0, #2 + ldr r1, [r4, r0] + mov r0, #0xc + mul r0, r1 + add r2, r4, r0 + mov r0, #0x99 + lsl r0, r0, #2 + ldr r0, [r2, r0] + cmp r0, #0xff + beq _022308A8 + ldr r2, [r4] + lsl r0, r0, #2 + add r0, r2, r0 + ldr r5, [r0, #4] + ldr r0, [r2, #0x20] + bl FUN_02029C8C + add r2, r0, #0 + add r0, r5, #0 + mov r1, #0xaa + bl FUN_02067830 +_022308A8: + mov r0, #0xf5 + mov r1, #8 + lsl r0, r0, #2 + str r1, [r4, r0] + b _02230BDA +_022308B2: + add r1, #8 + ldr r1, [r4, r1] + cmp r1, #5 + bhi _0223093C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022308C6: ; jump table + .short _022308D2 - _022308C6 - 2 ; case 0 + .short _02230930 - _022308C6 - 2 ; case 1 + .short _022309B4 - _022308C6 - 2 ; case 2 + .short _022309C6 - _022308C6 - 2 ; case 3 + .short _02230A2E - _022308C6 - 2 ; case 4 + .short _02230A6A - _022308C6 - 2 ; case 5 +_022308D2: + bl MOD62_0222DC00 + cmp r0, #0 + bne _022308E4 + mov r0, #0xf5 + mov r1, #8 + lsl r0, r0, #2 + str r1, [r4, r0] + b _02230BDA +_022308E4: + mov r3, #0 + str r3, [sp] + mov r0, #0xa + str r0, [sp, #4] + add r0, r4, #0 + str r3, [sp, #8] + add r0, #0xe8 + ldr r0, [r0] + ldr r2, _02230B38 ; =0x0000080B + mov r1, #2 + bl FUN_02003210 + mov r3, #0 + str r3, [sp] + mov r0, #0xa + str r0, [sp, #4] + add r0, r4, #0 + str r3, [sp, #8] + add r0, #0xe8 + ldr r0, [r0] + ldr r2, _02230B3C ; =0x0000FFFF + mov r1, #8 + bl FUN_02003210 + add r0, r4, #0 + mov r1, #0 + bl MOD62_022300DC + mov r0, #1 + mov r1, #0 + bl FUN_0201E74C + mov r0, #0xf7 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _02230BDA +_02230930: + add r0, #0xe8 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + beq _0223093E +_0223093C: + b _02230BDA +_0223093E: + add r0, r4, #0 + add r0, #0xe8 + ldr r0, [r0] + mov r1, #0 + bl FUN_020038F0 + mov r0, #1 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r2, #4 + add r0, r4, #0 + str r2, [sp, #8] + mov r1, #0x28 + str r1, [sp, #0xc] + add r0, #0xe4 + add r1, #0xe4 + ldr r0, [r0] + add r1, r4, r1 + mov r3, #2 + bl MOD62_0222EEE0 + add r0, r4, #0 + add r0, #0xe4 + ldr r0, [r0] + mov r1, #0x19 + str r0, [sp, #0x1c] + mov r0, #4 + str r0, [sp, #0x20] + mov r0, #0xd4 + str r0, [sp, #0x24] + mov r0, #5 + str r0, [sp, #0x28] + add r0, sp, #0x10 + strb r1, [r0, #0x1c] + mov r1, #6 + strb r1, [r0, #0x1d] + mov r0, #0x35 + bl FUN_02014590 + mov r1, #0x89 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + add r1, sp, #0x1c + bl FUN_020145C8 + mov r0, #0x43 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0xe + bl MOD62_0222EE78 + mov r0, #0xf7 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _02230BDA +_022309B4: + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E74C + mov r0, #0xf7 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] +_022309C6: + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201466C + cmp r0, #0 + beq _02230A76 + cmp r0, #1 + beq _022309DC + cmp r0, #2 + bne _02230A76 +_022309DC: + mov r1, #0x3e + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r4, #0 + add r0, #0xe8 + ldr r0, [r0] + mov r1, #1 + bl FUN_020038F0 + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_020146C4 + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_020145A8 + mov r0, #0x43 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #1 + bl FUN_0200D0E0 + mov r0, #0x43 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019570 + mov r0, #0x43 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019178 + mov r0, #0xf7 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _02230BDA +_02230A2E: + mov r0, #0xa + str r0, [sp] + mov r3, #0 + str r3, [sp, #4] + add r0, r4, #0 + str r3, [sp, #8] + add r0, #0xe8 + ldr r0, [r0] + ldr r2, _02230B38 ; =0x0000080B + mov r1, #2 + bl FUN_02003210 + mov r0, #0xa + str r0, [sp] + mov r3, #0 + str r3, [sp, #4] + add r0, r4, #0 + str r3, [sp, #8] + add r0, #0xe8 + ldr r0, [r0] + ldr r2, _02230B3C ; =0x0000FFFF + mov r1, #8 + bl FUN_02003210 + mov r0, #0xf7 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _02230BDA +_02230A6A: + add r0, #0xe8 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + beq _02230A78 +_02230A76: + b _02230BDA +_02230A78: + mov r0, #0x3e + lsl r0, r0, #4 + ldr r1, [r4, r0] + cmp r1, #0 + beq _02230AC2 + cmp r1, #1 + beq _02230A8C + cmp r1, #2 + beq _02230ABC + b _02230AC2 +_02230A8C: + add r0, r4, #0 + bl MOD62_0222F790 + add r0, r4, #0 + bl MOD62_0222F7C4 + add r0, r4, #0 + bl MOD62_0222F0D4 + add r0, r4, #0 + bl MOD62_0222DAEC + add r0, r4, #0 + bl MOD62_0222D67C + add r0, r4, #0 + mov r1, #1 + bl MOD62_0222DB10 + mov r0, #0xf5 + mov r1, #6 + lsl r0, r0, #2 + str r1, [r4, r0] + b _02230AC2 +_02230ABC: + mov r1, #4 + sub r0, #0xc + str r1, [r4, r0] +_02230AC2: + add r0, r4, #0 + mov r1, #1 + bl MOD62_022300DC + mov r0, #0xf7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + b _02230BDA +_02230AD4: + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r0, r4, #0 + str r3, [sp, #8] + add r0, #0xe8 + ldr r0, [r0] + mov r1, #1 + mov r2, #2 + bl FUN_02003210 + mov r0, #0xf5 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _02230BDA +_02230B00: + add r0, #0xe8 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + bne _02230BDA + mov r0, #0x10 + str r0, [sp] + mov r3, #0 + str r3, [sp, #4] + add r0, r4, #0 + mov r1, #1 + str r3, [sp, #8] + add r0, #0xe8 + ldr r0, [r0] + add r2, r1, #0 + bl FUN_02003210 + mov r0, #0x10 + str r0, [sp] + mov r3, #0 + str r3, [sp, #4] + add r0, r4, #0 + str r3, [sp, #8] + add r0, #0xe8 + ldr r0, [r0] + ldr r2, _02230B3C ; =0x0000FFFF + b _02230B40 + .align 2, 0 +_02230B38: .word 0x0000080B +_02230B3C: .word 0x0000FFFF +_02230B40: + mov r1, #4 + bl FUN_02003210 + mov r0, #3 + add r1, r0, #0 + bl FUN_020178BC + mov r0, #7 + mov r1, #3 + bl FUN_020178BC + mov r0, #4 + mov r1, #0 + bl FUN_0201E74C + add r0, r4, #0 + mov r1, #0 + bl MOD62_0222F738 + add r0, r4, #0 + mov r1, #0 + bl MOD62_0222E9B4 + add r0, r4, #0 + mov r1, #0 + bl MOD62_0222DDE0 + mov r1, #0 + add r0, r4, #0 + mvn r1, r1 + mov r2, #4 + bl MOD62_0222E180 + add r0, r4, #0 + mov r1, #0 + bl MOD62_022300DC + mov r0, #0xf5 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _02230BDA +_02230B96: + add r0, #0xe8 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + bne _02230BDA + add r0, r4, #0 + bl MOD62_022300D4 + cmp r0, #1 + beq _02230BDA + mov r0, #0xbe + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200C644 + mov r1, #0 + add r0, r4, #0 + mov r2, #0xff + add r3, r1, #0 + bl MOD62_0222F8D4 + add r0, r4, #0 + add r0, #0xec + mov r1, #7 + bl MOD62_0222EE78 + add r0, r4, #0 + bl MOD62_0222F1E8 + add sp, #0xa4 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02230BDA: + add r0, r4, #0 + add r0, #0xd4 + ldr r5, [r0] + cmp r5, #0xff + bne _02230BF0 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02022144 + b _02230C98 +_02230BF0: + add r0, sp, #0x14 + add r1, sp, #0x10 + bl FUN_02020AB0 + cmp r0, #0 + beq _02230C3E + lsl r6, r5, #4 + mov r0, #0xca + add r1, r4, r6 + lsl r0, r0, #2 + ldrb r0, [r1, r0] + bl FUN_02085FD0 + add r1, r0, #0 + add r0, r4, #0 + add r0, #0xec + bl MOD62_0222F208 + mov r0, #0xcb + ldr r2, [sp, #0x10] + add r1, r4, r6 + lsl r0, r0, #2 + ldr r0, [r1, r0] + ldr r1, [sp, #0x14] + lsl r2, r2, #0x10 + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + add r0, r4, #0 + add r1, r5, #0 + bl MOD62_0222DBCC + add r0, r4, #0 + add r1, r5, #0 + bl MOD62_0222DC48 + b _02230C98 +_02230C3E: + add r0, r4, #0 + add r1, r5, #0 + bl MOD62_0222DB38 + lsl r6, r5, #4 + mov r2, #0x33 + add r1, r4, r6 + lsl r2, r2, #4 + add r7, r0, #0 + ldr r0, [r1, r2] + sub r2, r2, #4 + ldr r1, [r1, r2] + mov r2, #0 + bl MOD62_0222D5F8 + cmp r7, #0 + bne _02230C80 + mov r1, #0xca + ldr r0, [r4] + add r2, r4, r6 + lsl r1, r1, #2 + ldrb r1, [r2, r1] + ldr r0, [r0, #0x20] + mov r2, #1 + bl FUN_02029D84 + add r0, r4, #0 + bl MOD62_0222F0D4 + add r0, r4, #0 + add r1, r5, #0 + bl MOD62_0222DB78 +_02230C80: + ldr r0, _02230CB8 ; =0x000005EA + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0xff + add r0, #0xd4 + str r1, [r0] + add r0, r4, #0 + ldr r1, _02230CBC ; =0x0000FFFF + add r0, #0xec + bl MOD62_0222F208 +_02230C98: + add r0, r4, #0 + bl MOD62_0222F758 + add r0, r4, #0 + bl MOD62_0222E990 + add r0, r4, #0 + bl MOD62_0222E754 + add r0, r4, #0 + bl MOD62_0222ECD4 + mov r0, #1 + add sp, #0xa4 + pop {r4, r5, r6, r7, pc} + nop +_02230CB8: .word 0x000005EA +_02230CBC: .word 0x0000FFFF + thumb_func_end MOD62_022303AC + + thumb_func_start MOD62_02230CC0 +MOD62_02230CC0: ; 0x02230CC0 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xf5 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + beq _02230CD8 + cmp r1, #1 + beq _02230CDC + cmp r1, #2 + beq _02230CEC + b _02230D26 +_02230CD8: + add r1, r1, #1 + str r1, [r4, r0] +_02230CDC: + bl MOD62_0222F2A8 + mov r0, #0xf5 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _02230D26 +_02230CEC: + bl FUN_0200E308 + cmp r0, #1 + bne _02230D26 + add r0, r4, #0 + add r0, #0xec + bl FUN_02019178 + add r0, r4, #0 + bl MOD62_0222ED04 + add r0, r4, #0 + bl MOD62_0222E77C + add r0, r4, #0 + bl MOD62_0222F75C + add r0, r4, #0 + bl MOD62_0222E9D4 + add r0, r4, #0 + bl MOD62_0222E0C8 + ldr r0, [r4] + mov r1, #1 + bl FUN_02085D9C + mov r0, #0 + pop {r4, pc} +_02230D26: + add r0, r4, #0 + bl MOD62_0222E754 + add r0, r4, #0 + bl MOD62_0222ECD4 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD62_02230CC0 + + thumb_func_start MOD62_02230D38 +MOD62_02230D38: ; 0x02230D38 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + mov r0, #0 + add r4, r5, #4 + lsl r6, r1, #3 + str r0, [sp] + ldr r0, [r4, r6] + cmp r0, #0xff + beq _02230D5C + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #4] + mov r1, #0xa1 + add r2, sp, #0 + bl FUN_02067830 +_02230D5C: + mov r0, #0xff + str r0, [r4, r6] + add r0, r5, #0 + bl MOD62_0222EC28 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD62_02230D38 + + thumb_func_start MOD62_02230D6C +MOD62_02230D6C: ; 0x02230D6C + push {r4, lr} + mov r2, #0xf5 + add r4, r0, #0 + lsl r2, r2, #2 + ldr r1, [r4, r2] + cmp r1, #0 + beq _02230D84 + cmp r1, #1 + beq _02230DA2 + cmp r1, #2 + beq _02230DB2 + b _02230DC6 +_02230D84: + sub r2, #0x10 + ldr r1, [r4, r2] + bl MOD62_02230D38 + add r0, r4, #0 + add r0, #0xec + mov r1, #9 + bl MOD62_0222EE78 + mov r0, #0xf5 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _02230DC6 +_02230DA2: + ldr r0, _02230DD8 ; =0x021C48B8 + ldr r3, [r0, #0x48] + ldr r0, _02230DDC ; =0x00000CF3 + tst r0, r3 + beq _02230DC6 + add r0, r1, #1 + str r0, [r4, r2] + b _02230DC6 +_02230DB2: + mov r1, #0 + mov r2, #0xff + add r3, r1, #0 + bl MOD62_0222F8D4 + add r0, r4, #0 + add r0, #0xec + mov r1, #7 + bl MOD62_0222EE78 +_02230DC6: + add r0, r4, #0 + bl MOD62_0222E754 + add r0, r4, #0 + bl MOD62_0222ECD4 + mov r0, #1 + pop {r4, pc} + nop +_02230DD8: .word 0x021C48B8 +_02230DDC: .word 0x00000CF3 + thumb_func_end MOD62_02230D6C + + thumb_func_start MOD62_02230DE0 +MOD62_02230DE0: ; 0x02230DE0 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xf5 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #3 + bls _02230DF0 + b _02230F18 +_02230DF0: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02230DFC: ; jump table + .short _02230E04 - _02230DFC - 2 ; case 0 + .short _02230E46 - _02230DFC - 2 ; case 1 + .short _02230ED0 - _02230DFC - 2 ; case 2 + .short _02230EE0 - _02230DFC - 2 ; case 3 +_02230E04: + sub r0, #0xe0 + ldr r0, [r4, r0] + mov r1, #0x19 + bl FUN_0200C6C4 + mov r0, #0xbe + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x14 + bl FUN_0200C6C4 + mov r0, #0xbd + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200C5C0 + add r0, r4, #0 + add r0, #0xec + mov r1, #0xa + bl MOD62_0222EE78 + mov r0, #0xbe + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200C644 + mov r0, #0xf5 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] +_02230E46: + mov r0, #0xf2 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD62_0222F9B4 + cmp r0, #1 + bne _02230E66 + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD62_0222FA40 + ldr r0, _02230F28 ; =0x000005DC + bl FUN_020054C8 + b _02230F18 +_02230E66: + ldr r0, _02230F2C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _02230EA4 + mov r2, #0xf1 + lsl r2, r2, #2 + ldr r1, [r4, r2] + add r2, r2, #4 + ldr r2, [r4, r2] + add r0, r4, #0 + bl MOD62_0222EC54 + mov r1, #1 + add r0, r4, #0 + add r2, r1, #0 + bl MOD62_0222FA40 + add r0, r4, #0 + add r0, #0xec + mov r1, #0xb + bl MOD62_0222EE78 + mov r0, #0xf5 + mov r1, #2 + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r0, _02230F28 ; =0x000005DC + bl FUN_020054C8 + b _02230F18 +_02230EA4: + mov r0, #2 + tst r0, r1 + beq _02230F18 + mov r0, #0xbe + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200C644 + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + bl MOD62_0222FA40 + mov r0, #0xf5 + mov r1, #3 + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r0, _02230F30 ; =0x000005DD + bl FUN_020054C8 + b _02230F18 +_02230ED0: + ldr r1, _02230F2C ; =0x021C48B8 + ldr r2, [r1, #0x48] + ldr r1, _02230F34 ; =0x00000CF3 + tst r1, r2 + beq _02230F18 + mov r1, #3 + str r1, [r4, r0] + b _02230F18 +_02230EE0: + sub r0, #0xe0 + ldr r0, [r4, r0] + mov r1, #0x14 + bl FUN_0200C6C4 + mov r0, #0xbe + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl FUN_0200C6C4 + mov r1, #0 + add r0, r4, #0 + mov r2, #0xff + add r3, r1, #0 + bl MOD62_0222F8D4 + mov r0, #0xbd + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200C5C0 + add r0, r4, #0 + add r0, #0xec + mov r1, #7 + bl MOD62_0222EE78 +_02230F18: + add r0, r4, #0 + bl MOD62_0222E754 + add r0, r4, #0 + bl MOD62_0222ECD4 + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_02230F28: .word 0x000005DC +_02230F2C: .word 0x021C48B8 +_02230F30: .word 0x000005DD +_02230F34: .word 0x00000CF3 + thumb_func_end MOD62_02230DE0 + + thumb_func_start MOD62_02230F38 +MOD62_02230F38: ; 0x02230F38 + mov r0, #0 + bx lr + thumb_func_end MOD62_02230F38 + + thumb_func_start MOD62_02230F3C +MOD62_02230F3C: ; 0x02230F3C + push {r3, lr} + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _02230F68 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _02230F6C ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + pop {r3, pc} + .align 2, 0 +_02230F68: .word 0xFFFFE0FF +_02230F6C: .word 0x04001000 + thumb_func_end MOD62_02230F3C + + thumb_func_start MOD62_02230F70 +MOD62_02230F70: ; 0x02230F70 + push {r3, lr} + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + pop {r3, pc} + thumb_func_end MOD62_02230F70 + + thumb_func_start MOD62_02230F80 +MOD62_02230F80: ; 0x02230F80 + push {r4, r5, lr} + sub sp, #0xfc + add r4, r0, #0 + bl FUN_0201E6D8 + ldr r5, _022310B8 ; =0x02231238 + add r3, sp, #0x10 + mov r2, #5 +_02230F90: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02230F90 + add r0, sp, #0x10 + bl FUN_0201E66C + mov r1, #6 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x18 + lsl r2, r2, #0x12 + bl MIi_CpuClear32 + mov r1, #0x62 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + bl MIi_CpuClear32 + mov r1, #0x19 + mov r2, #1 + mov r0, #0 + lsl r1, r1, #0x16 + lsl r2, r2, #0x12 + bl MIi_CpuClear32 + mov r1, #0x66 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + bl MIi_CpuClear32 + ldr r5, _022310BC ; =0x02231210 + add r3, sp, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _022310C0 ; =0x02231294 + add r3, sp, #0xa8 + mov r2, #0xa +_02230FF0: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02230FF0 + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + add r2, sp, #0xa8 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + add r2, sp, #0xc4 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #3 + add r2, sp, #0xe0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + ldr r1, _022310C4 ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + mov r0, #1 + orr r2, r0 + strh r2, [r1] + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r5, _022310C8 ; =0x022312E8 + add r3, sp, #0x38 + mov r2, #0xe +_02231052: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02231052 + add r0, r4, #0 + mov r1, #4 + add r2, sp, #0x38 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #5 + add r2, sp, #0x54 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #6 + add r2, sp, #0x70 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #7 + add r2, sp, #0x8c + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #4 + bl FUN_02018744 + add r0, r4, #0 + mov r1, #5 + bl FUN_02018744 + add r0, r4, #0 + mov r1, #6 + bl FUN_02018744 + add r0, r4, #0 + mov r1, #7 + bl FUN_02018744 + mov r0, #4 + mov r1, #0 + bl FUN_0201E74C + add sp, #0xfc + pop {r4, r5, pc} + nop +_022310B8: .word 0x02231238 +_022310BC: .word 0x02231210 +_022310C0: .word 0x02231294 +_022310C4: .word 0x04000008 +_022310C8: .word 0x022312E8 + thumb_func_end MOD62_02230F80 + + thumb_func_start MOD62_022310CC +MOD62_022310CC: ; 0x022310CC + push {r4, lr} + add r4, r0, #0 + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_020081C4 + bl FUN_0201C30C + bl FUN_0200BC30 + add r0, r4, #0 + add r0, #0xe8 + ldr r0, [r0] + bl FUN_0200372C + add r4, #0xe4 + ldr r0, [r4] + bl FUN_0201AB60 + ldr r3, _02231104 ; =0x027E0000 + ldr r1, _02231108 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + nop +_02231104: .word 0x027E0000 +_02231108: .word 0x00003FF8 + thumb_func_end MOD62_022310CC + + .section .rodata + ; 0x0223110C + .incbin "baserom.nds", 0x2B274C, 0x274 + + .section .sinit + .word MOD62_0222D5C0 diff --git a/arm9/modules/63/asm/module_63.s b/arm9/modules/63/asm/module_63.s new file mode 100644 index 00000000..beeb3428 --- /dev/null +++ b/arm9/modules/63/asm/module_63.s @@ -0,0 +1,8588 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD63_021D74E0 +MOD63_021D74E0: ; 0x021D74E0 + push {r4, lr} + ldr r1, _021D7584 ; =0x00007FFF + add r4, r0, #0 + mov r0, #0 + bl FUN_0200E3A0 + ldr r1, _021D7584 ; =0x00007FFF + mov r0, #1 + bl FUN_0200E3A0 + ldr r1, _021D7588 ; =0x04001050 + mov r0, #0 + strh r0, [r1] + ldr r1, _021D758C ; =0x04000050 + strh r0, [r1] + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D7590 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D7594 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + mov r2, #1 + mov r0, #3 + mov r1, #0x1e + lsl r2, r2, #0x12 + bl FUN_0201681C + mov r1, #0x79 + add r0, r4, #0 + lsl r1, r1, #2 + mov r2, #0x1e + bl FUN_02006268 + mov r2, #0x79 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x1e + str r0, [r4] + mov r0, #0x1d + mov r1, #0 + lsl r0, r0, #4 + strh r1, [r4, r0] + add r0, #0x10 + str r1, [r4, r0] + bl MOD63_021D7838 + add r0, r4, #0 + bl MOD63_021D7A48 + add r0, r4, #0 + bl MOD63_021D7880 + ldr r0, _021D7598 ; =MOD63_021D782C + add r1, r4, #0 + bl FUN_02015F10 + bl FUN_0201E788 + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_021D7584: .word 0x00007FFF +_021D7588: .word 0x04001050 +_021D758C: .word 0x04000050 +_021D7590: .word 0xFFFFE0FF +_021D7594: .word 0x04001000 +_021D7598: .word MOD63_021D782C + thumb_func_end MOD63_021D74E0 + + thumb_func_start MOD63_021D759C +MOD63_021D759C: ; 0x021D759C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #6 + bhi _021D7614 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D75BA: ; jump table + .short _021D75C8 - _021D75BA - 2 ; case 0 + .short _021D7604 - _021D75BA - 2 ; case 1 + .short _021D7622 - _021D75BA - 2 ; case 2 + .short _021D7638 - _021D75BA - 2 ; case 3 + .short _021D76FA - _021D75BA - 2 ; case 4 + .short _021D773C - _021D75BA - 2 ; case 5 + .short _021D777E - _021D75BA - 2 ; case 6 +_021D75C8: + add r0, r4, #0 + ldr r1, [r4, #4] + ldr r2, [r4] + add r0, #0xb4 + bl MOD63_021D7C18 + cmp r0, #1 + bne _021D7614 + add r0, r4, #0 + ldr r1, _021D77A4 ; =0x021C48B8 + mov r2, #0 + add r0, #0xb4 + str r2, [r0] + ldr r0, [r1, #0x6c] + cmp r0, #0 + bne _021D75F6 + mov r0, #0x75 + mov r1, #0x1e + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #2 + str r0, [r5] + b _021D779C +_021D75F6: + mov r0, #0x75 + lsl r0, r0, #2 + str r2, [r4, r0] + str r2, [r1, #0x6c] + mov r0, #1 + str r0, [r5] + b _021D779C +_021D7604: + add r0, r4, #0 + ldr r1, [r4, #4] + ldr r2, [r4] + add r0, #0xb4 + bl MOD63_021D7D74 + cmp r0, #1 + beq _021D7616 +_021D7614: + b _021D779C +_021D7616: + mov r0, #0 + add r4, #0xb4 + str r0, [r4] + mov r0, #2 + str r0, [r5] + b _021D779C +_021D7622: + mov r0, #0 + bl FUN_0200415C + mov r0, #1 + ldr r1, _021D77A8 ; =0x00000495 + add r2, r0, #0 + bl FUN_0200433C + mov r0, #3 + str r0, [r5] + b _021D779C +_021D7638: + mov r0, #0x75 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + beq _021D765A + sub r1, r1, #1 + str r1, [r4, r0] + mov r1, #0 + sub r0, #0x4c + str r1, [r4, r0] + add r0, r4, #0 + ldr r1, [r4, #4] + ldr r2, [r4] + add r0, #0xb4 + bl MOD63_021D8260 + b _021D779C +_021D765A: + mov r1, #1 + sub r0, #0x4c + str r1, [r4, r0] + add r0, r4, #0 + ldr r1, [r4, #4] + ldr r2, [r4] + add r0, #0xb4 + bl MOD63_021D8260 + mov r1, #0x1e + lsl r1, r1, #4 + ldr r0, [r4, r1] + ldr r2, _021D77A4 ; =0x021C48B8 + add r0, r0, #1 + str r0, [r4, r1] + ldr r3, [r2, #0x48] + mov r0, #1 + add r6, r3, #0 + and r6, r0 + cmp r6, #1 + beq _021D768C + mov r6, #8 + and r3, r6 + cmp r3, #8 + bne _021D76A8 +_021D768C: + mov r0, #0x1d + mov r1, #1 + lsl r0, r0, #4 + strh r1, [r4, r0] + mov r0, #0 + mov r1, #0x3c + bl FUN_020053CC + ldr r0, _021D77AC ; =0x000005F4 + bl FUN_020054C8 + mov r0, #4 + str r0, [r5] + b _021D779C +_021D76A8: + ldr r6, [r2, #0x44] + mov r3, #0x46 + and r3, r6 + cmp r3, #0x46 + bne _021D76D4 + mov r2, #2 + sub r1, #0x10 + strh r2, [r4, r1] + mov r1, #6 + str r1, [sp] + str r0, [sp, #4] + ldr r0, [r4] + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #6 + str r0, [r5] + b _021D779C +_021D76D4: + mov r3, #0xe1 + ldr r6, [r4, r1] + lsl r3, r3, #2 + cmp r6, r3 + ble _021D779C + mov r3, #3 + sub r1, #0x10 + strh r3, [r4, r1] + mov r1, #0 + str r0, [r2, #0x6c] + bl FUN_0201E74C + mov r0, #0 + mov r1, #0x3c + bl FUN_020053CC + mov r0, #5 + str r0, [r5] + b _021D779C +_021D76FA: + mov r0, #0x62 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r4, #0 + ldr r1, [r4, #4] + ldr r2, [r4] + add r0, #0xb4 + bl MOD63_021D8260 + bl FUN_02005404 + cmp r0, #0 + bne _021D779C + ldr r0, _021D77A8 ; =0x00000495 + mov r1, #0 + bl FUN_02005350 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #6 + str r0, [r5] + b _021D779C +_021D773C: + mov r0, #0x62 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r4, #0 + ldr r1, [r4, #4] + ldr r2, [r4] + add r0, #0xb4 + bl MOD63_021D8260 + bl FUN_02005404 + cmp r0, #0 + bne _021D779C + ldr r0, _021D77A8 ; =0x00000495 + mov r1, #0 + bl FUN_02005350 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + ldr r3, _021D77B0 ; =0x00007FFF + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + bl FUN_0200E1D0 + mov r0, #6 + str r0, [r5] + b _021D779C +_021D777E: + bl FUN_0200E308 + cmp r0, #1 + bne _021D779C + add r0, r4, #0 + ldr r1, [r4, #4] + ldr r2, [r4] + add r0, #0xb4 + bl MOD63_021D8360 + cmp r0, #1 + bne _021D779C + add sp, #0xc + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021D779C: + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021D77A4: .word 0x021C48B8 +_021D77A8: .word 0x00000495 +_021D77AC: .word 0x000005F4 +_021D77B0: .word 0x00007FFF + thumb_func_end MOD63_021D759C + + thumb_func_start MOD63_021D77B4 +MOD63_021D77B4: ; 0x021D77B4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + bl FUN_02006278 + add r6, r0, #0 + mov r0, #0x1d + lsl r0, r0, #4 + ldrh r5, [r6, r0] + mov r0, #0 + add r1, r0, #0 + ldr r4, [r6] + bl FUN_02015F10 + add r0, r6, #0 + bl MOD63_021D78B0 + add r0, r6, #0 + bl MOD63_021D7B9C + add r0, r7, #0 + bl FUN_0200627C + add r0, r4, #0 + bl FUN_020168D0 + cmp r5, #1 + beq _021D77F2 + cmp r5, #2 + beq _021D77FE + cmp r5, #3 + beq _021D780A +_021D77F2: + mov r0, #0 + ldr r1, _021D781C ; =0x020FF3D4 + mvn r0, r0 + bl FUN_02000E7C + b _021D7818 +_021D77FE: + mov r0, #0 + ldr r1, _021D7820 ; =0x020FF368 + mvn r0, r0 + bl FUN_02000E7C + b _021D7818 +_021D780A: + mov r0, #0 + bl FUN_0200415C + ldr r0, _021D7824 ; =0x0000003F + ldr r1, _021D7828 ; =0x021DBE18 + bl FUN_02000E7C +_021D7818: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D781C: .word 0x020FF3D4 +_021D7820: .word 0x020FF368 +_021D7824: .word 0x0000003F +_021D7828: .word 0x021DBE18 + thumb_func_end MOD63_021D77B4 + + thumb_func_start MOD63_021D782C +MOD63_021D782C: ; 0x021D782C + ldr r3, _021D7834 ; =0x0201AB61 + ldr r0, [r0, #4] + bx r3 + nop +_021D7834: .word 0x0201AB61 + thumb_func_end MOD63_021D782C + + thumb_func_start MOD63_021D7838 +MOD63_021D7838: ; 0x021D7838 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D7854 ; =0x021DBA90 + add r3, sp, #0 + mov r2, #5 +_021D7842: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7842 + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D7854: .word 0x021DBA90 + thumb_func_end MOD63_021D7838 + + thumb_func_start MOD63_021D7858 +MOD63_021D7858: ; 0x021D7858 + ldr r0, _021D787C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + and r0, r1 + cmp r0, #1 + beq _021D7874 + mov r0, #8 + and r0, r1 + cmp r0, #8 + beq _021D7874 + mov r0, #4 + and r0, r1 + cmp r0, #4 + bne _021D7878 +_021D7874: + mov r0, #1 + bx lr +_021D7878: + mov r0, #0 + bx lr + .align 2, 0 +_021D787C: .word 0x021C48B8 + thumb_func_end MOD63_021D7858 + + thumb_func_start MOD63_021D7880 +MOD63_021D7880: ; 0x021D7880 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #4 + mov r1, #0 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + mov r2, #1 + add r3, r1, #0 + bl FUN_02022318 + str r0, [r4, #8] + ldr r1, _021D78AC ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + mov r0, #1 + orr r0, r2 + strh r0, [r1] + add sp, #8 + pop {r4, pc} + .align 2, 0 +_021D78AC: .word 0x04000008 + thumb_func_end MOD63_021D7880 + + thumb_func_start MOD63_021D78B0 +MOD63_021D78B0: ; 0x021D78B0 + ldr r3, _021D78B8 ; =0x020223BD + ldr r0, [r0, #8] + bx r3 + nop +_021D78B8: .word 0x020223BD + thumb_func_end MOD63_021D78B0 + + thumb_func_start MOD63_021D78BC +MOD63_021D78BC: ; 0x021D78BC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r3, #0 + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + add r0, #0x68 + add r1, r4, #0 + mov r2, #4 + bl FUN_02016B20 + mov r0, #0x30 + add r1, r6, #0 + add r2, r4, #0 + bl LoadFromNarc_2 + str r0, [r5, #0x5c] + mov r0, #0x30 + add r1, r7, #0 + add r2, r4, #0 + bl LoadFromNarc_2 + add r1, r5, #0 + add r2, r5, #0 + str r0, [r5, #0x60] + add r0, r5, #4 + add r1, #0x58 + add r2, #0x5c + bl FUN_0201B234 + ldr r0, [r5, #0x60] + mov r1, #0 + bl FUN_020BC4C8 + add r4, r0, #0 + add r0, r5, #0 + ldr r2, [r5, #0x58] + add r0, #0x68 + add r1, r4, #0 + bl FUN_020BB8D0 + str r0, [r5, #0x64] + ldr r0, [r5, #0x5c] + bl FUN_020BC0FC + add r3, r0, #0 + ldr r0, [r5, #0x64] + ldr r2, [r5, #0x58] + add r1, r4, #0 + bl FUN_020B8110 + ldr r1, [r5, #0x64] + add r0, r5, #4 + bl FUN_020B7EFC + add r4, r5, #0 + add r6, sp, #0xc + mov r3, #0 + str r3, [r6] + add r2, sp, #0 + str r3, [r6, #4] + str r3, [r2] + str r3, [r6, #8] + str r3, [r2, #4] + ldmia r6!, {r0, r1} + str r3, [r2, #8] + add r4, #0x78 + stmia r4!, {r0, r1} + ldr r0, [r6] + ldr r6, _021D796C ; =0x021DB9A8 + str r0, [r4] + add r4, r5, #0 + ldmia r6!, {r0, r1} + add r4, #0x84 + stmia r4!, {r0, r1} + ldr r0, [r6] + str r0, [r4] + add r4, r5, #0 + ldmia r2!, {r0, r1} + add r4, #0x90 + stmia r4!, {r0, r1} + ldr r0, [r2] + add r5, #0xa0 + str r0, [r4] + str r3, [r5] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D796C: .word 0x021DB9A8 + thumb_func_end MOD63_021D78BC + + thumb_func_start MOD63_021D7970 +MOD63_021D7970: ; 0x021D7970 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x64] + add r0, #0x68 + bl thunk_FUN_020ae84c + ldr r0, [r4, #0x60] + bl FUN_02016A18 + ldr r0, [r4, #0x5c] + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD63_021D7970 + + thumb_func_start MOD63_021D798C +MOD63_021D798C: ; 0x021D798C + push {r4, r5, lr} + sub sp, #0x24 + ldr r5, _021D7A44 ; =0x021DBA6C + add r4, r0, #0 + add r3, sp, #0 + mov r2, #4 +_021D7998: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7998 + ldr r0, [r5] + str r0, [r3] + ldr r0, [r4] + cmp r0, #0 + beq _021D7A3E + cmp r0, #1 + beq _021D79B6 + cmp r0, #2 + beq _021D79CA + add sp, #0x24 + pop {r4, r5, pc} +_021D79B6: + bl FUN_020222AC + mov r0, #0 + mov r1, #1 + bl FUN_020222B4 + mov r0, #0 + add sp, #0x24 + str r0, [r4] + pop {r4, r5, pc} +_021D79CA: + bl FUN_020222AC + bl FUN_0201EBA4 + add r1, r4, #0 + add r0, sp, #0 + add r1, #0x90 + bl FUN_0201CAA8 + add r1, r4, #0 + add r3, r4, #0 + add r0, r4, #4 + add r1, #0x78 + add r2, sp, #0 + add r3, #0x84 + bl FUN_0201B26C + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + cmp r0, #0 + beq _021D7A00 + cmp r0, #1 + beq _021D7A08 + cmp r0, #2 + beq _021D7A18 + b _021D7A36 +_021D7A00: + ldr r0, [r4, #0x64] + mov r1, #0 + str r1, [r0] + b _021D7A36 +_021D7A08: + ldr r0, [r4, #0x64] + ldr r0, [r0] + cmp r0, #0 + bne _021D7A18 + mov r0, #0 + add r4, #0xa0 + str r0, [r4] + b _021D7A36 +_021D7A18: + ldr r2, [r4, #0x64] + mov r0, #1 + ldr r1, [r2] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [r2] + ldr r2, [r4, #0x64] + ldr r0, [r2, #8] + ldr r1, [r2] + ldrh r0, [r0, #4] + lsl r0, r0, #0xc + cmp r1, r0 + bne _021D7A36 + mov r0, #0 + str r0, [r2] +_021D7A36: + mov r0, #0 + mov r1, #1 + bl FUN_020222B4 +_021D7A3E: + add sp, #0x24 + pop {r4, r5, pc} + nop +_021D7A44: .word 0x021DBA6C + thumb_func_end MOD63_021D798C + + thumb_func_start MOD63_021D7A48 +MOD63_021D7A48: ; 0x021D7A48 + push {r3, r4, r5, lr} + sub sp, #0xb8 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02016B94 + add r3, sp, #0xa8 + ldr r5, _021D7B80 ; =0x021DB9B4 + str r0, [r4, #4] + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _021D7B84 ; =0x021DB9E0 + add r3, sp, #0x8c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D7B88 ; =0x021DB9C4 + add r3, sp, #0x70 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #5 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D7B8C ; =0x021DBA50 + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #6 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D7B90 ; =0x021DBA34 + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D7B94 ; =0x021DB9FC + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + ldr r0, [r4, #4] + mov r1, #3 + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D7B98 ; =0x021DBA18 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #7 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #1 + mov r1, #0 + bl FUN_0201E74C + mov r0, #2 + mov r1, #0 + bl FUN_0201E74C + mov r0, #4 + mov r1, #0 + bl FUN_0201E74C + mov r0, #8 + mov r1, #0 + bl FUN_0201E74C + mov r0, #0 + add r1, r0, #0 + bl FUN_02017FE4 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + add sp, #0xb8 + pop {r3, r4, r5, pc} + nop +_021D7B80: .word 0x021DB9B4 +_021D7B84: .word 0x021DB9E0 +_021D7B88: .word 0x021DB9C4 +_021D7B8C: .word 0x021DBA50 +_021D7B90: .word 0x021DBA34 +_021D7B94: .word 0x021DB9FC +_021D7B98: .word 0x021DBA18 + thumb_func_end MOD63_021D7A48 + + thumb_func_start MOD63_021D7B9C +MOD63_021D7B9C: ; 0x021D7B9C + push {r4, lr} + add r4, r0, #0 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #1 + mov r1, #0 + bl FUN_0201E74C + mov r0, #2 + mov r1, #0 + bl FUN_0201E74C + mov r0, #4 + mov r1, #0 + bl FUN_0201E74C + mov r0, #8 + mov r1, #0 + bl FUN_0201E74C + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #5 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #7 + bl FUN_020178A0 + ldr r0, [r4, #4] + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD63_021D7B9C + + thumb_func_start MOD63_021D7C18 +MOD63_021D7C18: ; 0x021D7C18 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + bl MOD63_021D86E0 + add r0, r6, #0 + add r1, r4, #0 + add r2, r5, #0 + bl MOD63_021D83A8 + ldr r0, _021D7D5C ; =0x020ECAC0 + ldrb r0, [r0] + cmp r0, #0xa + bne _021D7C46 + add r0, r5, #4 + mov r1, #6 + mov r2, #0x13 + add r3, r4, #0 + bl MOD63_021D78BC + b _021D7C52 +_021D7C46: + add r0, r5, #4 + mov r1, #5 + mov r2, #0x12 + add r3, r4, #0 + bl MOD63_021D78BC +_021D7C52: + ldr r0, _021D7D60 ; =0x04000060 + ldr r2, _021D7D64 ; =0xFFFFCFFF + ldrh r1, [r0] + add r3, r1, #0 + and r3, r2 + mov r1, #0x10 + orr r1, r3 + strh r1, [r0] + ldrh r1, [r0] + and r2, r1 + mov r1, #8 + orr r1, r2 + strh r1, [r0] + add r0, r5, #0 + add r0, #0xf0 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xbc + str r1, [r0] + add r0, r5, #0 + add r0, #0xf4 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xc0 + str r1, [r0] + add r0, r5, #0 + add r0, #0xf8 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xc4 + str r1, [r0] + add r0, r5, #0 + add r0, #0xd8 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xc8 + str r1, [r0] + add r0, r5, #0 + add r0, #0xdc + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xcc + str r1, [r0] + add r0, r5, #0 + add r0, #0xe0 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xd0 + str r1, [r0] + add r0, r4, #0 + bl FUN_0201EB64 + add r1, r5, #0 + add r1, #0xa0 + str r0, [r1] + mov r3, #0 + add r0, r5, #0 + add r1, r5, #0 + mov r2, #0xb6 + str r3, [sp] + add r0, #0xa0 + ldr r0, [r0] + add r1, #0xc8 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xbc + lsl r2, r2, #4 + bl FUN_0201ED5C + add r2, r5, #0 + add r2, #0xa0 + mov r1, #0x19 + ldr r2, [r2] + mov r0, #0 + lsl r1, r1, #0xe + bl FUN_0201EC94 + add r1, r5, #0 + add r1, #0xa0 + ldr r1, [r1] + mov r0, #0 + bl FUN_0201EE2C + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + bl FUN_0201EB8C + mov r3, #0x42 + lsl r3, r3, #2 + add r2, r3, #2 + ldrsh r1, [r5, r3] + add r3, r3, #4 + ldrsh r2, [r5, r2] + ldrsh r3, [r5, r3] + mov r0, #0 + bl FUN_020B8418 + ldr r1, _021D7D68 ; =0x00007FFF + mov r0, #0 + bl FUN_020B8404 + ldr r3, _021D7D6C ; =0x0000010E + mov r0, #1 + add r2, r3, #2 + ldrsh r1, [r5, r3] + add r3, r3, #4 + ldrsh r2, [r5, r2] + ldrsh r3, [r5, r3] + bl FUN_020B8418 + ldr r1, _021D7D68 ; =0x00007FFF + mov r0, #1 + bl FUN_020B8404 + ldr r2, _021D7D60 ; =0x04000060 + ldr r0, _021D7D64 ; =0xFFFFCFFF + ldrh r1, [r2] + and r1, r0 + mov r0, #0x10 + orr r0, r1 + strh r0, [r2] + ldr r0, _021D7D70 ; =0x021C4918 + mov r1, #1 + strb r1, [r0, #5] + bl FUN_0201E7A0 + mov r0, #2 + str r0, [r5, #4] + mov r0, #1 + add sp, #8 + pop {r4, r5, r6, pc} + nop +_021D7D5C: .word 0x020ECAC0 +_021D7D60: .word 0x04000060 +_021D7D64: .word 0xFFFFCFFF +_021D7D68: .word 0x00007FFF +_021D7D6C: .word 0x0000010E +_021D7D70: .word 0x021C4918 + thumb_func_end MOD63_021D7C18 + + thumb_func_start MOD63_021D7D74 +MOD63_021D7D74: ; 0x021D7D74 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + add r7, r1, #0 + add r5, r2, #0 + mov r6, #0 + bl MOD63_021D7858 + cmp r0, #1 + bne _021D7D92 + bl FUN_0200E31C + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021D7D92: + ldr r0, [r4] + cmp r0, #9 + bhi _021D7E38 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7DA4: ; jump table + .short _021D7DB8 - _021D7DA4 - 2 ; case 0 + .short _021D7DF6 - _021D7DA4 - 2 ; case 1 + .short _021D7E24 - _021D7DA4 - 2 ; case 2 + .short _021D7E8C - _021D7DA4 - 2 ; case 3 + .short _021D7ECC - _021D7DA4 - 2 ; case 4 + .short _021D7EF4 - _021D7DA4 - 2 ; case 5 + .short _021D7F44 - _021D7DA4 - 2 ; case 6 + .short _021D7F72 - _021D7DA4 - 2 ; case 7 + .short _021D7FA6 - _021D7DA4 - 2 ; case 8 + .short _021D8232 - _021D7DA4 - 2 ; case 9 +_021D7DB8: + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #1 + bl FUN_0201E74C + ldr r1, _021D80F0 ; =0x00000116 + add r0, r6, #0 + strh r0, [r4, r1] + add r1, r4, #0 + mov r2, #0xf + add r1, #0xa8 + strh r2, [r1] + str r2, [sp] + mov r1, #3 + str r1, [sp, #4] + mov r1, #1 + ldr r3, _021D80F4 ; =0x00007FFF + add r2, r1, #0 + str r5, [sp, #8] + bl FUN_0200E1D0 + mov r0, #1 + str r0, [r4] + b _021D824E +_021D7DF6: + bl FUN_0200E308 + cmp r0, #1 + bne _021D7E38 + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + cmp r0, #0 + beq _021D7E18 + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xa8 + strh r1, [r0] + b _021D824E +_021D7E18: + add r0, r4, #0 + mov r1, #2 + add r0, #0xa8 + strh r1, [r0] + str r1, [r4] + b _021D824E +_021D7E24: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _021D7E38 + mov r0, #2 + bl FUN_0200A344 + cmp r0, #1 + beq _021D7E3A +_021D7E38: + b _021D824E +_021D7E3A: + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + cmp r0, #0 + beq _021D7E7E + mov r0, #1 + str r0, [sp] + mov r0, #0xa + mov r1, #0x10 + add r2, r6, #0 + mov r3, #6 + bl FUN_0200A208 + mov r0, #2 + str r0, [sp] + mov r0, #0xa + mov r1, #0x10 + add r2, r6, #0 + mov r3, #7 + bl FUN_0200A208 + ldr r0, _021D80F0 ; =0x00000116 + mov r1, #2 + strh r1, [r4, r0] + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xa8 + strh r1, [r0] + mov r0, #3 + str r0, [r4] + b _021D824E +_021D7E7E: + add r0, r4, #0 + add r1, r6, #0 + add r0, #0xa8 + strh r1, [r0] + mov r0, #4 + str r0, [r4] + b _021D824E +_021D7E8C: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _021D7F94 + mov r0, #2 + bl FUN_0200A344 + cmp r0, #1 + bne _021D7F94 + mov r0, #1 + str r0, [sp] + mov r0, #0xa + add r1, r6, #0 + mov r2, #0x10 + mov r3, #6 + bl FUN_0200A208 + mov r0, #2 + str r0, [sp] + mov r0, #0xa + add r1, r6, #0 + mov r2, #0x10 + mov r3, #7 + bl FUN_0200A208 + ldr r0, _021D80F0 ; =0x00000116 + mov r1, #3 + strh r1, [r4, r0] + mov r0, #2 + str r0, [r4] + b _021D824E +_021D7ECC: + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + cmp r0, #0 + beq _021D7EE6 + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xa8 + strh r1, [r0] + b _021D824E +_021D7EE6: + add r0, r4, #0 + mov r1, #1 + add r0, #0xa8 + strh r1, [r0] + mov r0, #5 + str r0, [r4] + b _021D824E +_021D7EF4: + bl FUN_0200E308 + cmp r0, #1 + bne _021D7F94 + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + cmp r0, #0 + beq _021D7F36 + mov r0, #5 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + add r0, r6, #0 + ldr r3, _021D80F4 ; =0x00007FFF + add r1, r0, #0 + add r2, r0, #0 + str r5, [sp, #8] + bl FUN_0200E1D0 + ldr r0, _021D80F0 ; =0x00000116 + mov r1, #2 + strh r1, [r4, r0] + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xa8 + strh r1, [r0] + mov r0, #6 + str r0, [r4] + b _021D824E +_021D7F36: + add r0, r4, #0 + mov r1, #0x28 + add r0, #0xa8 + strh r1, [r0] + mov r0, #7 + str r0, [r4] + b _021D824E +_021D7F44: + bl FUN_0200E308 + cmp r0, #1 + bne _021D7F94 + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD63_021D85D8 + mov r0, #0x10 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r1, #1 + ldr r3, _021D80F4 ; =0x00007FFF + add r0, r6, #0 + add r2, r1, #0 + str r5, [sp, #8] + bl FUN_0200E1D0 + mov r0, #5 + str r0, [r4] + b _021D824E +_021D7F72: + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + cmp r0, #0 + beq _021D7FA0 + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xa8 + strh r1, [r0] + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + cmp r0, #0xf + beq _021D7F96 +_021D7F94: + b _021D824E +_021D7F96: + add r0, r4, #0 + mov r1, #2 + add r0, #0xa4 + str r1, [r0] + b _021D824E +_021D7FA0: + mov r0, #8 + str r0, [r4] + b _021D824E +_021D7FA6: + add r0, r4, #0 + add r0, #0xfc + ldr r2, [r0] + add r0, r4, #0 + add r0, #0xbc + ldr r1, [r0] + mov r5, #1 + cmp r1, r2 + ble _021D7FDE + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + sub r1, r1, r2 + cmp r1, r0 + ble _021D7FD4 + add r1, r4, #0 + add r1, #0xbc + ldr r1, [r1] + sub r1, r1, r0 + add r0, r4, #0 + add r0, #0xbc + str r1, [r0] + b _021D7FDA +_021D7FD4: + add r0, r4, #0 + add r0, #0xbc + str r2, [r0] +_021D7FDA: + mov r5, #0 + b _021D8006 +_021D7FDE: + cmp r1, r2 + bge _021D8006 + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + sub r1, r2, r1 + cmp r1, r0 + ble _021D7FFE + add r1, r4, #0 + add r1, #0xbc + ldr r1, [r1] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0xbc + str r1, [r0] + b _021D8004 +_021D7FFE: + add r0, r4, #0 + add r0, #0xbc + str r2, [r0] +_021D8004: + mov r5, #0 +_021D8006: + mov r0, #1 + add r1, r4, #0 + lsl r0, r0, #8 + add r1, #0xc0 + ldr r2, [r4, r0] + ldr r1, [r1] + cmp r1, r2 + ble _021D803A + add r0, #0x18 + ldr r0, [r4, r0] + sub r1, r1, r2 + cmp r1, r0 + ble _021D8030 + add r1, r4, #0 + add r1, #0xc0 + ldr r1, [r1] + sub r1, r1, r0 + add r0, r4, #0 + add r0, #0xc0 + str r1, [r0] + b _021D8036 +_021D8030: + add r0, r4, #0 + add r0, #0xc0 + str r2, [r0] +_021D8036: + mov r5, #0 + b _021D8060 +_021D803A: + cmp r1, r2 + bge _021D8060 + add r0, #0x18 + ldr r0, [r4, r0] + sub r1, r2, r1 + cmp r1, r0 + ble _021D8058 + add r1, r4, #0 + add r1, #0xc0 + ldr r1, [r1] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0xc0 + str r1, [r0] + b _021D805E +_021D8058: + add r0, r4, #0 + add r0, #0xc0 + str r2, [r0] +_021D805E: + mov r5, #0 +_021D8060: + mov r0, #0x41 + add r1, r4, #0 + lsl r0, r0, #2 + add r1, #0xc4 + ldr r2, [r4, r0] + ldr r1, [r1] + cmp r1, r2 + ble _021D8094 + add r0, #0x14 + ldr r0, [r4, r0] + sub r1, r1, r2 + cmp r1, r0 + ble _021D808A + add r1, r4, #0 + add r1, #0xc4 + ldr r1, [r1] + sub r1, r1, r0 + add r0, r4, #0 + add r0, #0xc4 + str r1, [r0] + b _021D8090 +_021D808A: + add r0, r4, #0 + add r0, #0xc4 + str r2, [r0] +_021D8090: + mov r5, #0 + b _021D80BA +_021D8094: + cmp r1, r2 + bge _021D80BA + add r0, #0x14 + ldr r0, [r4, r0] + sub r1, r2, r1 + cmp r1, r0 + ble _021D80B2 + add r1, r4, #0 + add r1, #0xc4 + ldr r1, [r1] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0xc4 + str r1, [r0] + b _021D80B8 +_021D80B2: + add r0, r4, #0 + add r0, #0xc4 + str r2, [r0] +_021D80B8: + mov r5, #0 +_021D80BA: + add r0, r4, #0 + add r0, #0xe4 + ldr r2, [r0] + add r0, r4, #0 + add r0, #0xc8 + ldr r1, [r0] + cmp r1, r2 + ble _021D80F8 + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + sub r1, r1, r2 + cmp r1, r0 + ble _021D80E6 + add r1, r4, #0 + add r1, #0xc8 + ldr r1, [r1] + sub r1, r1, r0 + add r0, r4, #0 + add r0, #0xc8 + str r1, [r0] + b _021D80EC +_021D80E6: + add r0, r4, #0 + add r0, #0xc8 + str r2, [r0] +_021D80EC: + mov r5, #0 + b _021D8120 + .align 2, 0 +_021D80F0: .word 0x00000116 +_021D80F4: .word 0x00007FFF +_021D80F8: + cmp r1, r2 + bge _021D8120 + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + sub r1, r2, r1 + cmp r1, r0 + ble _021D8118 + add r1, r4, #0 + add r1, #0xc8 + ldr r1, [r1] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0xc8 + str r1, [r0] + b _021D811E +_021D8118: + add r0, r4, #0 + add r0, #0xc8 + str r2, [r0] +_021D811E: + mov r5, #0 +_021D8120: + add r0, r4, #0 + add r0, #0xe8 + ldr r2, [r0] + add r0, r4, #0 + add r0, #0xcc + ldr r1, [r0] + cmp r1, r2 + ble _021D8156 + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + sub r1, r1, r2 + cmp r1, r0 + ble _021D814C + add r1, r4, #0 + add r1, #0xcc + ldr r1, [r1] + sub r1, r1, r0 + add r0, r4, #0 + add r0, #0xcc + str r1, [r0] + b _021D8152 +_021D814C: + add r0, r4, #0 + add r0, #0xcc + str r2, [r0] +_021D8152: + mov r5, #0 + b _021D817E +_021D8156: + cmp r1, r2 + bge _021D817E + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + sub r1, r2, r1 + cmp r1, r0 + ble _021D8176 + add r1, r4, #0 + add r1, #0xcc + ldr r1, [r1] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0xcc + str r1, [r0] + b _021D817C +_021D8176: + add r0, r4, #0 + add r0, #0xcc + str r2, [r0] +_021D817C: + mov r5, #0 +_021D817E: + add r0, r4, #0 + add r0, #0xec + ldr r2, [r0] + add r0, r4, #0 + add r0, #0xd0 + ldr r1, [r0] + cmp r1, r2 + ble _021D81B4 + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + sub r1, r1, r2 + cmp r1, r0 + ble _021D81AA + add r1, r4, #0 + add r1, #0xd0 + ldr r1, [r1] + sub r1, r1, r0 + add r0, r4, #0 + add r0, #0xd0 + str r1, [r0] + b _021D81B0 +_021D81AA: + add r0, r4, #0 + add r0, #0xd0 + str r2, [r0] +_021D81B0: + mov r5, #0 + b _021D81DC +_021D81B4: + cmp r1, r2 + bge _021D81DC + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + sub r1, r2, r1 + cmp r1, r0 + ble _021D81D4 + add r1, r4, #0 + add r1, #0xd0 + ldr r1, [r1] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0xd0 + str r1, [r0] + b _021D81DA +_021D81D4: + add r0, r4, #0 + add r0, #0xd0 + str r2, [r0] +_021D81DA: + mov r5, #0 +_021D81DC: + add r1, r4, #0 + add r1, #0xa0 + add r0, r4, #0 + ldr r1, [r1] + add r0, #0xbc + bl FUN_0201F04C + add r1, r4, #0 + add r1, #0xa0 + add r0, r4, #0 + ldr r1, [r1] + add r0, #0xc8 + bl FUN_0201F05C + cmp r5, #1 + bne _021D824E + mov r0, #4 + mov r1, #1 + bl FUN_0201E74C + mov r0, #2 + mov r1, #0 + bl FUN_0201E74C + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #1 + bl FUN_0201E74C + add r0, r4, #0 + mov r1, #0x5a + add r0, #0xa8 + strh r1, [r0] + add r0, r4, #0 + mov r1, #1 + add r0, #0xa4 + str r1, [r0] + mov r0, #9 + str r0, [r4] + b _021D824E +_021D8232: + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + cmp r0, #0 + beq _021D824C + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xa8 + strh r1, [r0] + b _021D824E +_021D824C: + mov r6, #1 +_021D824E: + add r0, r4, #0 + bl MOD63_021D8650 + add r0, r4, #4 + bl MOD63_021D798C + add r0, r6, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD63_021D7D74 + + thumb_func_start MOD63_021D8260 +MOD63_021D8260: ; 0x021D8260 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + mov r4, #0 + cmp r0, #0 + beq _021D8272 + cmp r0, #1 + beq _021D82FC + b _021D8350 +_021D8272: + add r1, r5, #0 + add r1, #0xa0 + add r0, r5, #0 + ldr r1, [r1] + add r0, #0xfc + bl FUN_0201F04C + add r1, r5, #0 + add r1, #0xa0 + add r0, r5, #0 + ldr r1, [r1] + add r0, #0xe4 + bl FUN_0201F05C + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #1 + bl FUN_0201E74C + mov r0, #4 + mov r1, #1 + bl FUN_0201E74C + mov r0, #2 + add r1, r4, #0 + bl FUN_0201E74C + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + add r0, r4, #0 + bl FUN_0200E394 + mov r0, #1 + bl FUN_0200E394 + add r0, r4, #0 + mov r1, #6 + mov r2, #1 + bl FUN_0200A274 + add r0, r4, #0 + mov r1, #7 + mov r2, #2 + bl FUN_0200A274 + add r0, r5, #0 + mov r1, #2 + add r0, #0xa4 + str r1, [r0] + ldr r1, _021D835C ; =0x00007FFF + mov r0, #1 + bl FUN_020B8404 + add r0, r5, #0 + add r1, r4, #0 + add r0, #0xa8 + strh r1, [r0] + mov r0, #1 + str r0, [r5] + b _021D8350 +_021D82FC: + add r0, r5, #0 + add r0, #0xd4 + ldr r0, [r0] + cmp r0, #1 + bne _021D8328 + add r0, r5, #0 + add r0, #0xa8 + ldrh r0, [r0] + cmp r0, #0 + bne _021D831A + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E74C + b _021D8330 +_021D831A: + cmp r0, #0x10 + bne _021D8330 + mov r0, #1 + add r1, r4, #0 + bl FUN_0201E74C + b _021D8330 +_021D8328: + mov r0, #1 + add r1, r4, #0 + bl FUN_0201E74C +_021D8330: + add r0, r5, #0 + add r0, #0xa8 + ldrh r0, [r0] + mov r4, #1 + add r1, r0, #1 + add r0, r5, #0 + add r0, #0xa8 + strh r1, [r0] + add r0, r5, #0 + add r0, #0xa8 + ldrh r1, [r0] + mov r0, #0x1f + and r1, r0 + add r0, r5, #0 + add r0, #0xa8 + strh r1, [r0] +_021D8350: + add r0, r5, #4 + bl MOD63_021D798C + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_021D835C: .word 0x00007FFF + thumb_func_end MOD63_021D8260 + + thumb_func_start MOD63_021D8360 +MOD63_021D8360: ; 0x021D8360 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0xa0 + ldr r0, [r0] + add r4, r1, #0 + add r6, r2, #0 + bl FUN_0201EB70 + add r0, r5, #4 + bl MOD63_021D7970 + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + bl MOD63_021D8644 + ldr r2, _021D839C ; =0x04000050 + mov r3, #0 + strh r3, [r2] + add r2, #0x10 + ldrh r1, [r2] + ldr r0, _021D83A0 ; =0x0000CFDF + and r0, r1 + strh r0, [r2] + ldr r0, _021D83A4 ; =0x021C4918 + strb r3, [r0, #5] + bl FUN_0201E7A0 + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D839C: .word 0x04000050 +_021D83A0: .word 0x0000CFDF +_021D83A4: .word 0x021C4918 + thumb_func_end MOD63_021D8360 + + thumb_func_start MOD63_021D83A8 +MOD63_021D83A8: ; 0x021D83A8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + add r4, r1, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #7 + add r6, r2, #0 + mov r0, #0x30 + add r2, r5, #0 + add r3, r1, #0 + str r4, [sp, #0xc] + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x30 + mov r1, #0xb + add r2, r5, #0 + mov r3, #3 + str r4, [sp, #0xc] + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x30 + mov r1, #8 + add r2, r5, #0 + mov r3, #7 + str r4, [sp, #0xc] + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x30 + mov r1, #0xc + add r2, r5, #0 + mov r3, #3 + str r4, [sp, #0xc] + bl FUN_020068C8 + ldr r0, _021D85C8 ; =0x020ECAC0 + ldrb r7, [r0] + cmp r7, #0xa + bne _021D841A + mov r0, #0xd + mov r1, #9 + str r0, [sp, #0x18] + b _021D8420 +_021D841A: + mov r0, #0xe + mov r1, #0xa + str r0, [sp, #0x18] +_021D8420: + mov r3, #0 + str r3, [sp] + mov r0, #0x30 + mov r2, #4 + str r4, [sp, #4] + bl FUN_02006930 + mov r2, #0 + str r2, [sp] + ldr r1, [sp, #0x18] + mov r0, #0x30 + add r3, r2, #0 + str r4, [sp, #4] + bl FUN_02006930 + cmp r7, #0xa + bne _021D8448 + mov r1, #1 + mov r7, #2 + b _021D844C +_021D8448: + mov r1, #3 + mov r7, #4 +_021D844C: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x30 + add r2, r5, #0 + mov r3, #6 + str r4, [sp, #0xc] + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r3, #1 + mov r0, #0x30 + add r1, r7, #0 + mov r2, #6 + lsl r3, r3, #0xe + str r4, [sp, #4] + bl FUN_02006930 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r0, #0x30 + add r2, r5, #0 + mov r3, #6 + str r4, [sp, #0xc] + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + mov r1, #0x11 + add r2, r5, #0 + mov r3, #5 + str r4, [sp, #0xc] + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r1, #0x10 + mov r0, #0x80 + mov r2, #6 + lsl r3, r1, #9 + str r4, [sp, #4] + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + mov r1, #0xf + add r2, r5, #0 + mov r3, #5 + str r4, [sp, #0xc] + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x30 + mov r1, #0xf + add r2, r5, #0 + mov r3, #1 + str r4, [sp, #0xc] + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x30 + mov r1, #0x11 + add r2, r5, #0 + mov r3, #1 + str r4, [sp, #0xc] + bl FUN_020068C8 + mov r0, #0x60 + str r0, [sp] + mov r0, #0x30 + mov r1, #0x10 + mov r2, #0 + mov r3, #0x20 + str r4, [sp, #4] + bl FUN_02006930 + mov r0, #0 + add r1, r0, #0 + bl FUN_02017FE4 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + ldr r2, _021D85CC ; =0x00000227 + mov r0, #1 + mov r1, #0x1a + add r3, r4, #0 + bl FUN_0200A86C + add r7, r0, #0 + mov r0, #0x40 + add r1, r4, #0 + bl FUN_020219F4 + add r1, r6, #0 + add r4, r0, #0 + ldr r2, _021D85D0 ; =0x021DB9A0 + add r0, r5, #0 + add r1, #0xac + bl FUN_02019150 + mov r1, #0 + mov r0, #0xe0 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r0, r6, #0 + add r0, #0xac + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + add r0, r7, #0 + mov r1, #0 + add r2, r4, #0 + bl FUN_0200A8E0 + add r3, r6, #0 + add r3, #0xb3 + ldrb r3, [r3] + mov r0, #0 + add r1, r4, #0 + mov r2, #1 + lsl r3, r3, #3 + bl FUN_02002F40 + mov r1, #0 + add r3, r0, #0 + str r1, [sp] + ldr r0, _021D85D4 ; =0x00010100 + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + add r6, #0xac + str r1, [sp, #0x10] + add r0, r6, #0 + add r2, r4, #0 + str r1, [sp, #0x14] + bl FUN_0201BE3C + add r0, r4, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_0200A8B8 + mov r1, #0x15 + add r0, sp, #0x1c + strh r1, [r0, #2] + strh r1, [r0] + add r1, sp, #0x1c + mov r0, #4 + add r1, #2 + mov r2, #2 + mov r3, #0x42 + bl FUN_02017FB4 + mov r0, #4 + add r1, sp, #0x1c + mov r2, #2 + mov r3, #0x44 + bl FUN_02017FB4 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D85C8: .word 0x020ECAC0 +_021D85CC: .word 0x00000227 +_021D85D0: .word 0x021DB9A0 +_021D85D4: .word 0x00010100 + thumb_func_end MOD63_021D83A8 + + thumb_func_start MOD63_021D85D8 +MOD63_021D85D8: ; 0x021D85D8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r2, #0xa8 + add r7, r0, #0 + ldrh r0, [r2] + add r5, r1, #0 + cmp r0, #0 + bne _021D863A + ldr r0, _021D8640 ; =0x020ECAC0 + ldrb r0, [r0] + cmp r0, #0xa + bne _021D85F8 + mov r1, #0xb + mov r6, #0xa + mov r4, #0xc + b _021D85FE +_021D85F8: + mov r1, #8 + mov r6, #7 + mov r4, #9 +_021D85FE: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + add r2, r7, #0 + mov r3, #5 + str r5, [sp, #0xc] + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #0x80 + add r1, r6, #0 + mov r2, #6 + lsl r3, r0, #6 + str r5, [sp, #4] + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + add r1, r4, #0 + add r2, r7, #0 + mov r3, #5 + str r5, [sp, #0xc] + bl FUN_020068C8 +_021D863A: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8640: .word 0x020ECAC0 + thumb_func_end MOD63_021D85D8 + + thumb_func_start MOD63_021D8644 +MOD63_021D8644: ; 0x021D8644 + ldr r3, _021D864C ; =0x02019179 + add r2, #0xac + add r0, r2, #0 + bx r3 + .align 2, 0 +_021D864C: .word 0x02019179 + thumb_func_end MOD63_021D8644 + + thumb_func_start MOD63_021D8650 +MOD63_021D8650: ; 0x021D8650 + push {r4, lr} + ldr r1, _021D86DC ; =0x00000116 + ldrh r2, [r0, r1] + cmp r2, #3 + bhi _021D86B2 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021D8666: ; jump table + .short _021D866E - _021D8666 - 2 ; case 0 + .short _021D86B2 - _021D8666 - 2 ; case 1 + .short _021D867A - _021D8666 - 2 ; case 2 + .short _021D8698 - _021D8666 - 2 ; case 3 +_021D866E: + mov r3, #5 + sub r2, r1, #2 + strh r3, [r0, r2] + mov r2, #1 + strh r2, [r0, r1] + b _021D86B2 +_021D867A: + sub r2, r1, #2 + ldrh r2, [r0, r2] + add r3, r2, #2 + sub r2, r1, #2 + strh r3, [r0, r2] + ldrh r2, [r0, r2] + cmp r2, #0x1f + blo _021D86B2 + mov r3, #0x1f + add r2, r3, #0 + add r2, #0xf5 + strh r3, [r0, r2] + mov r2, #1 + strh r2, [r0, r1] + b _021D86B2 +_021D8698: + sub r2, r1, #2 + ldrh r2, [r0, r2] + sub r3, r2, #2 + sub r2, r1, #2 + strh r3, [r0, r2] + ldrh r2, [r0, r2] + cmp r2, #5 + bhi _021D86B2 + mov r3, #5 + sub r2, r1, #2 + strh r3, [r0, r2] + mov r2, #1 + strh r2, [r0, r1] +_021D86B2: + mov r1, #0x45 + lsl r1, r1, #2 + ldrh r3, [r0, r1] + mov r1, #0x1f + lsl r1, r1, #0xa + lsl r2, r3, #0xa + and r1, r2 + add r4, r3, #0 + mov r2, #0x1f + and r4, r2 + lsl r3, r3, #5 + lsl r2, r2, #5 + and r2, r3 + orr r2, r4 + orr r1, r2 + lsl r1, r1, #0x10 + mov r0, #1 + lsr r1, r1, #0x10 + bl FUN_020B8404 + pop {r4, pc} + .align 2, 0 +_021D86DC: .word 0x00000116 + thumb_func_end MOD63_021D8650 + + thumb_func_start MOD63_021D86E0 +MOD63_021D86E0: ; 0x021D86E0 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r4, r0, #0 + ldr r0, _021D8858 ; =0x020ECAC0 + ldrb r0, [r0] + cmp r0, #0xa + bne _021D8788 + add r0, r4, #0 + mov r2, #0 + add r0, #0xd8 + str r2, [r0] + mov r1, #0x41 + add r0, r4, #0 + mov r3, #0x12 + lsl r1, r1, #0xc + add r0, #0xdc + str r1, [r0] + add r0, r4, #0 + mov r5, #0xf6 + lsl r3, r3, #0xe + add r0, #0xe0 + str r3, [r0] + mov r3, #0xc3 + add r0, r4, #0 + lsl r3, r3, #0xc + add r0, #0xe4 + str r3, [r0] + mov r0, #2 + add r3, r4, #0 + lsl r0, r0, #0x10 + add r3, #0xe8 + str r0, [r3] + add r3, r4, #0 + lsl r5, r5, #0xc + add r3, #0xec + str r5, [r3] + add r3, r4, #0 + add r3, #0xf0 + str r2, [r3] + mov r5, #0x5a + add r3, r4, #0 + lsl r5, r5, #0xc + add r3, #0xf4 + str r5, [r3] + add r3, r4, #0 + add r3, #0xf8 + str r2, [r3] + add r2, r4, #0 + ldr r3, _021D885C ; =0xFFFFE000 + add r2, #0xfc + str r3, [r2] + mov r2, #0x1f + lsl r2, r2, #0xe + lsr r0, r0, #9 + str r2, [r4, r0] + lsr r0, r1, #0xa + ldr r2, _021D8860 ; =0xFFFDA000 + ldr r1, _021D8864 ; =0xFFFFF6E3 + str r2, [r4, r0] + mov r0, #0x42 + lsl r0, r0, #2 + ldr r3, _021D8868 ; =0x00000A2B + strh r1, [r4, r0] + add r2, r0, #2 + strh r3, [r4, r2] + add r3, r1, #0 + add r3, #0xc6 + add r2, r0, #4 + strh r3, [r4, r2] + add r1, #0x42 + add r2, r0, #6 + strh r1, [r4, r2] + add r1, r0, #0 + ldr r2, _021D886C ; =0x000007A1 + add r1, #8 + strh r2, [r4, r1] + add r1, r0, #0 + ldr r2, _021D8870 ; =0xFFFFF513 + add r1, #0xa + strh r2, [r4, r1] + mov r1, #3 + lsl r1, r1, #0xc + add r0, #0x10 + b _021D8828 +_021D8788: + add r0, r4, #0 + ldr r1, _021D8874 ; =0xFFFBF000 + add r0, #0xd8 + str r1, [r0] + mov r1, #0x29 + add r0, r4, #0 + lsl r1, r1, #0xc + add r0, #0xdc + str r1, [r0] + mov r1, #0x13 + add r0, r4, #0 + lsl r1, r1, #0xc + add r0, #0xe0 + str r1, [r0] + add r0, r4, #0 + ldr r1, _021D8878 ; =0xFFF6C000 + add r0, #0xe4 + str r1, [r0] + mov r1, #0x3a + add r0, r4, #0 + mov r2, #2 + lsl r1, r1, #0xc + add r0, #0xe8 + str r1, [r0] + mov r1, #0xbe + add r0, r4, #0 + lsl r1, r1, #0xc + add r0, #0xec + str r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0xf0 + str r1, [r0] + mov r1, #0xb + add r0, r4, #0 + lsl r1, r1, #0xc + add r0, #0xf4 + str r1, [r0] + mov r1, #0x12 + add r0, r4, #0 + lsl r1, r1, #0xc + add r0, #0xf8 + str r1, [r0] + add r0, r4, #0 + lsl r2, r2, #0xe + add r0, #0xfc + str r2, [r0] + ldr r1, _021D887C ; =0xFFFFB000 + lsr r0, r2, #7 + str r1, [r4, r0] + mov r0, #0x41 + lsr r1, r2, #3 + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r2, _021D8880 ; =0x00000653 + add r1, r0, #4 + strh r2, [r4, r1] + ldr r2, _021D8884 ; =0xFFFFF71C + add r1, r0, #6 + strh r2, [r4, r1] + add r1, r0, #0 + sub r2, #0x14 + add r1, #8 + strh r2, [r4, r1] + add r1, r0, #0 + ldr r2, _021D8888 ; =0x0000091B + add r1, #0xa + strh r2, [r4, r1] + add r1, r0, #0 + ldr r2, _021D888C ; =0xFFFFFB61 + add r1, #0xc + strh r2, [r4, r1] + add r1, r0, #0 + mov r2, #0xc5 + lsl r2, r2, #4 + add r1, #0xe + strh r2, [r4, r1] + mov r1, #3 + lsl r1, r1, #0xc + add r0, #0x14 +_021D8828: + str r1, [r4, r0] + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xfc + add r1, #0xe4 + add r2, sp, #0xc + bl VEC_Subtract + add r0, sp, #0xc + add r1, sp, #0 + bl VEC_Normalize + mov r0, #0x42 + ldr r1, [sp] + lsl r0, r0, #2 + strh r1, [r4, r0] + add r1, r0, #2 + ldr r2, [sp, #4] + add r0, r0, #4 + strh r2, [r4, r1] + ldr r1, [sp, #8] + strh r1, [r4, r0] + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8858: .word 0x020ECAC0 +_021D885C: .word 0xFFFFE000 +_021D8860: .word 0xFFFDA000 +_021D8864: .word 0xFFFFF6E3 +_021D8868: .word 0x00000A2B +_021D886C: .word 0x000007A1 +_021D8870: .word 0xFFFFF513 +_021D8874: .word 0xFFFBF000 +_021D8878: .word 0xFFF6C000 +_021D887C: .word 0xFFFFB000 +_021D8880: .word 0x00000653 +_021D8884: .word 0xFFFFF71C +_021D8888: .word 0x0000091B +_021D888C: .word 0xFFFFFB61 + thumb_func_end MOD63_021D86E0 + + thumb_func_start MOD63_021D8890 +MOD63_021D8890: ; 0x021D8890 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D88AC ; =0x021DBD70 + add r3, sp, #0 + mov r2, #5 +_021D889A: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D889A + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D88AC: .word 0x021DBD70 + thumb_func_end MOD63_021D8890 + + thumb_func_start MOD63_021D88B0 +MOD63_021D88B0: ; 0x021D88B0 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D88CC ; =0x021DBD98 + add r3, sp, #0 + mov r2, #5 +_021D88BA: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D88BA + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D88CC: .word 0x021DBD98 + thumb_func_end MOD63_021D88B0 + + thumb_func_start MOD63_021D88D0 +MOD63_021D88D0: ; 0x021D88D0 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D88EC ; =0x021DBDC0 + add r3, sp, #0 + mov r2, #5 +_021D88DA: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D88DA + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D88EC: .word 0x021DBDC0 + thumb_func_end MOD63_021D88D0 + + thumb_func_start MOD63_021D88F0 +MOD63_021D88F0: ; 0x021D88F0 + push {r3, r4, r5, lr} + sub sp, #0xb8 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02016B94 + add r3, sp, #0xa8 + ldr r5, _021D89E8 ; =0x021DBB4C + str r0, [r4, #0xc] + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _021D89EC ; =0x021DBC88 + add r3, sp, #0x8c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D89F0 ; =0x021DBC6C + add r3, sp, #0x70 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D89F4 ; =0x021DBBC4 + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #3 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D89F8 ; =0x021DBBFC + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #5 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D89FC ; =0x021DBC18 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + ldr r0, [r4, #0xc] + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D8A00 ; =0x021DBC34 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #7 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + add r1, r0, #0 + bl FUN_02017FE4 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + add sp, #0xb8 + pop {r3, r4, r5, pc} + nop +_021D89E8: .word 0x021DBB4C +_021D89EC: .word 0x021DBC88 +_021D89F0: .word 0x021DBC6C +_021D89F4: .word 0x021DBBC4 +_021D89F8: .word 0x021DBBFC +_021D89FC: .word 0x021DBC18 +_021D8A00: .word 0x021DBC34 + thumb_func_end MOD63_021D88F0 + + thumb_func_start MOD63_021D8A04 +MOD63_021D8A04: ; 0x021D8A04 + push {r3, r4, r5, lr} + sub sp, #0x80 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02016B94 + add r3, sp, #0x70 + ldr r5, _021D8AC4 ; =0x021DBB3C + str r0, [r4, #0xc] + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D8AC8 ; =0xC7FFFFFF + ldr r5, _021D8ACC ; =0x021DBC50 + and r1, r0 + lsl r0, r2, #1 + orr r0, r1 + str r0, [r2] + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #3 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D8AD0 ; =0x021DBCA4 + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D8AD4 ; =0x021DBCC0 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D8AD8 ; =0x021DBCDC + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + add sp, #0x80 + pop {r3, r4, r5, pc} + nop +_021D8AC4: .word 0x021DBB3C +_021D8AC8: .word 0xC7FFFFFF +_021D8ACC: .word 0x021DBC50 +_021D8AD0: .word 0x021DBCA4 +_021D8AD4: .word 0x021DBCC0 +_021D8AD8: .word 0x021DBCDC + thumb_func_end MOD63_021D8A04 + + thumb_func_start MOD63_021D8ADC +MOD63_021D8ADC: ; 0x021D8ADC + push {r4, r5, lr} + sub sp, #0x9c + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02016B94 + add r3, sp, #0x8c + ldr r5, _021D8BBC ; =0x021DBB6C + str r0, [r4, #0xc] + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D8BC0 ; =0xC7FFFFFF + ldr r5, _021D8BC4 ; =0x021DBCF8 + and r1, r0 + lsl r0, r2, #1 + orr r0, r1 + str r0, [r2] + add r3, sp, #0x70 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D8BC8 ; =0x021DBD14 + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #1 + bl FUN_02016C18 + ldr r5, _021D8BCC ; =0x021DBD30 + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #3 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #1 + bl FUN_02016C18 + ldr r5, _021D8BD0 ; =0x021DBBA8 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + ldr r0, [r4, #0xc] + add r3, r1, #0 + bl FUN_02016C18 + ldr r5, _021D8BD4 ; =0x021DBBE0 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #5 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + add sp, #0x9c + pop {r4, r5, pc} + nop +_021D8BBC: .word 0x021DBB6C +_021D8BC0: .word 0xC7FFFFFF +_021D8BC4: .word 0x021DBCF8 +_021D8BC8: .word 0x021DBD14 +_021D8BCC: .word 0x021DBD30 +_021D8BD0: .word 0x021DBBA8 +_021D8BD4: .word 0x021DBBE0 + thumb_func_end MOD63_021D8ADC + + thumb_func_start MOD63_021D8BD8 +MOD63_021D8BD8: ; 0x021D8BD8 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #4 + str r0, [sp] + ldr r0, _021D8C14 ; =MOD63_021D8C20 + mov r1, #0 + str r0, [sp, #4] + ldr r0, [r4] + mov r2, #1 + add r3, r1, #0 + bl FUN_02022318 + str r0, [r4, #0x10] + ldr r3, _021D8C18 ; =0x021064B8 + mov r0, #2 + mov r1, #0 + ldr r3, [r3] + lsl r0, r0, #0xe + add r2, r1, #0 + blx r3 + ldr r3, _021D8C1C ; =0x021064C0 + mov r0, #0x80 + ldr r3, [r3] + mov r1, #0 + mov r2, #1 + blx r3 + add sp, #8 + pop {r4, pc} + nop +_021D8C14: .word MOD63_021D8C20 +_021D8C18: .word 0x021064B8 +_021D8C1C: .word 0x021064C0 + thumb_func_end MOD63_021D8BD8 + + thumb_func_start MOD63_021D8C20 +MOD63_021D8C20: ; 0x021D8C20 + push {r3, lr} + ldr r0, _021D8C8C ; =0x04000008 + mov r1, #3 + ldrh r2, [r0] + bic r2, r1 + strh r2, [r0] + add r0, #0x58 + ldrh r2, [r0] + ldr r1, _021D8C90 ; =0xFFFFCFFD + and r2, r1 + strh r2, [r0] + ldrh r3, [r0] + add r2, r1, #2 + and r3, r2 + mov r2, #0x10 + orr r2, r3 + strh r2, [r0] + ldrh r3, [r0] + ldr r2, _021D8C94 ; =0x0000CFFB + and r2, r3 + strh r2, [r0] + add r2, r1, #2 + ldrh r3, [r0] + add r1, r1, #2 + and r3, r2 + mov r2, #8 + orr r2, r3 + strh r2, [r0] + ldrh r2, [r0] + and r2, r1 + mov r1, #0x20 + orr r1, r2 + strh r1, [r0] + ldr r0, _021D8C98 ; =0x021DBB5C + bl G3X_SetEdgeColorTable + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl G3X_SetFog + mov r0, #0 + ldr r2, _021D8C9C ; =0x00007FFF + add r1, r0, #0 + mov r3, #0x3f + str r0, [sp] + bl G3X_SetClearColor + ldr r1, _021D8CA0 ; =0xBFFF0000 + ldr r0, _021D8CA4 ; =0x04000580 + str r1, [r0] + pop {r3, pc} + nop +_021D8C8C: .word 0x04000008 +_021D8C90: .word 0xFFFFCFFD +_021D8C94: .word 0x0000CFFB +_021D8C98: .word 0x021DBB5C +_021D8C9C: .word 0x00007FFF +_021D8CA0: .word 0xBFFF0000 +_021D8CA4: .word 0x04000580 + thumb_func_end MOD63_021D8C20 + + thumb_func_start MOD63_021D8CA8 +MOD63_021D8CA8: ; 0x021D8CA8 + ldr r3, _021D8CAC ; =0x02009F81 + bx r3 + .align 2, 0 +_021D8CAC: .word 0x02009F81 + thumb_func_end MOD63_021D8CA8 + + thumb_func_start MOD63_021D8CB0 +MOD63_021D8CB0: ; 0x021D8CB0 + push {r4, lr} + add r4, r0, #0 + bl FUN_02009F80 + ldr r0, [r4, #0x4c] + bl MOD63_021DB598 + pop {r4, pc} + thumb_func_end MOD63_021D8CB0 + + thumb_func_start MOD63_021D8CC0 +MOD63_021D8CC0: ; 0x021D8CC0 + push {r4, r5} + mov r0, #1 + lsl r0, r0, #0x1a + ldr r2, [r0] + ldr r1, _021D8D08 ; =0xFFFF1FFF + add r4, r0, #0 + and r2, r1 + lsr r1, r0, #0xd + orr r1, r2 + str r1, [r0] + add r4, #0x48 + ldrh r3, [r4] + mov r2, #0x3f + mov r1, #0x1f + bic r3, r2 + orr r1, r3 + mov r3, #0x20 + orr r1, r3 + strh r1, [r4] + add r4, r0, #0 + add r4, #0x4a + ldrh r5, [r4] + mov r1, #0x11 + bic r5, r2 + orr r1, r5 + orr r1, r3 + strh r1, [r4] + add r1, r0, #0 + mov r2, #0xff + add r1, #0x40 + strh r2, [r1] + ldr r1, _021D8D0C ; =0x0000209F + add r0, #0x44 + strh r1, [r0] + pop {r4, r5} + bx lr + .align 2, 0 +_021D8D08: .word 0xFFFF1FFF +_021D8D0C: .word 0x0000209F + thumb_func_end MOD63_021D8CC0 + + thumb_func_start MOD63_021D8D10 +MOD63_021D8D10: ; 0x021D8D10 + push {r4, lr} + add r4, r0, #0 + bl FUN_0200A2AC + ldr r1, _021D8D90 ; =0x00007FFF + mov r0, #0 + bl FUN_0200E3A0 + ldr r1, _021D8D90 ; =0x00007FFF + mov r0, #1 + bl FUN_0200E3A0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + mov r0, #3 + mov r1, #0x4c + lsl r2, r0, #0x11 + bl FUN_0201681C + mov r1, #0xab + add r0, r4, #0 + lsl r1, r1, #2 + mov r2, #0x4c + bl FUN_02006268 + mov r2, #0xab + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x4c + str r0, [r4] + mov r1, #0 + mov r0, #0xaa + str r1, [r4, #8] + lsl r0, r0, #2 + strb r1, [r4, r0] + ldr r0, _021D8D94 ; =0x021C4918 + strb r1, [r0, #5] + bl FUN_0201E7A0 + bl FUN_0201B9D4 + str r0, [r4, #0x14] + mov r0, #0 + bl FUN_0201B9E0 + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_021D8D90: .word 0x00007FFF +_021D8D94: .word 0x021C4918 + thumb_func_end MOD63_021D8D10 + + thumb_func_start MOD63_021D8D98 +MOD63_021D8D98: ; 0x021D8D98 + push {r3, r4, r5, lr} + add r4, r1, #0 + bl FUN_02006278 + add r5, r0, #0 + mov r0, #0xaa + lsl r0, r0, #2 + ldrb r0, [r5, r0] + cmp r0, #0 + beq _021D8DD4 + ldr r0, _021D8E5C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + bne _021D8DBC + mov r0, #8 + tst r0, r1 + beq _021D8DD4 +_021D8DBC: + mov r0, #1 + str r0, [r5, #8] + ldr r1, _021D8E5C ; =0x021C48B8 + mov r0, #0 + str r0, [r1, #0x6c] + ldr r1, _021D8E60 ; =0x00007FFF + bl FUN_0200E3A0 + ldr r1, _021D8E60 ; =0x00007FFF + mov r0, #1 + bl FUN_0200E3A0 +_021D8DD4: + ldr r0, [r4] + cmp r0, #4 + bhi _021D8E42 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8DE6: ; jump table + .short _021D8DF0 - _021D8DE6 - 2 ; case 0 + .short _021D8E00 - _021D8DE6 - 2 ; case 1 + .short _021D8E12 - _021D8DE6 - 2 ; case 2 + .short _021D8E24 - _021D8DE6 - 2 ; case 3 + .short _021D8E36 - _021D8DE6 - 2 ; case 4 +_021D8DF0: + mov r0, #0xaa + lsl r0, r0, #2 + add r0, r5, r0 + str r0, [r5, #0x30] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8E46 +_021D8E00: + add r0, r5, #0 + bl MOD63_021D8E9C + cmp r0, #0 + beq _021D8E46 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8E46 +_021D8E12: + add r0, r5, #0 + bl MOD63_021D93F0 + cmp r0, #0 + beq _021D8E46 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8E46 +_021D8E24: + add r0, r5, #0 + bl MOD63_021DA0A8 + cmp r0, #0 + beq _021D8E46 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8E46 +_021D8E36: + ldr r1, [r5, #4] + ldr r0, _021D8E64 ; =0x00000A8C + cmp r1, r0 + blt _021D8E46 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8E42: + bl ErrorHandling +_021D8E46: + ldr r0, [r5, #8] + cmp r0, #0 + beq _021D8E50 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8E50: + ldr r0, [r5, #4] + add r0, r0, #1 + str r0, [r5, #4] + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D8E5C: .word 0x021C48B8 +_021D8E60: .word 0x00007FFF +_021D8E64: .word 0x00000A8C + thumb_func_end MOD63_021D8D98 + + thumb_func_start MOD63_021D8E68 +MOD63_021D8E68: ; 0x021D8E68 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + bl FUN_0200E31C + ldr r0, [r4, #0x14] + bl FUN_0201B9E0 + add r0, r5, #0 + bl FUN_0200627C + mov r0, #0x4c + bl FUN_020168D0 + ldr r0, _021D8E94 ; =0x0000003F + ldr r1, _021D8E98 ; =0x021DBAB8 + bl FUN_02000E7C + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8E94: .word 0x0000003F +_021D8E98: .word 0x021DBAB8 + thumb_func_end MOD63_021D8E68 + + thumb_func_start MOD63_021D8E9C +MOD63_021D8E9C: ; 0x021D8E9C + push {r4, lr} + add r1, r0, #0 + ldr r0, [r1, #8] + add r4, r1, #0 + add r4, #0x18 + cmp r0, #0 + beq _021D8EAE + mov r0, #3 + strb r0, [r4] +_021D8EAE: + ldrb r0, [r4] + cmp r0, #3 + bhi _021D8F06 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8EC0: ; jump table + .short _021D8EC8 - _021D8EC0 - 2 ; case 0 + .short _021D8ED6 - _021D8EC0 - 2 ; case 1 + .short _021D8EE6 - _021D8EC0 - 2 ; case 2 + .short _021D8EFC - _021D8EC0 - 2 ; case 3 +_021D8EC8: + add r0, r1, #0 + bl MOD63_021D8F0C + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _021D8F06 +_021D8ED6: + add r1, #0x18 + add r0, r1, #0 + bl MOD63_021D8F38 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _021D8F06 +_021D8EE6: + add r0, r1, #0 + ldr r1, [r1, #4] + add r0, #0x18 + bl MOD63_021D90D0 + cmp r0, #0 + beq _021D8F06 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _021D8F06 +_021D8EFC: + add r0, r1, #0 + bl MOD63_021D9234 + mov r0, #1 + pop {r4, pc} +_021D8F06: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD63_021D8E9C + + thumb_func_start MOD63_021D8F0C +MOD63_021D8F0C: ; 0x021D8F0C + push {r4, lr} + add r4, r0, #0 + bl MOD63_021D8890 + add r0, r4, #0 + bl MOD63_021D88F0 + ldr r0, [r4, #0xc] + str r0, [r4, #0x24] + bl MOD63_021DAEF8 + str r0, [r4, #0x2c] + ldr r0, _021D8F34 ; =MOD63_021D8CA8 + add r1, r4, #0 + bl FUN_02015F10 + mov r0, #1 + strb r0, [r4, #0x1a] + pop {r4, pc} + nop +_021D8F34: .word MOD63_021D8CA8 + thumb_func_end MOD63_021D8F0C + + thumb_func_start MOD63_021D8F38 +MOD63_021D8F38: ; 0x021D8F38 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x13 + mov r3, #2 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x13 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x14 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x15 + mov r3, #6 + bl FUN_020068C8 + mov r2, #0 + str r2, [sp] + mov r0, #0x4c + str r0, [sp, #4] + mov r0, #0x80 + mov r1, #0x12 + add r3, r2, #0 + bl FUN_02006930 + mov r3, #0 + str r3, [sp] + mov r0, #0x4c + str r0, [sp, #4] + mov r0, #0x80 + mov r1, #0x12 + mov r2, #4 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + mov r1, #1 + ldr r2, [r4, #0xc] + mov r0, #0x80 + add r3, r1, #0 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #2 + mov r3, #1 + bl FUN_020068C8 + mov r1, #0 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x4c + str r0, [sp, #4] + mov r0, #0x80 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x16 + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x16 + mov r3, #7 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x48 + mov r3, #5 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x49 + mov r3, #5 + bl FUN_020068C8 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x4c + str r0, [sp, #4] + mov r0, #0x80 + mov r1, #0x47 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #0 + bl FUN_0201E74C + mov r0, #0x10 + str r0, [sp] + ldr r0, _021D90C8 ; =0x04000050 + mov r1, #2 + mov r2, #8 + mov r3, #0 + bl G2x_SetBlendAlpha_ + mov r0, #0x10 + str r0, [sp] + ldr r0, _021D90CC ; =0x04001050 + mov r1, #2 + mov r2, #8 + mov r3, #0 + bl G2x_SetBlendAlpha_ + mov r0, #1 + add r1, r0, #0 + bl OS_WaitIrq + mov r0, #0 + bl FUN_0200E394 + mov r0, #1 + bl FUN_0200E394 + bl FUN_0201E788 + add sp, #0x10 + pop {r4, pc} + nop +_021D90C8: .word 0x04000050 +_021D90CC: .word 0x04001050 + thumb_func_end MOD63_021D8F38 + + thumb_func_start MOD63_021D90D0 +MOD63_021D90D0: ; 0x021D90D0 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #0x14] + add r5, r1, #0 + bl MOD63_021DB1AC + ldrb r0, [r4, #1] + cmp r0, #5 + bls _021D90E6 + b _021D9208 +_021D90E6: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D90F2: ; jump table + .short _021D90FE - _021D90F2 - 2 ; case 0 + .short _021D9122 - _021D90F2 - 2 ; case 1 + .short _021D9148 - _021D90F2 - 2 ; case 2 + .short _021D91AE - _021D90F2 - 2 ; case 3 + .short _021D91CE - _021D90F2 - 2 ; case 4 + .short _021D91FA - _021D90F2 - 2 ; case 5 +_021D90FE: + mov r2, #0 + strb r2, [r4, #7] + strb r2, [r4, #6] + ldr r0, _021D9210 ; =MOD63_021D92A4 + strb r2, [r4, #8] + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x10] + mov r0, #1 + ldr r1, _021D9214 ; =0x00000494 + add r2, r0, #0 + bl FUN_0200433C + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9208 +_021D9122: + ldrb r0, [r4, #8] + cmp r0, #0 + beq _021D9208 + cmp r5, #0x73 + blt _021D9208 + mov r2, #0 + strb r2, [r4, #7] + mov r0, #0x10 + strb r0, [r4, #6] + ldr r0, _021D9218 ; =MOD63_021D9300 + strb r2, [r4, #8] + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x10] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9208 +_021D9148: + ldrb r0, [r4, #8] + cmp r0, #0 + beq _021D9208 + ldr r0, _021D921C ; =0x00000109 + cmp r5, r0 + blt _021D9208 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E74C + mov r0, #0x10 + str r0, [sp] + ldr r0, _021D9220 ; =0x04000050 + mov r1, #4 + mov r2, #8 + mov r3, #0 + bl G2x_SetBlendAlpha_ + mov r0, #0x10 + str r0, [sp] + ldr r0, _021D9224 ; =0x04001050 + mov r1, #4 + mov r2, #8 + mov r3, #0 + bl G2x_SetBlendAlpha_ + mov r0, #4 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #1 + bl FUN_0201E74C + mov r2, #0 + strb r2, [r4, #7] + strb r2, [r4, #6] + ldr r0, _021D9228 ; =MOD63_021D9360 + strb r2, [r4, #8] + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x10] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9208 +_021D91AE: + ldrb r0, [r4, #8] + cmp r0, #0 + beq _021D9208 + mov r2, #0 + strb r2, [r4, #7] + strb r2, [r4, #6] + ldr r0, _021D922C ; =MOD63_021D93A8 + strb r2, [r4, #8] + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x10] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9208 +_021D91CE: + ldrb r0, [r4, #8] + cmp r0, #0 + beq _021D9208 + ldr r0, _021D9230 ; =0x000001EA + cmp r5, r0 + blt _021D9208 + mov r0, #0x12 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9208 +_021D91FA: + bl FUN_0200E308 + cmp r0, #0 + beq _021D9208 + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_021D9208: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_021D9210: .word MOD63_021D92A4 +_021D9214: .word 0x00000494 +_021D9218: .word MOD63_021D9300 +_021D921C: .word 0x00000109 +_021D9220: .word 0x04000050 +_021D9224: .word 0x04001050 +_021D9228: .word MOD63_021D9360 +_021D922C: .word MOD63_021D93A8 +_021D9230: .word 0x000001EA + thumb_func_end MOD63_021D90D0 + + thumb_func_start MOD63_021D9234 +MOD63_021D9234: ; 0x021D9234 + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + ldrb r0, [r4, #0x1a] + cmp r0, #0 + beq _021D9286 + ldr r0, [r4, #0x2c] + bl MOD63_021DAF9C + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #6 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #7 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #5 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + bl FUN_02016A18 + mov r0, #0 + strb r0, [r4, #0x1a] +_021D9286: + ldr r0, [r4, #0x28] + cmp r0, #0 + beq _021D92A0 + ldr r0, [r4, #8] + cmp r0, #0 + bne _021D9296 + bl ErrorHandling +_021D9296: + ldr r0, [r4, #0x28] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x28] +_021D92A0: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD63_021D9234 + + thumb_func_start MOD63_021D92A4 +MOD63_021D92A4: ; 0x021D92A4 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldrb r1, [r4, #7] + add r1, r1, #1 + strb r1, [r4, #7] + ldrb r1, [r4, #7] + cmp r1, #6 + blo _021D92C0 + mov r1, #0 + strb r1, [r4, #7] + ldrb r1, [r4, #6] + add r1, r1, #1 + strb r1, [r4, #6] +_021D92C0: + ldrb r1, [r4, #6] + cmp r1, #0x10 + blo _021D92D2 + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x10] + mov r0, #1 + strb r0, [r4, #8] +_021D92D2: + mov r0, #0x10 + str r0, [sp] + ldrb r3, [r4, #6] + ldr r0, _021D92F8 ; =0x04000050 + mov r1, #2 + mov r2, #8 + bl G2x_SetBlendAlpha_ + mov r0, #0x10 + str r0, [sp] + ldrb r3, [r4, #6] + ldr r0, _021D92FC ; =0x04001050 + mov r1, #2 + mov r2, #8 + bl G2x_SetBlendAlpha_ + add sp, #4 + pop {r3, r4, pc} + nop +_021D92F8: .word 0x04000050 +_021D92FC: .word 0x04001050 + thumb_func_end MOD63_021D92A4 + + thumb_func_start MOD63_021D9300 +MOD63_021D9300: ; 0x021D9300 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldrb r1, [r4, #7] + add r1, r1, #1 + strb r1, [r4, #7] + ldrb r1, [r4, #7] + cmp r1, #4 + blo _021D931C + mov r1, #0 + strb r1, [r4, #7] + ldrb r1, [r4, #6] + sub r1, r1, #1 + strb r1, [r4, #6] +_021D931C: + ldrb r1, [r4, #6] + cmp r1, #0 + bne _021D9332 + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x10] + mov r1, #1 + strb r1, [r4, #8] + ldr r0, [r4, #0x18] + strb r1, [r0] +_021D9332: + mov r0, #0x10 + str r0, [sp] + ldrb r3, [r4, #6] + ldr r0, _021D9358 ; =0x04000050 + mov r1, #2 + mov r2, #8 + bl G2x_SetBlendAlpha_ + mov r0, #0x10 + str r0, [sp] + ldrb r3, [r4, #6] + ldr r0, _021D935C ; =0x04001050 + mov r1, #2 + mov r2, #8 + bl G2x_SetBlendAlpha_ + add sp, #4 + pop {r3, r4, pc} + nop +_021D9358: .word 0x04000050 +_021D935C: .word 0x04001050 + thumb_func_end MOD63_021D9300 + + thumb_func_start MOD63_021D9360 +MOD63_021D9360: ; 0x021D9360 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldrb r1, [r4, #7] + add r1, r1, #1 + strb r1, [r4, #7] + ldrb r1, [r4, #7] + cmp r1, #4 + blo _021D937C + mov r1, #0 + strb r1, [r4, #7] + ldrb r1, [r4, #6] + add r1, r1, #1 + strb r1, [r4, #6] +_021D937C: + ldrb r1, [r4, #6] + cmp r1, #0x10 + blo _021D938E + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x10] + mov r0, #1 + strb r0, [r4, #8] +_021D938E: + mov r0, #0x10 + str r0, [sp] + ldrb r3, [r4, #6] + ldr r0, _021D93A4 ; =0x04000050 + mov r1, #4 + mov r2, #8 + bl G2x_SetBlendAlpha_ + add sp, #4 + pop {r3, r4, pc} + nop +_021D93A4: .word 0x04000050 + thumb_func_end MOD63_021D9360 + + thumb_func_start MOD63_021D93A8 +MOD63_021D93A8: ; 0x021D93A8 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldrb r1, [r4, #7] + add r1, r1, #1 + strb r1, [r4, #7] + ldrb r1, [r4, #7] + cmp r1, #4 + blo _021D93C4 + mov r1, #0 + strb r1, [r4, #7] + ldrb r1, [r4, #6] + add r1, r1, #1 + strb r1, [r4, #6] +_021D93C4: + ldrb r1, [r4, #6] + cmp r1, #0x10 + blo _021D93D6 + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x10] + mov r0, #1 + strb r0, [r4, #8] +_021D93D6: + mov r0, #0x10 + str r0, [sp] + ldrb r3, [r4, #6] + ldr r0, _021D93EC ; =0x04001050 + mov r1, #4 + mov r2, #8 + bl G2x_SetBlendAlpha_ + add sp, #4 + pop {r3, r4, pc} + nop +_021D93EC: .word 0x04001050 + thumb_func_end MOD63_021D93A8 + + thumb_func_start MOD63_021D93F0 +MOD63_021D93F0: ; 0x021D93F0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + add r4, r5, #0 + add r4, #0x34 + cmp r0, #0 + beq _021D9402 + mov r0, #4 + strb r0, [r4] +_021D9402: + ldrb r0, [r4] + cmp r0, #4 + bhi _021D9492 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9414: ; jump table + .short _021D941E - _021D9414 - 2 ; case 0 + .short _021D942C - _021D9414 - 2 ; case 1 + .short _021D943C - _021D9414 - 2 ; case 2 + .short _021D9452 - _021D9414 - 2 ; case 3 + .short _021D9488 - _021D9414 - 2 ; case 4 +_021D941E: + add r0, r5, #0 + bl MOD63_021D9498 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _021D9492 +_021D942C: + add r5, #0x34 + add r0, r5, #0 + bl MOD63_021D96A0 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _021D9492 +_021D943C: + add r0, r5, #0 + add r0, #0x34 + bl MOD63_021D9810 + mov r0, #1 + add r5, #0x39 + strb r0, [r5] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _021D9492 +_021D9452: + add r0, r5, #0 + ldr r1, [r5, #4] + add r0, #0x34 + bl MOD63_021D99EC + cmp r0, #0 + beq _021D9466 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_021D9466: + ldr r0, [r5, #0x44] + bl MOD63_021DAC18 + add r0, r5, #0 + add r0, #0x39 + ldrb r0, [r0] + cmp r0, #0 + beq _021D9480 + add r5, #0x34 + add r0, r5, #0 + bl MOD63_021D9980 + b _021D9492 +_021D9480: + ldr r0, [r5, #0x4c] + bl MOD63_021DB5A8 + b _021D9492 +_021D9488: + add r0, r5, #0 + bl MOD63_021D95A8 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D9492: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021D93F0 + + thumb_func_start MOD63_021D9498 +MOD63_021D9498: ; 0x021D9498 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + bl MOD63_021D88B0 + add r0, r5, #0 + bl MOD63_021D8A04 + add r0, r5, #0 + bl MOD63_021D8BD8 + bl MOD63_021DA6E0 + add r4, r0, #0 + bl MOD63_021DB498 + add r6, r0, #0 + mov r0, #0x4c + add r1, r4, #0 + bl FUN_02016998 + str r0, [r5, #0x44] + mov r0, #0x10 + bl MOD63_021DAF20 + str r0, [r5, #0x48] + mov r0, #0x4c + add r1, r6, #0 + bl FUN_02016998 + str r0, [r5, #0x4c] + ldr r0, [r5, #0x44] + mov r1, #0 + add r2, r4, #0 + bl Call_FillMemWithValue + ldr r0, [r5, #0x4c] + mov r1, #0 + add r2, r6, #0 + bl Call_FillMemWithValue + add r0, r5, #0 + mov r1, #4 + add r0, #0x3b + strb r1, [r0] + ldr r0, [r5, #0x4c] + bl MOD63_021DB49C + ldr r0, [r5, #0xc] + mov r1, #1 + str r0, [r5, #0x40] + ldr r0, _021D9588 ; =0x021C4918 + strb r1, [r0, #5] + bl FUN_0201E7A0 + ldr r6, _021D958C ; =0x021DBDE8 + ldr r7, _021D9590 ; =0x021DBAD0 + mov r4, #0 +_021D950C: + mov r0, #0xc + add r1, r4, #0 + mul r1, r0 + add r3, r6, r1 + ldr r2, [r3, #4] + ldr r1, [r6, r1] + ldr r3, [r3, #8] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + add r0, r4, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + asr r3, r3, #0x10 + bl FUN_020B8418 + lsl r1, r4, #1 + ldrh r1, [r7, r1] + add r0, r4, #0 + bl FUN_020B8404 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021D950C + ldr r0, _021D9594 ; =0x00004210 + ldr r1, _021D9598 ; =0x0000318A + mov r2, #0 + bl FUN_020B83E0 + ldr r0, _021D959C ; =0x00004A52 + ldr r1, _021D95A0 ; =0x000039CE + mov r2, #0 + bl FUN_020B83BC + mov r0, #0x1f + str r0, [sp] + mov r0, #2 + lsl r0, r0, #0xe + mov r1, #0 + str r0, [sp, #4] + mov r0, #0xd + mov r2, #2 + add r3, r1, #0 + bl FUN_020B8390 + ldr r0, _021D95A4 ; =MOD63_021D8CB0 + add r1, r5, #0 + bl FUN_02015F10 + mov r0, #0x10 + mov r1, #1 + mov r2, #2 + bl FUN_0200A274 + mov r0, #1 + add r5, #0x36 + strb r0, [r5] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9588: .word 0x021C4918 +_021D958C: .word 0x021DBDE8 +_021D9590: .word 0x021DBAD0 +_021D9594: .word 0x00004210 +_021D9598: .word 0x0000318A +_021D959C: .word 0x00004A52 +_021D95A0: .word 0x000039CE +_021D95A4: .word MOD63_021D8CB0 + thumb_func_end MOD63_021D9498 + + thumb_func_start MOD63_021D95A8 +MOD63_021D95A8: ; 0x021D95A8 + push {r4, r5, r6, lr} + mov r2, #1 + lsl r2, r2, #0x1a + add r5, r0, #0 + ldr r1, [r2] + ldr r0, _021D969C ; =0xFFFF1FFF + and r0, r1 + str r0, [r2] + add r0, r5, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0 + beq _021D95F6 + bl FUN_0201EB98 + ldr r0, [r5, #0x78] + bl FUN_0201EB70 + mov r4, #0 + mov r6, #0x58 +_021D95D0: + add r0, r4, #0 + mul r0, r6 + add r0, r5, r0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_02016A18 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #6 + blo _021D95D0 + ldr r0, [r5, #0x70] + bl FUN_02016A18 + add r0, r5, #0 + mov r1, #0 + add r0, #0x38 + strb r1, [r0] +_021D95F6: + add r0, r5, #0 + add r0, #0x37 + ldrb r0, [r0] + cmp r0, #0 + beq _021D9624 + ldr r0, [r5, #0x44] + bl MOD63_021DAA04 + mov r4, #0 +_021D9608: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x50] + bl FUN_02016A18 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021D9608 + add r0, r5, #0 + mov r1, #0 + add r0, #0x37 + strb r1, [r0] +_021D9624: + add r0, r5, #0 + add r0, #0x36 + ldrb r0, [r0] + cmp r0, #0 + beq _021D9690 + ldr r0, [r5, #0x48] + cmp r0, #0 + beq _021D963C + bl MOD63_021DAF4C + mov r0, #0 + str r0, [r5, #0x48] +_021D963C: + ldr r0, [r5, #0x44] + cmp r0, #0 + beq _021D964A + bl FUN_02016A18 + mov r0, #0 + str r0, [r5, #0x44] +_021D964A: + ldr r0, [r5, #0x4c] + cmp r0, #0 + beq _021D965E + bl MOD63_021DB580 + ldr r0, [r5, #0x4c] + bl FUN_02016A18 + mov r0, #0 + str r0, [r5, #0x4c] +_021D965E: + ldr r0, [r5, #0xc] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r5, #0xc] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r5, #0xc] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r5, #0xc] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r5, #0xc] + bl FUN_02016A18 + ldr r0, [r5, #0x10] + bl FUN_020223BC + mov r0, #0 + add r5, #0x36 + strb r0, [r5] +_021D9690: + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + pop {r4, r5, r6, pc} + nop +_021D969C: .word 0xFFFF1FFF + thumb_func_end MOD63_021D95A8 + + thumb_func_start MOD63_021D96A0 +MOD63_021D96A0: ; 0x021D96A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + ldr r3, _021D980C ; =0x021DBB2C + add r2, sp, #0x18 + add r5, r0, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + mov r0, #0x80 + mov r1, #0x4c + bl FUN_02006670 + str r0, [sp, #0x10] + add r0, r5, #0 + str r0, [sp, #0x14] + add r0, #0x2c + mov r4, #0 + str r0, [sp, #0x14] +_021D96C6: + lsl r7, r4, #2 + add r1, sp, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [r1, r7] + mov r2, #0x4c + add r6, r5, r7 + bl FUN_02006704 + str r0, [r6, #0x1c] + cmp r0, #0 + beq _021D96F4 + ldr r1, [sp, #0x14] + add r1, r1, r7 + bl FUN_020B0138 + cmp r0, #0 + bne _021D96F8 + ldr r0, [r6, #0x2c] + bl FUN_02016A18 + bl ErrorHandling + b _021D96F8 +_021D96F4: + bl ErrorHandling +_021D96F8: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021D96C6 + ldr r0, [sp, #0x10] + bl FUN_020066F4 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r5, #0xc] + mov r0, #0x80 + mov r1, #0x1c + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r5, #0xc] + mov r0, #0x80 + mov r1, #0x1a + mov r3, #3 + bl FUN_020068C8 + mov r1, #0 + str r1, [sp] + ldr r0, [r5, #0x2c] + mov r2, #0xa + add r3, r1, #0 + bl MOD63_021D9EA8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r5, #0xc] + mov r0, #0x80 + mov r1, #0x11 + mov r3, #4 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r5, #0xc] + mov r0, #0x80 + mov r1, #0xf + mov r3, #4 + bl FUN_020068C8 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + mov r0, #0x4c + str r0, [sp, #4] + mov r0, #0x80 + mov r1, #0x10 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r5, #0xc] + mov r0, #0x80 + mov r1, #0x1b + mov r3, #1 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r5, #0xc] + mov r0, #0x80 + mov r1, #0x19 + mov r3, #1 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r5, #0xc] + mov r0, #0x80 + mov r1, #0x18 + mov r3, #2 + bl FUN_020068C8 + ldr r0, [r5, #0x10] + bl MOD63_021DA6E8 + ldr r0, [r5, #0x10] + bl MOD63_021DAA5C + ldr r0, [r5, #0x10] + ldr r1, [r5, #0x14] + bl MOD63_021DABCC + mov r0, #0xe + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #1 + mov r1, #0 + bl FUN_0201E74C + mov r0, #0 + bl FUN_0200E394 + mov r0, #1 + bl FUN_0200E394 + mov r0, #1 + strb r0, [r5, #3] + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D980C: .word 0x021DBB2C + thumb_func_end MOD63_021D96A0 + + thumb_func_start MOD63_021D9810 +MOD63_021D9810: ; 0x021D9810 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + mov r0, #0x80 + mov r1, #0x46 + mov r2, #0x4c + bl LoadFromNarc_2 + str r0, [r5, #0x3c] + bl FUN_020BC0FC + str r0, [r5, #0x40] + bl FUN_0201B3C4 + cmp r0, #0 + bne _021D9834 + bl ErrorHandling +_021D9834: + ldr r0, [r5, #0x40] + ldr r0, [r0, #0x14] + cmp r0, #0 + bne _021D9840 + bl ErrorHandling +_021D9840: + ldr r2, [r5, #0x40] + ldr r0, [r5, #0x3c] + ldr r1, [r2, #0x14] + add r1, r2, r1 + sub r1, r1, r0 + bl FUN_02016B44 + mov r0, #0x80 + mov r1, #0x4c + bl FUN_02006670 + str r0, [sp, #0xc] + add r0, r5, #0 + str r0, [sp, #0x10] + add r0, #0x48 + mov r7, #0 + str r0, [sp, #0x10] +_021D9862: + ldr r1, _021D9964 ; =0x021DBB90 + lsl r2, r7, #2 + ldr r1, [r1, r2] + mov r0, #0x58 + add r6, r7, #0 + mul r6, r0 + ldr r0, [sp, #0xc] + mov r2, #0x4c + bl FUN_02006704 + add r1, r5, r6 + add r1, #0x9c + str r0, [r1] + add r0, r5, r6 + add r0, #0x9c + ldr r0, [r0] + ldr r1, [r5, #0x40] + bl FUN_0201B3A8 + cmp r0, #0 + bne _021D9890 + bl ErrorHandling +_021D9890: + add r0, r5, r6 + add r0, #0x9c + ldr r0, [r0] + bl FUN_020BC13C + ldrb r0, [r0, #9] + cmp r0, #1 + beq _021D98A4 + bl ErrorHandling +_021D98A4: + add r0, r5, r6 + add r0, #0x9c + ldr r0, [r0] + bl FUN_020BC13C + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r4, r0, r1 + bne _021D98BC + bl ErrorHandling +_021D98BC: + ldr r0, [sp, #0x10] + add r1, r4, #0 + add r0, r0, r6 + bl FUN_020B80B4 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x40 + bl FUN_020BC094 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x80 + bl FUN_020BC094 + mov r2, #2 + add r0, r4, #0 + mov r1, #0 + lsl r2, r2, #8 + bl FUN_020BC094 + mov r2, #1 + add r0, r4, #0 + mov r1, #0 + lsl r2, r2, #0xa + bl FUN_020BC094 + add r0, r4, #0 + mov r1, #0 + mov r2, #0xf + bl FUN_020BC02C + add r0, r7, #1 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + cmp r7, #6 + blo _021D9862 + ldr r0, [sp, #0xc] + bl FUN_020066F4 + mov r0, #0x4c + bl FUN_0201EB64 + add r3, sp, #0x20 + ldr r4, _021D9968 ; =0x021DBAE4 + str r0, [r5, #0x44] + ldmia r4!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r4] + ldr r1, _021D996C ; =0x0029AEC1 + str r0, [r3] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [r5, #0x44] + ldr r3, _021D9970 ; =0x000005C1 + str r0, [sp, #8] + add r0, r2, #0 + ldr r2, _021D9974 ; =0x021DBB80 + bl FUN_0201ECA8 + ldr r0, _021D9978 ; =0x00000981 + ldr r1, [r5, #0x44] + bl FUN_0201EEF0 + ldr r4, _021D997C ; =0x021DBB08 + add r3, sp, #0x14 + ldmia r4!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r4] + str r0, [r3] + ldr r1, [r5, #0x44] + add r0, r2, #0 + bl FUN_0201EF70 + ldr r0, [r5, #0x44] + bl FUN_0201EB8C + mov r0, #1 + strb r0, [r5, #4] + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D9964: .word 0x021DBB90 +_021D9968: .word 0x021DBAE4 +_021D996C: .word 0x0029AEC1 +_021D9970: .word 0x000005C1 +_021D9974: .word 0x021DBB80 +_021D9978: .word 0x00000981 +_021D997C: .word 0x021DBB08 + thumb_func_end MOD63_021D9810 + + thumb_func_start MOD63_021D9980 +MOD63_021D9980: ; 0x021D9980 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + ldr r4, _021D99E4 ; =0x021DBD4C + add r5, r0, #0 + add r3, sp, #0x18 + mov r2, #4 +_021D998C: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D998C + ldr r0, [r4] + add r2, sp, #0xc + str r0, [r3] + ldr r3, _021D99E8 ; =0x021DBAFC + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, sp, #0 + str r0, [r2] + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + bl FUN_020222AC + bl FUN_0201EBA4 + mov r4, #0 + add r5, #0x48 + add r7, sp, #0 + mov r6, #0x58 +_021D99BE: + add r0, r4, #0 + mul r0, r6 + add r0, r5, r0 + add r1, r7, #0 + add r2, sp, #0x18 + add r3, sp, #0xc + bl FUN_0201B26C + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #6 + blo _021D99BE + mov r0, #0 + mov r1, #1 + bl FUN_020222B4 + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D99E4: .word 0x021DBD4C +_021D99E8: .word 0x021DBAFC + thumb_func_end MOD63_021D9980 + + thumb_func_start MOD63_021D99EC +MOD63_021D99EC: ; 0x021D99EC + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r0, [r4, #6] + add r5, r1, #0 + cmp r0, #0 + bne _021D9A00 + ldr r0, [r4, #0x14] + bl MOD63_021DB38C +_021D9A00: + ldrb r0, [r4, #6] + ldrb r1, [r4, #7] + add r0, r0, #1 + bl _s32_div_f + strb r1, [r4, #6] + ldrb r0, [r4, #1] + cmp r0, #0x11 + bhi _021D9B0C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9A1E: ; jump table + .short _021D9A42 - _021D9A1E - 2 ; case 0 + .short _021D9A6A - _021D9A1E - 2 ; case 1 + .short _021D9A7A - _021D9A1E - 2 ; case 2 + .short _021D9AB8 - _021D9A1E - 2 ; case 3 + .short _021D9AEE - _021D9A1E - 2 ; case 4 + .short _021D9B3E - _021D9A1E - 2 ; case 5 + .short _021D9B72 - _021D9A1E - 2 ; case 6 + .short _021D9BC8 - _021D9A1E - 2 ; case 7 + .short _021D9C04 - _021D9A1E - 2 ; case 8 + .short _021D9C70 - _021D9A1E - 2 ; case 9 + .short _021D9CB4 - _021D9A1E - 2 ; case 10 + .short _021D9CFC - _021D9A1E - 2 ; case 11 + .short _021D9D38 - _021D9A1E - 2 ; case 12 + .short _021D9D94 - _021D9A1E - 2 ; case 13 + .short _021D9DF8 - _021D9A1E - 2 ; case 14 + .short _021D9E48 - _021D9A1E - 2 ; case 15 + .short _021D9E84 - _021D9A1E - 2 ; case 16 + .short _021D9E9A - _021D9A1E - 2 ; case 17 +_021D9A42: + mov r0, #0xa + lsl r0, r0, #6 + cmp r5, r0 + blt _021D9B0C + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E74C + mov r0, #2 + str r0, [sp] + mov r0, #8 + mov r1, #0 + mov r2, #0x10 + mov r3, #1 + bl FUN_0200A208 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9A6A: + ldr r0, [r4, #0x10] + mov r1, #1 + bl MOD63_021DACA0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9A7A: + ldr r0, _021D9DCC ; =0x000002E9 + cmp r5, r0 + bne _021D9A88 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C +_021D9A88: + ldr r0, _021D9DD0 ; =0x000003C5 + cmp r5, r0 + blt _021D9B0C + mov r0, #7 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x12 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + ldr r3, _021D9DD4 ; =0x00007FFF + mov r0, #3 + add r2, r1, #0 + bl FUN_0200E1D0 + mov r0, #0x10 + strb r0, [r4, #7] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9AB8: + add r0, r4, #0 + add r1, r5, #0 + bl MOD63_021D9F38 + ldr r0, [r4, #0x10] + add r1, r5, #0 + bl MOD63_021DAD6C + ldr r0, _021D9DD8 ; =0x00000631 + cmp r5, r0 + blt _021D9B0C + mov r0, #0x12 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + mov r1, #0 + str r0, [sp, #8] + ldr r3, _021D9DD4 ; =0x00007FFF + mov r0, #3 + add r2, r1, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9AEE: + add r0, r4, #0 + add r1, r5, #0 + bl MOD63_021D9F38 + ldr r0, [r4, #0x10] + add r1, r5, #0 + bl MOD63_021DAD6C + bl FUN_0200E308 + cmp r0, #0 + beq _021D9B0C + ldr r0, _021D9DDC ; =0x0000064A + cmp r5, r0 + bge _021D9B0E +_021D9B0C: + b _021D9EA0 +_021D9B0E: + ldr r0, [r4, #0x10] + mov r1, #0 + mov r2, #1 + bl MOD63_021DAC24 + bl MOD63_021D8CC0 + mov r0, #0 + strb r0, [r4, #5] + mov r0, #0x12 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + ldr r3, _021D9DD4 ; =0x00007FFF + mov r0, #3 + add r2, r1, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9B3E: + add r0, r4, #0 + bl MOD63_021D9EE0 + bl FUN_0200E308 + cmp r0, #0 + beq _021D9C12 + ldr r0, _021D9DE0 ; =0x000006B3 + cmp r5, r0 + blt _021D9C12 + mov r0, #4 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9B72: + bl FUN_0200E308 + cmp r0, #0 + beq _021D9C12 + mov r1, #0 + ldr r0, _021D9DE4 ; =0x04000050 + mov r2, #0x38 + add r3, r1, #0 + str r1, [sp] + bl G2x_SetBlendAlpha_ + mov r0, #6 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + mov r1, #0 + ldr r0, [r4, #0x10] + add r2, r1, #0 + bl MOD63_021DAD18 + mov r0, #4 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9BC8: + add r0, r4, #0 + bl MOD63_021D9F20 + bl FUN_0200E308 + cmp r0, #0 + beq _021D9C12 + ldr r0, [r4, #0x18] + mov r1, #0 + add r2, r5, #0 + bl MOD63_021DB5CC + cmp r0, #0 + beq _021D9C12 + mov r0, #4 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9C04: + bl FUN_0200E308 + cmp r0, #0 + beq _021D9C12 + ldr r0, _021D9DE8 ; =0x00000721 + cmp r5, r0 + bge _021D9C14 +_021D9C12: + b _021D9EA0 +_021D9C14: + ldr r0, [r4, #0x10] + mov r1, #1 + bl MOD63_021DACA0 + mov r1, #0 + ldr r0, [r4, #0x10] + add r2, r1, #0 + bl MOD63_021DAC24 + mov r1, #1 + ldr r0, [r4, #0x10] + add r2, r1, #0 + bl MOD63_021DAC24 + ldr r0, [r4, #0x10] + mov r1, #0 + mov r2, #1 + bl MOD63_021DAD18 + mov r1, #0 + str r1, [sp] + ldr r0, [r4, #0x38] + mov r2, #7 + add r3, r1, #0 + bl MOD63_021D9EA8 + ldr r0, [r4, #0x10] + mov r1, #2 + mov r2, #1 + bl MOD63_021DAC24 + mov r0, #4 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9C70: + add r0, r4, #0 + bl MOD63_021D9F20 + bl FUN_0200E308 + cmp r0, #0 + beq _021D9D46 + ldr r0, _021D9DE8 ; =0x00000721 + cmp r5, r0 + blt _021D9D46 + ldr r0, [r4, #0x10] + bl MOD63_021DACC0 + cmp r0, #0 + beq _021D9D46 + ldr r0, _021D9DEC ; =0x00000785 + cmp r5, r0 + blt _021D9D46 + mov r0, #4 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9CB4: + bl FUN_0200E308 + cmp r0, #0 + beq _021D9D46 + ldr r0, [r4, #0x10] + mov r1, #1 + mov r2, #0 + bl MOD63_021DAD18 + mov r1, #0 + str r1, [sp] + ldr r0, [r4, #0x30] + mov r2, #7 + add r3, r1, #0 + bl MOD63_021D9EA8 + ldr r0, [r4, #0x10] + mov r1, #2 + mov r2, #0 + bl MOD63_021DAC24 + mov r0, #4 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9CFC: + add r0, r4, #0 + bl MOD63_021D9F20 + bl FUN_0200E308 + cmp r0, #0 + beq _021D9D46 + ldr r0, [r4, #0x18] + mov r1, #1 + add r2, r5, #0 + bl MOD63_021DB5CC + cmp r0, #0 + beq _021D9D46 + mov r0, #4 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9D38: + bl FUN_0200E308 + cmp r0, #0 + beq _021D9D46 + ldr r0, _021D9DF0 ; =0x000007F8 + cmp r5, r0 + bgt _021D9D48 +_021D9D46: + b _021D9EA0 +_021D9D48: + mov r1, #1 + ldr r0, [r4, #0x10] + add r2, r1, #0 + bl MOD63_021DAD18 + mov r0, #4 + mov r1, #1 + bl FUN_0201E6E4 + ldr r0, [r4, #0x10] + mov r1, #0 + mov r2, #1 + bl MOD63_021DAC24 + ldr r0, [r4, #0x10] + bl MOD63_021DAC6C + ldr r0, [r4, #0x10] + mov r1, #4 + bl MOD63_021DAC80 + mov r0, #4 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + mov r0, #0 + str r0, [r4, #8] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9D94: + add r0, r4, #0 + bl MOD63_021D9F00 + bl FUN_0200E308 + cmp r0, #0 + beq _021D9EA0 + ldr r0, _021D9DF4 ; =0x00000861 + cmp r5, r0 + ble _021D9EA0 + mov r0, #4 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + mov r0, #0 + str r0, [r4, #8] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 + .align 2, 0 +_021D9DCC: .word 0x000002E9 +_021D9DD0: .word 0x000003C5 +_021D9DD4: .word 0x00007FFF +_021D9DD8: .word 0x00000631 +_021D9DDC: .word 0x0000064A +_021D9DE0: .word 0x000006B3 +_021D9DE4: .word 0x04000050 +_021D9DE8: .word 0x00000721 +_021D9DEC: .word 0x00000785 +_021D9DF0: .word 0x000007F8 +_021D9DF4: .word 0x00000861 +_021D9DF8: + bl FUN_0200E308 + cmp r0, #0 + beq _021D9EA0 + mov r1, #0 + ldr r0, [r4, #0x10] + add r2, r1, #0 + bl MOD63_021DAD18 + ldr r0, [r4, #0x10] + mov r1, #1 + mov r2, #0 + bl MOD63_021DAD18 + mov r1, #0 + str r1, [sp] + ldr r0, [r4, #0x34] + mov r2, #7 + add r3, r1, #0 + bl MOD63_021D9EA8 + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #4 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9E48: + add r0, r4, #0 + bl MOD63_021D9F20 + bl FUN_0200E308 + cmp r0, #0 + beq _021D9EA0 + ldr r0, [r4, #0x18] + mov r1, #2 + add r2, r5, #0 + bl MOD63_021DB5CC + cmp r0, #0 + beq _021D9EA0 + mov r0, #0x12 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9E84: + add r0, r4, #0 + bl MOD63_021D9F20 + bl FUN_0200E308 + cmp r0, #0 + beq _021D9EA0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9E9A: + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_021D9EA0: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021D99EC + + thumb_func_start MOD63_021D9EA8 +MOD63_021D9EA8: ; 0x021D9EA8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + lsl r7, r2, #5 + add r6, r1, #0 + ldr r0, [r5, #0xc] + add r1, r7, #0 + add r4, r3, #0 + bl DC_FlushRange + ldr r1, [r5, #0xc] + cmp r6, #0 + bne _021D9ED0 + lsl r0, r4, #1 + add r0, r1, r0 + add r1, sp, #8 + ldrb r1, [r1, #0x10] + add r2, r7, #0 + bl GX_LoadBGPltt + pop {r3, r4, r5, r6, r7, pc} +_021D9ED0: + lsl r0, r4, #1 + add r0, r1, r0 + add r1, sp, #8 + ldrb r1, [r1, #0x10] + add r2, r7, #0 + bl GXS_LoadBGPltt + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD63_021D9EA8 + + thumb_func_start MOD63_021D9EE0 +MOD63_021D9EE0: ; 0x021D9EE0 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #8] + add r0, r1, #1 + str r0, [r4, #8] + cmp r1, #0x18 + ble _021D9EFE + mov r2, #4 + ldr r0, [r4, #0xc] + mov r1, #1 + sub r3, r2, #5 + bl FUN_020179E0 + mov r0, #0 + str r0, [r4, #8] +_021D9EFE: + pop {r4, pc} + thumb_func_end MOD63_021D9EE0 + + thumb_func_start MOD63_021D9F00 +MOD63_021D9F00: ; 0x021D9F00 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #8] + add r0, r1, #1 + str r0, [r4, #8] + cmp r1, #3 + ble _021D9F1E + mov r2, #1 + ldr r0, [r4, #0xc] + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 + mov r0, #0 + str r0, [r4, #8] +_021D9F1E: + pop {r4, pc} + thumb_func_end MOD63_021D9F00 + + thumb_func_start MOD63_021D9F20 +MOD63_021D9F20: ; 0x021D9F20 + push {r4, lr} + add r4, r0, #0 + mov r2, #1 + add r3, r2, #0 + ldr r0, [r4, #0xc] + mov r1, #3 + sub r3, #0x11 + bl FUN_020179E0 + mov r0, #0 + str r0, [r4, #8] + pop {r4, pc} + thumb_func_end MOD63_021D9F20 + + thumb_func_start MOD63_021D9F38 +MOD63_021D9F38: ; 0x021D9F38 + push {r4, r5, r6, lr} + sub sp, #0x50 + add r4, r0, #0 + add r5, r1, #0 + add r0, sp, #0x44 + mov r1, #0 + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + ldr r1, _021DA078 ; =0x000004AB + cmp r5, r1 + bgt _021D9FE2 + ldr r0, [r4, #0x44] + bl FUN_0201F008 + ldr r1, _021DA07C ; =0x000005C1 + sub r0, #0x20 + cmp r0, r1 + ble _021D9F68 + ldr r0, _021DA080 ; =0x0000FFE0 + ldr r1, [r4, #0x44] + bl FUN_0201EF2C + b _021D9F70 +_021D9F68: + add r0, r1, #0 + ldr r1, [r4, #0x44] + bl FUN_0201EEF0 +_021D9F70: + mov r0, #2 + ldr r1, [sp, #0x4c] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #0x4c] + ldr r1, [r4, #0x44] + add r0, sp, #0x44 + bl FUN_0201EF70 + ldr r0, _021DA078 ; =0x000004AB + cmp r5, r0 + bne _021DA074 + ldr r5, _021DA084 ; =0x021DBAD8 + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r1, _021DA088 ; =0x0029AEC1 + str r0, [r3] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [r4, #0x44] + ldr r3, _021DA07C ; =0x000005C1 + str r0, [sp, #8] + add r0, r2, #0 + ldr r2, _021DA08C ; =0x021DBB80 + bl FUN_0201ECA8 + ldr r5, _021DA090 ; =0x021DBB20 + add r3, sp, #0x2c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + ldr r1, [r4, #0x44] + add r0, r2, #0 + bl FUN_0201EF70 + ldr r2, _021DA094 ; =0x021DBAC8 + add r1, sp, #0xc + ldrh r3, [r2] + add r0, sp, #0xc + strh r3, [r1] + ldrh r3, [r2, #2] + strh r3, [r1, #2] + ldrh r3, [r2, #4] + ldrh r2, [r2, #6] + strh r3, [r1, #4] + strh r2, [r1, #6] + ldr r1, [r4, #0x44] + bl FUN_0201EFB4 + add sp, #0x50 + pop {r4, r5, r6, pc} +_021D9FE2: + add r1, #0xd2 + cmp r5, r1 + bgt _021DA044 + mov r1, #1 + ldr r2, [sp, #0x44] + lsl r1, r1, #0xc + add r1, r2, r1 + str r1, [sp, #0x44] + ldr r1, [r4, #0x44] + bl FUN_0201EF70 + ldr r3, _021DA098 ; =0x0000057D + cmp r5, r3 + bne _021DA074 + ldr r6, _021DA09C ; =0x021DBB14 + add r5, sp, #0x20 + ldmia r6!, {r0, r1} + add r2, r5, #0 + stmia r5!, {r0, r1} + ldr r0, [r6] + ldr r1, _021DA088 ; =0x0029AEC1 + str r0, [r5] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [r4, #0x44] + add r3, #0x44 + str r0, [sp, #8] + add r0, r2, #0 + ldr r2, _021DA08C ; =0x021DBB80 + bl FUN_0201ECA8 + ldr r0, _021DA07C ; =0x000005C1 + ldr r1, [r4, #0x44] + bl FUN_0201EEF0 + ldr r5, _021DA0A0 ; =0x021DBAF0 + add r3, sp, #0x14 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + ldr r1, [r4, #0x44] + add r0, r2, #0 + bl FUN_0201EF70 + add sp, #0x50 + pop {r4, r5, r6, pc} +_021DA044: + ldr r0, _021DA0A4 ; =0x00000618 + cmp r5, r0 + blt _021DA062 + ldr r0, [r4, #0x44] + bl FUN_0201F008 + mov r1, #1 + add r0, #0x20 + lsl r1, r1, #0xe + cmp r0, r1 + bge _021DA062 + ldr r1, [r4, #0x44] + mov r0, #0x20 + bl FUN_0201EF2C +_021DA062: + mov r0, #1 + ldr r1, [sp, #0x4c] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x4c] + ldr r1, [r4, #0x44] + add r0, sp, #0x44 + bl FUN_0201EF70 +_021DA074: + add sp, #0x50 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DA078: .word 0x000004AB +_021DA07C: .word 0x000005C1 +_021DA080: .word 0x0000FFE0 +_021DA084: .word 0x021DBAD8 +_021DA088: .word 0x0029AEC1 +_021DA08C: .word 0x021DBB80 +_021DA090: .word 0x021DBB20 +_021DA094: .word 0x021DBAC8 +_021DA098: .word 0x0000057D +_021DA09C: .word 0x021DBB14 +_021DA0A0: .word 0x021DBAF0 +_021DA0A4: .word 0x00000618 + thumb_func_end MOD63_021D9F38 + + thumb_func_start MOD63_021DA0A8 +MOD63_021DA0A8: ; 0x021DA0A8 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + mov r5, #0xa3 + lsl r5, r5, #2 + cmp r0, #0 + beq _021DA0BA + mov r0, #3 + strb r0, [r4, r5] +_021DA0BA: + ldrb r0, [r4, r5] + cmp r0, #3 + bhi _021DA116 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DA0CC: ; jump table + .short _021DA0D4 - _021DA0CC - 2 ; case 0 + .short _021DA0E2 - _021DA0CC - 2 ; case 1 + .short _021DA0F4 - _021DA0CC - 2 ; case 2 + .short _021DA10C - _021DA0CC - 2 ; case 3 +_021DA0D4: + add r0, r4, #0 + bl MOD63_021DA11C + ldrb r0, [r4, r5] + add r0, r0, #1 + strb r0, [r4, r5] + b _021DA116 +_021DA0E2: + mov r0, #0xa3 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD63_021DA158 + ldrb r0, [r4, r5] + add r0, r0, #1 + strb r0, [r4, r5] + b _021DA116 +_021DA0F4: + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r1, [r4, #4] + add r0, r4, r0 + bl MOD63_021DA30C + cmp r0, #0 + beq _021DA116 + ldrb r0, [r4, r5] + add r0, r0, #1 + strb r0, [r4, r5] + b _021DA116 +_021DA10C: + add r0, r4, #0 + bl MOD63_021DA418 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DA116: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021DA0A8 + + thumb_func_start MOD63_021DA11C +MOD63_021DA11C: ; 0x021DA11C + push {r4, lr} + add r4, r0, #0 + bl MOD63_021D88D0 + add r0, r4, #0 + bl MOD63_021D8ADC + mov r0, #0xa6 + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, _021DA150 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + ldr r0, _021DA154 ; =0x0000028E + mov r1, #1 + strb r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021DA150: .word 0x04000050 +_021DA154: .word 0x0000028E + thumb_func_end MOD63_021DA11C + + thumb_func_start MOD63_021DA158 +MOD63_021DA158: ; 0x021DA158 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r4, r0, #0 + mov r0, #0x80 + mov r1, #0x4c + bl FUN_02006670 + mov r1, #0x35 + mov r2, #0x4c + add r5, r0, #0 + bl FUN_02006704 + str r0, [r4, #0x10] + cmp r0, #0 + beq _021DA18E + add r1, r4, #0 + add r1, #0x14 + bl FUN_020B0138 + cmp r0, #0 + bne _021DA192 + ldr r0, [r4, #0x14] + bl FUN_02016A18 + bl ErrorHandling + b _021DA192 +_021DA18E: + bl ErrorHandling +_021DA192: + add r0, r5, #0 + bl FUN_020066F4 + mov r1, #0 + str r1, [sp] + ldr r0, [r4, #0x14] + mov r2, #9 + add r3, r1, #0 + bl MOD63_021D9EA8 + mov r3, #0 + str r3, [sp] + ldr r0, [r4, #0x14] + mov r1, #1 + mov r2, #9 + bl MOD63_021D9EA8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x36 + mov r3, #1 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x3b + mov r3, #1 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x38 + mov r3, #2 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x3d + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x39 + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x3e + mov r3, #3 + bl FUN_020068C8 + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x3a + bl FUN_0200687C + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x3f + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x37 + mov r3, #5 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x3c + mov r3, #5 + bl FUN_020068C8 + mov r0, #0xe + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #1 + bl FUN_0201E74C + ldr r0, [r4, #0xc] + mov r1, #3 + mov r2, #1 + mov r3, #0x40 + bl FUN_020179E0 + mov r0, #1 + lsl r0, r0, #0xc + bl FX_Inv + add r5, r0, #0 + mov r0, #1 + lsl r0, r0, #0xc + bl FX_Inv + mov r1, #0 + str r5, [sp, #0x10] + str r1, [sp, #0x14] + str r1, [sp, #0x18] + str r0, [sp, #0x1c] + bl OS_WaitVBlankIntr + mov r0, #0x60 + str r0, [sp] + ldr r0, [r4, #0xc] + mov r1, #2 + add r2, sp, #0x10 + mov r3, #0x80 + bl FUN_02017BD0 + mov r0, #0x60 + str r0, [sp] + ldr r0, [r4, #0xc] + mov r1, #3 + add r2, sp, #0x10 + mov r3, #0xc0 + bl FUN_02017BD0 + mov r0, #1 + strb r0, [r4, #3] + add sp, #0x20 + pop {r3, r4, r5, pc} + thumb_func_end MOD63_021DA158 + + thumb_func_start MOD63_021DA30C +MOD63_021DA30C: ; 0x021DA30C + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + add r5, r1, #0 + ldrb r1, [r4, #1] + cmp r1, #3 + bhi _021DA3EC + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DA326: ; jump table + .short _021DA32E - _021DA326 - 2 ; case 0 + .short _021DA352 - _021DA326 - 2 ; case 1 + .short _021DA36A - _021DA326 - 2 ; case 2 + .short _021DA3DA - _021DA326 - 2 ; case 3 +_021DA32E: + ldr r0, _021DA3F8 ; =0x000008E3 + cmp r5, r0 + blt _021DA3EC + mov r0, #0x78 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021DA3EC +_021DA352: + bl FUN_0200E308 + cmp r0, #0 + beq _021DA3EC + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [r4, #4] + str r0, [r4, #8] + b _021DA3EC +_021DA36A: + ldr r0, _021DA3FC ; =0x0000097E + cmp r5, r0 + bne _021DA378 + add r0, r4, #0 + add r0, #0x18 + bl MOD63_021DA588 +_021DA378: + ldr r0, _021DA400 ; =0x000009D3 + cmp r5, r0 + bne _021DA386 + add r0, r4, #0 + add r0, #0x18 + bl MOD63_021DA588 +_021DA386: + ldr r0, _021DA404 ; =0x000009F1 + cmp r5, r0 + bne _021DA394 + add r0, r4, #0 + add r0, #0x18 + bl MOD63_021DA588 +_021DA394: + ldr r0, _021DA408 ; =0x00000A1E + cmp r5, r0 + bne _021DA3A2 + add r0, r4, #0 + add r0, #0x18 + bl MOD63_021DA588 +_021DA3A2: + ldr r0, _021DA40C ; =0x00000A64 + cmp r5, r0 + blt _021DA3AE + add r0, r4, #0 + bl MOD63_021DA478 +_021DA3AE: + ldr r0, _021DA410 ; =0x00000A78 + cmp r5, r0 + blt _021DA3EC + mov r0, #0x12 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #0 + ldr r3, _021DA414 ; =0x00007FFF + add r1, r0, #0 + add r2, r0, #0 + bl FUN_0200E1D0 + add r0, r4, #0 + bl MOD63_021DA504 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021DA3EC +_021DA3DA: + bl MOD63_021DA504 + bl FUN_0200E308 + cmp r0, #0 + beq _021DA3EC + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_021DA3EC: + add r0, r4, #0 + bl MOD63_021DA5A0 + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_021DA3F8: .word 0x000008E3 +_021DA3FC: .word 0x0000097E +_021DA400: .word 0x000009D3 +_021DA404: .word 0x000009F1 +_021DA408: .word 0x00000A1E +_021DA40C: .word 0x00000A64 +_021DA410: .word 0x00000A78 +_021DA414: .word 0x00007FFF + thumb_func_end MOD63_021DA30C + + thumb_func_start MOD63_021DA418 +MOD63_021DA418: ; 0x021DA418 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021DA470 ; =0x0000028E + ldrb r0, [r4, r0] + cmp r0, #0 + beq _021DA458 + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #0 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #5 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + bl FUN_02016A18 + ldr r0, _021DA470 ; =0x0000028E + mov r1, #0 + strb r1, [r4, r0] +_021DA458: + ldr r0, _021DA474 ; =0x0000028F + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DA46E + add r0, #0xd + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, _021DA474 ; =0x0000028F + mov r1, #0 + strb r1, [r4, r0] +_021DA46E: + pop {r4, pc} + .align 2, 0 +_021DA470: .word 0x0000028E +_021DA474: .word 0x0000028F + thumb_func_end MOD63_021DA418 + + thumb_func_start MOD63_021DA478 +MOD63_021DA478: ; 0x021DA478 + push {r4, r5, lr} + sub sp, #0x2c + add r4, r0, #0 + ldr r0, [r4, #4] + bl FX_Inv + add r5, r0, #0 + ldr r0, [r4, #4] + bl FX_Inv + mov r1, #0 + str r5, [sp, #0x1c] + str r1, [sp, #0x20] + str r1, [sp, #0x24] + str r0, [sp, #0x28] + ldr r0, [r4, #8] + bl FX_Inv + add r5, r0, #0 + ldr r0, [r4, #8] + bl FX_Inv + mov r1, #0 + str r5, [sp, #0xc] + str r1, [sp, #0x10] + str r1, [sp, #0x14] + str r0, [sp, #0x18] + bl OS_WaitVBlankIntr + mov r0, #1 + ldr r1, [r4, #4] + lsl r0, r0, #0xa + add r1, r1, r0 + mov r0, #3 + lsl r0, r0, #0xc + cmp r1, r0 + bgt _021DA4FE + str r1, [r4, #4] + add r0, sp, #0x1c + str r0, [sp] + mov r0, #0x80 + str r0, [sp, #4] + mov r0, #0x5a + str r0, [sp, #8] + ldr r0, [r4, #0xc] + mov r1, #2 + mov r2, #4 + mov r3, #1 + bl FUN_02017B60 + mov r0, #1 + ldr r1, [r4, #8] + lsl r0, r0, #0xa + add r0, r1, r0 + str r0, [r4, #8] + add r0, sp, #0xc + str r0, [sp] + mov r0, #0xc0 + str r0, [sp, #4] + mov r0, #0x5a + str r0, [sp, #8] + ldr r0, [r4, #0xc] + mov r1, #3 + mov r2, #4 + mov r3, #1 + bl FUN_02017B60 +_021DA4FE: + add sp, #0x2c + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021DA478 + + thumb_func_start MOD63_021DA504 +MOD63_021DA504: ; 0x021DA504 + push {r4, r5, lr} + sub sp, #0x2c + add r4, r0, #0 + ldr r0, [r4, #4] + bl FX_Inv + add r5, r0, #0 + ldr r0, [r4, #4] + bl FX_Inv + mov r1, #0 + str r5, [sp, #0x1c] + str r1, [sp, #0x20] + str r1, [sp, #0x24] + str r0, [sp, #0x28] + ldr r0, [r4, #8] + bl FX_Inv + add r5, r0, #0 + ldr r0, [r4, #8] + bl FX_Inv + mov r1, #0 + str r5, [sp, #0xc] + str r1, [sp, #0x10] + str r1, [sp, #0x14] + str r0, [sp, #0x18] + bl OS_WaitVBlankIntr + mov r0, #2 + ldr r1, [r4, #4] + lsl r0, r0, #0xa + add r0, r1, r0 + str r0, [r4, #4] + add r0, sp, #0x1c + str r0, [sp] + mov r0, #0x80 + str r0, [sp, #4] + mov r0, #0x5a + str r0, [sp, #8] + ldr r0, [r4, #0xc] + mov r1, #2 + mov r2, #4 + mov r3, #1 + bl FUN_02017B60 + mov r0, #2 + ldr r1, [r4, #8] + lsl r0, r0, #0xa + add r0, r1, r0 + str r0, [r4, #8] + add r0, sp, #0xc + str r0, [sp] + mov r0, #0xc0 + str r0, [sp, #4] + mov r0, #0x5a + str r0, [sp, #8] + ldr r0, [r4, #0xc] + mov r1, #3 + mov r2, #4 + mov r3, #1 + bl FUN_02017B60 + add sp, #0x2c + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021DA504 + + thumb_func_start MOD63_021DA588 +MOD63_021DA588: ; 0x021DA588 + mov r1, #1 + strb r1, [r0] + mov r2, #6 + strb r2, [r0, #3] + mov r2, #0 + strb r2, [r0, #1] + ldr r3, _021DA59C ; =0x0201E6E5 + add r0, r1, #0 + bx r3 + nop +_021DA59C: .word 0x0201E6E5 + thumb_func_end MOD63_021DA588 + + thumb_func_start MOD63_021DA5A0 +MOD63_021DA5A0: ; 0x021DA5A0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldrb r0, [r5, #0x18] + add r4, r5, #0 + add r4, #0x18 + cmp r0, #0 + beq _021DA630 + ldrb r3, [r4, #1] + ldr r0, _021DA634 ; =0x021DBF40 + ldrb r1, [r4, #3] + ldrb r0, [r0, r3] + cmp r1, r0 + blo _021DA614 + mov r1, #0 + str r1, [sp] + ldr r6, _021DA638 ; =0x021DBF48 + ldr r0, [r5, #0x14] + ldrb r3, [r6, r3] + mov r2, #1 + lsl r3, r3, #0x1c + lsr r3, r3, #0x18 + bl MOD63_021D9EA8 + mov r0, #0x20 + str r0, [sp] + ldrb r6, [r4, #1] + ldr r3, _021DA63C ; =0x021DBF44 + ldr r0, [r5, #0x14] + ldrb r3, [r3, r6] + mov r1, #0 + mov r2, #1 + lsl r3, r3, #0x1c + lsr r3, r3, #0x18 + bl MOD63_021D9EA8 + mov r0, #0x20 + str r0, [sp] + ldr r0, [r5, #0x14] + mov r1, #1 + ldrb r5, [r4, #1] + ldr r3, _021DA63C ; =0x021DBF44 + add r2, r1, #0 + ldrb r3, [r3, r5] + lsl r3, r3, #0x1c + lsr r3, r3, #0x18 + bl MOD63_021D9EA8 + mov r1, #0 + strb r1, [r4, #3] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + ldrb r0, [r4, #1] + cmp r0, #4 + blo _021DA618 + strb r1, [r4] + b _021DA618 +_021DA614: + add r0, r1, #1 + strb r0, [r4, #3] +_021DA618: + ldrb r0, [r4, #1] + cmp r0, #0 + bne _021DA630 + ldr r0, _021DA634 ; =0x021DBF40 + ldrb r1, [r4, #3] + ldrb r0, [r0] + cmp r1, r0 + blo _021DA630 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 +_021DA630: + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DA634: .word 0x021DBF40 +_021DA638: .word 0x021DBF48 +_021DA63C: .word 0x021DBF44 + thumb_func_end MOD63_021DA5A0 + + thumb_func_start MOD63_021DA640 +MOD63_021DA640: ; 0x021DA640 + push {r4, lr} + sub sp, #0x10 + ldr r4, _021DA66C ; =0x021DBE4C + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_0201D040 + mov r0, #5 + mov r1, #0x4c + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_021DA66C: .word 0x021DBE4C + thumb_func_end MOD63_021DA640 + + thumb_func_start MOD63_021DA670 +MOD63_021DA670: ; 0x021DA670 + push {r3, r4, r5, r6, lr} + sub sp, #0x2c + add r6, r0, #0 + mov r0, #0 + str r6, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r2, #0x4b + add r5, r1, #0 + lsl r2, r2, #2 + ldr r1, [r5, r2] + add r4, r3, #0 + str r1, [sp, #0x14] + add r1, r2, #4 + ldr r1, [r5, r1] + add r3, r6, #0 + str r1, [sp, #0x18] + add r1, r2, #0 + add r1, #8 + ldr r1, [r5, r1] + add r2, #0xc + str r1, [sp, #0x1c] + ldr r1, [r5, r2] + add r2, r6, #0 + str r1, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + ldr r0, [sp, #0x40] + add r1, r6, #0 + bl FUN_02008AA4 + ldr r0, [r5] + mov r1, #0 + str r0, [r4] + ldr r0, [sp, #0x40] + str r0, [r4, #4] + str r1, [r4, #8] + str r1, [r4, #0xc] + mov r0, #1 + str r1, [r4, #0x10] + lsl r0, r0, #0xc + str r0, [r4, #0x14] + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + strh r1, [r4, #0x20] + mov r0, #1 + str r0, [r4, #0x24] + str r0, [r4, #0x28] + mov r0, #0x4c + str r0, [r4, #0x2c] + add sp, #0x2c + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD63_021DA670 + + thumb_func_start MOD63_021DA6E0 +MOD63_021DA6E0: ; 0x021DA6E0 + mov r0, #0x1b + lsl r0, r0, #4 + bx lr + .align 2, 0 + thumb_func_end MOD63_021DA6E0 + + thumb_func_start MOD63_021DA6E8 +MOD63_021DA6E8: ; 0x021DA6E8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r2, #1 + lsl r2, r2, #0x1a + add r5, r0, #0 + ldr r1, [r2] + ldr r0, _021DA9FC ; =0xFFCFFFEF + and r1, r0 + mov r0, #0x10 + orr r0, r1 + str r0, [r2] + bl MOD63_021DA640 + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x80 + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r2, #0x4c + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + mov r0, #0x19 + add r1, r5, #4 + mov r2, #0x4c + bl FUN_02008C9C + mov r2, #1 + str r0, [r5] + add r0, r5, #4 + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + ldr r4, _021DAA00 ; =0x021DBE28 + mov r7, #0 + add r6, r5, #0 +_021DA73C: + ldrb r0, [r4] + add r1, r7, #0 + mov r2, #0x4c + bl FUN_02008DEC + mov r1, #0x4b + lsl r1, r1, #2 + str r0, [r6, r1] + add r7, r7, #1 + add r4, r4, #1 + add r6, r6, #4 + cmp r7, #4 + blt _021DA73C + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe0 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x26 + bl FUN_02008F34 + mov r1, #0x4f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe0 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x27 + mov r3, #0 + bl FUN_02008F34 + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe0 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x28 + mov r3, #0 + bl FUN_02008F34 + mov r1, #0x57 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #3 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe0 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x29 + mov r3, #0 + bl FUN_02008F34 + mov r1, #0x5b + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #4 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe0 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x2a + mov r3, #0 + bl FUN_02008F34 + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + add r0, #0xe4 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x21 + bl FUN_02008FEC + mov r1, #5 + lsl r1, r1, #6 + str r0, [r5, r1] + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + add r0, #0xe4 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x22 + mov r3, #0 + bl FUN_02008FEC + mov r1, #0x15 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + add r0, #0xe4 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x23 + mov r3, #0 + bl FUN_02008FEC + mov r1, #0x16 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #3 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + add r0, #0xe4 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x24 + mov r3, #0 + bl FUN_02008FEC + mov r1, #0x17 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #4 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + add r0, #0xe4 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x25 + mov r3, #0 + bl FUN_02008FEC + mov r1, #6 + lsl r1, r1, #6 + str r0, [r5, r1] + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe8 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x2b + bl FUN_020090AC + mov r1, #0x51 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe8 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x2c + mov r3, #0 + bl FUN_020090AC + mov r1, #0x55 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #2 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe8 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x2d + mov r3, #0 + bl FUN_020090AC + mov r1, #0x59 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #3 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe8 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x2e + mov r3, #0 + bl FUN_020090AC + mov r1, #0x5d + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #4 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe8 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x2f + mov r3, #0 + bl FUN_020090AC + mov r1, #0x61 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r3, #0 + str r3, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xec + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x30 + bl FUN_020090AC + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #1 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xec + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x31 + mov r3, #0 + bl FUN_020090AC + mov r1, #0x56 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #2 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xec + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x32 + mov r3, #0 + bl FUN_020090AC + mov r1, #0x5a + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #3 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xec + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x33 + mov r3, #0 + bl FUN_020090AC + mov r1, #0x5e + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #4 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xec + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x34 + mov r3, #0 + bl FUN_020090AC + mov r1, #0x62 + lsl r1, r1, #2 + add r7, r1, #0 + add r6, r1, #0 + str r0, [r5, r1] + mov r4, #0 + sub r7, #0x4c + sub r6, #0x48 +_021DA9DC: + ldr r0, [r5, r7] + bl FUN_02009A50 + ldr r0, [r5, r6] + bl FUN_02009CF0 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #5 + blt _021DA9DC + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DA9FC: .word 0xFFCFFFEF +_021DAA00: .word 0x021DBE28 + thumb_func_end MOD63_021DA6E8 + + thumb_func_start MOD63_021DAA04 +MOD63_021DAA04: ; 0x021DAA04 + push {r3, r4, r5, r6, r7, lr} + mov r7, #5 + add r5, r0, #0 + mov r4, #0 + lsl r7, r7, #6 +_021DAA0E: + lsl r0, r4, #4 + add r6, r5, r0 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02009C0C + ldr r0, [r6, r7] + bl FUN_02009E04 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #5 + blo _021DAA0E + mov r6, #0x4b + mov r4, #0 + lsl r6, r6, #2 +_021DAA32: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, r6] + bl FUN_02008E2C + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021DAA32 + ldr r0, [r5] + bl FUN_0201FD58 + bl FUN_02009FA0 + bl FUN_0201D12C + bl FUN_0201E08C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD63_021DAA04 + + thumb_func_start MOD63_021DAA5C +MOD63_021DAA5C: ; 0x021DAA5C + push {r4, r5, r6, r7, lr} + sub sp, #0xa4 + ldr r3, _021DABC0 ; =0x021DBE5C + add r5, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x38 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r3, _021DABC4 ; =0x021DBE74 + add r2, sp, #0x20 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r3, _021DABC8 ; =0x021DBE8C + add r2, sp, #8 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, sp, #0x80 + str r0, [sp] + mov r0, #0 + add r1, r5, #0 + mov r2, #1 + add r3, sp, #0x50 + bl MOD63_021DA670 + mov r0, #5 + lsl r0, r0, #0x10 + str r0, [sp, #0x58] + mov r0, #7 + lsl r0, r0, #0x10 + str r0, [sp, #0x5c] + add r0, sp, #0x50 + bl FUN_0201FE94 + mov r1, #0x63 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, r1] + mov r1, #0 + bl FUN_020200BC + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + add r0, sp, #0x80 + str r0, [sp] + mov r0, #1 + add r1, r5, #0 + add r2, r0, #0 + add r3, sp, #0x50 + bl MOD63_021DA670 + mov r0, #5 + lsl r0, r0, #0x10 + str r0, [sp, #0x58] + mov r0, #7 + lsl r0, r0, #0x10 + str r0, [sp, #0x5c] + add r0, sp, #0x50 + bl FUN_0201FE94 + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [r5, r1] + ldr r0, [r5, r1] + mov r1, #0 + bl FUN_020200BC + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + add r0, r5, #0 + mov r1, #3 + bl MOD63_021DAC80 + add r0, sp, #0x80 + str r0, [sp] + mov r0, #2 + add r1, r5, #0 + mov r2, #1 + add r3, sp, #0x50 + bl MOD63_021DA670 + mov r0, #5 + lsl r0, r0, #0x12 + str r0, [sp, #0x58] + mov r0, #7 + lsl r0, r0, #0x10 + str r0, [sp, #0x5c] + add r0, sp, #0x50 + bl FUN_0201FE94 + mov r1, #0x65 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, r1] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0 + str r0, [sp, #4] + add r7, sp, #0x20 + add r6, sp, #8 + add r4, sp, #0x38 +_021DAB58: + add r0, sp, #0x80 + str r0, [sp] + mov r0, #3 + add r1, r5, #0 + mov r2, #0 + add r3, sp, #0x50 + bl MOD63_021DA670 + ldr r0, [r7] + lsl r0, r0, #0xc + str r0, [sp, #0x58] + ldr r0, [r6] + lsl r0, r0, #0xc + str r0, [sp, #0x5c] + add r0, sp, #0x50 + bl FUN_0201FE94 + ldr r1, [r4] + lsl r1, r1, #2 + add r2, r5, r1 + mov r1, #0x63 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + ldr r0, [r4] + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [sp, #4] + add r7, r7, #4 + add r0, r0, #1 + add r6, r6, #4 + add r4, r4, #4 + str r0, [sp, #4] + cmp r0, #6 + blt _021DAB58 + add sp, #0xa4 + pop {r4, r5, r6, r7, pc} + nop +_021DABC0: .word 0x021DBE5C +_021DABC4: .word 0x021DBE74 +_021DABC8: .word 0x021DBE8C + thumb_func_end MOD63_021DAA5C + + thumb_func_start MOD63_021DABCC +MOD63_021DABCC: ; 0x021DABCC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x58 + add r2, r0, #0 + add r0, sp, #0x34 + add r6, r1, #0 + str r0, [sp] + add r1, r2, #0 + mov r0, #4 + mov r2, #0 + add r3, sp, #4 + bl MOD63_021DA670 + mov r0, #2 + str r0, [sp, #0x2c] + mov r5, #0 + add r7, sp, #4 +_021DABEC: + add r0, r6, #0 + add r1, r5, #0 + bl MOD63_021DAF80 + add r4, r0, #0 + add r0, r7, #0 + bl FUN_0201FE94 + str r0, [r4] + mov r1, #0 + bl FUN_020200BC + ldr r0, [r4] + mov r1, #0 + bl FUN_020200A0 + add r5, r5, #1 + cmp r5, #0x10 + blt _021DABEC + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD63_021DABCC + + thumb_func_start MOD63_021DAC18 +MOD63_021DAC18: ; 0x021DAC18 + ldr r3, _021DAC20 ; =0x0201FDED + ldr r0, [r0] + bx r3 + nop +_021DAC20: .word 0x0201FDED + thumb_func_end MOD63_021DAC18 + + thumb_func_start MOD63_021DAC24 +MOD63_021DAC24: ; 0x021DAC24 + lsl r1, r1, #2 + add r1, r0, r1 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r1, r0] + ldr r3, _021DAC34 ; =0x020200A1 + add r1, r2, #0 + bx r3 + .align 2, 0 +_021DAC34: .word 0x020200A1 + thumb_func_end MOD63_021DAC24 + + thumb_func_start MOD63_021DAC38 +MOD63_021DAC38: ; 0x021DAC38 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r2, #0 + mov r2, #0x63 + lsl r2, r2, #2 + add r4, r0, r2 + lsl r5, r1, #2 + ldr r0, [r4, r5] + add r7, r3, #0 + bl FUN_0202011C + add r3, r0, #0 + add r2, sp, #0 + ldmia r3!, {r0, r1} + mov ip, r2 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, ip + str r0, [r2] + str r6, [sp] + str r7, [sp, #4] + ldr r0, [r4, r5] + bl FUN_02020044 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD63_021DAC38 + + thumb_func_start MOD63_021DAC6C +MOD63_021DAC6C: ; 0x021DAC6C + push {r3, lr} + mov r2, #0xb + mov r3, #7 + mov r1, #1 + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + bl MOD63_021DAC38 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD63_021DAC6C + + thumb_func_start MOD63_021DAC80 +MOD63_021DAC80: ; 0x021DAC80 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + bl FUN_02020130 + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_02020130 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021DAC80 + + thumb_func_start MOD63_021DACA0 +MOD63_021DACA0: ; 0x021DACA0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + bl FUN_020200BC + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_020200BC + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021DACA0 + + thumb_func_start MOD63_021DACC0 +MOD63_021DACC0: ; 0x021DACC0 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0202011C + add r5, r0, #0 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + mov r0, #0xe + ldr r1, [sp] + lsl r0, r0, #0xc + sub r1, r1, r0 + mov r0, #0xb + lsl r0, r0, #0x10 + str r1, [sp] + cmp r1, r0 + bgt _021DAD04 + str r0, [sp] + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r2, #0 + bl FUN_02020044 + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_021DAD04: + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r2, #0 + bl FUN_02020044 + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021DACC0 + + thumb_func_start MOD63_021DAD18 +MOD63_021DAD18: ; 0x021DAD18 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + lsl r4, r1, #2 + mov r0, #0x63 + add r1, r5, r4 + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r6, r2, #0 + bl FUN_02020354 + mov r1, #1 + bl FUN_020B19C4 + add r7, r0, #0 + cmp r6, #0 + bne _021DAD44 + ldr r0, _021DAD64 ; =0x021DBFA0 + add r1, r7, #0 + mov r2, #0x20 + bl GX_LoadOBJPltt + pop {r3, r4, r5, r6, r7, pc} +_021DAD44: + ldr r0, _021DAD68 ; =0x021DBF64 + ldr r0, [r0, r4] + lsl r0, r0, #4 + add r1, r5, r0 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r1, r0] + bl FUN_0200955C + ldr r0, [r0, #0xc] + add r1, r7, #0 + mov r2, #0x20 + bl GX_LoadOBJPltt + pop {r3, r4, r5, r6, r7, pc} + nop +_021DAD64: .word 0x021DBFA0 +_021DAD68: .word 0x021DBF64 + thumb_func_end MOD63_021DAD18 + + thumb_func_start MOD63_021DAD6C +MOD63_021DAD6C: ; 0x021DAD6C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + ldr r3, _021DAE44 ; =0x021DBE40 + add r2, sp, #0x18 + str r0, [sp] + str r1, [sp, #4] + ldmia r3!, {r0, r1} + str r2, [sp, #8] + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r3, _021DAE48 ; =0x021DBE34 + str r0, [r2] + ldmia r3!, {r0, r1} + add r2, sp, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r1, _021DAE4C ; =0x000005C8 + str r0, [r2] + ldr r0, [sp, #4] + cmp r0, r1 + blt _021DADE6 + mov r4, #0 +_021DAD98: + ldr r0, [sp, #8] + lsl r7, r4, #2 + ldr r0, [r0, r7] + lsl r1, r0, #2 + ldr r0, [sp] + add r5, r0, r1 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0x24 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + ldr r0, _021DAE50 ; =0x021DBF4C + ldr r1, [sp, #0x24] + ldr r0, [r0, r7] + sub r0, r1, r0 + str r0, [sp, #0x24] + mov r0, #1 + ldr r1, [sp, #0x28] + lsl r0, r0, #0xe + sub r0, r1, r0 + str r0, [sp, #0x28] + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r2, #0 + bl FUN_02020044 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #3 + blo _021DAD98 +_021DADE6: + ldr r1, _021DAE54 ; =0x000005E6 + ldr r0, [sp, #4] + cmp r0, r1 + blt _021DAE3E + mov r5, #0 +_021DADF0: + lsl r7, r5, #2 + add r0, sp, #0xc + ldr r0, [r0, r7] + lsl r1, r0, #2 + ldr r0, [sp] + add r4, r0, r1 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0x24 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + ldr r0, _021DAE58 ; =0x021DBF58 + ldr r1, [sp, #0x24] + ldr r0, [r0, r7] + sub r0, r1, r0 + str r0, [sp, #0x24] + mov r0, #1 + ldr r1, [sp, #0x28] + lsl r0, r0, #0xe + sub r0, r1, r0 + str r0, [sp, #0x28] + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r2, #0 + bl FUN_02020044 + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #3 + blo _021DADF0 +_021DAE3E: + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DAE44: .word 0x021DBE40 +_021DAE48: .word 0x021DBE34 +_021DAE4C: .word 0x000005C8 +_021DAE50: .word 0x021DBF4C +_021DAE54: .word 0x000005E6 +_021DAE58: .word 0x021DBF58 + thumb_func_end MOD63_021DAD6C + + thumb_func_start MOD63_021DAE5C +MOD63_021DAE5C: ; 0x021DAE5C + push {r4, lr} + sub sp, #0x10 + ldr r4, _021DAE88 ; =0x021DBEAC + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_0201D040 + mov r0, #1 + mov r1, #0x4c + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_021DAE88: .word 0x021DBEAC + thumb_func_end MOD63_021DAE5C + + thumb_func_start MOD63_021DAE8C +MOD63_021DAE8C: ; 0x021DAE8C + push {r3, r4, r5, r6, lr} + sub sp, #0x2c + add r4, r1, #0 + mov r1, #0 + add r5, r0, #0 + str r1, [sp] + sub r0, r1, #1 + str r0, [sp, #4] + str r0, [sp, #8] + add r6, r2, #0 + str r1, [sp, #0xc] + mov r2, #0x4b + str r1, [sp, #0x10] + lsl r2, r2, #2 + ldr r0, [r5, r2] + add r3, r1, #0 + str r0, [sp, #0x14] + add r0, r2, #4 + ldr r0, [r5, r0] + str r0, [sp, #0x18] + add r0, r2, #0 + add r0, #8 + ldr r0, [r5, r0] + add r2, #0xc + str r0, [sp, #0x1c] + ldr r0, [r5, r2] + add r2, r1, #0 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r0, r6, #0 + bl FUN_02008AA4 + ldr r0, [r5] + mov r1, #0 + str r0, [r4] + str r6, [r4, #4] + str r1, [r4, #8] + str r1, [r4, #0xc] + mov r0, #1 + str r1, [r4, #0x10] + lsl r0, r0, #0xc + str r0, [r4, #0x14] + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + strh r1, [r4, #0x20] + mov r0, #1 + str r0, [r4, #0x24] + str r0, [r4, #0x28] + mov r0, #0x4c + str r0, [r4, #0x2c] + add sp, #0x2c + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD63_021DAE8C + + thumb_func_start MOD63_021DAEF8 +MOD63_021DAEF8: ; 0x021DAEF8 + push {r4, lr} + mov r1, #0x7d + mov r0, #0x4c + lsl r1, r1, #2 + bl FUN_02016998 + mov r2, #0x7d + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue + add r0, r4, #0 + bl MOD63_021DAFEC + add r0, r4, #0 + bl MOD63_021DB150 + add r0, r4, #0 + pop {r4, pc} + thumb_func_end MOD63_021DAEF8 + + thumb_func_start MOD63_021DAF20 +MOD63_021DAF20: ; 0x021DAF20 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x4c + mov r1, #8 + bl FUN_02016998 + add r4, r0, #0 + mov r0, #0xc + add r6, r5, #0 + mul r6, r0 + mov r0, #0x4c + add r1, r6, #0 + bl FUN_02016998 + mov r1, #0 + add r2, r6, #0 + str r0, [r4, #4] + bl Call_FillMemWithValue + str r5, [r4] + add r0, r4, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD63_021DAF20 + + thumb_func_start MOD63_021DAF4C +MOD63_021DAF4C: ; 0x021DAF4C + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5] + mov r6, #0 + cmp r0, #0 + ble _021DAF72 + add r4, r6, #0 +_021DAF5A: + ldr r0, [r5, #4] + add r0, r0, r4 + ldr r0, [r0, #8] + cmp r0, #0 + beq _021DAF68 + bl FUN_0200CAB4 +_021DAF68: + ldr r0, [r5] + add r6, r6, #1 + add r4, #0xc + cmp r6, r0 + blt _021DAF5A +_021DAF72: + ldr r0, [r5, #4] + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} + thumb_func_end MOD63_021DAF4C + + thumb_func_start MOD63_021DAF80 +MOD63_021DAF80: ; 0x021DAF80 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + cmp r4, r0 + blt _021DAF90 + bl ErrorHandling +_021DAF90: + mov r0, #0xc + ldr r1, [r5, #4] + mul r0, r4 + add r0, r1, r0 + add r0, r0, #4 + pop {r3, r4, r5, pc} + thumb_func_end MOD63_021DAF80 + + thumb_func_start MOD63_021DAF9C +MOD63_021DAF9C: ; 0x021DAF9C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl MOD63_021DB108 + mov r6, #0x73 + mov r4, #0 + lsl r6, r6, #2 +_021DAFAA: + lsl r0, r4, #4 + add r0, r5, r0 + ldr r0, [r0, r6] + cmp r0, #0 + beq _021DAFB8 + bl FUN_0200CAB4 +_021DAFB8: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #3 + blo _021DAFAA + mov r6, #0x55 + mov r4, #0 + mov r7, #0xc + lsl r6, r6, #2 +_021DAFCA: + add r0, r4, #0 + mul r0, r7 + add r0, r5, r0 + ldr r0, [r0, r6] + cmp r0, #0 + beq _021DAFDA + bl FUN_0200CAB4 +_021DAFDA: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0xa + blo _021DAFCA + add r0, r5, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD63_021DAF9C + + thumb_func_start MOD63_021DAFEC +MOD63_021DAFEC: ; 0x021DAFEC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + add r7, r0, #0 + add r3, r1, #0 + ldr r0, _021DB0FC ; =0xFFCFFFEF + mov r1, #0x10 + and r3, r0 + orr r3, r1 + str r3, [r2] + ldr r3, _021DB100 ; =0x04001000 + ldr r2, [r3] + and r0, r2 + orr r0, r1 + str r0, [r3] + bl MOD63_021DAE5C + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x80 + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r2, #0x4c + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + mov r0, #0xa + add r1, r7, #4 + mov r2, #0x4c + bl FUN_02008C9C + ldr r4, _021DB104 ; =0x021DBEBC + str r0, [r7] + mov r6, #0 + add r5, r7, #0 +_021DB040: + ldrb r0, [r4] + add r1, r6, #0 + mov r2, #0x4c + bl FUN_02008DEC + mov r1, #0x4b + lsl r1, r1, #2 + str r0, [r5, r1] + add r6, r6, #1 + add r4, r4, #1 + add r5, r5, #4 + cmp r6, #4 + blt _021DB040 + mov r3, #0 + str r3, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe0 + ldr r0, [r7, r0] + mov r1, #0x80 + mov r2, #4 + bl FUN_02008F34 + mov r1, #0x4f + lsl r1, r1, #2 + str r0, [r7, r1] + mov r3, #0 + str r3, [sp] + mov r2, #3 + str r2, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + add r0, #0xe4 + ldr r0, [r7, r0] + mov r1, #0x80 + bl FUN_02008FEC + mov r1, #5 + lsl r1, r1, #6 + str r0, [r7, r1] + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe8 + ldr r0, [r7, r0] + mov r1, #0x80 + mov r2, #5 + bl FUN_020090AC + mov r1, #0x51 + lsl r1, r1, #2 + str r0, [r7, r1] + mov r3, #0 + str r3, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xec + ldr r0, [r7, r0] + mov r1, #0x80 + mov r2, #6 + bl FUN_020090AC + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r7, r1] + sub r1, #0xc + ldr r0, [r7, r1] + bl FUN_02009A50 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r7, r0] + bl FUN_02009CF0 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021DB0FC: .word 0xFFCFFFEF +_021DB100: .word 0x04001000 +_021DB104: .word 0x021DBEBC + thumb_func_end MOD63_021DAFEC + + thumb_func_start MOD63_021DB108 +MOD63_021DB108: ; 0x021DB108 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009C0C + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r5, r0] + bl FUN_02009E04 + mov r6, #0x4b + mov r4, #0 + lsl r6, r6, #2 +_021DB126: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, r6] + bl FUN_02008E2C + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021DB126 + ldr r0, [r5] + bl FUN_0201FD58 + bl FUN_02009FA0 + bl FUN_0201D12C + bl FUN_0201E08C + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD63_021DB108 + + thumb_func_start MOD63_021DB150 +MOD63_021DB150: ; 0x021DB150 + push {r4, r5, r6, r7, lr} + sub sp, #0x54 + add r7, r0, #0 + mov r6, #0 + add r4, r6, #0 + add r5, r7, #0 +_021DB15C: + add r0, r7, #0 + add r1, sp, #0 + add r2, sp, #0x30 + bl MOD63_021DAE8C + add r0, sp, #0 + str r4, [sp, #8] + str r4, [sp, #0xc] + bl FUN_0201FE94 + mov r1, #0x15 + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200BC + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #2 + lsl r0, r0, #0xc + add r6, r6, #1 + add r4, r4, r0 + add r5, #0xc + cmp r6, #0xa + blt _021DB15C + add sp, #0x54 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD63_021DB150 + + thumb_func_start MOD63_021DB1A0 +MOD63_021DB1A0: ; 0x021DB1A0 + ldr r3, _021DB1A8 ; =0x0201FDED + ldr r0, [r0] + bx r3 + nop +_021DB1A8: .word 0x0201FDED + thumb_func_end MOD63_021DB1A0 + + thumb_func_start MOD63_021DB1AC +MOD63_021DB1AC: ; 0x021DB1AC + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + cmp r1, #0xb4 + bne _021DB1CE + mov r2, #3 + str r2, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #0x71 + lsl r0, r0, #2 + add r0, r4, r0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD63_021DB1F8 + b _021DB1E8 +_021DB1CE: + ldr r0, _021DB1F4 ; =0x0000011D + cmp r1, r0 + bne _021DB1E8 + mov r2, #3 + add r0, #0xb7 + str r2, [sp] + mov r1, #1 + str r1, [sp, #4] + add r0, r4, r0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD63_021DB1F8 +_021DB1E8: + add r0, r4, #0 + bl MOD63_021DB1A0 + add sp, #8 + pop {r4, pc} + nop +_021DB1F4: .word 0x0000011D + thumb_func_end MOD63_021DB1AC + + thumb_func_start MOD63_021DB1F8 +MOD63_021DB1F8: ; 0x021DB1F8 + push {r4, lr} + add r4, r0, #0 + strb r2, [r4] + ldr r2, _021DB228 ; =0xFFFFFFF8 + strb r3, [r4, #1] + add r2, sp + ldrb r0, [r2, #0x10] + strb r0, [r4, #2] + mov r0, #0 + strb r0, [r4, #4] + strb r0, [r4, #3] + mov r0, #0x53 + lsl r0, r0, #2 + add r0, r1, r0 + str r0, [r4, #0xc] + ldrb r0, [r2, #0x14] + add r1, r4, #0 + mov r2, #0xa + strb r0, [r4, #5] + ldr r0, _021DB22C ; =MOD63_021DB2F8 + bl FUN_0200CA44 + str r0, [r4, #8] + pop {r4, pc} + .align 2, 0 +_021DB228: .word 0xFFFFFFF8 +_021DB22C: .word MOD63_021DB2F8 + thumb_func_end MOD63_021DB1F8 + + thumb_func_start MOD63_021DB230 +MOD63_021DB230: ; 0x021DB230 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r1, #0 + str r0, [sp] + cmp r2, #0 + bne _021DB240 + mov r7, #0x40 + b _021DB242 +_021DB240: + mov r7, #0x20 +_021DB242: + mov r5, #0 + cmp r6, #0 + bls _021DB2BE +_021DB248: + ldr r0, [sp] + mov r1, #0xa + bl MOD63_021DB2C8 + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + bl FUN_0201B9EC + lsr r1, r0, #0x1f + lsl r2, r0, #0x19 + sub r2, r2, r1 + mov r0, #0x19 + ror r2, r0 + add r0, r1, r2 + add r0, #0x40 + lsl r0, r0, #0xc + str r0, [sp, #4] + bl FUN_0201B9EC + lsr r1, r0, #0x1f + lsl r2, r0, #0x1a + sub r2, r2, r1 + mov r0, #0x1a + ror r2, r0 + add r0, r1, r2 + add r0, r7, r0 + lsl r0, r0, #0xc + str r0, [sp, #8] + ldr r0, [r4, #4] + add r1, sp, #4 + bl FUN_02020044 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020200BC + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020200A0 + ldr r0, _021DB2C4 ; =MOD63_021DB334 + add r1, r4, #0 + mov r2, #0x14 + bl FUN_0200CA44 + str r0, [r4, #8] + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, r6 + blo _021DB248 +_021DB2BE: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DB2C4: .word MOD63_021DB334 + thumb_func_end MOD63_021DB230 + + thumb_func_start MOD63_021DB2C8 +MOD63_021DB2C8: ; 0x021DB2C8 + push {r4, lr} + mov r4, #0 + mov r2, #0xc +_021DB2CE: + add r1, r4, #0 + mul r1, r2 + add r3, r0, r1 + ldrb r1, [r0, r1] + cmp r1, #0 + bne _021DB2E6 + mov r0, #1 + strb r0, [r3] + mov r0, #0 + strb r0, [r3, #1] + add r0, r3, #0 + pop {r4, pc} +_021DB2E6: + add r1, r4, #1 + lsl r1, r1, #0x18 + lsr r4, r1, #0x18 + cmp r4, #0xa + blo _021DB2CE + bl ErrorHandling + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD63_021DB2C8 + + thumb_func_start MOD63_021DB2F8 +MOD63_021DB2F8: ; 0x021DB2F8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #4] + add r5, r0, #0 + add r0, r1, #1 + strb r0, [r4, #4] + ldrb r0, [r4, #1] + cmp r1, r0 + blo _021DB330 + ldrb r1, [r4] + ldrb r2, [r4, #5] + ldr r0, [r4, #0xc] + bl MOD63_021DB230 + mov r0, #0 + strb r0, [r4, #4] + ldrb r0, [r4, #3] + add r0, r0, #1 + strb r0, [r4, #3] + ldrb r1, [r4, #3] + ldrb r0, [r4, #2] + cmp r1, r0 + blo _021DB330 + add r0, r5, #0 + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #8] +_021DB330: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021DB2F8 + + thumb_func_start MOD63_021DB334 +MOD63_021DB334: ; 0x021DB334 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + mov r0, #3 + ldr r1, [sp, #4] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #4] + ldr r0, [r4, #4] + add r1, r2, #0 + bl FUN_02020044 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + ldrb r0, [r4, #1] + cmp r0, #0x50 + blo _021DB388 + add r0, r5, #0 + bl FUN_0200CAB4 + mov r1, #0 + str r1, [r4, #8] + strb r1, [r4] + ldr r0, [r4, #4] + bl FUN_020200BC + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_020200A0 +_021DB388: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD63_021DB334 + + thumb_func_start MOD63_021DB38C +MOD63_021DB38C: ; 0x021DB38C + ldr r3, _021DB394 ; =MOD63_021DB398 + mov r1, #2 + bx r3 + nop +_021DB394: .word MOD63_021DB398 + thumb_func_end MOD63_021DB38C + + thumb_func_start MOD63_021DB398 +MOD63_021DB398: ; 0x021DB398 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r0, #0 + ldr r0, [r6, #4] + add r7, r1, #0 + str r0, [sp] + ldr r5, _021DB418 ; =0x00000000 + beq _021DB414 +_021DB3A8: + ldr r0, [sp] + ldr r1, [r6] + bl MOD63_021DB2C8 + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + bl FUN_0201B9EC + mov r1, #0xe0 + bl _s32_div_f + add r1, #0xa + lsl r0, r1, #0xc + str r0, [sp, #4] + bl FUN_0201B9EC + mov r1, #0x38 + bl _s32_div_f + ldr r0, _021DB41C ; =0x0000013A + add r0, r1, r0 + lsl r0, r0, #0xc + str r0, [sp, #8] + ldr r0, [r4, #4] + add r1, sp, #4 + bl FUN_02020044 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020200BC + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020200A0 + ldr r0, _021DB420 ; =MOD63_021DB424 + add r1, r4, #0 + mov r2, #0x14 + bl FUN_0200CA44 + str r0, [r4, #8] + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, r7 + blo _021DB3A8 +_021DB414: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DB418: .word 0x00000000 +_021DB41C: .word 0x0000013A +_021DB420: .word MOD63_021DB424 + thumb_func_end MOD63_021DB398 + + thumb_func_start MOD63_021DB424 +MOD63_021DB424: ; 0x021DB424 + push {r4, lr} + add r4, r1, #0 + ldrb r1, [r4, #1] + add r1, r1, #1 + strb r1, [r4, #1] + ldrb r1, [r4, #1] + cmp r1, #8 + blo _021DB44C + bl FUN_0200CAB4 + mov r1, #0 + str r1, [r4, #8] + strb r1, [r4] + ldr r0, [r4, #4] + bl FUN_020200BC + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_020200A0 +_021DB44C: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD63_021DB424 + + thumb_func_start MOD63_021DB450 +MOD63_021DB450: ; 0x021DB450 + push {r4, lr} + ldr r3, _021DB470 ; =0x021064B8 + mov r2, #0 + ldr r3, [r3] + blx r3 + add r4, r0, #0 + bl FUN_0201327C + cmp r4, #0 + bne _021DB468 + bl ErrorHandling +_021DB468: + lsl r0, r4, #0x10 + lsr r0, r0, #0xd + pop {r4, pc} + nop +_021DB470: .word 0x021064B8 + thumb_func_end MOD63_021DB450 + + thumb_func_start MOD63_021DB474 +MOD63_021DB474: ; 0x021DB474 + push {r4, lr} + ldr r3, _021DB494 ; =0x021064C0 + mov r2, #1 + ldr r3, [r3] + blx r3 + add r4, r0, #0 + bne _021DB486 + bl ErrorHandling +_021DB486: + add r0, r4, #0 + bl FUN_020132BC + lsl r0, r4, #0x10 + lsr r0, r0, #0xd + pop {r4, pc} + nop +_021DB494: .word 0x021064C0 + thumb_func_end MOD63_021DB474 + + thumb_func_start MOD63_021DB498 +MOD63_021DB498: ; 0x021DB498 + mov r0, #0x20 + bx lr + thumb_func_end MOD63_021DB498 + + thumb_func_start MOD63_021DB49C +MOD63_021DB49C: ; 0x021DB49C + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + ldr r3, _021DB56C ; =0x021DBECC + add r5, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + mov r0, #0x4c + bl FUN_02006D98 + ldr r7, _021DB570 ; =0x021DBEF0 + str r0, [r5] + mov r4, #0 +_021DB4BA: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + lsl r6, r4, #2 + add r1, sp, #0x10 + ldr r1, [r1, r6] + add r0, sp, #0x1c + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + mov r2, #0 + mov r3, #2 + bl FUN_02068C00 + ldr r0, _021DB574 ; =0x000003FF + lsl r2, r4, #3 + str r0, [sp] + str r4, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + add r3, r7, r2 + ldr r0, [r5] + ldr r2, [r7, r2] + ldr r3, [r3, #4] + add r1, sp, #0x1c + add r6, r5, r6 + bl FUN_020073A0 + mov r1, #6 + mov r2, #1 + str r0, [r6, #4] + bl FUN_02007558 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #3 + blo _021DB4BA + ldr r0, [r5, #8] + mov r1, #0x23 + mov r2, #1 + bl FUN_02007558 + mov r0, #1 + str r0, [r5, #0x10] + bl FUN_02012CC8 + mov r1, #0x12 + mov r0, #0x4c + lsl r1, r1, #0xa + bl FUN_02016998 + str r0, [r5, #0x14] + mov r0, #1 + str r0, [sp] + mov r0, #0x4c + str r0, [sp, #4] + mov r3, #0x12 + ldr r0, _021DB578 ; =MOD63_021DB450 + ldr r1, _021DB57C ; =MOD63_021DB474 + ldr r2, [r5, #0x14] + lsl r3, r3, #0xa + bl FUN_02012CDC + str r0, [r5, #0x18] + bl FUN_0201343C + add r2, r0, #0 + mov r0, #1 + mov r1, #0xe1 + lsl r0, r0, #0xc + lsl r1, r1, #0xe + bl FUN_0201EC94 + mov r0, #0x3d + mov r1, #4 + mov r2, #0x4c + bl FUN_0201318C + add r1, r0, #0 + ldr r0, [r5, #0x18] + mov r2, #0xa + mov r3, #1 + bl FUN_02013194 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_021DB56C: .word 0x021DBECC +_021DB570: .word 0x021DBEF0 +_021DB574: .word 0x000003FF +_021DB578: .word MOD63_021DB450 +_021DB57C: .word MOD63_021DB474 + thumb_func_end MOD63_021DB49C + + thumb_func_start MOD63_021DB580 +MOD63_021DB580: ; 0x021DB580 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + bl FUN_02012DE4 + ldr r0, [r4, #0x14] + bl FUN_02016A18 + ldr r0, [r4] + bl FUN_020072E8 + pop {r4, pc} + thumb_func_end MOD63_021DB580 + + thumb_func_start MOD63_021DB598 +MOD63_021DB598: ; 0x021DB598 + push {r3, lr} + cmp r0, #0 + beq _021DB5A4 + ldr r0, [r0] + bl FUN_020081C4 +_021DB5A4: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD63_021DB598 + + thumb_func_start MOD63_021DB5A8 +MOD63_021DB5A8: ; 0x021DB5A8 + push {r4, lr} + add r4, r0, #0 + beq _021DB5C8 + bl FUN_020222AC + bl FUN_020B02C8 + ldr r0, [r4] + bl FUN_02006ED4 + bl MOD63_021DB934 + mov r0, #1 + mov r1, #0 + bl FUN_020222B4 +_021DB5C8: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD63_021DB5A8 + + thumb_func_start MOD63_021DB5CC +MOD63_021DB5CC: ; 0x021DB5CC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + add r7, r2, #0 + ldrb r2, [r4, #0x1c] + add r5, r4, #0 + add r6, r1, #0 + add r5, #0x1c + cmp r2, #5 + bls _021DB5E2 + b _021DB6FC +_021DB5E2: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021DB5EE: ; jump table + .short _021DB5FA - _021DB5EE - 2 ; case 0 + .short _021DB63C - _021DB5EE - 2 ; case 1 + .short _021DB658 - _021DB5EE - 2 ; case 2 + .short _021DB690 - _021DB5EE - 2 ; case 3 + .short _021DB6BE - _021DB5EE - 2 ; case 4 + .short _021DB6E4 - _021DB5EE - 2 ; case 5 +_021DB5FA: + ldr r0, _021DB704 ; =0x0400004A + mov r1, #0x3f + ldrh r2, [r0] + add r7, r4, #4 + bic r2, r1 + mov r1, #0x11 + orr r1, r2 + mov r2, #0x20 + orr r1, r2 + strh r1, [r0] + lsl r0, r6, #2 + str r0, [sp] + ldr r0, [r7, r0] + mov r1, #0xc + lsl r2, r2, #5 + bl FUN_02007558 + ldr r0, [sp] + mov r2, #1 + ldr r0, [r7, r0] + mov r1, #0xd + lsl r2, r2, #0xa + bl FUN_02007558 + ldr r0, [sp] + mov r1, #6 + ldr r0, [r7, r0] + mov r2, #0 + bl FUN_02007558 + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] +_021DB63C: + ldr r2, _021DB708 ; =0x021DBED8 + lsl r3, r6, #3 + ldr r2, [r2, r3] + add r0, r4, #0 + add r1, r6, #0 + blx r2 + cmp r0, #0 + beq _021DB6FC + mov r0, #0 + strb r0, [r4, #0x1d] + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] + b _021DB6FC +_021DB658: + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_02013440 + lsl r0, r6, #2 + str r0, [sp, #4] + ldr r1, _021DB70C ; =0x021DBF08 + lsl r6, r6, #3 + ldr r3, [sp, #4] + add r7, r4, #4 + ldr r0, [r4, #0x18] + ldr r1, [r1, r6] + ldr r2, _021DB710 ; =MOD63_021DB940 + ldr r3, [r7, r3] + bl FUN_020133AC + ldr r1, _021DB714 ; =0x021DBF0C + ldr r3, [sp, #4] + ldr r0, [r4, #0x18] + ldr r1, [r1, r6] + ldr r2, _021DB710 ; =MOD63_021DB940 + ldr r3, [r7, r3] + bl FUN_020133AC + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] + b _021DB6FC +_021DB690: + ldr r0, [r4, #0x18] + bl FUN_020133C8 + cmp r0, #0 + bne _021DB6FC + ldr r0, _021DB718 ; =0x021DBEC0 + lsl r1, r6, #2 + ldr r0, [r0, r1] + cmp r7, r0 + blt _021DB6FC + ldr r1, _021DB704 ; =0x0400004A + mov r0, #0x3f + ldrh r2, [r1] + bic r2, r0 + mov r0, #0x10 + orr r2, r0 + mov r0, #0x20 + orr r0, r2 + strh r0, [r1] + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] + b _021DB6FC +_021DB6BE: + ldr r2, _021DB71C ; =0x021DBEDC + lsl r3, r6, #3 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + beq _021DB6FC + lsl r0, r6, #2 + add r0, r4, r0 + ldr r0, [r0, #4] + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + mov r0, #0 + strb r0, [r4, #0x1d] + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] + b _021DB6FC +_021DB6E4: + ldrb r0, [r4, #0x1d] + add r0, r0, #1 + strb r0, [r4, #0x1d] + ldrb r0, [r4, #0x1d] + cmp r0, #0x14 + blo _021DB6FC + mov r0, #0 + strb r0, [r4, #0x1d] + strb r0, [r5] + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DB6FC: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DB704: .word 0x0400004A +_021DB708: .word 0x021DBED8 +_021DB70C: .word 0x021DBF08 +_021DB710: .word MOD63_021DB940 +_021DB714: .word 0x021DBF0C +_021DB718: .word 0x021DBEC0 +_021DB71C: .word 0x021DBEDC + thumb_func_end MOD63_021DB5CC + + thumb_func_start MOD63_021DB720 +MOD63_021DB720: ; 0x021DB720 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r1, #2 + add r0, r5, r0 + ldr r4, [r0, #4] + mov r1, #0 + add r0, r4, #0 + mov r2, #6 + bl FUN_020079E0 + mov r1, #1 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x11 + bl FUN_020079E0 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x8c + bl FUN_020079E0 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x8d + bl FUN_020079E0 + ldrb r0, [r5, #0x1d] + add r0, r0, #1 + strb r0, [r5, #0x1d] + ldrb r0, [r5, #0x1d] + cmp r0, #6 + blo _021DB780 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf3 + bl FUN_02007558 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DB780: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD63_021DB720 + + thumb_func_start MOD63_021DB784 +MOD63_021DB784: ; 0x021DB784 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r1, #2 + add r0, r5, r0 + ldr r4, [r0, #4] + mov r1, #0 + add r0, r4, #0 + sub r2, r1, #3 + bl FUN_020079E0 + mov r1, #1 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x13 + bl FUN_020079E0 + ldrb r0, [r5, #0x1d] + add r0, r0, #1 + strb r0, [r5, #0x1d] + ldrb r0, [r5, #0x1d] + cmp r0, #6 + blo _021DB7CC + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf3 + bl FUN_02007558 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DB7CC: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD63_021DB784 + + thumb_func_start MOD63_021DB7D0 +MOD63_021DB7D0: ; 0x021DB7D0 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r1, #2 + add r0, r5, r0 + ldr r4, [r0, #4] + mov r1, #0 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x10 + bl FUN_020079E0 + mov r1, #1 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x11 + bl FUN_020079E0 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x8c + bl FUN_020079E0 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x8d + bl FUN_020079E0 + ldrb r0, [r5, #0x1d] + add r0, r0, #1 + strb r0, [r5, #0x1d] + ldrb r0, [r5, #0x1d] + cmp r0, #6 + blo _021DB832 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf3 + bl FUN_02007558 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DB832: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021DB7D0 + + thumb_func_start MOD63_021DB838 +MOD63_021DB838: ; 0x021DB838 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r1, #2 + add r0, r5, r0 + ldr r4, [r0, #4] + mov r1, #0 + add r0, r4, #0 + sub r2, r1, #6 + bl FUN_020079E0 + mov r1, #1 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x11 + bl FUN_020079E0 + ldrb r0, [r5, #0x1d] + add r0, r0, #1 + strb r0, [r5, #0x1d] + ldrb r0, [r5, #0x1d] + cmp r0, #6 + blo _021DB880 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf3 + bl FUN_02007558 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DB880: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD63_021DB838 + + thumb_func_start MOD63_021DB884 +MOD63_021DB884: ; 0x021DB884 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r1, #2 + add r0, r5, r0 + ldr r4, [r0, #4] + mov r1, #0 + add r0, r4, #0 + mov r2, #8 + bl FUN_020079E0 + mov r1, #1 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x11 + bl FUN_020079E0 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x8c + bl FUN_020079E0 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x8d + bl FUN_020079E0 + ldrb r0, [r5, #0x1d] + add r0, r0, #1 + strb r0, [r5, #0x1d] + ldrb r0, [r5, #0x1d] + cmp r0, #6 + blo _021DB8E4 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf3 + bl FUN_02007558 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DB8E4: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD63_021DB884 + + thumb_func_start MOD63_021DB8E8 +MOD63_021DB8E8: ; 0x021DB8E8 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r1, #2 + add r0, r5, r0 + ldr r4, [r0, #4] + mov r1, #0 + add r0, r4, #0 + mov r2, #6 + bl FUN_020079E0 + mov r1, #1 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x15 + bl FUN_020079E0 + ldrb r0, [r5, #0x1d] + add r0, r0, #1 + strb r0, [r5, #0x1d] + ldrb r0, [r5, #0x1d] + cmp r0, #6 + blo _021DB930 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf3 + bl FUN_02007558 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DB930: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD63_021DB8E8 + + thumb_func_start MOD63_021DB934 +MOD63_021DB934: ; 0x021DB934 + push {r3, lr} + bl FUN_02013364 + bl FUN_02013388 + pop {r3, pc} + thumb_func_end MOD63_021DB934 + + thumb_func_start MOD63_021DB940 +MOD63_021DB940: ; 0x021DB940 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + bl FUN_0201341C + add r2, sp, #0 + mov r1, #0 + str r1, [r2] + str r1, [r2, #4] + add r4, r0, #0 + str r1, [r2, #8] + bl FUN_0200782C + sub r0, #0x80 + mov r1, #0xac + mul r1, r0 + str r1, [sp] + add r0, r4, #0 + mov r1, #1 + bl FUN_0200782C + sub r0, #0x60 + mov r1, #0xac + mul r1, r0 + str r1, [sp, #4] + mov r0, #0x40 + str r0, [sp, #8] + ldr r0, [r5, #0x20] + ldr r1, [sp] + ldr r0, [r0] + ldr r0, [r0, #4] + add r0, r1, r0 + str r0, [r5, #0x28] + ldr r0, [r5, #0x20] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r1, r0 + str r0, [r5, #0x2c] + ldr r0, [r5, #0x20] + ldr r1, [sp, #8] + ldr r0, [r0] + ldr r0, [r0, #0xc] + add r0, r1, r0 + str r0, [r5, #0x30] + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021DB940 + + .section .rodata + ; 0x021DB9A0 + .incbin "baserom.nds", 0x2B6EC0, 0x478 + + .global MOD63_UNK_021DBE18 +MOD63_UNK_021DBE18: + .incbin "baserom.nds", 0x2B7338, 0x108 + + .section .data + ; 0x021DBF40 + .incbin "baserom.nds", 0x2B7460, 0x60 + + .section .bss + ; 0x021DBFA0 + .space 0x20 + diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt index 69d8e7c0..ddfc29ef 100644 --- a/arm9/undefined_syms.txt +++ b/arm9/undefined_syms.txt @@ -1,12 +1,5 @@ // Overlay -FUN_021D844C = 0x021D844C; -FUN_021D88E4 = 0x021D88E4; -FUN_021D89CC = 0x021D89CC; -FUN_021D8B64 = 0x021D8B64; -FUN_021D8C24 = 0x021D8C24; -FUN_021D917C = 0x021D917C; -MOD63_UNK_021DBE18 = 0x021DBE18; FUN_0222DAEC = 0x0222DAEC; FUN_0222DD1C = 0x0222DD1C; FUN_0222DD38 = 0x0222DD38; @@ -28,8 +21,6 @@ FUN_02213B08 = 0x02213B08; FUN_02213D80 = 0x02213D80; FUN_02213DBC = 0x02213DBC; FUN_02213E24 = 0x02213E24; -FUN_02254A68 = 0x02254A68; -FUN_02254AB8 = 0x02254AB8; // Overlay diff --git a/pokediamond.lcf b/pokediamond.lcf index 3dc929c7..daee270d 100644 --- a/pokediamond.lcf +++ b/pokediamond.lcf @@ -289,355 +289,355 @@ SECTIONS { INCLUDE arm9.bin } > arm9 - .arm9_table : AT (0x0010B800) { + .arm9_table : AT (0x10B800) { INCLUDE arm9_table.bin } >> arm9 - .MODULE_00 : AT (0x0010C400) { + .MODULE_00 : AT (0x10C400) { INCLUDE MODULE_00.bin } >> arm9 - .MODULE_01 : AT (0x0010C600) { + .MODULE_01 : AT (0x10C600) { INCLUDE MODULE_01.bin } >> arm9 - .MODULE_02 : AT (0x0010C800) { + .MODULE_02 : AT (0x10C800) { INCLUDE MODULE_02.bin } >> arm9 - .MODULE_03 : AT (0x0010CA00) { + .MODULE_03 : AT (0x10CA00) { INCLUDE MODULE_03.bin } >> arm9 - .MODULE_04 : AT (0x0010CC00) { + .MODULE_04 : AT (0x10CC00) { INCLUDE MODULE_04.bin } >> arm9 - .MODULE_05 : AT (0x00145400) { + .MODULE_05 : AT (0x145400) { INCLUDE MODULE_05.bin } >> arm9 - .MODULE_06 : AT (0x0016B600) { + .MODULE_06 : AT (0x16B600) { INCLUDE MODULE_06.bin } >> arm9 - .MODULE_07 : AT (0x00184400) { + .MODULE_07 : AT (0x184400) { INCLUDE MODULE_07.bin } >> arm9 - .MODULE_08 : AT (0x00187800) { + .MODULE_08 : AT (0x187800) { INCLUDE MODULE_08.bin } >> arm9 - .MODULE_09 : AT (0x001A3000) { + .MODULE_09 : AT (0x1A3000) { INCLUDE MODULE_09.bin } >> arm9 - .MODULE_10 : AT (0x001AD200) { + .MODULE_10 : AT (0x1AD200) { INCLUDE MODULE_10.bin } >> arm9 - .MODULE_11 : AT (0x001AD400) { + .MODULE_11 : AT (0x1AD400) { INCLUDE MODULE_11.bin } >> arm9 - .MODULE_12 : AT (0x001DFE00) { + .MODULE_12 : AT (0x1DFE00) { INCLUDE MODULE_12.bin } >> arm9 - .MODULE_13 : AT (0x001F9200) { + .MODULE_13 : AT (0x1F9200) { INCLUDE MODULE_13.bin } >> arm9 - .MODULE_14 : AT (0x00227E00) { + .MODULE_14 : AT (0x227E00) { INCLUDE MODULE_14.bin } >> arm9 - .MODULE_15 : AT (0x00237400) { + .MODULE_15 : AT (0x237400) { INCLUDE MODULE_15.bin } >> arm9 - .MODULE_16 : AT (0x0023BC00) { + .MODULE_16 : AT (0x23BC00) { INCLUDE MODULE_16.bin } >> arm9 - .MODULE_17 : AT (0x00264200) { + .MODULE_17 : AT (0x264200) { INCLUDE MODULE_17.bin } >> arm9 - .MODULE_18 : AT (0x0026B200) { + .MODULE_18 : AT (0x26B200) { INCLUDE MODULE_18.bin } >> arm9 - .MODULE_19 : AT (0x00283000) { + .MODULE_19 : AT (0x283000) { INCLUDE MODULE_19.bin } >> arm9 - .MODULE_20 : AT (0x00283200) { + .MODULE_20 : AT (0x283200) { INCLUDE MODULE_20.bin } >> arm9 - .MODULE_21 : AT (0x00285600) { + .MODULE_21 : AT (0x285600) { INCLUDE MODULE_21.bin } >> arm9 - .MODULE_22 : AT (0x00285C00) { + .MODULE_22 : AT (0x285C00) { INCLUDE MODULE_22.bin } >> arm9 - .MODULE_23 : AT (0x00286C00) { + .MODULE_23 : AT (0x286C00) { INCLUDE MODULE_23.bin } >> arm9 - .MODULE_24 : AT (0x00288600) { + .MODULE_24 : AT (0x288600) { INCLUDE MODULE_24.bin } >> arm9 - .MODULE_25 : AT (0x00289000) { + .MODULE_25 : AT (0x289000) { INCLUDE MODULE_25.bin } >> arm9 - .MODULE_26 : AT (0x00289600) { + .MODULE_26 : AT (0x289600) { INCLUDE MODULE_26.bin } >> arm9 - .MODULE_27 : AT (0x00289E00) { + .MODULE_27 : AT (0x289E00) { INCLUDE MODULE_27.bin } >> arm9 - .MODULE_28 : AT (0x0028AA00) { + .MODULE_28 : AT (0x28AA00) { INCLUDE MODULE_28.bin } >> arm9 - .MODULE_29 : AT (0x0028C200) { + .MODULE_29 : AT (0x28C200) { INCLUDE MODULE_29.bin } >> arm9 - .MODULE_30 : AT (0x0028CC00) { + .MODULE_30 : AT (0x28CC00) { INCLUDE MODULE_30.bin } >> arm9 - .MODULE_31 : AT (0x0028D200) { + .MODULE_31 : AT (0x28D200) { INCLUDE MODULE_31.bin } >> arm9 - .MODULE_32 : AT (0x0028D800) { + .MODULE_32 : AT (0x28D800) { INCLUDE MODULE_32.bin } >> arm9 - .MODULE_33 : AT (0x0028DE00) { + .MODULE_33 : AT (0x28DE00) { INCLUDE MODULE_33.bin } >> arm9 - .MODULE_34 : AT (0x0028E200) { + .MODULE_34 : AT (0x28E200) { INCLUDE MODULE_34.bin } >> arm9 - .MODULE_35 : AT (0x0028E800) { + .MODULE_35 : AT (0x28E800) { INCLUDE MODULE_35.bin } >> arm9 - .MODULE_36 : AT (0x0028F200) { + .MODULE_36 : AT (0x28F200) { INCLUDE MODULE_36.bin } >> arm9 - .MODULE_37 : AT (0x00290000) { + .MODULE_37 : AT (0x290000) { INCLUDE MODULE_37.bin } >> arm9 - .MODULE_38 : AT (0x00290600) { + .MODULE_38 : AT (0x290600) { INCLUDE MODULE_38.bin } >> arm9 - .MODULE_39 : AT (0x00291200) { + .MODULE_39 : AT (0x291200) { INCLUDE MODULE_39.bin } >> arm9 - .MODULE_40 : AT (0x00292000) { + .MODULE_40 : AT (0x292000) { INCLUDE MODULE_40.bin } >> arm9 - .MODULE_41 : AT (0x00292E00) { + .MODULE_41 : AT (0x292E00) { INCLUDE MODULE_41.bin } >> arm9 - .MODULE_42 : AT (0x00294000) { + .MODULE_42 : AT (0x294000) { INCLUDE MODULE_42.bin } >> arm9 - .MODULE_43 : AT (0x00294A00) { + .MODULE_43 : AT (0x294A00) { INCLUDE MODULE_43.bin } >> arm9 - .MODULE_44 : AT (0x00295400) { + .MODULE_44 : AT (0x295400) { INCLUDE MODULE_44.bin } >> arm9 - .MODULE_45 : AT (0x00295A00) { + .MODULE_45 : AT (0x295A00) { INCLUDE MODULE_45.bin } >> arm9 - .MODULE_46 : AT (0x00296400) { + .MODULE_46 : AT (0x296400) { INCLUDE MODULE_46.bin } >> arm9 - .MODULE_47 : AT (0x00296800) { + .MODULE_47 : AT (0x296800) { INCLUDE MODULE_47.bin } >> arm9 - .MODULE_48 : AT (0x00297600) { + .MODULE_48 : AT (0x297600) { INCLUDE MODULE_48.bin } >> arm9 - .MODULE_49 : AT (0x00298000) { + .MODULE_49 : AT (0x298000) { INCLUDE MODULE_49.bin } >> arm9 - .MODULE_50 : AT (0x00298600) { + .MODULE_50 : AT (0x298600) { INCLUDE MODULE_50.bin } >> arm9 - .MODULE_51 : AT (0x00298A00) { + .MODULE_51 : AT (0x298A00) { INCLUDE MODULE_51.bin } >> arm9 - .MODULE_52 : AT (0x00299A00) { + .MODULE_52 : AT (0x299A00) { INCLUDE MODULE_52.bin } >> arm9 - .MODULE_53 : AT (0x00299E00) { + .MODULE_53 : AT (0x299E00) { INCLUDE MODULE_53.bin } >> arm9 - .MODULE_54 : AT (0x0029C400) { + .MODULE_54 : AT (0x29C400) { INCLUDE MODULE_54.bin } >> arm9 - .MODULE_55 : AT (0x0029E800) { + .MODULE_55 : AT (0x29E800) { INCLUDE MODULE_55.bin } >> arm9 - .MODULE_56 : AT (0x002A1A00) { + .MODULE_56 : AT (0x2A1A00) { INCLUDE MODULE_56.bin } >> arm9 - .MODULE_57 : AT (0x002A6200) { + .MODULE_57 : AT (0x2A6200) { INCLUDE MODULE_57.bin } >> arm9 - .MODULE_58 : AT (0x002A8800) { + .MODULE_58 : AT (0x2A8800) { INCLUDE MODULE_58.bin } >> arm9 - .MODULE_59 : AT (0x002A9E00) { + .MODULE_59 : AT (0x2A9E00) { INCLUDE MODULE_59.bin } >> arm9 - .MODULE_60 : AT (0x002ACC00) { + .MODULE_60 : AT (0x2ACC00) { INCLUDE MODULE_60.bin } >> arm9 - .MODULE_61 : AT (0x002ADA00) { + .MODULE_61 : AT (0x2ADA00) { INCLUDE MODULE_61.bin } >> arm9 - .MODULE_62 : AT (0x002AEC00) { + .MODULE_62 : AT (0x2AEC00) { INCLUDE MODULE_62.bin } >> arm9 - .MODULE_63 : AT (0x002B2A00) { + .MODULE_63 : AT (0x2B2A00) { INCLUDE MODULE_63.bin } >> arm9 - .MODULE_64 : AT (0x002B7600) { + .MODULE_64 : AT (0x2B7600) { INCLUDE MODULE_64.bin } >> arm9 - .MODULE_65 : AT (0x002B9400) { + .MODULE_65 : AT (0x2B9400) { INCLUDE MODULE_65.bin } >> arm9 - .MODULE_66 : AT (0x002BC400) { + .MODULE_66 : AT (0x2BC400) { INCLUDE MODULE_66.bin } >> arm9 - .MODULE_67 : AT (0x002BEC00) { + .MODULE_67 : AT (0x2BEC00) { INCLUDE MODULE_67.bin } >> arm9 - .MODULE_68 : AT (0x002C1200) { + .MODULE_68 : AT (0x2C1200) { INCLUDE MODULE_68.bin } >> arm9 - .MODULE_69 : AT (0x002C2800) { + .MODULE_69 : AT (0x2C2800) { INCLUDE MODULE_69.bin } >> arm9 - .MODULE_70 : AT (0x002C4C00) { + .MODULE_70 : AT (0x2C4C00) { INCLUDE MODULE_70.bin } >> arm9 - .MODULE_71 : AT (0x002C5C00) { + .MODULE_71 : AT (0x2C5C00) { INCLUDE MODULE_71.bin } >> arm9 - .MODULE_72 : AT (0x002C9C00) { + .MODULE_72 : AT (0x2C9C00) { INCLUDE MODULE_72.bin } >> arm9 - .MODULE_73 : AT (0x002C9E00) { + .MODULE_73 : AT (0x2C9E00) { INCLUDE MODULE_73.bin } >> arm9 - .MODULE_74 : AT (0x002CEA00) { + .MODULE_74 : AT (0x2CEA00) { INCLUDE MODULE_74.bin } >> arm9 - .MODULE_75 : AT (0x002CFE00) { + .MODULE_75 : AT (0x2CFE00) { INCLUDE MODULE_75.bin } >> arm9 - .MODULE_76 : AT (0x002D5C00) { + .MODULE_76 : AT (0x2D5C00) { INCLUDE MODULE_76.bin } >> arm9 - .MODULE_77 : AT (0x002D7C00) { + .MODULE_77 : AT (0x2D7C00) { INCLUDE MODULE_77.bin } >> arm9 - .MODULE_78 : AT (0x002D9800) { + .MODULE_78 : AT (0x2D9800) { INCLUDE MODULE_78.bin } >> arm9 - .MODULE_79 : AT (0x002D9E00) { + .MODULE_79 : AT (0x2D9E00) { INCLUDE MODULE_79.bin } >> arm9 - .MODULE_80 : AT (0x002DF200) { + .MODULE_80 : AT (0x2DF200) { INCLUDE MODULE_80.bin } >> arm9 - .MODULE_81 : AT (0x002E9A00) { + .MODULE_81 : AT (0x2E9A00) { INCLUDE MODULE_81.bin } >> arm9 - .MODULE_82 : AT (0x002EF000) { + .MODULE_82 : AT (0x2EF000) { INCLUDE MODULE_82.bin } >> arm9 - .MODULE_83 : AT (0x002F1600) { + .MODULE_83 : AT (0x2F1600) { INCLUDE MODULE_83.bin } >> arm9 - .MODULE_84 : AT (0x002FFA00) { + .MODULE_84 : AT (0x2FFA00) { INCLUDE MODULE_84.bin } >> arm9 - .MODULE_85 : AT (0x00303400) { + .MODULE_85 : AT (0x303400) { INCLUDE MODULE_85.bin } >> arm9 - .MODULE_86 : AT (0x0030C600) { + .MODULE_86 : AT (0x30C600) { INCLUDE MODULE_86.bin } >> arm9 |