diff options
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | arm9/arm9.lcf | 188 | ||||
-rw-r--r-- | arm9/arm9.lsf | 25 | ||||
-rw-r--r-- | arm9/asm/unk_02000E0C.s | 4 | ||||
-rw-r--r-- | arm9/asm/unk_020023C0.s | 72 | ||||
-rw-r--r-- | arm9/asm/unk_02006864.s | 2068 | ||||
-rw-r--r-- | arm9/asm/unk_02046030.s | 30 | ||||
-rw-r--r-- | arm9/global.inc | 134 | ||||
-rw-r--r-- | arm9/modules/05/asm/module_05.s | 72 | ||||
-rw-r--r-- | arm9/modules/11/asm/module_11.s | 694 | ||||
-rw-r--r-- | arm9/modules/12/asm/module_12.s | 48108 | ||||
-rw-r--r-- | arm9/undefined_syms.txt | 100 | ||||
-rw-r--r-- | global.inc | 4 |
13 files changed, 49927 insertions, 1574 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index ef9276a4..d7525783 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,4 +8,4 @@ enable_language(ASM) file(GLOB_RECURSE SOURCES RELATIVE ${CMAKE_SOURCE_DIR} "*.c") add_executable(PokeDiamond ${SOURCES}) -target_include_directories(PokeDiamond PRIVATE include) +target_include_directories(PokeDiamond PRIVATE include include-mw arm9/lib/include) diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 3a4e620a..b9a69071 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -22,7 +22,7 @@ MEMORY { MODULE_09 (RWX) : ORIGIN=0x02211E60, LENGTH=0 MODULE_10 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_11 (RWX) : ORIGIN=0x0222D5C0, LENGTH=0 - MODULE_12 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_12 (RWX) : ORIGIN=0x0222D5C0, LENGTH=0 MODULE_13 (RWX) : ORIGIN=0, LENGTH=0 MODULE_14 (RWX) : ORIGIN=0, LENGTH=0 MODULE_15 (RWX) : ORIGIN=0, LENGTH=0 @@ -253,92 +253,92 @@ SECTIONS { .overlay : AT (0x107800) { OVERLAY_TABLE(SDK_MODULE_00, 0) - OVERLAY_TABLE(SDK_MODULE_01, 1) - OVERLAY_TABLE(SDK_MODULE_02, 2) - OVERLAY_TABLE(SDK_MODULE_03, 3) - OVERLAY_TABLE(SDK_MODULE_04, 4) - OVERLAY_TABLE(SDK_MODULE_05, 5) - OVERLAY_TABLE(SDK_MODULE_06, 6) - OVERLAY_TABLE(SDK_MODULE_07, 7) - OVERLAY_TABLE(SDK_MODULE_08, 8) - OVERLAY_TABLE(SDK_MODULE_09, 9) - OVERLAY_TABLE(SDK_MODULE_10, 10) - OVERLAY_TABLE(SDK_MODULE_11, 11) - OVERLAY_TABLE(SDK_MODULE_12, 12) - OVERLAY_TABLE(SDK_MODULE_13, 13) - OVERLAY_TABLE(SDK_MODULE_14, 14) - OVERLAY_TABLE(SDK_MODULE_15, 15) - OVERLAY_TABLE(SDK_MODULE_16, 16) - OVERLAY_TABLE(SDK_MODULE_17, 17) - OVERLAY_TABLE(SDK_MODULE_18, 18) - OVERLAY_TABLE(SDK_MODULE_19, 19) - OVERLAY_TABLE(SDK_MODULE_20, 20) - OVERLAY_TABLE(SDK_MODULE_21, 21) - OVERLAY_TABLE(SDK_MODULE_22, 22) - OVERLAY_TABLE(SDK_MODULE_23, 23) - OVERLAY_TABLE(SDK_MODULE_24, 24) - OVERLAY_TABLE(SDK_MODULE_25, 25) - OVERLAY_TABLE(SDK_MODULE_26, 26) - OVERLAY_TABLE(SDK_MODULE_27, 27) - OVERLAY_TABLE(SDK_MODULE_28, 28) - OVERLAY_TABLE(SDK_MODULE_29, 29) - OVERLAY_TABLE(SDK_MODULE_30, 30) - OVERLAY_TABLE(SDK_MODULE_31, 31) - OVERLAY_TABLE(SDK_MODULE_32, 32) - OVERLAY_TABLE(SDK_MODULE_33, 33) - OVERLAY_TABLE(SDK_MODULE_34, 34) - OVERLAY_TABLE(SDK_MODULE_35, 35) - OVERLAY_TABLE(SDK_MODULE_36, 36) - OVERLAY_TABLE(SDK_MODULE_37, 37) - OVERLAY_TABLE(SDK_MODULE_38, 38) - OVERLAY_TABLE(SDK_MODULE_39, 39) - OVERLAY_TABLE(SDK_MODULE_40, 40) - OVERLAY_TABLE(SDK_MODULE_41, 41) - OVERLAY_TABLE(SDK_MODULE_42, 42) - OVERLAY_TABLE(SDK_MODULE_43, 43) - OVERLAY_TABLE(SDK_MODULE_44, 44) - OVERLAY_TABLE(SDK_MODULE_45, 45) - OVERLAY_TABLE(SDK_MODULE_46, 46) - OVERLAY_TABLE(SDK_MODULE_47, 47) - OVERLAY_TABLE(SDK_MODULE_48, 48) - OVERLAY_TABLE(SDK_MODULE_49, 49) - OVERLAY_TABLE(SDK_MODULE_50, 50) - OVERLAY_TABLE(SDK_MODULE_51, 51) - OVERLAY_TABLE(SDK_MODULE_52, 52) - OVERLAY_TABLE(SDK_MODULE_53, 53) - OVERLAY_TABLE(SDK_MODULE_54, 54) - OVERLAY_TABLE(SDK_MODULE_55, 55) - OVERLAY_TABLE(SDK_MODULE_56, 56) - OVERLAY_TABLE(SDK_MODULE_57, 57) - OVERLAY_TABLE(SDK_MODULE_58, 58) - OVERLAY_TABLE(SDK_MODULE_59, 59) - OVERLAY_TABLE(SDK_MODULE_60, 60) - OVERLAY_TABLE(SDK_MODULE_61, 61) - OVERLAY_TABLE(SDK_MODULE_62, 62) - OVERLAY_TABLE(SDK_MODULE_63, 63) - OVERLAY_TABLE(SDK_MODULE_64, 64) - OVERLAY_TABLE(SDK_MODULE_65, 65) - OVERLAY_TABLE(SDK_MODULE_66, 66) - OVERLAY_TABLE(SDK_MODULE_67, 67) - OVERLAY_TABLE(SDK_MODULE_68, 68) - OVERLAY_TABLE(SDK_MODULE_69, 69) - OVERLAY_TABLE(SDK_MODULE_70, 70) - OVERLAY_TABLE(SDK_MODULE_71, 71) - OVERLAY_TABLE(SDK_MODULE_72, 72) - OVERLAY_TABLE(SDK_MODULE_73, 73) - OVERLAY_TABLE(SDK_MODULE_74, 74) - OVERLAY_TABLE(SDK_MODULE_75, 75) - OVERLAY_TABLE(SDK_MODULE_76, 76) - OVERLAY_TABLE(SDK_MODULE_77, 77) - OVERLAY_TABLE(SDK_MODULE_78, 78) - OVERLAY_TABLE(SDK_MODULE_79, 79) - OVERLAY_TABLE(SDK_MODULE_80, 80) - OVERLAY_TABLE(SDK_MODULE_81, 81) - OVERLAY_TABLE(SDK_MODULE_82, 82) - OVERLAY_TABLE(SDK_MODULE_83, 83) - OVERLAY_TABLE(SDK_MODULE_84, 84) - OVERLAY_TABLE(SDK_MODULE_85, 85) - OVERLAY_TABLE(SDK_MODULE_86, 86) + OVERLAY_TABLE(SDK_MODULE_01, 1) + OVERLAY_TABLE(SDK_MODULE_02, 2) + OVERLAY_TABLE(SDK_MODULE_03, 3) + OVERLAY_TABLE(SDK_MODULE_04, 4) + OVERLAY_TABLE(SDK_MODULE_05, 5) + OVERLAY_TABLE(SDK_MODULE_06, 6) + OVERLAY_TABLE(SDK_MODULE_07, 7) + OVERLAY_TABLE(SDK_MODULE_08, 8) + OVERLAY_TABLE(SDK_MODULE_09, 9) + OVERLAY_TABLE(SDK_MODULE_10, 10) + OVERLAY_TABLE(SDK_MODULE_11, 11) + OVERLAY_TABLE(SDK_MODULE_12, 12) + OVERLAY_TABLE(SDK_MODULE_13, 13) + OVERLAY_TABLE(SDK_MODULE_14, 14) + OVERLAY_TABLE(SDK_MODULE_15, 15) + OVERLAY_TABLE(SDK_MODULE_16, 16) + OVERLAY_TABLE(SDK_MODULE_17, 17) + OVERLAY_TABLE(SDK_MODULE_18, 18) + OVERLAY_TABLE(SDK_MODULE_19, 19) + OVERLAY_TABLE(SDK_MODULE_20, 20) + OVERLAY_TABLE(SDK_MODULE_21, 21) + OVERLAY_TABLE(SDK_MODULE_22, 22) + OVERLAY_TABLE(SDK_MODULE_23, 23) + OVERLAY_TABLE(SDK_MODULE_24, 24) + OVERLAY_TABLE(SDK_MODULE_25, 25) + OVERLAY_TABLE(SDK_MODULE_26, 26) + OVERLAY_TABLE(SDK_MODULE_27, 27) + OVERLAY_TABLE(SDK_MODULE_28, 28) + OVERLAY_TABLE(SDK_MODULE_29, 29) + OVERLAY_TABLE(SDK_MODULE_30, 30) + OVERLAY_TABLE(SDK_MODULE_31, 31) + OVERLAY_TABLE(SDK_MODULE_32, 32) + OVERLAY_TABLE(SDK_MODULE_33, 33) + OVERLAY_TABLE(SDK_MODULE_34, 34) + OVERLAY_TABLE(SDK_MODULE_35, 35) + OVERLAY_TABLE(SDK_MODULE_36, 36) + OVERLAY_TABLE(SDK_MODULE_37, 37) + OVERLAY_TABLE(SDK_MODULE_38, 38) + OVERLAY_TABLE(SDK_MODULE_39, 39) + OVERLAY_TABLE(SDK_MODULE_40, 40) + OVERLAY_TABLE(SDK_MODULE_41, 41) + OVERLAY_TABLE(SDK_MODULE_42, 42) + OVERLAY_TABLE(SDK_MODULE_43, 43) + OVERLAY_TABLE(SDK_MODULE_44, 44) + OVERLAY_TABLE(SDK_MODULE_45, 45) + OVERLAY_TABLE(SDK_MODULE_46, 46) + OVERLAY_TABLE(SDK_MODULE_47, 47) + OVERLAY_TABLE(SDK_MODULE_48, 48) + OVERLAY_TABLE(SDK_MODULE_49, 49) + OVERLAY_TABLE(SDK_MODULE_50, 50) + OVERLAY_TABLE(SDK_MODULE_51, 51) + OVERLAY_TABLE(SDK_MODULE_52, 52) + OVERLAY_TABLE(SDK_MODULE_53, 53) + OVERLAY_TABLE(SDK_MODULE_54, 54) + OVERLAY_TABLE(SDK_MODULE_55, 55) + OVERLAY_TABLE(SDK_MODULE_56, 56) + OVERLAY_TABLE(SDK_MODULE_57, 57) + OVERLAY_TABLE(SDK_MODULE_58, 58) + OVERLAY_TABLE(SDK_MODULE_59, 59) + OVERLAY_TABLE(SDK_MODULE_60, 60) + OVERLAY_TABLE(SDK_MODULE_61, 61) + OVERLAY_TABLE(SDK_MODULE_62, 62) + OVERLAY_TABLE(SDK_MODULE_63, 63) + OVERLAY_TABLE(SDK_MODULE_64, 64) + OVERLAY_TABLE(SDK_MODULE_65, 65) + OVERLAY_TABLE(SDK_MODULE_66, 66) + OVERLAY_TABLE(SDK_MODULE_67, 67) + OVERLAY_TABLE(SDK_MODULE_68, 68) + OVERLAY_TABLE(SDK_MODULE_69, 69) + OVERLAY_TABLE(SDK_MODULE_70, 70) + OVERLAY_TABLE(SDK_MODULE_71, 71) + OVERLAY_TABLE(SDK_MODULE_72, 72) + OVERLAY_TABLE(SDK_MODULE_73, 73) + OVERLAY_TABLE(SDK_MODULE_74, 74) + OVERLAY_TABLE(SDK_MODULE_75, 75) + OVERLAY_TABLE(SDK_MODULE_76, 76) + OVERLAY_TABLE(SDK_MODULE_77, 77) + OVERLAY_TABLE(SDK_MODULE_78, 78) + OVERLAY_TABLE(SDK_MODULE_79, 79) + OVERLAY_TABLE(SDK_MODULE_80, 80) + OVERLAY_TABLE(SDK_MODULE_81, 81) + OVERLAY_TABLE(SDK_MODULE_82, 82) + OVERLAY_TABLE(SDK_MODULE_83, 83) + OVERLAY_TABLE(SDK_MODULE_84, 84) + OVERLAY_TABLE(SDK_MODULE_85, 85) + OVERLAY_TABLE(SDK_MODULE_86, 86) } > .overlay .MODULE.00 : AT (0x108400) @@ -497,7 +497,19 @@ SECTIONS { module_11.o (.bss) } >> MODULE_11 - OVERLAY_FILE(12, 0x1DBE00, FILE_1DFE00.o) + .MODULE.12 : AT (0x1DBE00) + { + module_12.o (.text) + module_12.o (.sdata) + module_12.o (.data) + } > MODULE_12 + + .MODULE.12.bss : + { + module_12.o (.sbss) + module_12.o (.bss) + } >> MODULE_12 + OVERLAY_FILE(13, 0x1F5200, FILE_1F9200.o) OVERLAY_FILE(14, 0x223E00, FILE_227E00.o) OVERLAY_FILE(15, 0x233400, FILE_237400.o) diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 3df64d7d..69a380fc 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -58,62 +58,63 @@ Autoload EXT Overlay overlay_00 { Address 0x021D74E0 - Object FILE_10C400.o + Object module_00_dummy.o } Overlay overlay_01 { Address 0x021D74E0 - Object FILE_10C600.o + Object module_01.o } Overlay overlay_02 { Address 0x021D7520 - Object FILE_10C800.o + Object module_02_dummy.o } Overlay overlay_03 { Address 0x01FF8700 - Object FILE_10CA00.o + Object module_03_dummy.o } Overlay overlay_04 { Address 0x021D74E0 - Object FILE_10CC00.o + Object thumb_04.o + Object arm_04.o } Overlay overlay_05 { Address 0x021D74E0 - Object FILE_145400.o + Object module_05.o } Overlay overlay_06 { Address 0x022396A0 - Object FILE_16B600.o + Object module_06.o } Overlay overlay_07 { Address 0x02211E60 - Object FILE_184400.o + Object module_07.o } Overlay overlay_08 { Address 0x02211E60 - Object FILE_187800.o + Object module_08.o } Overlay overlay_09 { Address 0x02211E60 - Object FILE_1A3000.o + Object module_09.o } Overlay overlay_10 { Address 0x021D74E0 - Object FILE_1AD200.o + Object module_10_dummy.o } Overlay overlay_11 { Address 0x0222D5C0 - Object FILE_1AD400.o + Object module_11.o } Overlay overlay_12 { diff --git a/arm9/asm/unk_02000E0C.s b/arm9/asm/unk_02000E0C.s index 50b0dace..9c67c9fd 100644 --- a/arm9/asm/unk_02000E0C.s +++ b/arm9/asm/unk_02000E0C.s @@ -19,7 +19,7 @@ FUN_02000E0C: ; 0x02000E0C cmp r0, r1 beq _02000E2C mov r1, #0x0 - bl FUN_02005FDC + bl HandleLoadOverlay _02000E2C: ldr r0, _02000E74 ; =0x02106FA0 mov r2, #0x0 @@ -51,7 +51,7 @@ _02000E4A: sub r1, r1, #0x1 cmp r0, r1 beq _02000E70 - bl FUN_02005F60 + bl UnloadOverlayByID _02000E70: pop {r3, pc} nop diff --git a/arm9/asm/unk_020023C0.s b/arm9/asm/unk_020023C0.s index 2024d9d7..ef8f06bf 100644 --- a/arm9/asm/unk_020023C0.s +++ b/arm9/asm/unk_020023C0.s @@ -7793,8 +7793,10 @@ _02005F36: bx lr .balign 4 - thumb_func_start FUN_02005F3C -FUN_02005F3C: ; 0x02005F3C + ; Code that handles overlays? + + thumb_func_start FreeOverlayAllocation +FreeOverlayAllocation: ; 0x02005F3C push {r4, lr} add r4, r0, #0x0 ldr r0, [r4, #0x4] @@ -7813,12 +7815,12 @@ _02005F5A: str r0, [r4, #0x4] pop {r4, pc} - thumb_func_start FUN_02005F60 -FUN_02005F60: ; 0x02005F60 + thumb_func_start UnloadOverlayByID +UnloadOverlayByID: ; 0x02005F60 push {r4, lr} add r4, r0, #0x0 - bl FUN_02005F90 - bl FUN_0200610C + bl GetOverlayLoadDestination + bl GetLoadedOverlaysInRegion mov r2, #0x0 add r3, r0, #0x0 _02005F70: @@ -7830,7 +7832,7 @@ _02005F70: bne _02005F86 lsl r1, r2, #0x3 add r0, r0, r1 - bl FUN_02005F3C + bl FreeOverlayAllocation pop {r4, pc} _02005F86: add r2, r2, #0x1 @@ -7839,8 +7841,8 @@ _02005F86: blt _02005F70 pop {r4, pc} - thumb_func_start FUN_02005F90 -FUN_02005F90: ; 0x02005F90 + thumb_func_start GetOverlayLoadDestination +GetOverlayLoadDestination: ; 0x02005F90 push {lr} sub sp, #0x2c add r2, r0, #0x0 @@ -7881,24 +7883,24 @@ _02005FD2: .balign 4 _02005FD8: .word 0x027E0000 - thumb_func_start FUN_02005FDC -FUN_02005FDC: ; 0x02005FDC + thumb_func_start HandleLoadOverlay +HandleLoadOverlay: ; 0x02005FDC push {r3-r7, lr} add r4, r1, #0x0 mov r1, #0x0 mvn r1, r1 add r5, r0, #0x0 str r1, [sp, #0x0] - bl FUN_02006090 + bl CanOverlayBeLoaded cmp r0, #0x0 bne _02005FF4 mov r0, #0x0 pop {r3-r7, pc} _02005FF4: add r0, r5, #0x0 - bl FUN_02005F90 + bl GetOverlayLoadDestination add r7, r0, #0x0 - bl FUN_0200610C + bl GetLoadedOverlaysInRegion add r3, r0, #0x0 mov r6, #0x0 add r1, r3, #0x0 @@ -7942,19 +7944,19 @@ _0200603C: _0200604A: mov r0, #0x0 add r1, r5, #0x0 - bl FUN_02006168 + bl LoadOverlayNormal add r4, r0, #0x0 b _02006076 _02006056: mov r0, #0x0 add r1, r5, #0x0 - bl FUN_02006170 + bl LoadOverlayNoInit add r4, r0, #0x0 b _02006076 _02006062: mov r0, #0x0 add r1, r5, #0x0 - bl FUN_020061A8 + bl LoadOverlayNoInitAsync add r4, r0, #0x0 b _02006076 _0200606E: @@ -7976,14 +7978,14 @@ _0200608C: mov r0, #0x1 pop {r3-r7, pc} - thumb_func_start FUN_02006090 -FUN_02006090: ; 0x02006090 + thumb_func_start CanOverlayBeLoaded +CanOverlayBeLoaded: ; 0x02006090 push {r3-r7, lr} sub sp, #0x10 add r1, sp, #0xc add r2, sp, #0x8 add r4, r0, #0x0 - bl FUN_02006130 + bl GetOverlayRamBounds cmp r0, #0x0 bne _020060A8 add sp, #0x10 @@ -7991,8 +7993,8 @@ FUN_02006090: ; 0x02006090 pop {r3-r7, pc} _020060A8: add r0, r4, #0x0 - bl FUN_02005F90 - bl FUN_0200610C + bl GetOverlayLoadDestination + bl GetLoadedOverlaysInRegion add r5, r0, #0x0 mov r4, #0x0 add r6, sp, #0x4 @@ -8004,7 +8006,7 @@ _020060BA: ldr r0, [r5, #0x0] add r1, r6, #0x0 add r2, r7, #0x0 - bl FUN_02006130 + bl GetOverlayRamBounds cmp r0, #0x1 bne _020060FC ldr r1, [sp, #0x4] @@ -8042,8 +8044,8 @@ _020060FC: pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0200610C -FUN_0200610C: ; 0x0200610C + thumb_func_start GetLoadedOverlaysInRegion +GetLoadedOverlaysInRegion: ; 0x0200610C cmp r0, #0x0 beq _02006118 cmp r0, #0x1 @@ -8064,8 +8066,8 @@ _02006124: .word 0x021C45B0 _02006128: .word 0x021C45F0 _0200612C: .word 0x021C4630 - thumb_func_start FUN_02006130 -FUN_02006130: ; 0x02006130 + thumb_func_start GetOverlayRamBounds +GetOverlayRamBounds: ; 0x02006130 push {r4-r5, lr} sub sp, #0x2c add r3, r0, #0x0 @@ -8094,15 +8096,15 @@ _02006152: pop {r4-r5, pc} .balign 4 - thumb_func_start FUN_02006168 -FUN_02006168: ; 0x02006168 + thumb_func_start LoadOverlayNormal +LoadOverlayNormal: ; 0x02006168 ldr r3, _0200616C ; =FS_LoadOverlay bx r3 .balign 4 _0200616C: .word FS_LoadOverlay - thumb_func_start FUN_02006170 -FUN_02006170: ; 0x02006170 + thumb_func_start LoadOverlayNoInit +LoadOverlayNoInit: ; 0x02006170 push {lr} sub sp, #0x2c add r3, r0, #0x0 @@ -8131,8 +8133,8 @@ _0200619A: pop {pc} .balign 4 - thumb_func_start FUN_020061A8 -FUN_020061A8: ; 0x020061A8 + thumb_func_start LoadOverlayNoInitAsync +LoadOverlayNoInitAsync: ; 0x020061A8 push {lr} sub sp, #0x74 add r3, r0, #0x0 @@ -8289,7 +8291,7 @@ _020062AE: cmp r0, r1 beq _020062BE mov r1, #0x2 - bl FUN_02005FDC + bl HandleLoadOverlay _020062BE: mov r0, #0x1 str r0, [r4, #0x10] @@ -8330,7 +8332,7 @@ _020062F0: mvn r1, r1 cmp r0, r1 beq _0200630A - bl FUN_02005F60 + bl UnloadOverlayByID _0200630A: mov r0, #0x1 pop {r4, pc} diff --git a/arm9/asm/unk_02006864.s b/arm9/asm/unk_02006864.s index fbfb90df..ae663521 100644 --- a/arm9/asm/unk_02006864.s +++ b/arm9/asm/unk_02006864.s @@ -35,7 +35,7 @@ FUN_0200687C: ; 0x0200687C add r7, r0, #0x0
beq _020068C2
add r1, sp, #0x4
- blx FUN_020B0030
+ bl FUN_020B0030
cmp r0, #0x0
beq _020068BC
cmp r4, #0x0
@@ -75,7 +75,7 @@ FUN_020068C8: ; 0x020068C8 add r7, r0, #0x0
beq _0200692C
add r1, sp, #0x4
- blx FUN_020B0180
+ bl FUN_020B0180
cmp r0, #0x0
beq _02006926
cmp r4, #0x0
@@ -144,7 +144,7 @@ FUN_02006948: ; 0x02006948 cmp r0, #0x0
beq _02006A2A
add r1, sp, #0x8
- blx FUN_020B0138
+ bl FUN_020B0138
cmp r0, #0x0
beq _02006A24
ldr r0, [sp, #0x8]
@@ -160,7 +160,7 @@ _02006982: ldr r0, [sp, #0x8]
add r1, r5, #0x0
ldr r0, [r0, #0xc]
- blx DC_FlushRange
+ bl DC_FlushRange
cmp r4, #0x7
bhi _02006A14
add r0, r4, r4
@@ -179,7 +179,7 @@ _0200699C: ; jump table (using 16-bit offset) .short _020069C6 - _0200699C - 2; case 6
.short _020069FA - _0200699C - 2; case 7
_020069AC:
- blx GX_BeginLoadBGExtPltt
+ bl GX_BeginLoadBGExtPltt
ldr r0, [sp, #0x8]
ldr r3, _02006A30 ; =0x020ECBB0
lsl r4, r4, #0x2
@@ -188,10 +188,10 @@ _020069AC: add r1, r6, #0x0
add r2, r5, #0x0
blx r3
- blx GX_EndLoadBGExtPltt
+ bl GX_EndLoadBGExtPltt
b _02006A24
_020069C6:
- blx GXS_BeginLoadBGExtPltt
+ bl GXS_BeginLoadBGExtPltt
ldr r0, [sp, #0x8]
ldr r3, _02006A30 ; =0x020ECBB0
lsl r4, r4, #0x2
@@ -200,10 +200,10 @@ _020069C6: add r1, r6, #0x0
add r2, r5, #0x0
blx r3
- blx GXS_EndLoadBGExtPltt
+ bl GXS_EndLoadBGExtPltt
b _02006A24
_020069E0:
- blx GX_BeginLoadOBJExtPltt
+ bl GX_BeginLoadOBJExtPltt
ldr r0, [sp, #0x8]
ldr r3, _02006A30 ; =0x020ECBB0
lsl r4, r4, #0x2
@@ -212,10 +212,10 @@ _020069E0: add r1, r6, #0x0
add r2, r5, #0x0
blx r3
- blx GX_EndLoadOBJExtPltt
+ bl GX_EndLoadOBJExtPltt
b _02006A24
_020069FA:
- blx GXS_BeginLoadOBJExtPltt
+ bl GXS_BeginLoadOBJExtPltt
ldr r0, [sp, #0x8]
ldr r3, _02006A30 ; =0x020ECBB0
lsl r4, r4, #0x2
@@ -224,7 +224,7 @@ _020069FA: add r1, r6, #0x0
add r2, r5, #0x0
blx r3
- blx GXS_EndLoadOBJExtPltt
+ bl GXS_EndLoadOBJExtPltt
b _02006A24
_02006A14:
ldr r0, [sp, #0x8]
@@ -259,7 +259,7 @@ FUN_02006A34: ; 0x02006A34 add r7, r0, #0x0
beq _02006A80
add r1, sp, #0x4
- blx FUN_020B0088
+ bl FUN_020B0088
cmp r0, #0x0
beq _02006A7A
cmp r4, #0x0
@@ -270,7 +270,7 @@ _02006A60: ldr r0, [sp, #0x4]
add r1, r4, #0x0
ldr r0, [r0, #0x14]
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [sp, #0x4]
ldr r3, _02006A88 ; =0x020ECBA0
lsl r5, r5, #0x2
@@ -303,11 +303,11 @@ FUN_02006A8C: ; 0x02006A8C add r6, r0, #0x0
beq _02006AE0
add r1, sp, #0x4
- blx FUN_020B00F0
+ bl FUN_020B00F0
add r7, r0, #0x0
add r0, r6, #0x0
add r1, sp, #0x8
- blx FUN_020B0138
+ bl FUN_020B0138
cmp r0, #0x0
beq _02006ADA
cmp r7, #0x0
@@ -318,14 +318,14 @@ FUN_02006A8C: ; 0x02006A8C ldr r0, [sp, #0x8]
ldr r1, [sp, #0x4]
add r3, r5, #0x0
- blx FUN_020B10E8
+ bl FUN_020B10E8
b _02006ADA
_02006ACE:
ldr r0, [sp, #0x8]
ldr r3, [sp, #0x24]
add r1, r4, #0x0
add r2, r5, #0x0
- blx FUN_020B1240
+ bl FUN_020B1240
_02006ADA:
add r0, r6, #0x0
bl FUN_02016A18
@@ -346,7 +346,7 @@ FUN_02006AE4: ; 0x02006AE4 ldr r4, _02006B30 ; =0x00000000
beq _02006B28
add r1, sp, #0x4
- blx FUN_020B0088
+ bl FUN_020B0088
cmp r0, #0x0
beq _02006B22
ldr r1, [sp, #0x18]
@@ -388,7 +388,7 @@ FUN_02006B38: ; 0x02006B38 add r4, r0, #0x0
beq _02006B9E
add r1, sp, #0x4
- blx FUN_020B0088
+ bl FUN_020B0088
cmp r0, #0x0
beq _02006B98
ldr r1, [sp, #0x18]
@@ -450,7 +450,7 @@ FUN_02006BB0: ; 0x02006BB0 add r5, r0, #0x0
beq _02006BD6
add r1, r4, #0x0
- blx FUN_020B0030
+ bl FUN_020B0030
cmp r0, #0x0
bne _02006BD6
add r0, r5, #0x0
@@ -473,7 +473,7 @@ FUN_02006BDC: ; 0x02006BDC add r5, r0, #0x0
beq _02006C02
add r1, r4, #0x0
- blx FUN_020B0180
+ bl FUN_020B0180
cmp r0, #0x0
bne _02006C02
add r0, r5, #0x0
@@ -495,7 +495,7 @@ FUN_02006C08: ; 0x02006C08 add r4, r0, #0x0
beq _02006C2C
add r1, r5, #0x0
- blx FUN_020B0138
+ bl FUN_020B0138
cmp r0, #0x0
bne _02006C2C
add r0, r4, #0x0
@@ -517,7 +517,7 @@ FUN_02006C30: ; 0x02006C30 add r5, r0, #0x0
beq _02006C56
add r1, r4, #0x0
- blx FUN_020AFEB8
+ bl FUN_020AFEB8
cmp r0, #0x0
bne _02006C56
add r0, r5, #0x0
@@ -540,7 +540,7 @@ FUN_02006C5C: ; 0x02006C5C add r5, r0, #0x0
beq _02006C82
add r1, r4, #0x0
- blx thunk_FUN_020afda0_2
+ bl thunk_FUN_020afda0_2
cmp r0, #0x0
bne _02006C82
add r0, r5, #0x0
@@ -617,7 +617,7 @@ _02006CFC: beq _02006D10
add r0, r4, #0x0
add r1, r5, #0x0
- blx MI_UncompressLZ8
+ bl MI_UncompressLZ8
add r0, r4, #0x0
bl FUN_02016A18
_02006D10:
@@ -683,7 +683,7 @@ _02006D7C: beq _02006D90
add r0, r4, #0x0
add r1, r5, #0x0
- blx MI_UncompressLZ8
+ bl MI_UncompressLZ8
add r0, r4, #0x0
bl FUN_02016A18
_02006D90:
@@ -736,7 +736,7 @@ FUN_02006D98: ; 0x02006D98 ldr r1, [r4, r1]
mov r0, #0x0
mov r2, #0x4
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r5, #0x0
mov r1, #0xc0
bl FUN_02016998
@@ -746,7 +746,7 @@ FUN_02006D98: ; 0x02006D98 ldr r1, [r4, r1]
mov r0, #0x0
mov r2, #0x4
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r6, #0x0
add r5, r4, #0x0
add r7, r6, #0x0
@@ -754,12 +754,12 @@ _02006E12: add r0, r7, #0x0
add r1, r5, #0x0
mov r2, #0x98
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r6, r6, #0x1
add r5, #0x98
cmp r6, #0x4
blt _02006E12
- blx FUN_020B02C8
+ bl FUN_020B02C8
ldr r2, _02006EC8 ; =0x000002E3
mov r0, #0x0
strb r0, [r4, r2]
@@ -770,7 +770,7 @@ _02006E12: bl LoadFromNarc_2
add r1, sp, #0xc
str r0, [sp, #0x4]
- blx FUN_020B0088
+ bl FUN_020B0088
ldr r0, [sp, #0xc]
mov r1, #0xaf
ldr r0, [r0, #0x4]
@@ -795,7 +795,7 @@ _02006E12: ldrb r1, [r1, #0x0]
ldr r0, [r4, r0]
lsl r2, r2, #0xe
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x0
mov r7, #0xab
ldr r6, _02006ECC ; =0x00005050
@@ -850,7 +850,7 @@ FUN_02006ED4: ; 0x02006ED4 bl FUN_020082A8
add r0, r5, #0x0
bl FUN_020086F4
- blx FUN_020BB394
+ bl FUN_020BB394
mov r6, #0x9f
mov r0, #0x0
ldr r4, _02007250 ; =0x04000444
@@ -910,7 +910,7 @@ _02006F48: add r1, #0x24
blx r2
_02006F56:
- blx FUN_020BB394
+ bl FUN_020BB394
ldr r0, _02007258 ; =0x000002E3
ldrb r0, [r5, r0]
cmp r0, #0x1
@@ -969,7 +969,7 @@ _02006F7E: ldrsh r0, [r0, r1]
mov r1, #0x2
ldrsh r1, [r2, r1]
- blx G3_RotX
+ bl G3_RotX
ldrh r0, [r4, #0x3a]
asr r0, r0, #0x4
lsl r1, r0, #0x2
@@ -978,7 +978,7 @@ _02006F7E: ldrsh r0, [r0, r1]
mov r1, #0x2
ldrsh r1, [r2, r1]
- blx G3_RotY
+ bl G3_RotY
ldrh r0, [r4, #0x3c]
asr r0, r0, #0x4
lsl r1, r0, #0x2
@@ -987,7 +987,7 @@ _02006F7E: ldrsh r0, [r0, r1]
mov r1, #0x2
ldrsh r1, [r2, r1]
- blx G3_RotZ
+ bl G3_RotZ
ldr r0, [r4, #0x28]
lsl r0, r0, #0xc
neg r1, r0
@@ -1120,7 +1120,7 @@ _02006F7E: add r2, r3, r2
asr r1, r1, #0x10
mov r3, r12
- blx FUN_020B0250
+ bl FUN_020B0250
b _02007174
_02007104:
mov r0, #0x34
@@ -1177,7 +1177,7 @@ _02007104: lsl r1, r1, #0x10
asr r1, r1, #0x10
add r2, r6, r2
- blx FUN_020B0250
+ bl FUN_020B0250
_02007174:
add r0, r4, #0x0
add r0, #0x6c
@@ -1340,7 +1340,7 @@ _0200727C: lsl r1, r1, #0x10
ldr r2, _020072E0 ; =0xFFFFFC18
asr r1, r1, #0x10
- blx FUN_020B0250
+ bl FUN_020B0250
_020072BC:
ldr r0, [sp, #0x14]
add r4, #0x98
@@ -1529,7 +1529,7 @@ _02007408: mov r0, #0x0
add r1, r5, #0x0
mov r2, #0x98
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r1, [r4, r6]
mov r0, #0x1
bic r1, r0
@@ -1658,7 +1658,7 @@ _02007408: add r1, r4, r6
add r1, #0x84
mov r2, #0x14
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_02007518:
add r0, r4, r6
add sp, #0xc
@@ -3499,7 +3499,7 @@ FUN_020081C4: ; 0x020081C4 strb r1, [r4, r0]
sub r0, #0x81
add r0, r4, r0
- blx FUN_020B1A24
+ bl FUN_020B1A24
mov r3, #0xae
lsl r3, r3, #0x2
mov r1, #0x20
@@ -3525,7 +3525,7 @@ FUN_020081C4: ; 0x020081C4 ldr r1, [r4, r1]
mov r2, #0x0
add r3, r4, r3
- blx FUN_020B1528
+ bl FUN_020B1528
_02008212:
ldr r0, _02008258 ; =0x000002E2
ldrb r1, [r4, r0]
@@ -3535,7 +3535,7 @@ _02008212: strb r1, [r4, r0]
sub r0, #0x5e
add r0, r4, r0
- blx FUN_020B19DC
+ bl FUN_020B19DC
mov r3, #0xaa
lsl r3, r3, #0x2
add r0, r3, #0x0
@@ -3556,7 +3556,7 @@ _02008212: add r0, r4, r0
mov r2, #0x0
add r3, r4, r3
- blx FUN_020B1240
+ bl FUN_020B1240
_02008252:
pop {r4, pc}
.balign 4
@@ -3652,7 +3652,7 @@ _020082CC: bl LoadFromNarc_2
add r1, sp, #0x58
str r0, [sp, #0x4c]
- blx FUN_020B0088
+ bl FUN_020B0088
ldr r0, [sp, #0x58]
mov r1, #0xaf
ldr r0, [r0, #0x4]
@@ -3767,7 +3767,7 @@ _020083C4: ldr r1, [sp, #0xc]
ldr r0, [sp, #0x14]
lsl r1, r1, #0x1
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
beq _020083F4
mov r0, #0xab
@@ -3786,7 +3786,7 @@ _020083C4: _020083F4:
ldr r1, [sp, #0xc]
add r0, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
beq _02008416
mov r0, #0xab
@@ -3890,7 +3890,7 @@ _020084B4: ldr r1, [sp, #0x8]
ldr r0, [sp, #0x14]
lsl r1, r1, #0x1
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
beq _020084E4
mov r0, #0xab
@@ -3909,7 +3909,7 @@ _020084B4: _020084E4:
ldr r1, [sp, #0x8]
add r0, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
beq _02008504
mov r0, #0xab
@@ -4086,7 +4086,7 @@ _0200862C: ldr r1, [sp, #0x4]
ldr r0, [sp, #0x0]
lsl r1, r1, #0x1
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
beq _02008654
mov r0, #0xab
@@ -4101,7 +4101,7 @@ _0200862C: _02008654:
ldr r1, [sp, #0x4]
add r0, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
beq _02008672
mov r0, #0xab
@@ -4215,7 +4215,7 @@ _02008706: bl LoadFromNarc_2
add r1, sp, #0x18
str r0, [sp, #0x10]
- blx FUN_020B0138
+ bl FUN_020B0138
ldr r0, [sp, #0x18]
mov r7, #0x0
ldr r1, [r0, #0x0]
@@ -4261,7 +4261,7 @@ _0200874A: bl LoadFromNarc_2
add r1, sp, #0x18
str r0, [sp, #0x4]
- blx FUN_020B0138
+ bl FUN_020B0138
ldr r0, [sp, #0x18]
mov r7, #0xad
ldr r0, [r0, #0xc]
@@ -5035,10 +5035,10 @@ FUN_02008D44: ; 0x02008D44 beq _02008D98
b _02008DC4
_02008D5A:
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
cmp r0, #0x40
beq _02008D6A
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
cmp r0, #0x20
bne _02008D7A
_02008D6A:
@@ -5065,10 +5065,10 @@ _02008D8A: bl FUN_0201D194
pop {r4, pc}
_02008D98:
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
cmp r0, #0x30
beq _02008DA8
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
cmp r0, #0x50
bne _02008DB6
_02008DA8:
@@ -5127,7 +5127,7 @@ FUN_02008DEC: ; 0x02008DEC mov r1, #0x0
add r2, r7, #0x0
str r0, [r4, #0x4]
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
str r5, [r4, #0x8]
mov r0, #0x0
str r0, [r4, #0xc]
@@ -6286,7 +6286,7 @@ _0200969C: mov r2, #0x18
add r1, r5, #0x4
mul r2, r3
- blx memcpy
+ bl memcpy
_020096B0:
pop {r4-r6, pc}
.balign 4
@@ -6558,7 +6558,7 @@ FUN_0200986C: ; 0x0200986C add r4, r0, #0x0
add r0, r6, #0x0
add r1, r4, #0x0
- blx FUN_020B0088
+ bl FUN_020B0088
str r5, [r4, #0x4]
add r0, r4, #0x0
pop {r4-r6, pc}
@@ -6576,7 +6576,7 @@ FUN_0200988C: ; 0x0200988C add r4, r0, #0x0
add r0, r7, #0x0
add r1, r4, #0x0
- blx FUN_020B0138
+ bl FUN_020B0138
str r5, [r4, #0x4]
str r6, [r4, #0x8]
add r0, r4, #0x0
@@ -6593,7 +6593,7 @@ FUN_020098B0: ; 0x020098B0 add r4, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
- blx FUN_020AFEB8
+ bl FUN_020AFEB8
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -6608,7 +6608,7 @@ FUN_020098CC: ; 0x020098CC add r4, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
- blx thunk_FUN_020afda0_2
+ bl thunk_FUN_020afda0_2
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -6623,7 +6623,7 @@ FUN_020098E8: ; 0x020098E8 add r4, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
- blx FUN_020AFFD8
+ bl FUN_020AFFD8
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -6638,7 +6638,7 @@ FUN_02009904: ; 0x02009904 add r4, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
- blx thunk_FUN_020afda0
+ bl thunk_FUN_020afda0
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -6799,7 +6799,7 @@ _02009A34: beq _02009A48
add r0, r4, #0x0
add r1, r5, #0x0
- blx MI_UncompressLZ8
+ bl MI_UncompressLZ8
add r0, r4, #0x0
bl FUN_02016A18
_02009A48:
@@ -7367,7 +7367,7 @@ FUN_02009E88: ; 0x02009E88 mov r1, #0x0
bl FUN_02009E54
add r1, r4, #0x0
- blx FUN_020B19C4
+ bl FUN_020B19C4
mov r1, #0x0
mvn r1, r1
cmp r0, r1
@@ -7458,7 +7458,7 @@ _02009F1C: lsl r2, r4, #0x10
lsr r1, r1, #0x10
lsr r2, r2, #0x10
- blx FUN_020B0E34
+ bl FUN_020B0E34
cmp r0, #0x0
bne _02009F48
bl ErrorHandling
@@ -7481,7 +7481,7 @@ _02009F48: lsr r1, r1, #0x10
lsr r2, r2, #0x10
lsr r3, r3, #0x10
- blx FUN_020B0E34
+ bl FUN_020B0E34
cmp r0, #0x0
bne _02009F78
bl ErrorHandling
@@ -7498,11 +7498,11 @@ FUN_02009F80: ; 0x02009F80 ldr r0, [r0, #0x0]
cmp r0, #0x0
beq _02009F98
- blx FUN_020B0870
+ bl FUN_020B0870
ldr r0, _02009F9C ; =0x021C4670
ldr r0, [r0, #0x0]
add r0, #0x1c
- blx FUN_020B0870
+ bl FUN_020B0870
_02009F98:
pop {r3, pc}
nop
@@ -7627,7 +7627,7 @@ FUN_0200A074: ; 0x0200A074 add r2, r1, #0x0
ldr r0, [r0, #0x0]
add r1, r3, #0x0
- blx FUN_020B0C7C
+ bl FUN_020B0C7C
add r4, r0, #0x0
bne _0200A08C
bl ErrorHandling
@@ -7646,7 +7646,7 @@ FUN_0200A094: ; 0x0200A094 ldr r0, [r0, #0x0]
add r1, r3, #0x0
add r0, #0x1c
- blx FUN_020B0C7C
+ bl FUN_020B0C7C
add r4, r0, #0x0
bne _0200A0AE
bl ErrorHandling
@@ -7662,7 +7662,7 @@ FUN_0200A0B8: ; 0x0200A0B8 add r1, r0, #0x0
ldr r0, _0200A0D4 ; =0x021C4670
ldr r0, [r0, #0x0]
- blx FUN_020B0BB0
+ bl FUN_020B0BB0
add r4, r0, #0x0
ldr r0, _0200A0D8 ; =0x0000FFFE
cmp r4, r0
@@ -7682,7 +7682,7 @@ FUN_0200A0DC: ; 0x0200A0DC ldr r0, _0200A0FC ; =0x021C4670
ldr r0, [r0, #0x0]
add r0, #0x1c
- blx FUN_020B0BB0
+ bl FUN_020B0BB0
add r4, r0, #0x0
ldr r0, _0200A100 ; =0x0000FFFE
cmp r4, r0
@@ -7757,7 +7757,7 @@ _0200A166: ldrsh r2, [r5, r2]
ldr r0, _0200A198 ; =0x04000050
ldr r1, [r5, #0x0]
- blx G2x_SetBlendBrightness_
+ bl G2x_SetBlendBrightness_
b _0200A18E
_0200A17C:
mov r0, #0x2
@@ -7767,7 +7767,7 @@ _0200A17C: ldrsh r2, [r5, r2]
ldr r0, _0200A19C ; =0x04001050
ldr r1, [r5, #0x0]
- blx G2x_SetBlendBrightness_
+ bl G2x_SetBlendBrightness_
_0200A18E:
cmp r4, #0x1
bne _0200A196
@@ -7823,12 +7823,12 @@ _0200A1EA: mov r0, #0x12
ldrsh r0, [r5, r0]
add r1, r4, #0x0
- blx _s32_div_f
+ bl _s32_div_f
strh r0, [r5, #0x14]
mov r0, #0x12
ldrsh r0, [r5, r0]
add r1, r4, #0x0
- blx _s32_div_f
+ bl _s32_div_f
strh r1, [r5, #0x16]
mov r0, #0x0
strh r0, [r5, #0x18]
@@ -7850,7 +7850,7 @@ FUN_0200A208: ; 0x0200A208 beq _0200A23A
ldr r0, _0200A264 ; =0x04000050
add r1, r4, #0x0
- blx G2x_SetBlendBrightness_
+ bl G2x_SetBlendBrightness_
str r4, [sp, #0x0]
mov r0, #0x1
str r0, [sp, #0x4]
@@ -7867,7 +7867,7 @@ _0200A23A: ldr r0, _0200A26C ; =0x04001050
add r1, r4, #0x0
add r2, r6, #0x0
- blx G2x_SetBlendBrightness_
+ bl G2x_SetBlendBrightness_
str r4, [sp, #0x0]
mov r0, #0x2
str r0, [sp, #0x4]
@@ -7896,7 +7896,7 @@ FUN_0200A274: ; 0x0200A274 beq _0200A28A
ldr r0, _0200A2A4 ; =0x04000050
add r2, r5, #0x0
- blx G2x_SetBlendBrightness_
+ bl G2x_SetBlendBrightness_
_0200A28A:
mov r0, #0x2
tst r0, r4
@@ -7904,7 +7904,7 @@ _0200A28A: ldr r0, _0200A2A8 ; =0x04001050
add r1, r6, #0x0
add r2, r5, #0x0
- blx G2x_SetBlendBrightness_
+ bl G2x_SetBlendBrightness_
_0200A29A:
add r0, r4, #0x0
bl FUN_0200A2D8
@@ -7919,11 +7919,11 @@ FUN_0200A2AC: ; 0x0200A2AC ldr r0, _0200A2CC ; =0x021C4694
mov r1, #0x0
mov r2, #0x20
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0200A2D0 ; =0x021C4674
mov r1, #0x0
mov r2, #0x20
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0200A2D4 ; =0x021C4674
mov r1, #0x0
str r1, [r0, #0x3c]
@@ -7944,7 +7944,7 @@ FUN_0200A2D8: ; 0x0200A2D8 ldr r0, _0200A30C ; =0x021C4694
mov r1, #0x0
mov r2, #0x20
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0200A310 ; =0x021C4674
mov r1, #0x0
str r1, [r0, #0x3c]
@@ -7955,7 +7955,7 @@ _0200A2F2: ldr r0, _0200A314 ; =0x021C4674
mov r1, #0x0
mov r2, #0x20
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0200A310 ; =0x021C4674
mov r1, #0x0
str r1, [r0, #0x1c]
@@ -8245,7 +8245,7 @@ FUN_0200A4D4: ; 0x0200A4D4 ldr r2, [sp, #0x4]
add r0, r5, r0
add r1, r7, #0x0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r1, _0200A57C ; =0x00091BD3
add r2, r4, #0x1
mul r1, r2
@@ -8332,7 +8332,7 @@ FUN_0200A584: ; 0x0200A584 ldr r2, [sp, #0x4]
add r0, r5, r0
add r1, r7, #0x0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r1, _0200A640 ; =0x00091BD3
add r2, r4, #0x1
mul r1, r2
@@ -11083,13 +11083,13 @@ _0200BAD8: add r0, r1, r0
add r1, r6, r5
mov r2, #0x20
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
b _0200BB00
_0200BAF6:
ldr r1, [sp, #0x0]
add r0, r6, r5
mov r2, #0x20
- blx MI_CpuFill8
+ bl MI_CpuFill8
_0200BB00:
add r4, r4, #0x2
ldrh r1, [r4, #0x8]
@@ -11189,7 +11189,7 @@ _0200BB8A: ldr r1, [r5, #0x0]
add r0, r7, #0x0
bl FUN_0201E00C
- blx FUN_020B0FC0
+ bl FUN_020B0FC0
ldr r0, [r5, #0x8]
cmp r0, #0x1
bne _0200BBD6
@@ -11577,20 +11577,20 @@ FUN_0200BE74: ; 0x0200BE74 cmp r3, #0x0
ble _0200BEA0
lsl r0, r3, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0200BEAE
_0200BEA0:
lsl r0, r3, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0200BEAE:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x8]
add r1, sp, #0x28
mov r0, #0x10
@@ -11598,20 +11598,20 @@ _0200BEAE: cmp r0, #0x0
ble _0200BED0
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0200BEDE
_0200BED0:
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0200BEDE:
- blx _ffix
+ bl _ffix
str r0, [sp, #0xc]
add r1, sp, #0x28
mov r0, #0x14
@@ -11619,20 +11619,20 @@ _0200BEDE: cmp r0, #0x0
ble _0200BF00
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0200BF0E
_0200BF00:
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0200BF0E:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x10]
ldr r0, [sp, #0x4c]
cmp r0, #0x2
@@ -12069,60 +12069,60 @@ _0200C206: cmp r0, #0x0
ble _0200C260
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0200C26E
_0200C260:
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0200C26E:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x4c]
mov r0, #0x2
ldrsh r0, [r5, r0]
cmp r0, #0x0
ble _0200C28E
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0200C29C
_0200C28E:
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0200C29C:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x50]
mov r0, #0x4
ldrsh r0, [r5, r0]
cmp r0, #0x0
ble _0200C2BC
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0200C2CA
_0200C2BC:
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0200C2CA:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x54]
ldr r0, [r5, #0x10]
cmp r0, #0x2
@@ -12965,13 +12965,13 @@ FUN_0200C84C: ; 0x0200C84C add r4, r0, #0x0
ldr r0, _0200C880 ; =0x45800000
add r1, r6, #0x0
- blx _fmul
- blx _ffix
+ bl _fmul
+ bl _ffix
str r0, [r4, #0x0]
ldr r0, _0200C880 ; =0x45800000
add r1, r7, #0x0
- blx _fmul
- blx _ffix
+ bl _fmul
+ bl _ffix
str r0, [r4, #0x4]
add r0, r5, #0x0
add r1, r4, #0x0
@@ -14203,27 +14203,27 @@ _0200D1E0: add r0, r5, r6
add r1, r4, r1
mov r2, #0x20
- blx memcpy
+ bl memcpy
add r0, r6, #0x0
ldr r1, [sp, #0x38]
add r0, #0x20
add r0, r5, r0
add r1, r4, r1
mov r2, #0x20
- blx memcpy
+ bl memcpy
add r0, r6, #0x0
ldr r1, [sp, #0x34]
add r0, #0x40
add r0, r5, r0
add r1, r4, r1
mov r2, #0x20
- blx memcpy
+ bl memcpy
ldr r1, [sp, #0x38]
add r6, #0x60
add r0, r5, r6
add r1, r4, r1
mov r2, #0x20
- blx memcpy
+ bl memcpy
add r0, r7, #0x1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
@@ -14292,7 +14292,7 @@ FUN_0200D274: ; 0x0200D274 ldr r1, [r1, #0x14]
lsl r2, r2, #0x6
add r4, r0, #0x0
- blx memcpy
+ bl memcpy
mov r0, #0x9
mov r3, #0x0
lsl r0, r0, #0x6
@@ -14359,7 +14359,7 @@ FUN_0200D300: ; 0x0200D300 bl LoadFromNarc_2
add r1, sp, #0x18
str r0, [sp, #0x14]
- blx FUN_020B0138
+ bl FUN_020B0138
add r2, sp, #0x20
ldr r1, [sp, #0x18]
ldrb r2, [r2, #0x10]
@@ -15015,7 +15015,7 @@ FUN_0200D858: ; 0x0200D858 add r0, r4, r0
add r1, r5, r1
mov r2, #0x80
- blx memcpy
+ bl memcpy
ldr r0, [sp, #0x28]
mov r1, #0x80
bl FUN_02016998
@@ -15026,7 +15026,7 @@ FUN_0200D858: ; 0x0200D858 str r1, [sp, #0x2c]
add r1, r5, r1
add r6, r0, #0x0
- blx memcpy
+ bl memcpy
ldr r0, [sp, #0x24]
mov r2, #0x20
add r0, #0xb
@@ -15034,18 +15034,18 @@ FUN_0200D858: ; 0x0200D858 add r0, r6, #0x0
add r0, #0x20
add r1, r5, r7
- blx memcpy
+ bl memcpy
ldr r1, [sp, #0x2c]
add r0, r6, #0x0
add r0, #0x40
add r1, r5, r1
mov r2, #0x20
- blx memcpy
+ bl memcpy
add r0, r6, #0x0
add r0, #0x60
add r1, r5, r7
mov r2, #0x20
- blx memcpy
+ bl memcpy
mov r5, #0x0
add r7, r4, #0x4
_0200D8DA:
@@ -15053,7 +15053,7 @@ _0200D8DA: add r0, r7, r0
add r1, r6, #0x0
mov r2, #0x80
- blx memcpy
+ bl memcpy
add r0, r5, #0x1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
@@ -15849,17 +15849,17 @@ FUN_0200DEF4: ; 0x0200DEF4 bl FUN_02009C5C
mov r1, #0x1
str r0, [sp, #0x4]
- blx FUN_020B1A14
+ bl FUN_020B1A14
mov r1, #0x19
add r7, r0, #0x0
add r0, r4, #0x0
lsl r1, r1, #0x8
- blx DC_FlushRange
+ bl DC_FlushRange
mov r2, #0x19
add r0, r4, #0x0
add r1, r7, #0x0
lsl r2, r2, #0x8
- blx GX_LoadOBJ
+ bl GX_LoadOBJ
add r0, r4, #0x0
bl FUN_02016A18
ldr r2, _0200DFC8 ; =0x00000162
@@ -15876,15 +15876,15 @@ FUN_0200DEF4: ; 0x0200DEF4 ldr r1, [sp, #0x4]
bl FUN_02009E54
mov r1, #0x1
- blx FUN_020B19C4
+ bl FUN_020B19C4
add r5, r0, #0x0
add r0, r4, #0x0
mov r1, #0x20
- blx DC_FlushRange
+ bl DC_FlushRange
add r0, r4, #0x0
add r1, r5, #0x0
mov r2, #0x20
- blx GX_LoadOBJPltt
+ bl GX_LoadOBJPltt
add r0, r4, #0x0
bl FUN_02016A18
add sp, #0x28
@@ -16385,12 +16385,12 @@ FUN_0200E3BC: ; 0x0200E3BC bne _0200E3D2
mov r1, #0x0
mov r2, #0x2
- blx GX_LoadBGPltt
+ bl GX_LoadBGPltt
b _0200E3DA
_0200E3D2:
mov r1, #0x0
mov r2, #0x2
- blx GXS_LoadBGPltt
+ bl GXS_LoadBGPltt
_0200E3DA:
ldr r0, _0200E41C ; =0x021C4740
mov r1, #0x1
@@ -16430,11 +16430,11 @@ FUN_0200E420: ; 0x0200E420 add r0, sp, #0x8
mov r1, #0x0
mov r2, #0x2
- blx GX_LoadBGPltt
+ bl GX_LoadBGPltt
add r0, sp, #0x8
mov r1, #0x0
mov r2, #0x2
- blx GXS_LoadBGPltt
+ bl GXS_LoadBGPltt
pop {r3}
pop {r3}
add sp, #0x10
@@ -16446,11 +16446,11 @@ FUN_0200E440: ; 0x0200E440 cmp r0, #0x0
bne _0200E44E
ldr r0, _0200E458 ; =0x0400006C
- blx GXx_SetMasterBrightness_
+ bl GXx_SetMasterBrightness_
pop {r3, pc}
_0200E44E:
ldr r0, _0200E45C ; =0x0400106C
- blx GXx_SetMasterBrightness_
+ bl GXx_SetMasterBrightness_
pop {r3, pc}
nop
_0200E458: .word 0x0400006C
@@ -16994,12 +16994,12 @@ _0200E812: add r0, #0x14
mov r1, #0x0
mov r2, #0x30
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
add r0, #0x44
mov r1, #0x0
mov r2, #0x30
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r2, r4, #0x0
add r2, #0x74
mov r1, #0x18
@@ -17013,7 +17013,7 @@ _0200E83A: add r0, r4, #0x0
mov r1, #0x0
mov r2, #0xc0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
pop {r4, pc}
thumb_func_start FUN_0200E850
@@ -18111,7 +18111,7 @@ FUN_0200F0D0: ; 0x0200F0D0 lsl r2, r4, #0xc
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -18145,7 +18145,7 @@ _0200F116: ldr r1, [sp, #0x4]
asr r3, r4, #0x1f
add r2, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
lsl r2, r2, #0xa
add r0, r0, r2
@@ -18178,7 +18178,7 @@ FUN_0200F14C: ; 0x0200F14C add r0, r4, r0
asr r0, r0, #0x1
lsl r0, r0, #0xc
- blx FX_Div
+ bl FX_Div
pop {r4, pc}
thumb_func_start FUN_0200F164
@@ -18829,7 +18829,7 @@ _0200F60C: bl FUN_0200F5D8
add r1, r0, r6
add r2, r7, #0x0
- blx memcpy
+ bl memcpy
ldr r0, [r5, #0x4]
add r4, r4, #0x1
cmp r4, r0
@@ -18952,7 +18952,7 @@ FUN_0200F6FC: ; 0x0200F6FC lsl r2, r2, #0x2
add r5, r0, #0x0
add r7, r3, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
cmp r4, #0x1
bne _0200F726
mov r0, #0x6
@@ -19028,7 +19028,7 @@ _0200F78E: add r0, #0xc0
add r1, r5, #0x0
add r2, r7, #0x0
- blx memcpy
+ bl memcpy
add r4, r4, #0x1
add r5, r5, r6
cmp r4, #0x2
@@ -20289,14 +20289,14 @@ _020100FA: asr r1, r0, #0x1f
add r2, r0, #0x0
add r3, r1, #0x0
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x8]
ldr r0, [sp, #0x4]
add r6, r1, #0x0
add r1, r7, #0x0
add r2, r0, #0x0
add r3, r7, #0x0
- blx _ll_mul
+ bl _ll_mul
add r2, r0, #0x0
add r3, r1, #0x0
mov r0, #0x2
@@ -20316,7 +20316,7 @@ _020100FA: lsr r2, r2, #0xc
orr r2, r1
sub r0, r0, r2
- blx FX_Sqrt
+ bl FX_Sqrt
asr r2, r0, #0xc
ldr r0, [sp, #0x0]
sub r0, r0, r2
@@ -20752,7 +20752,7 @@ FUN_0201047C: ; 0x0201047C str r3, [sp, #0x1c]
ldr r6, [sp, #0x38]
ldr r7, [sp, #0x3c]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x20]
ldrb r1, [r4, #0x8]
ldr r3, [sp, #0x44]
@@ -20896,7 +20896,7 @@ FUN_020105A0: ; 0x020105A0 asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -20908,7 +20908,7 @@ FUN_020105A0: ; 0x020105A0 asr r7, r1, #0xc
lsl r0, r7, #0x1
mov r1, #0x15
- blx _s32_div_f
+ bl _s32_div_f
add r0, r0, #0x1
lsl r0, r0, #0x1
mov r1, #0xb4
@@ -20916,7 +20916,7 @@ FUN_020105A0: ; 0x020105A0 ldr r0, _02010684 ; =0x0000FFFF
add r1, #0xb4
mul r0, r2
- blx _s32_div_f
+ bl _s32_div_f
lsr r1, r0, #0x1f
add r1, r0, r1
asr r4, r1, #0x1
@@ -21261,7 +21261,7 @@ FUN_02010894: ; 0x02010894 lsl r2, r2, #0x8
add r0, r0, r2
mov r1, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r6, #0x10]
sub r4, r0, #0x1
bmi _020108C6
@@ -21363,7 +21363,7 @@ FUN_02010948: ; 0x02010948 str r0, [r5, #0x14]
mov r1, #0x0
mov r2, #0x38
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r5, #0x10]
add r1, r4, #0x0
str r0, [sp, #0x0]
@@ -21605,7 +21605,7 @@ FUN_02010B40: ; 0x02010B40 str r0, [sp, #0x0]
ldr r0, [r0, #0xc]
ldr r1, _02010C60 ; =0x00003FFF
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x4]
@@ -21758,7 +21758,7 @@ FUN_02010C64: ; 0x02010C64 add r0, r3, #0x0
mul r0, r1
add r1, r2, #0x0
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [r4, #0x4]
add r0, r0, r1
str r0, [r4, #0x0]
@@ -21776,7 +21776,7 @@ FUN_02010C7C: ; 0x02010C7C str r0, [r5, #0x14]
mov r1, #0x0
mov r2, #0x38
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r5, #0x10]
add r1, r4, #0x0
str r0, [sp, #0x0]
@@ -22101,7 +22101,7 @@ FUN_02010F14: ; 0x02010F14 add r0, r3, #0x0
mul r0, r1
add r1, r2, #0x0
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [r4, #0x4]
add r0, r0, r1
str r0, [r4, #0x0]
@@ -22121,7 +22121,7 @@ FUN_02010F2C: ; 0x02010F2C str r0, [r5, #0x14]
mov r1, #0x0
lsl r2, r2, #0x2
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r5, #0x10]
add r1, r4, #0x0
str r0, [sp, #0x0]
@@ -22213,23 +22213,23 @@ FUN_02010FD0: ; 0x02010FD0 add r0, r5, #0x0
mov r1, #0x1
mov r2, #0xc0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0x0
add r0, #0xc0
mov r1, #0x1
mov r2, #0xc0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
b _02011020
_0201100A:
add r0, r5, #0x0
mov r1, #0x0
mov r2, #0xc0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0x0
add r0, #0xc0
mov r1, #0x0
mov r2, #0xc0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
_02011020:
mov r1, #0xc3
lsl r1, r1, #0x2
@@ -22407,7 +22407,7 @@ FUN_0201115C: ; 0x0201115C add r1, r3, #0x0
sub r0, r4, r6
mul r0, r2
- blx _s32_div_f
+ bl _s32_div_f
add r0, r0, r6
cmp r6, r4
bhi _0201117C
@@ -22460,7 +22460,7 @@ FUN_020111AC: ; 0x020111AC mov r1, #0x0
lsl r2, r2, #0x2
str r0, [r5, #0x14]
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r1, r4, #0x0
add r1, #0x23
ldrb r1, [r1, #0x0]
@@ -22567,7 +22567,7 @@ FUN_0201127C: ; 0x0201127C add r7, r3, #0x0
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r2, r0, #0x0
mov r0, #0x2
mov r3, #0x0
@@ -22699,7 +22699,7 @@ FUN_0201137C: ; 0x0201137C add r7, r3, #0x0
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r2, r0, #0x0
mov r0, #0x2
mov r3, #0x0
@@ -23257,7 +23257,7 @@ _020117A4: str r1, [r0, #0x64]
ldr r0, [r0, #0x60]
mov r1, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [sp, #0x8]
add sp, #0xc
pop {r4-r7, pc}
@@ -23780,7 +23780,7 @@ _02011B60: ldr r1, [r6, #0xc]
add r1, r1, r2
ldr r2, [sp, #0x8]
- blx memcpy
+ bl memcpy
ldr r0, [sp, #0x0]
add r4, r4, #0x1
add r5, r5, r7
@@ -24051,7 +24051,7 @@ _02011D52: beq _02011D92
_02011D68:
add r0, r5, #0x0
- blx FUN_020B1A24
+ bl FUN_020B1A24
str r7, [sp, #0x0]
ldr r0, [sp, #0x30]
str r6, [sp, #0x4]
@@ -24113,7 +24113,7 @@ _02011DC6: bl FUN_02011B20
add r0, r7, #0x0
add r1, r4, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [sp, #0x30]
cmp r0, #0x1
bne _02011E08
@@ -24121,7 +24121,7 @@ _02011DC6: add r0, r7, #0x0
add r1, r6, #0x0
add r2, r4, #0x0
- blx GX_LoadOBJ
+ bl GX_LoadOBJ
mov r0, #0x1
str r6, [r5, #0x4]
lsl r0, r0, #0x1a
@@ -24132,7 +24132,7 @@ _02011E08: add r0, r7, #0x0
add r1, r6, #0x0
add r2, r4, #0x0
- blx GXS_LoadOBJ
+ bl GXS_LoadOBJ
ldr r0, _02011E4C ; =0x04001000
str r6, [r5, #0x8]
ldr r1, [r0, #0x0]
@@ -24423,7 +24423,7 @@ _02012018: ldr r1, [sp, #0x0]
add r1, r1, r2
add r2, r6, #0x0
- blx memcpy
+ bl memcpy
ldr r1, [r5, #0x0]
ldr r0, [sp, #0x24]
add r7, r7, #0x1
@@ -24449,7 +24449,7 @@ FUN_02012044: ; 0x02012044 _02012054:
add r0, r4, #0x0
add r1, r5, #0x0
- blx FUN_020B0088
+ bl FUN_020B0088
add r6, r0, #0x0
cmp r5, #0x0
bne _02012066
@@ -24676,7 +24676,7 @@ FUN_020121E8: ; 0x020121E8 _02012204:
ldr r0, [sp, #0x20]
add r1, sp, #0x2c
- blx FUN_020B0088
+ bl FUN_020B0088
cmp r0, #0x0
bne _02012214
bl ErrorHandling
@@ -24842,7 +24842,7 @@ _0201233C: add r0, r0, r1
ldr r1, [sp, #0x18]
add r1, r1, r4
- blx memcpy
+ bl memcpy
ldr r0, [r5, #0x0]
add r6, r6, #0x1
add r0, #0x20
@@ -25016,7 +25016,7 @@ FUN_02012470: ; 0x02012470 bl LoadFromNarc_2
add r1, sp, #0x0
add r5, r0, #0x0
- blx FUN_020B0138
+ bl FUN_020B0138
cmp r0, #0x1
beq _0201249C
bl ErrorHandling
@@ -25025,7 +25025,7 @@ _0201249C: add r1, r4, #0x0
ldr r0, [r0, #0xc]
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r5, #0x0
bl FUN_02016A18
add r0, r4, #0x0
@@ -25156,7 +25156,7 @@ _02012598: .word 0x020ED3C8 thumb_func_start FUN_0201259C
FUN_0201259C: ; 0x0201259C
push {r3, lr}
- blx RTC_Init
+ bl RTC_Init
ldr r3, _020125CC ; =0x021C4808
mov r0, #0x0
add r2, r3, #0x0
@@ -25246,7 +25246,7 @@ FUN_02012634: ; 0x02012634 add r0, #0x2c
add r1, #0x3c
add r3, r4, #0x0
- blx RTC_GetDateTimeAsync
+ bl RTC_GetDateTimeAsync
str r0, [r4, #0xc]
cmp r0, #0x0
beq _02012656
@@ -25377,14 +25377,14 @@ FUN_02012710: ; 0x02012710 bne _02012742
add r0, r6, #0x0
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0x0
bne _02012750
_02012742:
mov r1, #0x19
add r0, r6, #0x0
lsl r1, r1, #0x4
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0x0
bne _02012752
_02012750:
@@ -25401,9 +25401,9 @@ _02012752: str r0, [sp, #0x4]
str r0, [sp, #0x8]
add r0, r2, #0x0
- blx RTC_ConvertDateToDay
+ bl RTC_ConvertDateToDay
add r0, r5, #0x0
- blx RTC_ConvertDateToDay
+ bl RTC_ConvertDateToDay
add r0, r4, #0x0
add sp, #0x10
pop {r4-r6, pc}
@@ -25477,7 +25477,7 @@ FUN_020127C0: ; 0x020127C0 ldr r1, [sp, #0x4]
str r0, [r2, #0x0]
ldr r0, [sp, #0x0]
- blx RTC_ConvertDateTimeToSecond
+ bl RTC_ConvertDateTimeToSecond
add r2, r1, #0x0
add r3, r0, #0x0
mov r1, #0x0
@@ -25755,9 +25755,9 @@ _020129C6: FUN_020129C8: ; 0x020129C8
push {r3, lr}
mov r0, #0x0
- blx MI_StopDma
+ bl MI_StopDma
mov r0, #0x0
- blx MI_WaitDma
+ bl MI_WaitDma
pop {r3, pc}
thumb_func_start FUN_020129D8
@@ -25772,14 +25772,14 @@ FUN_020129D8: ; 0x020129D8 add r1, r6, #0x0
add r2, r5, #0x0
add r3, r4, #0x0
- blx MI_HBlankDmaCopy32
+ bl MI_HBlankDmaCopy32
pop {r4-r6, pc}
_020129F2:
mov r0, #0x0
add r1, r6, #0x0
add r2, r5, #0x0
add r3, r4, #0x0
- blx MI_HBlankDmaCopy16
+ bl MI_HBlankDmaCopy16
pop {r4-r6, pc}
thumb_func_start FUN_02012A00
@@ -25791,7 +25791,7 @@ FUN_02012A00: ; 0x02012A00 ldr r2, _02012A2C ; =0x0000079C
mov r1, #0x0
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r2, #0x3
lsl r2, r2, #0x8
add r0, r5, #0x0
@@ -25860,13 +25860,13 @@ _02012A4E: add r1, r5, #0x0
ldr r0, [r5, r0]
lsl r2, r2, #0x8
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
ldr r0, _02012AC0 ; =0x00000794
mov r2, #0x3
lsl r2, r2, #0x8
ldr r0, [r5, r0]
add r1, r5, r2
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
pop {r3-r7, pc}
.balign 4
_02012AB0: .word 0x00000604
@@ -25897,7 +25897,7 @@ _02012ACE: mov r2, #0x3
ldr r1, [r4, r1]
lsl r2, r2, #0x8
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
_02012AF4:
pop {r4, pc}
nop
@@ -25950,7 +25950,7 @@ FUN_02012B30: ; 0x02012B30 mov r2, #0x3
ldr r0, [r4, r0]
lsl r2, r2, #0x8
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
_02012B5E:
pop {r4, pc}
.balign 4
@@ -25996,7 +25996,7 @@ _02012BA0: ldrsh r0, [r0, r1]
ldr r3, [sp, #0x8]
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
lsl r2, r2, #0xa
add r0, r0, r2
@@ -26034,7 +26034,7 @@ FUN_02012BE4: ; 0x02012BE4 ldr r0, _02012C80 ; =0x00000798
mov r1, #0x64
ldrsh r0, [r6, r0]
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x18
lsr r3, r0, #0x18
ldr r0, _02012C84 ; =0x0000078C
@@ -26066,7 +26066,7 @@ _02012C12: stmia r5!, {r0}
add r0, r3, #0x1
mov r1, #0xc0
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x18
lsr r3, r0, #0x18
ldr r0, _02012C8C ; =0x0000078D
@@ -26089,7 +26089,7 @@ _02012C4C: blt _02012C70
mov r0, #0x0
ldrsh r0, [r4, r0]
- blx _s32_div_f
+ bl _s32_div_f
strh r1, [r4, #0x0]
pop {r3-r7, pc}
_02012C70:
@@ -26128,7 +26128,7 @@ _02012CA2: mov r1, #0x3
lsl r1, r1, #0x8
add r5, r0, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
mov r1, #0x79
lsl r1, r1, #0x4
ldr r1, [r4, r1]
@@ -26187,7 +26187,7 @@ _02012D14: add r0, r4, #0x0
mov r1, #0x0
mov r2, #0xdc
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r2, r4, #0x0
ldr r0, [sp, #0x8]
str r7, [r4, #0x18]
@@ -26215,7 +26215,7 @@ _02012D14: str r0, [r2, #0x0]
ldr r2, [sp, #0xc]
add r0, r6, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [sp, #0xc]
str r6, [r4, #0xc]
str r6, [r4, #0x10]
@@ -26263,7 +26263,7 @@ _02012DA8: ldr r0, [r0, r5]
mov r2, #0xc8
mov r3, #0x5
- blx FUN_0208B4A0
+ bl FUN_0208B4A0
str r0, [r4, #0x0]
ldr r1, _02012DD8 ; =0x020ED4E4
add r0, r4, #0x0
@@ -26291,7 +26291,7 @@ FUN_02012DE4: ; 0x02012DE4 beq _02012E02
add r0, r5, #0x0
add r0, #0x58
- blx FUN_020AE8CC
+ bl FUN_020AE8CC
b _02012E22
_02012E02:
mov r0, #0x2
@@ -26304,7 +26304,7 @@ _02012E0E: ldr r0, [r4, #0x58]
cmp r0, #0x0
beq _02012E1A
- blx FUN_020AF894
+ bl FUN_020AF894
str r7, [r4, #0x58]
_02012E1A:
add r6, r6, #0x1
@@ -26320,7 +26320,7 @@ _02012E22: beq _02012E38
add r0, r5, #0x0
add r0, #0x98
- blx FUN_020AEC7C
+ bl FUN_020AEC7C
b _02012E60
_02012E38:
mov r0, #0x8
@@ -26335,7 +26335,7 @@ _02012E44: ldr r0, [r0, #0x0]
cmp r0, #0x0
beq _02012E58
- blx FUN_020AFA80
+ bl FUN_020AFA80
add r0, r4, #0x0
add r0, #0x98
str r7, [r0, #0x0]
@@ -26852,7 +26852,7 @@ _020131B2: beq _020131C8
add r0, r5, #0x0
add r0, #0x58
- blx FUN_020AE918
+ bl FUN_020AE918
b _020131DE
_020131C8:
mov r0, #0x2
@@ -26873,7 +26873,7 @@ _020131DE: beq _020131EE
add r0, r5, #0x0
add r0, #0x98
- blx FUN_020AEC98
+ bl FUN_020AEC98
b _02013208
_020131EE:
mov r0, #0x8
@@ -26912,26 +26912,26 @@ FUN_02013228: ; 0x02013228 add r4, r0, #0x0
ldr r0, [r4, #0x0]
ldr r1, [r4, #0x4]
- blx FUN_0208B128
+ bl FUN_0208B128
ldr r0, _02013264 ; =0x021C4850
str r4, [r0, #0x0]
ldr r1, [r4, #0x18]
ldr r0, [r4, #0x0]
cmp r1, #0x0
bne _02013246
- blx FUN_0208AF94
+ bl FUN_0208AF94
b _0201324A
_02013246:
- blx FUN_0208B05C
+ bl FUN_0208B05C
_0201324A:
ldr r1, [r4, #0x1c]
ldr r0, [r4, #0x0]
cmp r1, #0x0
bne _02013258
- blx FUN_0208AF80
+ bl FUN_0208AF80
b _0201325C
_02013258:
- blx FUN_0208AFA8
+ bl FUN_0208AFA8
_0201325C:
ldr r0, _02013264 ; =0x021C4850
mov r1, #0x0
@@ -27038,16 +27038,16 @@ FUN_02013300: ; 0x02013300 bl FUN_0201EB8C
bl FUN_0201EBA4
_0201331C:
- blx FUN_020B849C
+ bl FUN_020B849C
ldr r0, [r4, #0x0]
ldr r1, _02013338 ; =0x021CED64
- blx FUN_0208AD80
+ bl FUN_0208AD80
ldr r0, [r4, #0x20]
cmp r0, #0x0
beq _02013332
bl FUN_0201EB98
_02013332:
- blx FUN_020B849C
+ bl FUN_020B849C
pop {r4, pc}
.balign 4
_02013338: .word 0x021CED64
@@ -27130,7 +27130,7 @@ FUN_020133AC: ; 0x020133AC ldr r0, _020133C4 ; =0x021C4850
str r3, [r0, #0x4]
ldr r0, [r4, #0x0]
- blx FUN_0208ACEC
+ bl FUN_0208ACEC
ldr r1, _020133C4 ; =0x021C4850
mov r2, #0x0
str r2, [r1, #0x4]
@@ -28294,7 +28294,7 @@ _02013B8A: beq _02013BC4
bl FUN_0201B9EC
add r1, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
ldr r4, [r5, #0x4]
mov r0, #0x0
mov r2, #0x1
@@ -28859,7 +28859,7 @@ FUN_02013F30: ; 0x02013F30 add r4, r0, #0x0
mov r1, #0x0
mov r2, #0x40
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
mov r1, #0x1f
add r0, #0x3e
@@ -29086,7 +29086,7 @@ FUN_020140A4: ; 0x020140A4 add r3, r2, #0x0
lsr r1, r1, #0xd
mov r2, #0x0
- blx FUN_020B1528
+ bl FUN_020B1528
pop {r3, pc}
thumb_func_start FUN_020140B4
@@ -29103,7 +29103,7 @@ FUN_020140B4: ; 0x020140B4 str r2, [r5, #0x8]
lsr r1, r1, #0xd
mov r2, #0x0
- blx FUN_020B1240
+ bl FUN_020B1240
str r4, [r5, #0x8]
pop {r3-r5, pc}
.balign 4
@@ -29220,7 +29220,7 @@ _02014172: lsl r2, r2, #0x1
ldrsh r0, [r1, r0]
ldrsh r1, [r1, r2]
- blx G3_RotZ
+ bl G3_RotZ
ldr r2, [r5, #0x10]
ldr r0, [r5, #0xc]
ldr r1, _02014210 ; =0x0400046C
@@ -29252,7 +29252,7 @@ _02014172: str r4, [sp, #0x10]
ldrsh r3, [r5, r3]
add r1, r0, #0x0
- blx FUN_020B0250
+ bl FUN_020B0250
ldr r0, _02014214 ; =0x04000448
mov r1, #0x1
str r1, [r0, #0x0]
@@ -29339,14 +29339,14 @@ _0201424C: ldr r0, [r5, #0x4]
mov r1, #0x0
add r0, r0, #0x4
- blx FUN_020B1A14
+ bl FUN_020B1A14
add r1, r0, #0x0
add r0, r7, #0x0
bl FUN_02013F14
ldr r0, [r5, #0x8]
mov r1, #0x0
add r0, r0, #0x4
- blx FUN_020B19C4
+ bl FUN_020B19C4
add r1, r0, #0x0
add r0, r7, #0x0
bl FUN_02013F18
@@ -29421,14 +29421,14 @@ _0201434A: add r1, r4, #0x0
add r1, #0xc
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r1, [sp, #0x0]
ldr r0, [sp, #0x8]
mov r2, #0x20
add r0, r1, r0
add r1, r4, #0x0
add r1, #0x2c
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [sp, #0x4]
mov r1, #0x1
str r0, [r4, #0x0]
@@ -29681,7 +29681,7 @@ FUN_02014518: ; 0x02014518 mov r1, #0x0
mov r2, #0x78
add r6, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r2, _02014560 ; =0x0000019E
mov r0, #0x0
mov r1, #0x1a
@@ -29929,7 +29929,7 @@ FUN_020146F0: ; 0x020146F0 add r5, r0, #0x0
mov r1, #0x0
mov r2, #0x9c
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0x0
add r0, #0x9b
ldrb r1, [r0, #0x0]
@@ -30306,7 +30306,7 @@ _020149B4: add r0, r6, #0x0
mov r1, #0x0
mov r2, #0x38
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add sp, #0x10
pop {r4-r6, pc}
@@ -30463,7 +30463,7 @@ FUN_02014AD4: ; 0x02014AD4 add r5, r0, #0x0
ldr r0, [r1, #0x14]
ldr r1, [r1, #0x10]
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r3, [r4, #0x4]
ldr r0, [r4, #0x10]
str r0, [sp, #0x0]
@@ -30491,7 +30491,7 @@ FUN_02014B10: ; 0x02014B10 ldr r0, [r4, #0x0]
ldr r1, [r4, #0x10]
ldr r0, [r0, #0xc]
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [r4, #0x8]
cmp r0, #0x0
bne _02014B34
@@ -30499,7 +30499,7 @@ FUN_02014B10: ; 0x02014B10 ldr r1, [r4, #0xc]
ldr r0, [r0, #0xc]
ldr r2, [r4, #0x10]
- blx GX_LoadBGPltt
+ bl GX_LoadBGPltt
b _02014B44
_02014B34:
cmp r0, #0x4
@@ -30508,7 +30508,7 @@ _02014B34: ldr r1, [r4, #0xc]
ldr r0, [r0, #0xc]
ldr r2, [r4, #0x10]
- blx GXS_LoadBGPltt
+ bl GXS_LoadBGPltt
_02014B44:
add r0, r5, #0x0
bl FUN_0200CAB4
@@ -30628,7 +30628,7 @@ FUN_02014BF4: ; 0x02014BF4 mov r1, #0x0
add r2, r6, #0x0
str r0, [r4, #0x0]
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
pop {r3-r7, pc}
@@ -30692,7 +30692,7 @@ _02014C8C: add r0, r0, r4
mov r1, #0x0
lsl r2, r2, #0x4
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r5, #0x0]
mov r1, #0x1
add r0, r0, r4
@@ -31062,7 +31062,7 @@ _02014F3E: add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x54
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x1
str r0, [r4, #0x0]
mov r0, #0xc
@@ -31526,7 +31526,7 @@ FUN_020152B0: ; 0x020152B0 bl FUN_02015050
ldr r0, [sp, #0x8]
ldr r1, [sp, #0x4]
- blx _s32_div_f
+ bl _s32_div_f
add r1, sp, #0x0
ldrb r1, [r1, #0x0]
lsl r1, r1, #0x2
@@ -31547,7 +31547,7 @@ FUN_020152D8: ; 0x020152D8 bl FUN_02015050
ldr r0, [sp, #0x8]
ldr r1, [sp, #0x4]
- blx _s32_div_f
+ bl _s32_div_f
add r0, sp, #0x0
ldrb r0, [r0, #0x0]
lsl r0, r0, #0x2
@@ -32645,7 +32645,7 @@ FUN_02015AEC: ; 0x02015AEC add r0, r0, #0x1
mul r0, r1
ldr r1, [r4, #0x18]
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [r4, #0x14]
add r0, r1, r0
lsl r0, r0, #0x10
@@ -32781,7 +32781,7 @@ FUN_02015BE8: ; 0x02015BE8 ldr r0, [r4, #0x8]
mul r0, r1
ldr r1, [r4, #0xc]
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [r4, #0x24]
str r0, [r1, #0x0]
add r0, r4, #0x0
@@ -33178,7 +33178,7 @@ FUN_02015EA0: ; 0x02015EA0 orr r0, r2
str r0, [r3, r1]
mov r0, #0x3
- blx MI_WaitDma
+ bl MI_WaitDma
ldr r0, _02015ED0 ; =0x021C48B8
ldr r0, [r0, #0x1c]
bl FUN_0201B5CC
@@ -33212,12 +33212,12 @@ _02015EF0: .word MI_WaitDma FUN_02015EF4: ; 0x02015EF4
push {r3, lr}
mov r0, #0x1
- blx OS_DisableIrqMask
+ bl OS_DisableIrqMask
ldr r1, _02015F0C ; =FUN_02015ED4
mov r0, #0x1
- blx OS_SetIrqFunction
+ bl OS_SetIrqFunction
mov r0, #0x1
- blx OS_EnableIrqMask
+ bl OS_EnableIrqMask
pop {r3, pc}
.balign 4
_02015F0C: .word FUN_02015ED4
@@ -33299,19 +33299,19 @@ FUN_02015F80: ; 0x02015F80 bne _02015F9E
ldr r0, [r2, #0x8]
mov r0, #0x2
- blx OS_DisableIrqMask
+ bl OS_DisableIrqMask
mov r0, #0x0
- blx GX_HBlankIntr
+ bl GX_HBlankIntr
b _02015FB4
_02015F9E:
ldr r0, [r2, #0x8]
ldr r1, _02015FC4 ; =FUN_02015F6C
mov r0, #0x2
- blx OS_SetIrqFunction
+ bl OS_SetIrqFunction
mov r0, #0x2
- blx OS_EnableIrqMask
+ bl OS_EnableIrqMask
mov r0, #0x1
- blx GX_HBlankIntr
+ bl GX_HBlankIntr
_02015FB4:
ldr r1, _02015FC0 ; =0x04000208
ldrh r0, [r1, #0x0]
@@ -33327,11 +33327,11 @@ FUN_02015FC8: ; 0x02015FC8 push {r3, lr}
sub sp, #0x30
add r0, sp, #0x10
- blx OS_GetLowEntropyData
+ bl OS_GetLowEntropyData
add r0, sp, #0x0
add r1, sp, #0x10
mov r2, #0x20
- blx MATH_CalcMD5
+ bl MATH_CalcMD5
mov r3, #0x0
add r1, r3, #0x0
add r2, sp, #0x0
@@ -33366,8 +33366,8 @@ _02016010: .word 0x020EDB10 thumb_func_start InitSystemForTheGame
InitSystemForTheGame: ; 0x02016014
push {r3-r5, lr}
- blx OS_Init
- blx FX_Init
+ bl OS_Init
+ bl FX_Init
ldr r2, _02016124 ; =0x04000304
ldr r0, _02016128 ; =0xFFFFFDF1
ldrh r1, [r2, #0x0]
@@ -33375,15 +33375,15 @@ InitSystemForTheGame: ; 0x02016014 ldr r0, _0201612C ; =0x0000020E
orr r0, r1
strh r0, [r2, #0x0]
- blx GX_Init
- blx OS_InitTick
+ bl GX_Init
+ bl OS_InitTick
bl FUN_02015FC8
mov r0, #0xa0
bl FUN_0201B578
add r1, r0, #0x0
mov r0, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
add r1, r0, #0x0
mov r0, #0xa0
bl FUN_0201B580
@@ -33394,7 +33394,7 @@ InitSystemForTheGame: ; 0x02016014 add r1, r0, #0x0
mov r0, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
add r1, r0, #0x0
mov r0, #0x10
bl FUN_0201B580
@@ -33405,7 +33405,7 @@ InitSystemForTheGame: ; 0x02016014 add r1, r0, #0x0
mov r0, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
add r1, r0, #0x0
mov r0, #0x20
bl FUN_0201B580
@@ -33416,13 +33416,13 @@ InitSystemForTheGame: ; 0x02016014 add r1, r0, #0x0
mov r0, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
add r1, r0, #0x0
mov r0, #0x4
bl FUN_0201B580
ldr r1, _02016130 ; =0x021C48B8
str r0, [r1, #0x24]
- blx GX_DispOff
+ bl GX_DispOff
ldr r2, _02016134 ; =0x04001000
ldr r0, _02016138 ; =0xFFFEFFFF
ldr r1, [r2, #0x0]
@@ -33435,35 +33435,35 @@ InitSystemForTheGame: ; 0x02016014 strh r0, [r2, #0x0]
ldr r1, _0201613C ; =FUN_02015EA0
mov r0, #0x1
- blx OS_SetIrqFunction
+ bl OS_SetIrqFunction
mov r0, #0x1
- blx OS_EnableIrqMask
+ bl OS_EnableIrqMask
mov r0, #0x1
lsl r0, r0, #0x12
- blx OS_EnableIrqMask
+ bl OS_EnableIrqMask
ldr r1, _02016140 ; =0x04000208
ldrh r0, [r1, #0x0]
mov r0, #0x1
strh r0, [r1, #0x0]
- blx GX_VBlankIntr
+ bl GX_VBlankIntr
mov r0, #0x1
- blx FS_Init
+ bl FS_Init
bl FUN_02022450
mov r0, #0x0
add r1, r0, #0x0
- blx FS_TryLoadTable
+ bl FS_TryLoadTable
add r4, r0, #0x0
mov r0, #0x0
add r1, r4, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
add r5, r0, #0x0
bne _02016108
bl ErrorHandling
_02016108:
add r0, r5, #0x0
add r1, r4, #0x0
- blx FS_TryLoadTable
+ bl FS_TryLoadTable
ldr r0, _02016130 ; =0x021C48B8
mov r1, #0x0
str r1, [r0, #0x0]
@@ -33489,36 +33489,36 @@ _02016144: .word 0x021C4918 InitGraphicMemory: ; 0x02016148
push {r3, lr}
ldr r0, _02016198 ; =0x000001FF
- blx GX_SetBankForLCDC
+ bl GX_SetBankForLCDC
mov r1, #0x1a
mov r2, #0x29
mov r0, #0x0
lsl r1, r1, #0x16
lsl r2, r2, #0xe
- blx MIi_CpuClearFast
- blx GX_DisableBankForLCDC
+ bl MIi_CpuClearFast
+ bl GX_DisableBankForLCDC
mov r1, #0x7
mov r2, #0x1
mov r0, #0xc0
lsl r1, r1, #0x18
lsl r2, r2, #0xa
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r2, #0x1
ldr r1, _0201619C ; =0x07000400
mov r0, #0xc0
lsl r2, r2, #0xa
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r1, #0x5
mov r2, #0x1
mov r0, #0x0
lsl r1, r1, #0x18
lsl r2, r2, #0xa
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r2, #0x1
ldr r1, _020161A0 ; =0x05000400
mov r0, #0x0
lsl r2, r2, #0xa
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
pop {r3, pc}
.balign 4
_02016198: .word 0x000001FF
@@ -33532,10 +33532,10 @@ FUN_020161A4: ; 0x020161A4 add r6, r0, #0x0
add r4, r1, #0x0
add r0, sp, #0x0
- blx FS_InitFile
+ bl FS_InitFile
add r0, sp, #0x0
add r1, r4, #0x0
- blx FS_OpenFile
+ bl FS_OpenFile
cmp r0, #0x0
beq _020161F0
ldr r1, [sp, #0x28]
@@ -33549,7 +33549,7 @@ FUN_020161A4: ; 0x020161A4 add r0, sp, #0x0
add r1, r4, #0x0
add r2, r5, #0x0
- blx FS_ReadFile
+ bl FS_ReadFile
cmp r5, r0
beq _020161E8
add r0, r6, #0x0
@@ -33558,7 +33558,7 @@ FUN_020161A4: ; 0x020161A4 mov r4, #0x0
_020161E8:
add r0, sp, #0x0
- blx FS_CloseFile
+ bl FS_CloseFile
b _020161F2
_020161F0:
mov r4, #0x0
@@ -33574,10 +33574,10 @@ FUN_020161F8: ; 0x020161F8 add r5, r0, #0x0
add r0, sp, #0x0
add r4, r1, #0x0
- blx FS_InitFile
+ bl FS_InitFile
add r0, sp, #0x0
add r1, r5, #0x0
- blx FS_OpenFile
+ bl FS_OpenFile
cmp r0, #0x0
beq _0201622A
ldr r1, [sp, #0x28]
@@ -33587,10 +33587,10 @@ FUN_020161F8: ; 0x020161F8 cmp r1, #0x0
beq _02016224
add r0, sp, #0x0
- blx FS_ReadFile
+ bl FS_ReadFile
_02016224:
add r0, sp, #0x0
- blx FS_CloseFile
+ bl FS_CloseFile
_0201622A:
add sp, #0x48
pop {r3-r5, pc}
@@ -33601,7 +33601,7 @@ FUN_02016230: ; 0x02016230 push {r3-r7, lr}
sub sp, #0x8
str r0, [sp, #0x0]
- blx strlen
+ bl strlen
lsl r0, r0, #0x10
lsr r3, r0, #0x10
lsr r2, r3, #0x1f
@@ -33749,12 +33749,12 @@ FUN_02016324: ; 0x02016324 add r0, sp, #0x0
bne _02016340
add r1, r2, #0x1
- blx strcpy
+ bl strcpy
mov r5, #0x1
b _02016346
_02016340:
add r1, r2, #0x0
- blx strcpy
+ bl strcpy
_02016346:
add r0, sp, #0x0
bl FUN_02016230
@@ -33770,10 +33770,10 @@ _02016346: b _020163B2
_02016362:
add r0, sp, #0x20
- blx FS_InitFile
+ bl FS_InitFile
add r0, sp, #0x20
add r1, sp, #0x0
- blx FS_OpenFile
+ bl FS_OpenFile
cmp r0, #0x0
beq _020163B0
ldr r1, [sp, #0x48]
@@ -33787,7 +33787,7 @@ _02016362: add r0, sp, #0x20
add r1, r4, #0x0
add r2, r6, #0x0
- blx FS_ReadFile
+ bl FS_ReadFile
cmp r6, r0
beq _0201639C
add r0, r4, #0x0
@@ -33795,7 +33795,7 @@ _02016362: mov r4, #0x0
_0201639C:
add r0, sp, #0x20
- blx FS_CloseFile
+ bl FS_CloseFile
cmp r5, #0x0
bne _020163B2
add r0, r4, #0x0
@@ -33836,13 +33836,13 @@ FUN_020163BC: ; 0x020163BC strh r2, [r0, #0x22]
ldr r0, _02016424 ; =0x021C4918
strb r2, [r0, #0x4]
- blx TP_Init
+ bl TP_Init
add r0, sp, #0x0
- blx TP_GetUserInfo
+ bl TP_GetUserInfo
cmp r0, #0x1
add r0, sp, #0x0
bne _02016402
- blx TP_SetCalibrateParam
+ bl TP_SetCalibrateParam
add sp, #0x8
pop {r3, pc}
_02016402:
@@ -33855,7 +33855,7 @@ _02016402: ldr r1, _02016434 ; =0x00001208
strh r1, [r0, #0x6]
add r0, sp, #0x0
- blx TP_SetCalibrateParam
+ bl TP_SetCalibrateParam
add sp, #0x8
pop {r3, pc}
.balign 4
@@ -33965,19 +33965,19 @@ _020164C8: bne _020164F4
add r4, sp, #0x8
_020164E4:
- blx TP_RequestSamplingAsync
+ bl TP_RequestSamplingAsync
add r0, r4, #0x0
- blx TP_WaitRawResult
+ bl TP_WaitRawResult
cmp r0, #0x0
bne _020164E4
b _020164FA
_020164F4:
add r0, sp, #0x8
- blx TP_GetLatestRawPointInAuto
+ bl TP_GetLatestRawPointInAuto
_020164FA:
add r0, sp, #0x0
add r1, sp, #0x8
- blx TP_GetCalibratedPoint
+ bl TP_GetCalibratedPoint
add r1, sp, #0x0
ldrh r3, [r1, #0x6]
cmp r3, #0x0
@@ -34260,7 +34260,7 @@ _020166F4: mov r0, #0x0
add r1, r3, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
_020166FE:
ldr r1, [sp, #0x4]
lsl r7, r6, #0x1
@@ -34272,7 +34272,7 @@ _020166FE: mov r0, #0x0
add r1, r6, r1
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
ldr r1, _020167F0 ; =0x021C4D28
str r0, [r1, #0x0]
ldr r1, [sp, #0x4]
@@ -34313,19 +34313,19 @@ _0201675C: ldr r1, [r5, #0x0]
mov r0, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
b _02016772
_02016768:
ldr r1, [r5, #0x0]
mov r0, #0x2
mov r2, #0x4
- blx OS_AllocFromArenaHi
+ bl OS_AllocFromArenaHi
_02016772:
cmp r0, #0x0
beq _0201678E
ldr r1, [r5, #0x0]
mov r2, #0x0
- blx tempName_NNS_FndCreateExpHeapEx
+ bl tempName_NNS_FndCreateExpHeapEx
ldr r1, _020167F0 ; =0x021C4D28
ldr r2, [r1, #0x0]
ldr r1, [sp, #0x0]
@@ -34443,7 +34443,7 @@ FUN_02016834: ; 0x02016834 add r5, r1, #0x0
str r2, [sp, #0x0]
add r7, r3, #0x0
- blx OS_GetProcMode
+ bl OS_GetProcMode
cmp r0, #0x12
bne _0201684C
bl ErrorHandling
@@ -34463,7 +34463,7 @@ _0201684C: ldr r1, [sp, #0x0]
add r0, r6, #0x0
add r2, r7, #0x0
- blx tempName_NNS_FndAllocFromExpHeapEx
+ bl tempName_NNS_FndAllocFromExpHeapEx
str r0, [sp, #0x4]
cmp r0, #0x0
beq _020168B6
@@ -34474,7 +34474,7 @@ _0201684C: ldr r1, [sp, #0x0]
mov r2, #0x0
lsl r4, r7, #0x2
- blx tempName_NNS_FndCreateExpHeapEx
+ bl tempName_NNS_FndCreateExpHeapEx
ldr r1, _020168CC ; =0x021C4D28
ldr r2, [r1, #0x0]
str r0, [r2, r4]
@@ -34517,7 +34517,7 @@ _020168CC: .word 0x021C4D28 FUN_020168D0: ; 0x020168D0
push {r4, lr}
add r4, r0, #0x0
- blx OS_GetProcMode
+ bl OS_GetProcMode
cmp r0, #0x12
bne _020168E0
bl ErrorHandling
@@ -34530,7 +34530,7 @@ _020168E0: ldr r0, [r1, r0]
cmp r0, #0x0
beq _0201693E
- blx thunk_FUN_020adc8c
+ bl thunk_FUN_020adc8c
ldr r1, _02016940 ; =0x021C4D28
ldr r0, [r1, #0x10]
ldrb r0, [r0, r4]
@@ -34543,7 +34543,7 @@ _020168E0: beq _02016912
cmp r1, #0x0
beq _02016912
- blx FUN_020ADDF0
+ bl FUN_020ADDF0
b _02016916
_02016912:
bl ErrorHandling
@@ -34584,16 +34584,16 @@ FUN_02016944: ; 0x02016944 bne _02016956
bl ErrorHandling
_02016956:
- blx OS_DisableInterrupts
+ bl OS_DisableInterrupts
add r4, #0x10
str r0, [sp, #0x0]
add r0, r5, #0x0
add r1, r4, #0x0
add r2, r7, #0x0
- blx tempName_NNS_FndAllocFromExpHeapEx
+ bl tempName_NNS_FndAllocFromExpHeapEx
add r4, r0, #0x0
ldr r0, [sp, #0x0]
- blx OS_RestoreInterrupts
+ bl OS_RestoreInterrupts
cmp r4, #0x0
beq _02016984
ldr r1, [r4, #0xc]
@@ -34732,14 +34732,14 @@ _02016A5E: ldrh r0, [r1, r5]
sub r0, r0, #0x1
strh r0, [r1, r5]
- blx OS_DisableInterrupts
+ bl OS_DisableInterrupts
sub r6, #0x10
add r4, r0, #0x0
add r0, r7, #0x0
add r1, r6, #0x0
- blx FUN_020ADDF0
+ bl FUN_020ADDF0
add r0, r4, #0x0
- blx OS_RestoreInterrupts
+ bl OS_RestoreInterrupts
pop {r3-r7, pc}
_02016A80:
bl ErrorHandling
@@ -34752,7 +34752,7 @@ FUN_02016A8C: ; 0x02016A8C push {r4-r6, lr}
add r5, r0, #0x0
add r4, r1, #0x0
- blx OS_GetProcMode
+ bl OS_GetProcMode
cmp r0, #0x12
bne _02016A9E
bl ErrorHandling
@@ -34781,7 +34781,7 @@ _02016AC8: sub r4, #0x10
add r0, r6, #0x0
add r1, r4, #0x0
- blx FUN_020ADDF0
+ bl FUN_020ADDF0
ldr r0, _02016AF4 ; =0x021C4D28
lsl r4, r5, #0x1
ldr r0, [r0, #0xc]
@@ -34814,7 +34814,7 @@ FUN_02016AF8: ; 0x02016AF8 ldrb r0, [r1, r0]
lsl r0, r0, #0x2
ldr r0, [r2, r0]
- blx FUN_020ADDC8
+ bl FUN_020ADDC8
pop {r3, pc}
_02016B12:
bl ErrorHandling
@@ -34835,7 +34835,7 @@ FUN_02016B20: ; 0x02016B20 ldrb r1, [r4, r1]
lsl r1, r1, #0x2
ldr r1, [r3, r1]
- blx FUN_020AE82C
+ bl FUN_020AE82C
pop {r4, pc}
_02016B3A:
bl ErrorHandling
@@ -34848,14 +34848,14 @@ FUN_02016B44: ; 0x02016B44 push {r3-r5, lr}
add r5, r0, #0x0
add r4, r1, #0x0
- blx OS_GetProcMode
+ bl OS_GetProcMode
cmp r0, #0x12
bne _02016B56
bl ErrorHandling
_02016B56:
add r0, r5, #0x0
sub r0, #0x10
- blx FUN_020ADDC0
+ bl FUN_020ADDC0
add r4, #0x10
cmp r0, r4
blo _02016B84
@@ -34872,7 +34872,7 @@ _02016B56: lsl r0, r0, #0x2
ldr r0, [r1, r0]
add r1, r5, #0x0
- blx FUN_020ADE2C
+ bl FUN_020ADE2C
pop {r3-r5, pc}
_02016B84:
bl ErrorHandling
@@ -34896,7 +34896,7 @@ FUN_02016B94: ; 0x02016B94 mov r1, #0x0
lsl r2, r2, #0x2
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
str r5, [r4, #0x0]
mov r0, #0x0
strh r0, [r4, #0x4]
@@ -34916,9 +34916,9 @@ FUN_02016BBC: ; 0x02016BBC ldr r0, [r4, #0x0]
ldr r1, [r4, #0x4]
ldr r2, [r4, #0xc]
- blx GX_SetGraphicsMode
+ bl GX_SetGraphicsMode
ldr r0, [r4, #0x8]
- blx GXS_SetGraphicsMode
+ bl GXS_SetGraphicsMode
mov r2, #0x1
lsl r2, r2, #0x1a
ldr r1, [r2, #0x0]
@@ -34944,12 +34944,12 @@ FUN_02016BF4: ; 0x02016BF4 ldr r0, [r2, #0x0]
ldr r1, [r2, #0x4]
ldr r2, [r2, #0xc]
- blx GX_SetGraphicsMode
+ bl GX_SetGraphicsMode
bl FUN_0201E6D8
pop {r3, pc}
_02016C0C:
ldr r0, [r2, #0x8]
- blx GXS_SetGraphicsMode
+ bl GXS_SetGraphicsMode
bl FUN_0201E740
pop {r3, pc}
@@ -35546,7 +35546,7 @@ _0201705A: ldr r1, [r6, r5]
ldr r2, [r4, #0x8]
mov r0, #0x0
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
ldr r0, [sp, #0x0]
ldr r2, [r4, #0x8]
add r1, r0, r5
@@ -37134,7 +37134,7 @@ _02017BFC: ldr r0, [r4, #0x18]
str r0, [sp, #0x4]
ldr r0, _02017C5C ; =0x04000020
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
add sp, #0x8
pop {r3-r5, pc}
_02017C14:
@@ -37146,7 +37146,7 @@ _02017C14: ldr r0, [r4, #0x18]
str r0, [sp, #0x4]
ldr r0, _02017C60 ; =0x04000030
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
add sp, #0x8
pop {r3-r5, pc}
_02017C2C:
@@ -37158,7 +37158,7 @@ _02017C2C: ldr r0, [r4, #0x18]
str r0, [sp, #0x4]
ldr r0, _02017C64 ; =0x04001020
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
add sp, #0x8
pop {r3-r5, pc}
_02017C44:
@@ -37170,7 +37170,7 @@ _02017C44: ldr r0, [r4, #0x18]
str r0, [sp, #0x4]
ldr r0, _02017C68 ; =0x04001030
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
_02017C58:
add sp, #0x8
pop {r3-r5, pc}
@@ -37208,7 +37208,7 @@ FUN_02017C98: ; 0x02017C98 push {r3-r5, lr}
cmp r2, #0x0
bne _02017CA4
- blx MI_UncompressLZ8
+ bl MI_UncompressLZ8
pop {r3-r5, pc}
_02017CA4:
mov r4, #0x3
@@ -37227,10 +37227,10 @@ _02017CA4: ror r5, r3
add r3, r4, r5
bne _02017CCA
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
pop {r3-r5, pc}
_02017CCA:
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
pop {r3-r5, pc}
thumb_func_start FUN_02017CD0
@@ -37318,7 +37318,7 @@ FUN_02017D68: ; 0x02017D68 add r0, r4, #0x0
add r1, r6, #0x0
add r5, r2, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
cmp r7, #0x7
bhi _02017DF8
add r0, r7, r7
@@ -37340,49 +37340,49 @@ _02017D9A: add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG0Scr
+ bl GX_LoadBG0Scr
pop {r3-r7, pc}
_02017DA6:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG1Scr
+ bl GX_LoadBG1Scr
pop {r3-r7, pc}
_02017DB2:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG2Scr
+ bl GX_LoadBG2Scr
pop {r3-r7, pc}
_02017DBE:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG3Scr
+ bl GX_LoadBG3Scr
pop {r3-r7, pc}
_02017DCA:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG0Scr
+ bl GXS_LoadBG0Scr
pop {r3-r7, pc}
_02017DD6:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG1Scr
+ bl GXS_LoadBG1Scr
pop {r3-r7, pc}
_02017DE2:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG2Scr
+ bl GXS_LoadBG2Scr
pop {r3-r7, pc}
_02017DEE:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG3Scr
+ bl GXS_LoadBG3Scr
_02017DF8:
pop {r3-r7, pc}
.balign 4
@@ -37467,7 +37467,7 @@ FUN_02017E84: ; 0x02017E84 add r0, r4, #0x0
add r1, r6, #0x0
add r5, r2, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
cmp r7, #0x7
bhi _02017F14
add r0, r7, r7
@@ -37489,49 +37489,49 @@ _02017EB6: add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG0Char
+ bl GX_LoadBG0Char
pop {r3-r7, pc}
_02017EC2:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG1Char
+ bl GX_LoadBG1Char
pop {r3-r7, pc}
_02017ECE:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG2Char
+ bl GX_LoadBG2Char
pop {r3-r7, pc}
_02017EDA:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG3Char
+ bl GX_LoadBG3Char
pop {r3-r7, pc}
_02017EE6:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG0Char
+ bl GXS_LoadBG0Char
pop {r3-r7, pc}
_02017EF2:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG1Char
+ bl GXS_LoadBG1Char
pop {r3-r7, pc}
_02017EFE:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG2Char
+ bl GXS_LoadBG2Char
pop {r3-r7, pc}
_02017F0A:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG3Char
+ bl GXS_LoadBG3Char
_02017F14:
pop {r3-r7, pc}
.balign 4
@@ -37548,7 +37548,7 @@ FUN_02017F18: ; 0x02017F18 add r4, r0, #0x0
mov r1, #0x0
add r2, r5, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r6, #0x0
add r1, r4, #0x0
add r2, r7, #0x0
@@ -37600,7 +37600,7 @@ _02017F8C: ldr r1, [sp, #0x4]
ldr r2, [sp, #0x0]
add r0, r5, #0x0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
lsl r0, r7, #0x18
ldrb r2, [r4, r6]
ldr r3, [sp, #0x20]
@@ -37623,19 +37623,19 @@ FUN_02017FB4: ; 0x02017FB4 add r0, r5, #0x0
add r1, r4, #0x0
add r7, r3, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
cmp r6, #0x4
bhs _02017FD6
add r0, r5, #0x0
add r1, r7, #0x0
add r2, r4, #0x0
- blx GX_LoadBGPltt
+ bl GX_LoadBGPltt
pop {r3-r7, pc}
_02017FD6:
add r0, r5, #0x0
add r1, r7, #0x0
add r2, r4, #0x0
- blx GXS_LoadBGPltt
+ bl GXS_LoadBGPltt
pop {r3-r7, pc}
.balign 4
@@ -38668,7 +38668,7 @@ FUN_02018744: ; 0x02018744 beq _02018766
ldr r2, [r2, #0xc]
mov r0, #0x0
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
add r0, r5, #0x0
add r1, r4, #0x0
bl FUN_02017CD0
@@ -38688,7 +38688,7 @@ FUN_02018768: ; 0x02018768 beq _0201878A
add r0, r2, #0x0
ldr r2, [r3, #0xc]
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
add r0, r5, #0x0
add r1, r4, #0x0
bl FUN_02017CD0
@@ -38708,7 +38708,7 @@ FUN_0201878C: ; 0x0201878C beq _020187AE
add r0, r2, #0x0
ldr r2, [r3, #0xc]
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
add r0, r5, #0x0
add r1, r4, #0x0
bl FUN_0201AC68
@@ -38736,28 +38736,28 @@ _020187C2: ; jump table (using 16-bit offset) .short _020187F6 - _020187C2 - 2; case 6
.short _020187FC - _020187C2 - 2; case 7
_020187D2:
- blx G2_GetBG0CharPtr
+ bl G2_GetBG0CharPtr
pop {r3, pc}
_020187D8:
- blx G2_GetBG1CharPtr
+ bl G2_GetBG1CharPtr
pop {r3, pc}
_020187DE:
- blx G2_GetBG2CharPtr
+ bl G2_GetBG2CharPtr
pop {r3, pc}
_020187E4:
- blx G2_GetBG3CharPtr
+ bl G2_GetBG3CharPtr
pop {r3, pc}
_020187EA:
- blx G2S_GetBG0CharPtr
+ bl G2S_GetBG0CharPtr
pop {r3, pc}
_020187F0:
- blx G2S_GetBG1CharPtr
+ bl G2S_GetBG1CharPtr
pop {r3, pc}
_020187F6:
- blx G2S_GetBG2CharPtr
+ bl G2S_GetBG2CharPtr
pop {r3, pc}
_020187FC:
- blx G2S_GetBG3CharPtr
+ bl G2S_GetBG3CharPtr
pop {r3, pc}
_02018802:
mov r0, #0x0
@@ -40023,7 +40023,7 @@ FUN_020190EC: ; 0x020190EC lsl r1, r1, #0x18
ldr r2, [sp, #0x4]
lsr r1, r1, #0x18
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
cmp r7, #0x0
beq _02019148
str r5, [r4, #0x0]
@@ -40754,7 +40754,7 @@ _0201963C: ldrb r4, [r4, #0x7]
mul r2, r4
mul r2, r3
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
pop {r3-r5, pc}
thumb_func_start FUN_02019658
@@ -43637,7 +43637,7 @@ FUN_0201AB28: ; 0x0201AB28 bl FUN_020161A4
add r1, sp, #0x0
str r0, [r4, #0x0]
- blx FUN_020B0030
+ bl FUN_020B0030
ldr r0, [sp, #0x0]
add sp, #0x4
pop {r3-r4, pc}
@@ -43652,7 +43652,7 @@ FUN_0201AB44: ; 0x0201AB44 bl FUN_020161A4
add r1, sp, #0x0
str r0, [r4, #0x0]
- blx FUN_020B0138
+ bl FUN_020B0138
ldr r0, [sp, #0x0]
add sp, #0x4
pop {r3-r4, pc}
@@ -43889,7 +43889,7 @@ _0201ACEA: ldr r2, [r2, #0x0]
ldr r3, [r3, #0x0]
add r1, sp, #0x38
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
_0201AD1E:
ldrh r1, [r4, #0x4]
mov r0, #0x8
@@ -43945,7 +43945,7 @@ _0201AD4E: ldr r2, [r2, #0x0]
ldr r3, [r3, #0x0]
add r1, sp, #0x28
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
_0201AD8E:
ldrh r1, [r4, #0x4]
mov r0, #0x10
@@ -44035,7 +44035,7 @@ _0201AE04: ldr r2, [r4, r2]
ldr r3, [r4, r3]
add r1, sp, #0x18
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
_0201AE3E:
ldrh r0, [r4, #0x4]
mov r3, #0x80
@@ -44090,7 +44090,7 @@ _0201AE72: ldr r2, [r4, r2]
ldr r3, [r4, r3]
add r1, sp, #0x8
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
_0201AEAC:
add sp, #0x48
pop {r4, pc}
@@ -44364,7 +44364,7 @@ _0201B096: ldr r1, [sp, #0x18]
add r1, r1, r2
mov r2, #0x40
- blx memcpy
+ bl memcpy
ldrh r1, [r4, r6]
add r0, r7, #0x0
asr r2, r1, #0xa
@@ -44454,7 +44454,7 @@ _0201B142: add r0, r7, #0x0
add r1, r4, #0x0
mov r2, #0x40
- blx memcpy
+ bl memcpy
_0201B166:
ldr r0, [sp, #0x0]
mov r1, #0x2
@@ -44484,7 +44484,7 @@ _0201B17E: add r0, r7, #0x0
add r1, r4, #0x0
mov r2, #0x40
- blx memcpy
+ bl memcpy
_0201B19E:
add r0, r4, #0x0
bl FUN_02016A18
@@ -44499,7 +44499,7 @@ FUN_0201B1A8: ; 0x0201B1A8 add r4, r2, #0x0
bl FUN_020161A4
str r0, [r5, #0x0]
- blx FUN_020BC0FC
+ bl FUN_020BC0FC
cmp r0, #0x0
beq _0201B1D2
bl FUN_0201B254
@@ -44507,12 +44507,12 @@ FUN_0201B1A8: ; 0x0201B1A8 bne _0201B1D2
ldr r0, [r5, #0x0]
ldr r1, [r0, #0x8]
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [r5, #0x0]
- blx FUN_020BB59C
+ bl FUN_020BB59C
_0201B1D2:
ldr r0, [r5, #0x0]
- blx FUN_020BC13C
+ bl FUN_020BC13C
ldrh r1, [r0, #0xe]
add r1, r0, r1
ldr r1, [r1, #0xc]
@@ -44526,7 +44526,7 @@ FUN_0201B1E4: ; 0x0201B1E4 add r5, r1, #0x0
add r4, r0, #0x0
ldr r0, [r5, #0x0]
- blx FUN_020BC0FC
+ bl FUN_020BC0FC
cmp r0, #0x0
beq _0201B20A
bl FUN_0201B254
@@ -44534,12 +44534,12 @@ FUN_0201B1E4: ; 0x0201B1E4 bne _0201B20A
ldr r0, [r5, #0x0]
ldr r1, [r0, #0x8]
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [r5, #0x0]
- blx FUN_020BB59C
+ bl FUN_020BB59C
_0201B20A:
ldr r0, [r5, #0x0]
- blx FUN_020BC13C
+ bl FUN_020BC13C
ldrh r1, [r0, #0xe]
add r1, r0, r1
ldr r1, [r1, #0xc]
@@ -44557,7 +44557,7 @@ FUN_0201B21C: ; 0x0201B21C bl FUN_0201B1A8
ldr r1, [r4, #0x0]
add r0, r5, #0x0
- blx FUN_020B80B4
+ bl FUN_020B80B4
pop {r3-r5, pc}
thumb_func_start FUN_0201B234
@@ -44574,7 +44574,7 @@ FUN_0201B234: ; 0x0201B234 _0201B24A:
ldr r1, [r4, #0x0]
add r0, r5, #0x0
- blx FUN_020B80B4
+ bl FUN_020B80B4
pop {r3-r5, pc}
thumb_func_start FUN_0201B254
@@ -44601,20 +44601,20 @@ FUN_0201B26C: ; 0x0201B26C add r0, r1, #0x0
add r4, r2, #0x0
add r6, r3, #0x0
- blx FUN_020B8474
+ bl FUN_020B8474
ldr r1, _0201B2A0 ; =0x021CEDD4
add r0, r4, #0x0
- blx MI_Copy36B
+ bl MI_Copy36B
ldr r1, _0201B2A4 ; =0x021CED98
mov r0, #0xa4
ldr r2, [r1, #0x7c]
bic r2, r0
add r0, r6, #0x0
str r2, [r1, #0x7c]
- blx FUN_020B844C
- blx FUN_020B849C
+ bl FUN_020B844C
+ bl FUN_020B849C
add r0, r5, #0x0
- blx FUN_020BAC98
+ bl FUN_020BAC98
pop {r4-r6, pc}
nop
_0201B2A0: .word 0x021CEDD4
@@ -44627,24 +44627,24 @@ FUN_0201B2A8: ; 0x0201B2A8 add r0, r1, #0x0
add r4, r2, #0x0
add r6, r3, #0x0
- blx FUN_020B8474
+ bl FUN_020B8474
ldr r1, _0201B2E4 ; =0x021CEDD4
add r0, r4, #0x0
- blx MI_Copy36B
+ bl MI_Copy36B
ldr r1, _0201B2E8 ; =0x021CED98
mov r0, #0xa4
ldr r2, [r1, #0x7c]
bic r2, r0
str r2, [r1, #0x7c]
add r0, r6, #0x0
- blx FUN_020B844C
- blx FUN_020B849C
+ bl FUN_020B844C
+ bl FUN_020B849C
mov r1, #0x0
ldr r0, [r5, #0x4]
add r2, r1, #0x0
mov r3, #0x1
- blx FUN_020BAFB8
- blx FUN_020BB394
+ bl FUN_020BAFB8
+ bl FUN_020BB394
pop {r4-r6, pc}
.balign 4
_0201B2E4: .word 0x021CEDD4
@@ -44712,13 +44712,13 @@ FUN_0201B314: ; 0x0201B314 add r1, r0, #0x0
add r2, r0, #0x0
add r3, r0, #0x0
- blx G3X_SetFog
+ bl G3X_SetFog
mov r0, #0x0
ldr r2, _0201B38C ; =0x00007FFF
add r1, r0, #0x0
mov r3, #0x3f
str r0, [sp, #0x0]
- blx G3X_SetClearColor
+ bl G3X_SetClearColor
ldr r1, _0201B390 ; =0xBFFF0000
ldr r0, _0201B394 ; =0x04000580
str r1, [r0, #0x0]
@@ -44745,11 +44745,11 @@ _0201B3A4: .word FUN_020223BC FUN_0201B3A8: ; 0x0201B3A8
push {r4, lr}
add r4, r1, #0x0
- blx FUN_020BC13C
+ bl FUN_020BC13C
cmp r4, #0x0
beq _0201B3BE
add r1, r4, #0x0
- blx FUN_020B7790
+ bl FUN_020B7790
mov r0, #0x1
pop {r4, pc}
_0201B3BE:
@@ -44775,13 +44775,13 @@ _0201B3D2: str r1, [sp, #0x0]
cmp r5, #0x0
beq _0201B4D0
- blx FUN_020B7E1C
+ bl FUN_020B7E1C
add r6, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7E10
+ bl FUN_020B7E10
add r4, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7CE4
+ bl FUN_020B7CE4
str r0, [sp, #0xc]
cmp r6, #0x0
beq _0201B412
@@ -44882,19 +44882,19 @@ _0201B4A6: add r0, r5, #0x0
add r1, r7, #0x0
add r2, r6, #0x0
- blx FUN_020B7DFC
+ bl FUN_020B7DFC
add r0, r5, #0x0
add r1, r4, #0x0
- blx FUN_020B7CDC
+ bl FUN_020B7CDC
ldr r1, [r5, #0x4]
add r0, r5, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
add r0, r5, #0x0
mov r1, #0x1
- blx FUN_020B7D28
+ bl FUN_020B7D28
add r0, r5, #0x0
mov r1, #0x1
- blx FUN_020B7C78
+ bl FUN_020B7C78
_0201B4D0:
mov r0, #0x1
add sp, #0x10
@@ -45237,22 +45237,22 @@ FUN_0201B6D0: ; 0x0201B6D0 ldrsh r3, [r4, r3]
bl FUN_0201B808
add r0, sp, #0x1c
- blx FUN_020B8474
+ bl FUN_020B8474
ldr r1, _0201B764 ; =0x021CEDD4
add r0, r5, #0x0
- blx MI_Copy36B
+ bl MI_Copy36B
ldr r1, _0201B768 ; =0x021CED98
mov r0, #0xa4
ldr r2, [r1, #0x7c]
bic r2, r0
add r0, r7, #0x0
str r2, [r1, #0x7c]
- blx FUN_020B844C
- blx FUN_020B849C
+ bl FUN_020B844C
+ bl FUN_020B849C
mov r1, #0x0
mov r0, #0x11
add r2, r1, #0x0
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
ldr r0, [r4, #0x24]
add r1, sp, #0x10
str r0, [sp, #0x10]
@@ -45260,7 +45260,7 @@ FUN_0201B6D0: ; 0x0201B6D0 str r0, [sp, #0x18]
mov r0, #0x1b
mov r2, #0x3
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
add r0, sp, #0x28
bl FUN_0201B82C
add r4, r0, #0x0
@@ -45268,7 +45268,7 @@ FUN_0201B6D0: ; 0x0201B6D0 mov r0, #0x12
add r1, sp, #0xc
str r2, [sp, #0xc]
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
add r0, r4, #0x0
add sp, #0x34
pop {r4-r7, pc}
@@ -45296,12 +45296,12 @@ FUN_0201B76C: ; 0x0201B76C add r2, r0, #0x0
bl FUN_0201B808
add r0, r5, #0x0
- blx FUN_020B8474
- blx FUN_020B849C
+ bl FUN_020B8474
+ bl FUN_020B849C
mov r1, #0x0
mov r0, #0x11
add r2, r1, #0x0
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
ldr r0, [r4, #0x10]
lsl r2, r0, #0xc
ldr r0, [r4, #0xc]
@@ -45314,7 +45314,7 @@ FUN_0201B76C: ; 0x0201B76C mov r0, #0x1b
add r1, sp, #0x10
mov r2, #0x3
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
add r0, sp, #0x1c
bl FUN_0201B82C
add r4, r0, #0x0
@@ -45322,7 +45322,7 @@ FUN_0201B76C: ; 0x0201B76C mov r0, #0x12
add r1, sp, #0xc
str r2, [sp, #0xc]
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
add r0, r4, #0x0
add sp, #0x28
pop {r3-r5, pc}
@@ -45382,26 +45382,26 @@ FUN_0201B82C: ; 0x0201B82C mov r0, #0x29
add r1, sp, #0x4
str r2, [sp, #0x8]
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
mov r0, #0x0
str r0, [sp, #0x0]
mov r0, #0x40
add r1, sp, #0x0
mov r2, #0x1
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
mov r1, #0x0
mov r0, #0x41
add r2, r1, #0x0
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
mov r0, #0x70
add r1, r4, #0x0
mov r2, #0x3
- blx FUN_020BB1C0
- blx FUN_020BB394
+ bl FUN_020BB1C0
+ bl FUN_020BB394
add r4, sp, #0x8
_0201B86A:
add r0, r4, #0x0
- blx G3X_GetBoxTestResult
+ bl G3X_GetBoxTestResult
cmp r0, #0x0
bne _0201B86A
ldr r0, [sp, #0x8]
@@ -45561,7 +45561,7 @@ FUN_0201B970: ; 0x0201B970 push {r3, lr}
mov r1, #0x5a
lsl r1, r1, #0x2
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, _0201B984 ; =0x020EDF50
lsl r1, r1, #0x2
ldr r0, [r0, r1]
@@ -45574,7 +45574,7 @@ FUN_0201B988: ; 0x0201B988 push {r3, lr}
mov r1, #0x5a
lsl r1, r1, #0x2
- blx _s32_div_f
+ bl _s32_div_f
add r1, #0x5a
ldr r0, _0201B99C ; =0x020EDF50
lsl r1, r1, #0x2
@@ -45588,7 +45588,7 @@ FUN_0201B9A0: ; 0x0201B9A0 push {r3, lr}
mov r1, #0x5a
lsl r1, r1, #0x2
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, _0201B9B4 ; =0x020EDC7E
lsl r1, r1, #0x1
ldrh r0, [r0, r1]
@@ -45603,7 +45603,7 @@ FUN_0201B9B8: ; 0x0201B9B8 mov r1, #0x5a
lsr r0, r0, #0x10
lsl r1, r1, #0x2
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, _0201B9D0 ; =0x020EDF50
lsl r1, r1, #0x2
ldr r0, [r0, r1]
@@ -45845,7 +45845,7 @@ _0201BB8E: mul r0, r1
mov r1, #0x5a
lsl r1, r1, #0x2
- blx _u32_div_f
+ bl _u32_div_f
lsl r0, r0, #0x10
lsr r1, r0, #0x10
_0201BBA2:
@@ -45863,7 +45863,7 @@ _0201BBA2: add r1, r5, #0x0
add r2, r4, #0x0
add r3, r6, #0x0
- blx MTX_ScaleApply22
+ bl MTX_ScaleApply22
pop {r4-r6, pc}
nop
_0201BBC8: .word 0x0000FFFF
@@ -45891,14 +45891,14 @@ FUN_0201BBD0: ; 0x0201BBD0 str r5, [sp, #0x2c]
str r4, [sp, #0x30]
str r6, [sp, #0x24]
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x4]
add r2, r4, #0x0
ldr r0, [sp, #0x20]
add r7, r1, #0x0
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
ldr r3, [sp, #0x4]
lsl r2, r2, #0xa
@@ -45928,7 +45928,7 @@ FUN_0201BBD0: ; 0x0201BBD0 str r0, [sp, #0x34]
add r0, sp, #0x2c
add r1, sp, #0x14
- blx VEC_Normalize
+ bl VEC_Normalize
mov r1, #0x0
ldr r0, [sp, #0x0]
str r1, [sp, #0x34]
@@ -45940,10 +45940,10 @@ FUN_0201BBD0: ; 0x0201BBD0 str r5, [sp, #0x2c]
str r4, [sp, #0x30]
str r6, [sp, #0x24]
- blx VEC_Subtract
+ bl VEC_Subtract
add r0, sp, #0x14
add r1, sp, #0x8
- blx VEC_DotProduct
+ bl VEC_DotProduct
asr r0, r0, #0xc
bpl _0201BC72
neg r0, r0
@@ -45967,7 +45967,7 @@ FUN_0201BC84: ; 0x0201BC84 ldr r2, _0201BCB4 ; =0x0000323D
asr r1, r0, #0x1f
mov r3, #0x0
- blx _ll_mul
+ bl _ll_mul
add r5, r0, #0x0
ldr r0, _0201BCB8 ; =0x0000FFFF
mov r2, #0x2
@@ -45980,7 +45980,7 @@ FUN_0201BC84: ; 0x0201BC84 lsr r2, r2, #0xc
orr r2, r1
asr r1, r2, #0xc
- blx _s32_div_f
+ bl _s32_div_f
pop {r3-r5, pc}
nop
_0201BCB4: .word 0x0000323D
@@ -46678,7 +46678,7 @@ FUN_0201C1B0: ; 0x0201C1B0 ldr r0, [r0, #0x14]
add r1, r5, #0x0
lsl r2, r2, #0x8
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
add r0, r4, #0x0
bl FUN_02016A18
add r0, r5, #0x0
@@ -46772,7 +46772,7 @@ _0201C272: ldr r1, [r1, #0x0]
ldr r0, [r1, #0x8]
ldr r1, [r1, #0x0]
- blx FUN_020AEF1C
+ bl FUN_020AEF1C
pop {r3-r5, pc}
nop
_0201C298: .word 0x021C5934
@@ -46831,7 +46831,7 @@ _0201C2FA: add r1, r4, #0x0
add r2, r6, #0x0
add r3, r7, #0x0
- blx FUN_020AEE40
+ bl FUN_020AEE40
pop {r3-r7, pc}
.balign 4
_0201C308: .word 0x021C5934
@@ -46843,7 +46843,7 @@ FUN_0201C30C: ; 0x0201C30C ldr r0, [r0, #0x0]
cmp r0, #0x0
beq _0201C322
- blx FUN_020AEEB8
+ bl FUN_020AEEB8
ldr r0, _0201C324 ; =0x021C5934
mov r1, #0x0
ldr r0, [r0, #0x0]
@@ -46864,7 +46864,7 @@ FUN_0201C328: ; 0x0201C328 ldr r2, _0201C344 ; =FUN_0201C358
add r1, r4, #0x0
add r5, r0, #0x0
- blx FUN_020B4568
+ bl FUN_020B4568
add r0, r5, #0x0
pop {r3-r5, pc}
.balign 4
@@ -47208,7 +47208,7 @@ FUN_0201C578: ; 0x0201C578 add r0, r4, #0x0
add r0, #0x3c
add r1, sp, #0x0
- blx FUN_020BC2A0
+ bl FUN_020BC2A0
add r1, r0, #0x0
bne _0201C598
add sp, #0x10
@@ -47270,7 +47270,7 @@ _0201C5DE: lsl r2, r2, #0x4
lsl r0, r0, #0x4
mul r0, r2
- blx _u32_div_f
+ bl _u32_div_f
pop {r3, pc}
.balign 4
@@ -47284,7 +47284,7 @@ FUN_0201C5FC: ; 0x0201C5FC add r0, r4, #0x0
add r0, #0x3c
add r1, sp, #0x0
- blx FUN_020BC2A0
+ bl FUN_020BC2A0
add r1, r0, #0x0
add r0, r4, #0x0
bl FUN_0201C5A4
@@ -47550,10 +47550,10 @@ FUN_0201C7B0: ; 0x0201C7B0 sub sp, #0x30
add r4, r1, #0x0
add r1, sp, #0x24
- blx VEC_Normalize
+ bl VEC_Normalize
add r0, r4, #0x0
add r1, sp, #0x18
- blx VEC_Normalize
+ bl VEC_Normalize
ldr r0, [sp, #0x24]
ldr r4, [sp, #0x18]
str r0, [sp, #0x0]
@@ -47570,14 +47570,14 @@ FUN_0201C7B0: ; 0x0201C7B0 ldr r3, [sp, #0xc]
add r1, r7, #0x0
str r0, [sp, #0x10]
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x14]
add r5, r1, #0x0
ldr r0, [sp, #0x0]
ldr r1, [sp, #0x4]
add r2, r4, #0x0
add r3, r6, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
ldr r3, [sp, #0x14]
lsl r2, r2, #0xa
@@ -47600,14 +47600,14 @@ FUN_0201C7B0: ; 0x0201C7B0 add r1, r7, #0x0
add r2, r4, #0x0
add r3, r6, #0x0
- blx _ll_mul
+ bl _ll_mul
add r6, r0, #0x0
add r4, r1, #0x0
ldr r0, [sp, #0x0]
ldr r1, [sp, #0x4]
ldr r2, [sp, #0x8]
ldr r3, [sp, #0xc]
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -47636,7 +47636,7 @@ _0201C862: pop {r3-r7, pc}
_0201C86A:
add r1, r5, #0x0
- blx FX_Atan2
+ bl FX_Atan2
add sp, #0x30
pop {r3-r7, pc}
.balign 4
@@ -47685,7 +47685,7 @@ FUN_0201C878: ; 0x0201C878 ldr r0, [sp, #0x8]
ldr r1, [sp, #0x1c]
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r7, r0, #0x0
add r6, r1, #0x0
ldr r3, [sp, #0x68]
@@ -47694,14 +47694,14 @@ FUN_0201C878: ; 0x0201C878 sub r2, r3, r2
ldr r1, [sp, #0x34]
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r5, r1, #0x0
str r0, [sp, #0x3c]
ldr r1, [sp, #0x38]
ldr r2, [sp, #0x20]
ldr r3, [sp, #0x24]
add r0, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
str r0, [sp, #0x4c]
add r0, r1, #0x0
@@ -47737,7 +47737,7 @@ FUN_0201C878: ; 0x0201C878 sub r2, r3, r2
ldr r1, [sp, #0x34]
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r7, r0, #0x0
add r6, r1, #0x0
ldr r3, [sp, #0x68]
@@ -47746,14 +47746,14 @@ FUN_0201C878: ; 0x0201C878 sub r2, r3, r2
ldr r1, [sp, #0x28]
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x40]
add r5, r1, #0x0
ldr r1, [sp, #0x38]
ldr r2, [sp, #0x14]
ldr r3, [sp, #0x18]
add r0, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
str r0, [sp, #0x50]
add r0, r1, #0x0
@@ -47789,7 +47789,7 @@ FUN_0201C878: ; 0x0201C878 sub r2, r3, r2
ldr r1, [sp, #0x28]
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r7, r0, #0x0
add r6, r1, #0x0
ldr r3, [sp, #0x68]
@@ -47798,14 +47798,14 @@ FUN_0201C878: ; 0x0201C878 sub r2, r3, r2
ldr r1, [sp, #0x1c]
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r5, r1, #0x0
str r0, [sp, #0x44]
ldr r1, [sp, #0x38]
ldr r2, [sp, #0x2c]
ldr r3, [sp, #0x30]
add r0, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r3, #0x2
mov r2, #0x0
lsl r3, r3, #0xa
@@ -47835,21 +47835,21 @@ FUN_0201C878: ; 0x0201C878 ldr r1, [sp, #0x34]
ldr r2, [sp, #0x2c]
ldr r3, [sp, #0x30]
- blx _ll_mul
+ bl _ll_mul
add r7, r0, #0x0
add r5, r1, #0x0
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x28]
ldr r2, [sp, #0x20]
ldr r3, [sp, #0x24]
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x48]
add r4, r1, #0x0
ldr r0, [sp, #0x8]
ldr r1, [sp, #0x1c]
ldr r2, [sp, #0x14]
ldr r3, [sp, #0x18]
- blx _ll_mul
+ bl _ll_mul
mov r12, r0
mov r0, #0x2
add r2, r1, #0x0
@@ -47951,7 +47951,7 @@ FUN_0201CAA8: ; 0x0201CAA8 add r0, r5, #0x0
add r1, sp, #0x0
add r2, r5, #0x0
- blx MTX_Concat33
+ bl MTX_Concat33
ldr r0, [r4, #0x8]
ldr r3, _0201CB1C ; =0x020FFA38
lsl r0, r0, #0x10
@@ -47968,7 +47968,7 @@ FUN_0201CAA8: ; 0x0201CAA8 add r0, r5, #0x0
add r1, sp, #0x0
add r2, r5, #0x0
- blx MTX_Concat33
+ bl MTX_Concat33
add sp, #0x24
pop {r4-r5, pc}
nop
@@ -48000,7 +48000,7 @@ FUN_0201CB20: ; 0x0201CB20 add r0, r7, #0x0
add r1, sp, #0x0
add r2, r7, #0x0
- blx MTX_Concat33
+ bl MTX_Concat33
lsl r1, r4, #0x2
ldr r3, _0201CB78 ; =0x020EDF50
add r4, #0x5a
@@ -48012,7 +48012,7 @@ FUN_0201CB20: ; 0x0201CB20 add r0, r7, #0x0
add r1, sp, #0x0
add r2, r7, #0x0
- blx MTX_Concat33
+ bl MTX_Concat33
add sp, #0x24
pop {r4-r7, pc}
.balign 4
@@ -48033,12 +48033,12 @@ FUN_0201CB7C: ; 0x0201CB7C ldrsh r1, [r1, r2]
add r5, r3, #0x0
ldr r4, [sp, #0x18]
- blx FX_Div
+ bl FX_Div
add r2, r0, #0x0
asr r1, r6, #0x1f
add r0, r6, #0x0
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r6, #0x2
mov r2, #0x0
lsl r6, r6, #0xa
@@ -48061,7 +48061,7 @@ FUN_0201CB7C: ; 0x0201CB7C asr r3, r7, #0x1f
add r2, r7, #0x0
str r0, [r4, #0x0]
- blx _ll_mul
+ bl _ll_mul
mov r3, #0x0
add r2, r6, #0x0
add r2, r0, r2
@@ -48085,7 +48085,7 @@ FUN_0201CBEC: ; 0x0201CBEC mul r0, r2
add r0, r1, r0
lsl r0, r0, #0xc
- blx FX_Sqrt
+ bl FX_Sqrt
asr r0, r0, #0xc
pop {r3, pc}
.balign 4
@@ -48207,11 +48207,11 @@ _0201CCD0: mov r4, #0x4
add r6, r4, #0x0
_0201CCD4:
- blx TP_RequestAutoSamplingStopAsync
+ bl TP_RequestAutoSamplingStopAsync
add r0, r4, #0x0
- blx TP_WaitBusy
+ bl TP_WaitBusy
add r0, r6, #0x0
- blx TP_CheckError
+ bl TP_CheckError
cmp r0, #0x0
beq _0201CCEA
add r5, r5, #0x1
@@ -48276,7 +48276,7 @@ _0201CD4E: ldrh r0, [r0, #0x18]
cmp r0, #0x0
beq _0201CD88
- blx TP_GetLatestIndexInAuto
+ bl TP_GetLatestIndexInAuto
add r5, r0, #0x0
ldr r0, _0201CD90 ; =0x021C5944
mov r1, #0x9
@@ -48320,7 +48320,7 @@ FUN_0201CD94: ; 0x0201CD94 _0201CDA6:
add r0, sp, #0x4
add r1, r5, #0x0
- blx TP_GetCalibratedPoint
+ bl TP_GetCalibratedPoint
ldrh r0, [r6, #0x0]
add r7, r7, #0x1
add r5, #0x8
@@ -48403,11 +48403,11 @@ _0201CE38: add r1, r4, #0x0
add r2, r7, #0x0
mov r3, #0x9
- blx TP_RequestAutoSamplingStartAsync
+ bl TP_RequestAutoSamplingStartAsync
mov r0, #0x2
- blx TP_WaitBusy
+ bl TP_WaitBusy
mov r0, #0x2
- blx TP_CheckError
+ bl TP_CheckError
cmp r0, #0x0
beq _0201CE56
add r5, r5, #0x1
@@ -48536,7 +48536,7 @@ _0201CF0C: ldr r2, [sp, #0x0]
cmp r2, #0x1
bne _0201CF36
- blx _u32_div_f
+ bl _u32_div_f
str r1, [r5, #0x54]
b _0201CF3E
_0201CF36:
@@ -48603,7 +48603,7 @@ _0201CF7C: blo _0201CFB8
cmp r7, #0x4
bne _0201CFB2
- blx _u32_div_f
+ bl _u32_div_f
str r1, [r5, #0x54]
b _0201CFB8
_0201CFB2:
@@ -48721,7 +48721,7 @@ FUN_0201D060: ; 0x0201D060 mov r2, #0x3c
str r1, [r0, #0x0]
mov r0, #0x0
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
ldr r1, _0201D120 ; =0x021C5994
ldr r2, [r5, #0x0]
ldr r0, [r1, #0x0]
@@ -49954,7 +49954,7 @@ FUN_0201D9B0: ; 0x0201D9B0 push {r4, lr}
add r4, r0, #0x0
add r0, #0x10
- blx FUN_020B1A24
+ bl FUN_020B1A24
ldr r1, [r4, #0x4]
cmp r1, #0x3
beq _0201D9C8
@@ -50002,13 +50002,13 @@ _0201DA04: add r5, #0x10
add r2, r4, #0x0
add r3, r5, #0x0
- blx FUN_020B1528
+ bl FUN_020B1528
b _0201DA20
_0201DA16:
add r5, #0x10
add r2, r4, #0x0
add r3, r5, #0x0
- blx FUN_020B1768
+ bl FUN_020B1768
_0201DA20:
cmp r4, #0x1
bne _0201DA2C
@@ -50028,7 +50028,7 @@ FUN_0201DA38: ; 0x0201DA38 push {r4, lr}
add r4, r0, #0x0
add r0, #0x10
- blx FUN_020B1A24
+ bl FUN_020B1A24
ldr r1, [r4, #0x4]
cmp r1, #0x3
beq _0201DA50
@@ -50071,7 +50071,7 @@ _0201DA88: add r5, #0x10
add r2, r4, #0x0
add r3, r5, #0x0
- blx FUN_020B1340
+ bl FUN_020B1340
cmp r4, #0x1
bne _0201DAA0
mov r0, #0x1
@@ -50123,7 +50123,7 @@ _0201DAE4: .word 0x021C5994 thumb_func_start FUN_0201DAE8
FUN_0201DAE8: ; 0x0201DAE8
push {r3, lr}
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
cmp r0, #0x30
bgt _0201DB18
bge _0201DB60
@@ -50224,7 +50224,7 @@ _0201DB90: ldr r0, [r0, #0x0]
str r1, [r0, #0x14]
_0201DB98:
- blx GX_GetBankForSubOBJ
+ bl GX_GetBankForSubOBJ
cmp r0, #0x0
beq _0201DBAE
cmp r0, #0x8
@@ -50427,7 +50427,7 @@ FUN_0201DD00: ; 0x0201DD00 add r0, r4, #0x0
mov r1, #0x0
lsr r2, r2, #0x3
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
_0201DD16:
pop {r4, pc}
@@ -50609,7 +50609,7 @@ FUN_0201DE4C: ; 0x0201DE4C beq _0201DE8A
add r0, r4, #0x0
add r0, #0x10
- blx FUN_020B1A14
+ bl FUN_020B1A14
ldr r1, _0201DECC ; =0x021C5994
ldr r2, [r1, #0x0]
ldr r1, [r2, #0x1c]
@@ -50635,7 +50635,7 @@ _0201DE8A: beq _0201DEC4
add r0, r4, #0x0
add r0, #0x10
- blx FUN_020B1A14
+ bl FUN_020B1A14
ldr r1, _0201DECC ; =0x021C5994
ldr r2, [r1, #0x0]
ldr r1, [r2, #0x20]
@@ -50707,7 +50707,7 @@ FUN_0201DF10: ; 0x0201DF10 add r5, r0, #0x0
add r4, r1, #0x0
add r6, r2, #0x0
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0x0
beq _0201DF28
sub r5, r5, r1
@@ -50867,7 +50867,7 @@ FUN_0201E00C: ; 0x0201E00C mov r2, #0x28
str r1, [r0, #0x0]
mov r0, #0x0
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
ldr r0, _0201E064 ; =0x021C5998
mov r1, #0x30
ldr r0, [r0, #0x0]
@@ -51219,9 +51219,9 @@ _0201E2A4: _0201E2A6:
cmp r4, #0x0
beq _0201E2B6
- blx FUN_020B19C4
+ bl FUN_020B19C4
add r1, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
pop {r4, pc}
_0201E2B6:
mov r0, #0x0
@@ -51269,13 +51269,13 @@ FUN_0201E2F8: ; 0x0201E2F8 mov r1, #0x0
mov r2, #0x30
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r0, #0x0
mvn r0, r0
str r0, [r4, #0xc]
add r4, #0x10
add r0, r4, #0x0
- blx FUN_020B19DC
+ bl FUN_020B19DC
pop {r4, pc}
thumb_func_start FUN_0201E314
@@ -51463,7 +51463,7 @@ _0201E460: .word 0x021C5998 thumb_func_start FUN_0201E464
FUN_0201E464: ; 0x0201E464
push {r3, lr}
- blx GX_GetBankForOBJExtPltt
+ bl GX_GetBankForOBJExtPltt
cmp r0, #0x20
beq _0201E472
cmp r0, #0x40
@@ -51481,7 +51481,7 @@ _0201E47E: ldr r0, [r0, #0x0]
str r1, [r0, #0x1c]
_0201E486:
- blx GX_GetBankForSubOBJExtPltt
+ bl GX_GetBankForSubOBJExtPltt
mov r1, #0x1
lsl r1, r1, #0x8
cmp r0, r1
@@ -51516,7 +51516,7 @@ FUN_0201E4BC: ; 0x0201E4BC push {r4, lr}
add r4, r0, #0x0
add r0, #0x10
- blx FUN_020B19DC
+ bl FUN_020B19DC
ldr r0, [r4, #0x4]
mov r2, #0x1
tst r0, r2
@@ -51525,7 +51525,7 @@ FUN_0201E4BC: ; 0x0201E4BC ldr r0, [r4, #0x0]
ldr r1, [r4, #0x24]
add r3, #0x10
- blx FUN_020B1240
+ bl FUN_020B1240
_0201E4DA:
ldr r0, [r4, #0x4]
mov r2, #0x2
@@ -51535,7 +51535,7 @@ _0201E4DA: ldr r1, [r4, #0x28]
add r4, #0x10
add r3, r4, #0x0
- blx FUN_020B1240
+ bl FUN_020B1240
_0201E4EE:
pop {r4, pc}
@@ -51767,36 +51767,36 @@ _0201E666: FUN_0201E66C: ; 0x0201E66C
push {r4, lr}
add r4, r0, #0x0
- blx GX_ResetBankForBG
- blx GX_ResetBankForBGExtPltt
- blx GX_ResetBankForSubBG
- blx FUN_020C6034
- blx GX_ResetBankForOBJ
- blx GX_ResetBankForOBJExtPltt
- blx FUN_020C605C
- blx GX_ResetBankForSubOBJ
- blx GX_ResetBankForTex
- blx GX_ResetBankForTexPltt
+ bl GX_ResetBankForBG
+ bl GX_ResetBankForBGExtPltt
+ bl GX_ResetBankForSubBG
+ bl FUN_020C6034
+ bl GX_ResetBankForOBJ
+ bl GX_ResetBankForOBJExtPltt
+ bl FUN_020C605C
+ bl GX_ResetBankForSubOBJ
+ bl GX_ResetBankForTex
+ bl GX_ResetBankForTexPltt
ldr r0, [r4, #0x0]
- blx GX_SetBankForBG
+ bl GX_SetBankForBG
ldr r0, [r4, #0x4]
- blx GX_SetBankForBGExtPltt
+ bl GX_SetBankForBGExtPltt
ldr r0, [r4, #0x8]
- blx GX_SetBankForSubBG
+ bl GX_SetBankForSubBG
ldr r0, [r4, #0xc]
- blx GX_SetBankForSubBGExtPltt
+ bl GX_SetBankForSubBGExtPltt
ldr r0, [r4, #0x10]
- blx GX_SetBankForOBJ
+ bl GX_SetBankForOBJ
ldr r0, [r4, #0x14]
- blx GX_SetBankForOBJExtPltt
+ bl GX_SetBankForOBJExtPltt
ldr r0, [r4, #0x18]
- blx GX_SetBankForSubOBJ
+ bl GX_SetBankForSubOBJ
ldr r0, [r4, #0x1c]
- blx GX_SetBankForSubOBJExtPltt
+ bl GX_SetBankForSubOBJExtPltt
ldr r0, [r4, #0x20]
- blx GX_SetBankForTex
+ bl GX_SetBankForTex
ldr r0, [r4, #0x24]
- blx GX_SetBankForTexPltt
+ bl GX_SetBankForTexPltt
pop {r4, pc}
.balign 4
@@ -51906,7 +51906,7 @@ _0201E784: .word 0xFFFFE0FF thumb_func_start FUN_0201E788
FUN_0201E788: ; 0x0201E788
push {r3, lr}
- blx GX_DispOn
+ bl GX_DispOn
ldr r2, _0201E79C ; =0x04001000
mov r0, #0x1
ldr r1, [r2, #0x0]
@@ -51961,7 +51961,7 @@ FUN_0201E7D8: ; 0x0201E7D8 asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -51978,7 +51978,7 @@ FUN_0201E7D8: ; 0x0201E7D8 orr r0, r1
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -51998,7 +51998,7 @@ FUN_0201E7D8: ; 0x0201E7D8 asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
lsl r2, r2, #0xa
mov r3, #0x0
@@ -52016,7 +52016,7 @@ FUN_0201E7D8: ; 0x0201E7D8 ldrsh r2, [r2, r3]
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52036,7 +52036,7 @@ FUN_0201E7D8: ; 0x0201E7D8 ldrsh r0, [r0, r1]
asr r3, r2, #0x1f
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52051,7 +52051,7 @@ FUN_0201E7D8: ; 0x0201E7D8 add r5, #0x20
add r1, r5, #0x0
add r2, r0, #0x0
- blx VEC_Add
+ bl VEC_Add
pop {r3-r5, pc}
nop
_0201E8B4: .word 0x020FFA38
@@ -52069,7 +52069,7 @@ FUN_0201E8B8: ; 0x0201E8B8 asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52086,7 +52086,7 @@ FUN_0201E8B8: ; 0x0201E8B8 orr r0, r1
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52107,7 +52107,7 @@ FUN_0201E8B8: ; 0x0201E8B8 asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
lsl r2, r2, #0xa
mov r3, #0x0
@@ -52125,7 +52125,7 @@ FUN_0201E8B8: ; 0x0201E8B8 ldrsh r2, [r2, r3]
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52146,7 +52146,7 @@ FUN_0201E8B8: ; 0x0201E8B8 ldrsh r0, [r0, r1]
asr r3, r2, #0x1f
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52162,7 +52162,7 @@ FUN_0201E8B8: ; 0x0201E8B8 add r5, #0x14
add r1, r5, #0x0
add r2, r0, #0x0
- blx VEC_Add
+ bl VEC_Add
pop {r3-r5, pc}
.balign 4
_0201E998: .word 0x020FFA38
@@ -52279,7 +52279,7 @@ _0201EA5C: ldr r0, [r7, #0x4]
ldr r1, [r1, #0x0]
add r0, r0, #0x1
- blx _s32_div_f
+ bl _s32_div_f
str r1, [r7, #0x4]
ldr r1, [sp, #0x0]
ldr r0, [r5, #0x64]
@@ -52298,7 +52298,7 @@ _0201EA5C: ldr r0, [r0, #0x0]
ldr r1, [r1, #0x0]
add r0, r0, #0x1
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [sp, #0x0]
str r1, [r0, #0x0]
ldr r0, [r5, #0x64]
@@ -52477,7 +52477,7 @@ FUN_0201EBA4: ; 0x0201EBA4 beq _0201EBEE
add r1, #0x48
add r2, sp, #0x10
- blx VEC_Subtract
+ bl VEC_Subtract
ldr r0, _0201EC40 ; =0x021C59A4
add r1, sp, #0x10
ldr r0, [r0, #0x0]
@@ -52531,7 +52531,7 @@ _0201EBEE: str r0, [sp, #0x0]
add r0, r4, #0x0
mov r3, #0x0
- blx G3i_LookAt_
+ bl G3i_LookAt_
ldr r1, _0201EC54 ; =0x021CED98
mov r0, #0xe8
ldr r2, [r1, #0x7c]
@@ -52719,9 +52719,9 @@ FUN_0201ED5C: ; 0x0201ED5C str r0, [r2, #0x0]
add r0, r6, #0x0
add r2, sp, #0x30
- blx VEC_Subtract
+ bl VEC_Subtract
add r0, sp, #0x30
- blx VEC_Mag
+ bl VEC_Mag
str r0, [r4, #0x38]
mov r6, #0x0
add r0, sp, #0x24
@@ -52813,7 +52813,7 @@ FUN_0201EE2C: ; 0x0201EE2C ldr r1, [r5, #0x4]
ldr r2, [r5, #0x8]
ldr r3, [r5, #0xc]
- blx G3i_PerspectiveW_
+ bl G3i_PerspectiveW_
ldr r1, _0201EEE8 ; =0x021CED98
mov r0, #0x50
ldr r2, [r1, #0x7c]
@@ -52830,11 +52830,11 @@ _0201EE6C: ldr r4, [r5, #0x38]
ldr r0, [r5, #0x0]
ldr r1, [r5, #0x4]
- blx FX_Div
+ bl FX_Div
asr r1, r0, #0x1f
asr r3, r4, #0x1f
add r2, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52847,7 +52847,7 @@ _0201EE6C: asr r1, r4, #0x1f
add r0, r4, #0x0
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r6, #0x2
mov r2, #0x0
lsl r6, r6, #0xa
@@ -52868,7 +52868,7 @@ _0201EE6C: neg r2, r3
str r0, [sp, #0x10]
add r0, r4, #0x0
- blx G3i_OrthoW_
+ bl G3i_OrthoW_
ldr r1, _0201EEE8 ; =0x021CED98
mov r0, #0x50
ldr r2, [r1, #0x7c]
@@ -52962,12 +52962,12 @@ FUN_0201EF70: ; 0x0201EF70 add r0, #0x14
add r1, r5, #0x0
add r2, r0, #0x0
- blx VEC_Add
+ bl VEC_Add
add r4, #0x20
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r4, #0x0
- blx VEC_Add
+ bl VEC_Add
pop {r3-r5, pc}
thumb_func_start FUN_0201EF90
@@ -53489,7 +53489,7 @@ FUN_0201F318: ; 0x0201F318 bl ErrorHandling
_0201F324:
add r0, sp, #0x0
- blx MTX_Identity33_
+ bl MTX_Identity33_
add r0, r5, #0x0
add r0, #0xbc
ldr r4, [r0, #0x0]
@@ -53648,13 +53648,13 @@ FUN_0201F454: ; 0x0201F454 add r4, r1, #0x0
add r6, r2, #0x0
add r7, r3, #0x0
- blx FUN_020B7E1C
+ bl FUN_020B7E1C
str r0, [sp, #0x8]
add r0, r5, #0x0
- blx FUN_020B7E10
+ bl FUN_020B7E10
str r0, [sp, #0x4]
add r0, r5, #0x0
- blx FUN_020B7CE4
+ bl FUN_020B7CE4
str r0, [sp, #0x0]
ldr r0, [sp, #0x8]
cmp r0, #0x0
@@ -53722,9 +53722,9 @@ FUN_0201F4EC: ; 0x0201F4EC push {r3-r5, lr}
add r5, r0, #0x0
add r4, r3, #0x0
- blx FUN_020B7CF0
+ bl FUN_020B7CF0
add r0, r5, #0x0
- blx FUN_020B7C58
+ bl FUN_020B7C58
str r0, [r4, #0x0]
pop {r3-r5, pc}
@@ -53735,14 +53735,14 @@ FUN_0201F500: ; 0x0201F500 ldr r1, [r2, #0x0]
ldr r2, [r3, #0x0]
add r5, r0, #0x0
- blx FUN_020B7DFC
+ bl FUN_020B7DFC
ldr r1, [sp, #0x10]
add r0, r5, #0x0
ldr r1, [r1, #0x0]
- blx FUN_020B7CDC
+ bl FUN_020B7CDC
add r0, r4, #0x0
add r1, r5, #0x0
- blx FUN_020B7790
+ bl FUN_020B7790
pop {r3-r5, pc}
.balign 4
@@ -53792,22 +53792,22 @@ _0201F568: mov r0, #0x0
pop {r3-r7, pc}
_0201F56E:
- blx FUN_020B7E1C
+ bl FUN_020B7E1C
str r0, [sp, #0x0]
add r0, r4, #0x0
- blx FUN_020B7E10
+ bl FUN_020B7E10
str r0, [sp, #0x4]
add r0, r4, #0x0
- blx FUN_020B7CE4
+ bl FUN_020B7CE4
add r4, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7E1C
+ bl FUN_020B7E1C
add r6, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7E10
+ bl FUN_020B7E10
add r7, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7CE4
+ bl FUN_020B7CE4
ldr r1, [sp, #0x0]
cmp r1, r6
bne _0201F5AA
@@ -53859,7 +53859,7 @@ FUN_0201F5D4: ; 0x0201F5D4 add r0, r5, #0x0
ldr r1, [r5, #0x7c]
add r0, #0x24
- blx FUN_020B80B4
+ bl FUN_020B80B4
add r0, r5, #0x0
add r0, #0xa8
ldrb r0, [r0, #0x0]
@@ -53961,7 +53961,7 @@ FUN_0201F69C: ; 0x0201F69C add r0, r5, #0x0
ldr r1, [r5, #0x7c]
add r0, #0x24
- blx FUN_020B80B4
+ bl FUN_020B80B4
add r0, r4, #0x0
bl FUN_0201FBCC
add r5, #0x84
@@ -54681,7 +54681,7 @@ FUN_0201FB9C: ; 0x0201FB9C add r5, r2, #0x0
bl FUN_0201FC90
add r7, r0, #0x0
- blx FUN_020BC13C
+ bl FUN_020BC13C
add r4, r0, #0x0
ldrh r0, [r4, #0xe]
add r0, r4, r0
@@ -54691,7 +54691,7 @@ FUN_0201FB9C: ; 0x0201FB9C cmp r5, #0x0
beq _0201FBC6
add r0, r7, #0x0
- blx FUN_020BC0FC
+ bl FUN_020BC0FC
str r0, [r5, #0x0]
_0201FBC6:
add r0, r4, #0x0
@@ -54803,7 +54803,7 @@ FUN_0201FC70: ; 0x0201FC70 sub sp, #0xc
add r4, r0, #0x0
ldr r0, [r4, #0x78]
- blx FUN_020B772C
+ bl FUN_020B772C
add r4, #0x80
ldr r0, [r4, #0x0]
add r1, sp, #0x4
@@ -54907,7 +54907,7 @@ _0201FD0C: ldr r0, [r4, r1]
add r1, r1, #0x4
add r1, r4, r1
- blx thunk_FUN_020afda0_2
+ bl thunk_FUN_020afda0_2
mov r0, #0x12
mov r1, #0x1
lsl r0, r0, #0x4
@@ -55078,13 +55078,13 @@ FUN_0201FE6C: ; 0x0201FE6C mov r1, #0x0
lsl r2, r2, #0x2
str r1, [r4, #0x3c]
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
add r0, #0xb4
- blx FUN_020B1A24
+ bl FUN_020B1A24
add r0, r4, #0x0
add r0, #0xd8
- blx FUN_020B19DC
+ bl FUN_020B19DC
mov r0, #0x0
str r0, [r4, #0x30]
pop {r4, pc}
@@ -55151,7 +55151,7 @@ _0201FEA6: add r1, r4, #0x0
add r1, #0x26
ldrb r1, [r1, #0x0]
- blx FUN_020B502C
+ bl FUN_020B502C
add r0, r4, #0x0
add r0, #0x27
ldrb r2, [r0, #0x0]
@@ -55163,7 +55163,7 @@ _0201FEA6: mov r3, #0x2
and r1, r2
and r2, r3
- blx FUN_020B4F38
+ bl FUN_020B4F38
add r0, r4, #0x0
mov r2, #0x1
add r0, #0x34
@@ -55272,13 +55272,13 @@ _0201FFE4: ldr r1, [r1, #0x0]
add r0, #0xb4
add r4, #0x40
- blx FUN_020B1A14
+ bl FUN_020B1A14
mov r1, #0x0
mvn r1, r1
cmp r0, r1
beq _0202000E
ldr r0, [r4, #0x5c]
- blx FUN_020B4358
+ bl FUN_020B4358
_0202000E:
add r0, r5, #0x0
add r0, #0xec
@@ -55488,11 +55488,11 @@ _0202014A: lsl r1, r1, #0x10
ldr r0, [r4, #0x4]
lsr r1, r1, #0x10
- blx FUN_020AFC04
+ bl FUN_020AFC04
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x8
- blx FUN_020B1EE4
+ bl FUN_020B1EE4
mov r0, #0x1
str r0, [r4, #0x10]
pop {r4, pc}
@@ -55501,11 +55501,11 @@ _02020168: add r4, #0x40
ldr r0, [r4, #0x6c]
add r1, r3, #0x0
- blx FUN_020AFC04
+ bl FUN_020AFC04
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x8
- blx FUN_020B242C
+ bl FUN_020B242C
mov r0, #0x1
str r0, [r4, #0x10]
pop {r4, pc}
@@ -55538,7 +55538,7 @@ _020201A8: add r5, #0x40
add r0, r5, #0x0
add r0, #0x8
- blx FUN_020B0448
+ bl FUN_020B0448
mov r0, #0x1
str r0, [r5, #0x10]
add r0, r4, #0x0
@@ -55550,7 +55550,7 @@ _020201C2: add r5, #0x40
add r0, r5, #0x0
add r0, #0x8
- blx FUN_020B0448
+ bl FUN_020B0448
mov r0, #0x1
str r0, [r5, #0x10]
add r0, r4, #0x0
@@ -55578,12 +55578,12 @@ FUN_020201E4: ; 0x020201E4 _020201F4:
add r0, #0x40
add r0, #0x8
- blx FUN_020B1EC4
+ bl FUN_020B1EC4
pop {r3, pc}
_020201FE:
add r0, #0x40
add r0, #0x8
- blx FUN_020B224C
+ bl FUN_020B224C
pop {r3, pc}
thumb_func_start FUN_02020208
@@ -55599,12 +55599,12 @@ FUN_02020208: ; 0x02020208 _02020218:
add r0, #0x40
add r0, #0x8
- blx FUN_020B1EA4
+ bl FUN_020B1EA4
pop {r3, pc}
_02020222:
add r0, #0x40
add r0, #0x8
- blx FUN_020B2194
+ bl FUN_020B2194
pop {r3, pc}
thumb_func_start FUN_0202022C
@@ -55878,16 +55878,16 @@ FUN_020203CC: ; 0x020203CC lsl r0, r0, #0x6
add r1, r4, #0x0
lsl r2, r2, #0xa
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
mov r1, #0x1
add r0, r4, #0x0
lsl r1, r1, #0xa
- blx DC_FlushRange
+ bl DC_FlushRange
mov r2, #0x1
add r0, r4, #0x0
mov r1, #0x0
lsl r2, r2, #0xa
- blx GX_LoadOAM
+ bl GX_LoadOAM
add r0, r4, #0x0
bl FUN_02016A18
pop {r4, pc}
@@ -55904,12 +55904,12 @@ FUN_02020404: ; 0x02020404 lsl r0, r0, #0x6
add r1, r4, #0x0
lsl r2, r2, #0xa
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
mov r2, #0x1
add r0, r4, #0x0
mov r1, #0x0
lsl r2, r2, #0xa
- blx GXS_LoadOAM
+ bl GXS_LoadOAM
add r0, r4, #0x0
bl FUN_02016A18
pop {r4, pc}
@@ -56048,12 +56048,12 @@ FUN_0202050C: ; 0x0202050C add r4, #0x40
ldr r0, [r4, #0x4]
mov r1, #0x0
- blx FUN_020AFC04
+ bl FUN_020AFC04
add r4, #0x8
add r1, r0, #0x0
ldr r2, [r5, #0x40]
add r0, r4, #0x0
- blx FUN_020B1F80
+ bl FUN_020B1F80
pop {r3-r5, pc}
.balign 4
@@ -56065,22 +56065,22 @@ FUN_0202052C: ; 0x0202052C add r4, r6, #0x0
add r4, #0x40
add r5, r0, #0x0
- blx FUN_020B43A4
+ bl FUN_020B43A4
str r0, [r4, #0x5c]
ldr r0, [r4, #0x4]
mov r1, #0x0
ldr r5, [r5, #0x4]
- blx FUN_020AFC04
+ bl FUN_020AFC04
str r0, [sp, #0x18]
add r0, r6, #0x0
add r0, #0xb4
mov r1, #0x1
- blx FUN_020B1A14
+ bl FUN_020B1A14
add r7, r0, #0x0
add r0, r6, #0x0
add r0, #0xb4
mov r1, #0x2
- blx FUN_020B1A14
+ bl FUN_020B1A14
mov r1, #0x0
mvn r1, r1
str r1, [sp, #0x0]
@@ -56097,7 +56097,7 @@ FUN_0202052C: ; 0x0202052C ldr r2, [r6, #0x40]
ldr r3, [r4, #0x5c]
add r0, #0x8
- blx FUN_020B1EFC
+ bl FUN_020B1EFC
add sp, #0x1c
pop {r4-r7, pc}
@@ -56111,10 +56111,10 @@ FUN_02020588: ; 0x02020588 ldr r0, [r4, #0x6c]
add r7, r1, #0x0
mov r1, #0x0
- blx FUN_020AFC04
+ bl FUN_020AFC04
str r0, [sp, #0xc]
ldr r0, [r4, #0x68]
- blx FUN_020B23D8
+ bl FUN_020B23D8
add r6, r0, #0x0
mov r1, #0x28
add r0, r7, #0x0
@@ -56137,11 +56137,11 @@ FUN_02020588: ; 0x02020588 ldr r1, [r4, #0x70]
ldr r2, [r4, #0x74]
add r0, #0x8
- blx FUN_020B20C8
+ bl FUN_020B20C8
add r4, #0x8
ldr r1, [sp, #0xc]
add r0, r4, #0x0
- blx FUN_020B242C
+ bl FUN_020B242C
add sp, #0x10
pop {r3-r7, pc}
.balign 4
@@ -56166,9 +56166,9 @@ _02020600: _02020602:
cmp r4, #0x0
beq _02020612
- blx FUN_020B19C4
+ bl FUN_020B19C4
add r1, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
pop {r4, pc}
_02020612:
mov r0, #0x0
@@ -56194,19 +56194,19 @@ FUN_02020618: ; 0x02020618 ldr r0, [r5, r0]
add r1, #0xb4
add r2, #0xd8
- blx thunk_FUN_020b5040
+ bl thunk_FUN_020b5040
mov r0, #0x45
lsl r0, r0, #0x2
ldr r0, [r5, r0]
- blx FUN_020B326C
- blx FUN_020B2B58
+ bl FUN_020B326C
+ bl FUN_020B2B58
add r1, r4, #0x0
mov r0, #0x45
add r1, #0x26
lsl r0, r0, #0x2
ldrb r1, [r1, #0x0]
ldr r0, [r5, r0]
- blx FUN_020B502C
+ bl FUN_020B502C
add r0, r4, #0x0
add r0, #0x26
ldrb r0, [r0, #0x0]
@@ -56222,7 +56222,7 @@ FUN_02020618: ; 0x02020618 mov r3, #0x2
and r1, r2
and r2, r3
- blx FUN_020B4F38
+ bl FUN_020B4F38
b _0202068E
_02020680:
mov r0, #0x45
@@ -56230,12 +56230,12 @@ _02020680: mov r1, #0x0
ldr r0, [r5, r0]
add r2, r1, #0x0
- blx FUN_020B4F38
+ bl FUN_020B4F38
_0202068E:
ldr r0, [sp, #0x0]
ldr r1, [sp, #0x4]
ldr r2, [sp, #0x8]
- blx FUN_020B2A08
+ bl FUN_020B2A08
add r0, r4, #0x0
add r0, #0x26
ldrb r0, [r0, #0x0]
@@ -56244,11 +56244,11 @@ _0202068E: ldr r0, [r4, #0xc]
ldr r1, [r4, #0x10]
ldr r2, [r4, #0x14]
- blx FUN_020B2A08
+ bl FUN_020B2A08
ldr r0, [r4, #0x18]
ldr r1, [r4, #0x1c]
ldr r2, [r4, #0x20]
- blx FUN_020B28B4
+ bl FUN_020B28B4
ldrh r0, [r4, #0x24]
ldr r2, _02020770 ; =0x020FFA38
asr r0, r0, #0x4
@@ -56258,14 +56258,14 @@ _0202068E: lsl r1, r1, #0x1
ldrsh r0, [r2, r0]
ldrsh r1, [r2, r1]
- blx FUN_020B2794
+ bl FUN_020B2794
ldr r0, [r4, #0xc]
ldr r1, [r4, #0x10]
ldr r2, [r4, #0x14]
neg r0, r0
neg r1, r1
neg r2, r2
- blx FUN_020B2A08
+ bl FUN_020B2A08
_020206DC:
add r0, r4, #0x0
add r0, #0x28
@@ -56328,16 +56328,16 @@ _0202074E: add r4, #0x40
add r4, #0x8
add r0, r4, #0x0
- blx FUN_020B317C
+ bl FUN_020B317C
b _02020764
_0202075A:
add r4, #0x40
add r4, #0x8
add r0, r4, #0x0
- blx FUN_020B2D9C
+ bl FUN_020B2D9C
_02020764:
- blx FUN_020B2B08
- blx FUN_020B31F0
+ bl FUN_020B2B08
+ bl FUN_020B31F0
add sp, #0xc
pop {r3-r6, pc}
.balign 4
@@ -56895,9 +56895,9 @@ FUN_02020AFC: ; 0x02020AFC strh r0, [r1, #0x0]
ldr r1, _02020B2C ; =FUN_02020B30
mov r0, #0x40
- blx OS_SetIrqFunction
+ bl OS_SetIrqFunction
mov r0, #0x40
- blx OS_EnableIrqMask
+ bl OS_EnableIrqMask
pop {r3, pc}
.balign 4
_02020B24: .word 0x021C59B0
@@ -56946,7 +56946,7 @@ _02020B7C: .word FUN_02020B30 FUN_02020B80: ; 0x02020B80
push {r4-r5, lr}
sub sp, #0xc
- blx OS_DisableInterrupts
+ bl OS_DisableInterrupts
ldr r1, _02020BE4 ; =0x0400010C
add r3, sp, #0x0
ldrh r1, [r1, #0x0]
@@ -56978,7 +56978,7 @@ FUN_02020B80: ; 0x02020B80 str r2, [sp, #0x4]
str r3, [sp, #0x8]
_02020BC4:
- blx OS_RestoreInterrupts
+ bl OS_RestoreInterrupts
ldr r2, [sp, #0x4]
ldr r1, [sp, #0x8]
lsr r0, r2, #0x10
@@ -57015,7 +57015,7 @@ FUN_02020BFC: ; 0x02020BFC ldr r2, _02020C10 ; =0x000082EA
lsl r0, r0, #0x6
mov r3, #0x0
- blx _ll_udiv
+ bl _ll_udiv
pop {r3, pc}
.balign 4
_02020C10: .word 0x000082EA
@@ -57029,7 +57029,7 @@ FUN_02020C14: ; 0x02020C14 ldr r2, _02020C28 ; =0x01FF6210
lsl r0, r0, #0x6
mov r3, #0x0
- blx _ll_udiv
+ bl _ll_udiv
pop {r3, pc}
.balign 4
_02020C28: .word 0x01FF6210
@@ -57040,7 +57040,7 @@ ErrorHandling: ; 0x02020C2C bl FUN_02031810
cmp r0, #0x0
beq _02020C42
- blx OS_GetProcMode
+ bl OS_GetProcMode
cmp r0, #0x12
beq _02020C42
bl FUN_0208A9B8
@@ -57881,7 +57881,7 @@ FUN_02021220: ; 0x02021220 push {r3, lr}
ldr r0, [r0, #0x0]
bl FUN_02020E0C
- blx FUN_020BC0FC
+ bl FUN_020BC0FC
pop {r3, pc}
.balign 4
@@ -57897,7 +57897,7 @@ FUN_02021230: ; 0x02021230 _02021240:
ldr r0, [r0, #0x10]
_02021242:
- blx FUN_020BC0FC
+ bl FUN_020BC0FC
pop {r3, pc}
thumb_func_start FUN_02021248
@@ -57908,13 +57908,13 @@ FUN_02021248: ; 0x02021248 str r1, [sp, #0x0]
str r2, [sp, #0x4]
str r3, [sp, #0x8]
- blx FUN_020B7E1C
+ bl FUN_020B7E1C
add r7, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7E10
+ bl FUN_020B7E10
add r6, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7CE4
+ bl FUN_020B7CE4
add r4, r0, #0x0
cmp r7, #0x0
beq _0202127E
@@ -57969,13 +57969,13 @@ FUN_020212B8: ; 0x020212B8 bl FUN_020212E4
ldr r1, [r4, #0x4]
add r0, r4, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
add r0, r4, #0x0
mov r1, #0x1
- blx FUN_020B7D28
+ bl FUN_020B7D28
add r0, r4, #0x0
mov r1, #0x1
- blx FUN_020B7C78
+ bl FUN_020B7C78
pop {r4, pc}
.balign 4
@@ -57984,10 +57984,10 @@ FUN_020212E4: ; 0x020212E4 push {r3-r5, lr}
add r5, r0, #0x0
add r4, r3, #0x0
- blx FUN_020B7DFC
+ bl FUN_020B7DFC
add r0, r5, #0x0
add r1, r4, #0x0
- blx FUN_020B7CDC
+ bl FUN_020B7CDC
pop {r3-r5, pc}
thumb_func_start FUN_020212F8
@@ -57997,9 +57997,9 @@ FUN_020212F8: ; 0x020212F8 add r4, r0, #0x0
add r1, sp, #0x4
add r2, sp, #0x0
- blx FUN_020B7CF0
+ bl FUN_020B7CF0
add r0, r4, #0x0
- blx FUN_020B7C58
+ bl FUN_020B7C58
add sp, #0x8
pop {r4, pc}
@@ -58016,7 +58016,7 @@ FUN_02021310: ; 0x02021310 add r1, r6, #0x0
add r2, r5, #0x0
add r4, r0, #0x0
- blx memcpy
+ bl memcpy
add r0, r4, #0x0
pop {r4-r6, pc}
.balign 4
@@ -58025,7 +58025,7 @@ FUN_02021310: ; 0x02021310 FUN_02021334: ; 0x02021334
push {r3-r5, lr}
add r5, r0, #0x0
- blx FUN_020BC0FC
+ bl FUN_020BC0FC
add r4, r0, #0x0
bne _02021344
bl ErrorHandling
@@ -58040,7 +58040,7 @@ FUN_0202134C: ; 0x0202134C push {r3-r5, lr}
add r5, r0, #0x0
add r4, r1, #0x0
- blx FUN_020B33A0
+ bl FUN_020B33A0
add r5, #0x80
str r4, [r5, #0x0]
pop {r3-r5, pc}
@@ -58052,7 +58052,7 @@ FUN_0202135C: ; 0x0202135C add r4, r1, #0x0
add r6, r2, #0x0
add r7, r3, #0x0
- blx FUN_020B3334
+ bl FUN_020B3334
add r2, r5, #0x0
ldmia r4!, {r0-r1}
stmia r2!, {r0-r1}
@@ -58068,7 +58068,7 @@ FUN_0202135C: ; 0x0202135C cmp r0, #0x0
beq _0202138C
add r1, r5, #0x0
- blx FUN_020B3390
+ bl FUN_020B3390
_0202138C:
pop {r3-r7, pc}
.balign 4
@@ -58150,14 +58150,14 @@ _02021400: ldr r2, [sp, #0x28]
ldr r3, [sp, #0x2c]
add r0, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
add r7, r1, #0x0
str r0, [sp, #0x30]
ldr r1, [sp, #0x24]
ldr r2, [sp, #0x1c]
ldr r3, [sp, #0x20]
add r0, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
add r2, r0, #0x0
add r3, r1, #0x0
mov r0, #0x2
@@ -58187,14 +58187,14 @@ _02021400: str r0, [sp, #0x34]
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x34]
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x38]
add r4, r1, #0x0
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x34]
ldr r2, [sp, #0x1c]
ldr r3, [sp, #0x20]
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
ldr r3, [sp, #0x38]
lsl r2, r2, #0xa
@@ -58230,14 +58230,14 @@ _02021400: ldr r0, [sp, #0xc]
ldr r2, [sp, #0x48]
ldr r3, [sp, #0x4c]
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x50]
add r5, r1, #0x0
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x44]
ldr r2, [sp, #0x3c]
ldr r3, [sp, #0x40]
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
ldr r3, [sp, #0x50]
lsl r2, r2, #0xa
@@ -58265,14 +58265,14 @@ _02021400: ldr r1, [sp, #0x54]
ldr r2, [sp, #0x48]
ldr r3, [sp, #0x4c]
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x58]
str r1, [sp, #0x4]
ldr r0, [sp, #0x8]
ldr r1, [sp, #0x54]
ldr r2, [sp, #0x3c]
ldr r3, [sp, #0x40]
- blx _ll_mul
+ bl _ll_mul
mov r12, r0
add r2, r1, #0x0
mov r0, #0x2
@@ -59038,7 +59038,7 @@ _02021AA2: add r0, #0x8
add r1, #0x8
lsl r2, r2, #0x1
- blx memcpy
+ bl memcpy
ldrh r0, [r4, #0x2]
strh r0, [r5, #0x2]
pop {r3-r5, pc}
@@ -59150,7 +59150,7 @@ _02021B74: _02021B80:
add r0, r6, #0x0
add r1, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
lsl r0, r0, #0x10
lsr r1, r0, #0x10
add r0, r4, #0x0
@@ -59220,7 +59220,7 @@ _02021BEC: _02021BFA:
add r0, r4, #0x0
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r4, r0, #0x0
bne _02021B80
_02021C06:
@@ -59301,7 +59301,7 @@ _02021C98: add r1, r2, #0x0
add r2, r7, #0x0
add r3, r5, #0x0
- blx _ll_mul
+ bl _ll_mul
add r2, r1, #0x0
ldr r1, [sp, #0x8]
add r0, r1, r0
@@ -59313,7 +59313,7 @@ _02021C98: add r1, r5, #0x0
mov r2, #0xa
mov r3, #0x0
- blx _ll_mul
+ bl _ll_mul
add r7, r0, #0x0
ldr r0, [sp, #0x4]
add r5, r1, #0x0
@@ -59589,7 +59589,7 @@ _02021EA8: add r0, #0x8
add r1, r7, #0x0
add r2, r6, #0x0
- blx memcpy
+ bl memcpy
mov r2, #0x0
cmp r4, #0x0
bls _02021ED4
@@ -59643,7 +59643,7 @@ _02021F0C: add r0, r6, #0x0
add r1, r5, #0x0
lsl r2, r2, #0x1
- blx memcpy
+ bl memcpy
pop {r4-r6, pc}
_02021F22:
bl ErrorHandling
@@ -59710,7 +59710,7 @@ _02021F7A: add r2, r2, #0x1
add r1, #0x8
lsl r2, r2, #0x1
- blx memcpy
+ bl memcpy
ldrh r1, [r5, #0x2]
ldrh r0, [r4, #0x2]
add r0, r1, r0
@@ -60242,15 +60242,15 @@ FUN_02022318: ; 0x02022318 bl FUN_02016998
add r4, r0, #0x0
str r6, [r4, #0x0]
- blx FUN_020BB7F4
- blx G3X_InitMtxStack
+ bl FUN_020BB7F4
+ bl G3X_InitMtxStack
mov r1, #0x2
ldr r0, _020223B8 ; =0x04000540
cmp r7, #0x0
str r1, [r0, #0x0]
bne _02022364
lsl r0, r5, #0x7
- blx FUN_020AFA28
+ bl FUN_020AFA28
add r6, r0, #0x0
ldr r0, [r4, #0x0]
add r1, r6, #0x0
@@ -60262,20 +60262,20 @@ FUN_02022318: ; 0x02022318 lsl r0, r5, #0x11
mov r1, #0x0
add r3, r6, #0x0
- blx FUN_020AF9C4
+ bl FUN_020AF9C4
b _0202236E
_02022364:
lsl r0, r5, #0x10
lsr r0, r0, #0x10
mov r1, #0x1
- blx FUN_020AEB70
+ bl FUN_020AEB70
_0202236E:
ldr r0, [sp, #0x4]
cmp r0, #0x0
bne _02022398
ldr r0, [sp, #0x20]
lsl r0, r0, #0x8
- blx FUN_020AFBFC
+ bl FUN_020AFBFC
add r5, r0, #0x0
ldr r0, [r4, #0x0]
add r1, r5, #0x0
@@ -60286,14 +60286,14 @@ _0202236E: lsl r0, r0, #0xd
add r2, r5, #0x0
mov r3, #0x1
- blx FUN_020AFBA8
+ bl FUN_020AFBA8
b _020223A4
_02022398:
ldr r0, [sp, #0x20]
mov r1, #0x1
lsl r0, r0, #0x1d
lsr r0, r0, #0x10
- blx FUN_020AEB70
+ bl FUN_020AEB70
_020223A4:
ldr r0, [sp, #0x24]
cmp r0, #0x0
@@ -60359,13 +60359,13 @@ FUN_020223D4: ; 0x020223D4 add r1, r0, #0x0
add r2, r0, #0x0
add r3, r0, #0x0
- blx G3X_SetFog
+ bl G3X_SetFog
mov r0, #0x0
ldr r2, _02022444 ; =0x00007FFF
add r1, r0, #0x0
mov r3, #0x3f
str r0, [sp, #0x0]
- blx G3X_SetClearColor
+ bl G3X_SetClearColor
ldr r1, _02022448 ; =0xBFFF0000
ldr r0, _0202244C ; =0x04000580
str r1, [r0, #0x0]
@@ -60381,34 +60381,34 @@ _0202244C: .word 0x04000580 thumb_func_start FUN_02022450
FUN_02022450: ; 0x02022450
push {r3, lr}
- blx FS_IsAvailable
+ bl FS_IsAvailable
cmp r0, #0x0
bne _02022460
- blx OS_Terminate
+ bl OS_Terminate
pop {r3, pc}
_02022460:
ldr r0, _020224BC ; =0x027FF00C
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _0202248A
- blx CARD_Init
+ bl CARD_Init
mov r2, #0x16
ldr r0, _020224C0 ; =0x027FFE00
ldr r1, _020224C4 ; =0x027FF000
lsl r2, r2, #0x4
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r2, #0x16
ldr r0, _020224C0 ; =0x027FFE00
ldr r1, _020224C8 ; =0x027FFA80
lsl r2, r2, #0x4
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r1, _020224CC ; =0x4A414441
ldr r0, _020224BC ; =0x027FF00C
str r1, [r0, #0x0]
_0202248A:
ldr r0, _020224D0 ; =0x020EE6D4
mov r1, #0x3
- blx FS_FindArchive
+ bl FS_FindArchive
ldr r1, _020224C4 ; =0x027FF000
ldr r2, [r1, #0x48]
str r2, [r0, #0x2c]
@@ -60427,7 +60427,7 @@ _0202248A: cmp r1, r0
beq _020224B8
_020224B4:
- blx OS_Terminate
+ bl OS_Terminate
_020224B8:
pop {r3, pc}
nop
@@ -60445,17 +60445,17 @@ FUN_020224D8: ; 0x020224D8 sub sp, #0x48
add r4, r0, #0x0
add r0, sp, #0x0
- blx FS_InitFile
+ bl FS_InitFile
add r0, sp, #0x0
add r1, r4, #0x0
- blx FS_OpenFile
+ bl FS_OpenFile
cmp r0, #0x0
beq _020224FC
ldr r1, [sp, #0x24]
ldr r0, _02022500 ; =0x027FFC2C
str r1, [r0, #0x0]
mov r0, #0x0
- blx OS_ResetSystem
+ bl OS_ResetSystem
_020224FC:
add sp, #0x48
pop {r4, pc}
@@ -60521,7 +60521,7 @@ FUN_0202254C: ; 0x0202254C ldr r2, _020225E0 ; =0x000204A8
mov r0, #0x0
add r1, r4, #0x0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, _020225E4 ; =0x021C59C8
str r4, [r0, #0x0]
bl FUN_02023570
@@ -60534,7 +60534,7 @@ FUN_0202254C: ; 0x0202254C add r0, r4, #0x0
ldr r1, _020225E8 ; =0x00001021
add r0, #0x14
- blx MATHi_CRC16InitTable
+ bl MATHi_CRC16InitTable
ldr r0, _020225EC ; =0x00020224
add r0, r4, r0
bl FUN_020230E4
@@ -60547,7 +60547,7 @@ FUN_0202254C: ; 0x0202254C mov r0, #0x0
add r1, r4, r1
mov r2, #0x8
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0x0
bl FUN_02022AD8
str r0, [r4, #0x10]
@@ -60686,7 +60686,7 @@ _0202267A: mvn r0, r0
add r1, r6, #0x0
lsl r2, r2, #0xc
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r4, #0x0
mov r7, #0x1
add r5, r4, #0x0
@@ -61984,18 +61984,18 @@ _02023006: add r0, r0, #0x4
cmp r3, #0x2
blt _02023006
- blx CARD_TryWaitBackupAsync
+ bl CARD_TryWaitBackupAsync
cmp r0, #0x0
bne _02023034
- blx CARD_CancelBackupAsync
+ bl CARD_CancelBackupAsync
ldr r0, [r4, #0x10]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
- blx CARD_UnlockBackup
+ bl CARD_UnlockBackup
ldr r0, [r4, #0x10]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
- blx OS_ReleaseLockID
+ bl OS_ReleaseLockID
_02023034:
mov r0, #0x1
bl FUN_02016454
@@ -62042,7 +62042,7 @@ FUN_02023074: ; 0x02023074 add r0, sp, #0x0
mov r1, #0xff
mov r2, #0x14
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
add r1, r5, #0x0
bl FUN_020228A4
@@ -62243,7 +62243,7 @@ FUN_020231F4: ; 0x020231F4 add r1, r6, #0x0
lsl r2, r2, #0x10
ldr r4, _02023240 ; =0x020EE700
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, _02023244 ; =0x020EE6DC
mov r7, #0x0
ldr r0, [r0, #0x0]
@@ -62257,7 +62257,7 @@ _02023216: ldr r1, [sp, #0x4]
mov r0, #0x0
add r1, r6, r1
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, [sp, #0x4]
ldr r1, [r4, #0xc]
add r0, r6, r0
@@ -62290,7 +62290,7 @@ FUN_02023248: ; 0x02023248 add r3, #0xe
strh r2, [r4, #0xc]
add r2, r3, #0x0
- blx MATH_CalcCRC16CCITT
+ bl MATH_CalcCRC16CCITT
strh r0, [r4, #0xe]
pop {r3-r5, pc}
nop
@@ -62323,7 +62323,7 @@ _02023298: add r3, #0xe
add r0, #0x14
add r2, r3, #0x0
- blx MATH_CalcCRC16CCITT
+ bl MATH_CalcCRC16CCITT
ldrh r1, [r4, #0xe]
cmp r1, r0
bne _020232AC
@@ -62670,7 +62670,7 @@ _0202356C: .word 0x000204A0 thumb_func_start FUN_02023570
FUN_02023570: ; 0x02023570
push {r3-r5, lr}
- blx OS_GetLockID
+ bl OS_GetLockID
add r4, r0, #0x0
mov r0, #0x2
mvn r0, r0
@@ -62680,16 +62680,16 @@ FUN_02023570: ; 0x02023570 _02023584:
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx CARD_LockBackup
+ bl CARD_LockBackup
ldr r0, _020235C8 ; =0x00001302
- blx CARD_IdentifyBackup
+ bl CARD_IdentifyBackup
cmp r0, #0x0
beq _0202359A
ldr r5, _020235C8 ; =0x00001302
b _020235AA
_0202359A:
ldr r0, _020235CC ; =0x00001202
- blx CARD_IdentifyBackup
+ bl CARD_IdentifyBackup
cmp r0, #0x0
beq _020235A8
ldr r5, _020235CC ; =0x00001202
@@ -62699,10 +62699,10 @@ _020235A8: _020235AA:
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx CARD_UnlockBackup
+ bl CARD_UnlockBackup
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx OS_ReleaseLockID
+ bl OS_ReleaseLockID
cmp r5, #0x0
beq _020235C2
mov r0, #0x1
@@ -62737,7 +62737,7 @@ FUN_020235EC: ; 0x020235EC add r5, r0, #0x0
add r6, r1, #0x0
add r7, r2, #0x0
- blx OS_GetLockID
+ bl OS_GetLockID
add r4, r0, #0x0
mov r0, #0x2
mvn r0, r0
@@ -62747,7 +62747,7 @@ FUN_020235EC: ; 0x020235EC _02023608:
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx CARD_LockBackup
+ bl CARD_LockBackup
mov r3, #0x0
str r3, [sp, #0x0]
mov r1, #0x1
@@ -62759,15 +62759,15 @@ _02023608: add r1, r6, #0x0
add r2, r7, #0x0
str r3, [sp, #0x10]
- blx CARDi_RequestStreamCommand
- blx CARD_WaitBackupAsync
+ bl CARDi_RequestStreamCommand
+ bl CARD_WaitBackupAsync
add r5, r0, #0x0
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx CARD_UnlockBackup
+ bl CARD_UnlockBackup
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx OS_ReleaseLockID
+ bl OS_ReleaseLockID
cmp r5, #0x0
bne _02023652
ldr r0, _02023658 ; =0x021C59C8
@@ -62798,7 +62798,7 @@ FUN_02023668: ; 0x02023668 add r5, r0, #0x0
add r6, r1, #0x0
add r7, r2, #0x0
- blx OS_GetLockID
+ bl OS_GetLockID
add r4, r0, #0x0
mov r0, #0x2
mvn r0, r0
@@ -62808,7 +62808,7 @@ FUN_02023668: ; 0x02023668 _02023684:
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx CARD_LockBackup
+ bl CARD_LockBackup
mov r0, #0x0
str r0, [sp, #0x0]
str r0, [sp, #0x4]
@@ -62820,7 +62820,7 @@ _02023684: mov r2, #0x4
add r3, r0, #0x0
str r0, [sp, #0x10]
- blx CARDi_RequestStreamCommand
+ bl CARDi_RequestStreamCommand
cmp r0, #0x0
bne _020236B2
add r0, r4, #0x0
@@ -62843,7 +62843,7 @@ _020236B2: add r0, r6, #0x0
add r1, r5, #0x0
add r2, r7, #0x0
- blx CARDi_RequestStreamCommand
+ bl CARDi_RequestStreamCommand
add r0, r4, #0x0
add sp, #0x18
pop {r3-r7, pc}
@@ -62862,11 +62862,11 @@ FUN_020236E4: ; 0x020236E4 bne _02023738
lsl r0, r5, #0x10
lsr r0, r0, #0x10
- blx CARD_UnlockBackup
+ bl CARD_UnlockBackup
lsl r0, r5, #0x10
lsr r0, r0, #0x10
- blx OS_ReleaseLockID
- blx CARD_GetResultCode
+ bl OS_ReleaseLockID
+ bl CARD_GetResultCode
cmp r0, #0x0
beq _02023714
cmp r0, #0x4
@@ -62907,10 +62907,10 @@ FUN_02023740: ; 0x02023740 lsl r0, r5, #0x10
lsr r0, r0, #0x10
add r4, r1, #0x0
- blx CARD_UnlockBackup
+ bl CARD_UnlockBackup
lsl r0, r5, #0x10
lsr r0, r0, #0x10
- blx OS_ReleaseLockID
+ bl OS_ReleaseLockID
ldr r0, _02023768 ; =0x021C59C8
ldr r0, [r0, #0x0]
bl FUN_02016A18
@@ -62933,7 +62933,7 @@ FUN_02023770: ; 0x02023770 mov r0, #0x0
add r1, r4, #0x0
mov r2, #0x5c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r4, #0x10
add r0, r4, #0x0
bl FUN_02023840
@@ -62960,14 +62960,14 @@ FUN_020237A0: ; 0x020237A0 push {r4, lr}
sub sp, #0x50
add r4, r0, #0x0
- blx OS_GetOwnerRtcOffset
+ bl OS_GetOwnerRtcOffset
str r0, [r4, #0x0]
add r0, r4, #0x0
add r0, #0x8
str r1, [r4, #0x4]
- blx OS_GetMacAddress
+ bl OS_GetMacAddress
add r0, sp, #0x0
- blx OS_GetOwnerInfo
+ bl OS_GetOwnerInfo
add r0, sp, #0x0
ldrb r1, [r0, #0x2]
strb r1, [r4, #0xe]
@@ -62983,7 +62983,7 @@ FUN_020237CC: ; 0x020237CC sub sp, #0x8
add r4, r0, #0x0
add r0, sp, #0x0
- blx OS_GetMacAddress
+ bl OS_GetMacAddress
mov r2, #0x0
add r3, sp, #0x0
_020237DC:
@@ -63009,7 +63009,7 @@ _020237EC: FUN_020237FC: ; 0x020237FC
push {r4, lr}
add r4, r0, #0x0
- blx OS_GetOwnerRtcOffset
+ bl OS_GetOwnerRtcOffset
ldr r3, [r4, #0x0]
ldr r2, [r4, #0x4]
eor r0, r3
@@ -63072,12 +63072,12 @@ FUN_02023840: ; 0x02023840 add r1, #0x14
bl FUN_0201265C
add r0, r4, #0x4
- blx RTC_ConvertDateToDay
+ bl RTC_ConvertDateToDay
add r1, r4, #0x0
str r0, [r4, #0x20]
add r0, r4, #0x4
add r1, #0x14
- blx RTC_ConvertDateTimeToSecond
+ bl RTC_ConvertDateTimeToSecond
str r0, [r4, #0x24]
str r1, [r4, #0x28]
mov r0, #0x0
@@ -63132,7 +63132,7 @@ FUN_020238A4: ; 0x020238A4 add r1, #0x14
bl FUN_0201265C
add r0, r4, #0x4
- blx RTC_ConvertDateToDay
+ bl RTC_ConvertDateToDay
str r0, [r4, #0x20]
pop {r4, pc}
.balign 4
@@ -63149,7 +63149,7 @@ FUN_020238C8: ; 0x020238C8 mov r0, #0x0
add r1, r4, #0x0
mov r2, #0x2c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0x0
bl FUN_02024F50
add r0, r4, #0x4
@@ -63224,7 +63224,7 @@ FUN_02023948: ; 0x02023948 mov r1, #0x0
mov r2, #0x20
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r0, #0x2
strb r0, [r4, #0x19]
pop {r4, pc}
@@ -63738,7 +63738,7 @@ FUN_02023C48: ; 0x02023C48 add r4, r0, #0x0
mov r1, #0x0
lsl r2, r2, #0x4
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
bl FUN_020669A0
add r0, r4, #0x0
@@ -64792,7 +64792,7 @@ FUN_02024378: ; 0x02024378 mov r1, #0x0
lsl r2, r2, #0x2
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, _020243C0 ; =0xBEEFCAFE
mov r1, #0x0
str r0, [r4, #0x0]
@@ -64802,7 +64802,7 @@ FUN_02024378: ; 0x02024378 sub r0, #0x2d
add r0, r4, r0
mov r1, #0xff
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r1, #0xff
add r0, r1, #0x0
add r0, #0x9
@@ -66285,7 +66285,7 @@ FUN_02024E6C: ; 0x02024E6C ldr r2, _02024EA4 ; =0x0000074C
mov r0, #0x0
add r1, r4, #0x0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0x0
bl FUN_020250A4
mov r0, #0x7
@@ -66296,12 +66296,12 @@ FUN_02024E6C: ; 0x02024E6C ldr r0, _02024EAC ; =0x0000FFFF
add r1, r4, r1
mov r2, #0x8
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
ldr r1, _02024EB0 ; =0x00000734
ldr r0, _02024EAC ; =0x0000FFFF
add r1, r4, r1
mov r2, #0xb
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
pop {r4, pc}
.balign 4
_02024EA4: .word 0x0000074C
@@ -66410,7 +66410,7 @@ FUN_02024F50: ; 0x02024F50 add r4, r0, #0x0
mov r1, #0x0
mov r2, #0x2
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldrh r1, [r4, #0x0]
mov r0, #0xf
bic r1, r0
@@ -66625,7 +66625,7 @@ FUN_020250A4: ; 0x020250A4 mov r1, #0x0
lsl r2, r2, #0x8
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r1, #0x0
add r0, r1, #0x0
_020250B6:
@@ -67062,12 +67062,12 @@ FUN_02025374: ; 0x02025374 mov r1, #0x3c
str r0, [sp, #0x0]
add r0, r7, r0
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0x0
ldr r0, [sp, #0x0]
mov r1, #0x3c
add r0, r7, r0
- blx _s32_div_f
+ bl _s32_div_f
strh r1, [r5, #0x4]
cmp r4, #0x0
beq _020253DE
@@ -67085,7 +67085,7 @@ _020253BA: sub r0, r6, #0x1
add r0, r1, r0
add r1, r6, #0x0
- blx _s32_div_f
+ bl _s32_div_f
sub r4, r4, r0
mov r0, #0x0
strb r0, [r5, #0xa]
@@ -67248,7 +67248,7 @@ _020254D6: add r0, r5, #0x0
add r1, r7, #0x0
mov r2, #0x88
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
strh r6, [r5, #0x0]
add r4, r4, #0x1
add r5, #0x88
@@ -67414,7 +67414,7 @@ _020255F8: ldr r0, [sp, #0x0]
ldr r1, [sp, #0x10]
lsl r2, r2, #0x6
- blx memcpy
+ bl memcpy
ldr r0, [sp, #0x10]
bl FUN_02016A18
add sp, #0x2c
@@ -67936,7 +67936,7 @@ FUN_02025964: ; 0x02025964 mov r1, #0x0
mov r2, #0x3c
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
pop {r4, pc}
.balign 4
@@ -67972,7 +67972,7 @@ FUN_0202597C: ; 0x0202597C ldr r2, _020259DC ; =0x000009B4
add r0, r4, #0x0
add r1, r7, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
add r0, #0x94
mov r1, #0x9b
@@ -68380,7 +68380,7 @@ _02025C72: lsl r1, r1, #0x4
add r1, r2, r1
mov r2, #0x10
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r6, #0x0
bl FUN_020239BC
ldr r1, [sp, #0x0]
@@ -68620,7 +68620,7 @@ FUN_02025E20: ; 0x02025E20 add r0, r5, r0
add r1, sp, #0xc
mov r2, #0xc8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r2, [sp, #0x8]
add r1, sp, #0xc
add r0, r4, #0x0
@@ -68897,7 +68897,7 @@ FUN_02025FFC: ; 0x02025FFC add r1, sp, #0x8
mov r2, #0x28
mov r4, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r2, [sp, #0x4]
add r1, sp, #0x8
add r0, r4, #0x0
@@ -69039,12 +69039,12 @@ FUN_020260EC: ; 0x020260EC add r1, sp, #0x34
mov r2, #0x28
mov r4, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _02026168 ; =0x00000978
add r1, sp, #0xc
add r0, r7, r0
mov r2, #0x28
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r3, [sp, #0x0]
add r1, sp, #0x34
add r3, r1, r3
@@ -69182,7 +69182,7 @@ FUN_020261EC: ; 0x020261EC add r1, sp, #0x8
mov r2, #0x28
mov r4, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r2, [sp, #0x4]
add r1, sp, #0x8
add r0, r4, #0x0
@@ -69304,7 +69304,7 @@ FUN_020262BC: ; 0x020262BC add r1, sp, #0x8
mov r2, #0x28
mov r4, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r2, [sp, #0x4]
add r1, sp, #0x8
add r0, r4, #0x0
@@ -69460,7 +69460,7 @@ _020263D6: add r0, r4, r0
add r0, r2, r0
mov r2, #0x3
- blx MI_CpuFill8
+ bl MI_CpuFill8
pop {r3-r5, pc}
.balign 4
_020263F0: .word 0x0000010F
@@ -69737,7 +69737,7 @@ _020265C6: add r0, r4, r0
add r0, r1, r0
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
pop {r3-r5, pc}
nop
_020265DC: .word 0x0000020F
@@ -69910,12 +69910,12 @@ FUN_020266E0: ; 0x020266E0 add r4, r0, #0x0
mov r1, #0x0
mov r2, #0x2d
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
add r0, #0x2d
mov r1, #0x0
mov r2, #0x20
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
mov r1, #0x0
add r0, #0x8c
@@ -71169,7 +71169,7 @@ _02026F6A: add r0, r5, #0x0
mov r1, #0x0
mov r2, #0x74
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
str r6, [r5, #0x0]
add r4, r4, #0x1
add r5, #0x74
@@ -71183,7 +71183,7 @@ _02026F86: add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x98
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r1, _02026FC8 ; =0x00001234
ldr r0, _02026FCC ; =0x000004FC
add r6, r6, #0x1
@@ -71196,7 +71196,7 @@ _02026F86: mov r1, #0x0
add r0, r7, r0
mov r2, #0x40
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r5, _02026FD4 ; =0x0000081C
mov r4, #0x0
mov r6, #0x12
@@ -71241,7 +71241,7 @@ FUN_02026FE8: ; 0x02026FE8 mov r1, #0x0
mov r2, #0x98
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, _02027004 ; =0x00001234
str r0, [r4, #0x0]
add r0, r4, #0x0
@@ -71708,7 +71708,7 @@ _02027330: add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x74
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, _02027340 ; =0x00001234
str r0, [r4, #0x0]
pop {r4, pc}
@@ -71938,7 +71938,7 @@ _020274DA: add r0, r5, #0x0
add r1, r4, #0x0
mov r2, #0x74
- blx memcpy
+ bl memcpy
pop {r3-r5, pc}
nop
_020274E8: .word 0x00001234
@@ -72316,7 +72316,7 @@ _02027760: add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x98
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, _02027770 ; =0x00001234
str r0, [r4, #0x0]
pop {r4, pc}
@@ -72540,7 +72540,7 @@ _020278FE: add r0, r5, #0x0
add r1, r4, #0x0
mov r2, #0x98
- blx memcpy
+ bl memcpy
pop {r3-r5, pc}
nop
_0202790C: .word 0x00001234
@@ -73145,11 +73145,11 @@ FUN_02027D0C: ; 0x02027D0C bne _02027D6A
ldr r1, _02027D78 ; =0xEDB88320
add r0, sp, #0x4
- blx MATHi_CRC32InitTableRev
+ bl MATHi_CRC32InitTableRev
add r0, sp, #0x4
add r1, r4, #0x0
mov r2, #0x74
- blx MATH_CalcCRC32
+ bl MATH_CalcCRC32
add r6, r0, #0x0
mov r5, #0x0
_02027D3C:
@@ -73159,11 +73159,11 @@ _02027D3C: add r4, r0, #0x0
ldr r1, _02027D78 ; =0xEDB88320
add r0, sp, #0x4
- blx MATHi_CRC32InitTableRev
+ bl MATHi_CRC32InitTableRev
add r0, sp, #0x4
add r1, r4, #0x0
mov r2, #0x74
- blx MATH_CalcCRC32
+ bl MATH_CalcCRC32
cmp r0, r6
bne _02027D62
mov r0, #0x0
@@ -73398,7 +73398,7 @@ FUN_02027ED0: ; 0x02027ED0 _02027EDC:
bl FUN_0201B9EC
add r1, r7, #0x0
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x18
lsr r0, r0, #0x18
add r1, r5, r0
@@ -73548,7 +73548,7 @@ FUN_02027FDC: ; 0x02027FDC add r4, r0, #0x0
ldrb r0, [r4, #0x0]
mov r1, #0x5
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #0x5
@@ -73863,7 +73863,7 @@ FUN_020281E8: ; 0x020281E8 mov r0, #0x0
add r1, r7, #0x0
lsl r2, r2, #0x6
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x1d
lsl r0, r0, #0x4
add r1, r0, #0x0
@@ -74192,7 +74192,7 @@ _0202843A: add r5, #0x40
mul r0, r4
add r0, r5, r0
- blx FUN_0209700C
+ bl FUN_0209700C
pop {r3-r5, pc}
thumb_func_start FUN_02028448
@@ -74255,7 +74255,7 @@ _020284A2: mov r2, #0x30
add r0, r0, r1
add r1, r6, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0xc
add r1, r7, #0x0
mul r1, r0
@@ -74263,7 +74263,7 @@ _020284A2: mov r2, #0xc
add r0, r0, r1
add r1, r4, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r5, r5, #0x1
add r6, #0x30
add r4, #0xc
@@ -74279,7 +74279,7 @@ _020284D2: add r1, r2, r1
mov r0, #0x0
mov r2, #0x30
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r2, [sp, #0x0]
mov r1, #0x5d
add r2, #0x40
@@ -74287,7 +74287,7 @@ _020284D2: add r1, r2, r1
mov r0, #0x0
mov r2, #0xc
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r2, #0x7a
lsl r2, r2, #0x4
add r1, r2, #0x0
@@ -74322,7 +74322,7 @@ FUN_02028518: ; 0x02028518 str r1, [sp, #0x0]
add r0, r4, r5
add r1, r4, r3
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, [sp, #0x4]
add r6, r7, #0x0
mov r3, #0xc
@@ -74336,16 +74336,16 @@ FUN_02028518: ; 0x02028518 mul r2, r3
add r1, r6, r2
add r2, r3, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0x0
add r1, r4, r5
mov r2, #0x30
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r1, [sp, #0x8]
mov r0, #0x0
add r1, r6, r1
mov r2, #0xc
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x1d
ldr r1, _02028588 ; =0x0000FFFF
add r2, r7, r5
@@ -74531,7 +74531,7 @@ _020286BC: mov r0, #0x0
add r1, r6, r4
mov r2, #0x30
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x1d
ldr r1, _020286E8 ; =0x0000FFFF
add r2, r5, r4
@@ -74592,7 +74592,7 @@ FUN_02028724: ; 0x02028724 mov r0, #0x0
add r1, r4, #0x0
lsl r2, r2, #0x2
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, _0202874C ; =0x0000FFFF
mov r1, #0x0
add r2, r4, #0x0
@@ -75445,12 +75445,12 @@ _02028CC0: add r0, #0x1c
add r1, #0x46
mov r2, #0x2a
- blx memcpy
+ bl memcpy
add r4, #0x46
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x2a
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
pop {r4, pc}
.balign 4
@@ -76175,7 +76175,7 @@ FUN_0202918C: ; 0x0202918C ldr r0, [sp, #0x0]
bl FUN_02029EC0
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _020291DA
@@ -76244,7 +76244,7 @@ FUN_0202920C: ; 0x0202920C ldr r0, [sp, #0x0]
bl FUN_02029EC0
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #0x1
@@ -76317,7 +76317,7 @@ FUN_020292BC: ; 0x020292BC mov r1, #0x0
mov r2, #0x3a
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
pop {r4, pc}
.balign 4
@@ -76866,7 +76866,7 @@ _020296B4: add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x3a
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldrb r0, [r6, #0x1c]
cmp r0, #0x10
bhi _02029722
@@ -77396,7 +77396,7 @@ FUN_02029A8C: ; 0x02029A8C add r4, r0, #0x0
mov r1, #0x0
lsl r2, r2, #0x4
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
bl FUN_02029ACC
add r5, r0, #0x0
@@ -77682,7 +77682,7 @@ FUN_02029C60: ; 0x02029C60 add r2, r0, #0x0
add r0, r4, #0x0
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
pop {r4, pc}
thumb_func_start FUN_02029C74
@@ -78013,21 +78013,21 @@ _02029E6C: bls _02029EAE
add r0, r7, #0x0
mov r1, #0x3c
- blx _u32_div_f
+ bl _u32_div_f
add r4, r4, r0
add r0, r7, #0x0
mov r1, #0x3c
- blx _u32_div_f
+ bl _u32_div_f
add r7, r1, #0x0
cmp r4, #0x3b
bls _02029EAE
add r0, r4, #0x0
mov r1, #0x3c
- blx _u32_div_f
+ bl _u32_div_f
add r6, r6, r0
add r0, r4, #0x0
mov r1, #0x3c
- blx _u32_div_f
+ bl _u32_div_f
ldr r0, _02029EB8 ; =0x000003E7
add r4, r1, #0x0
cmp r6, r0
@@ -78069,7 +78069,7 @@ FUN_02029ECC: ; 0x02029ECC mov r0, #0x0
add r1, r4, #0x0
lsl r2, r2, #0x2
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r0, #0x0
str r0, [r4, #0x0]
pop {r4, pc}
@@ -78527,7 +78527,7 @@ FUN_0202A1F0: ; 0x0202A1F0 mov r1, #0x0
lsl r2, r2, #0x2
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x1
strb r0, [r4, #0x3]
pop {r4, pc}
@@ -78607,14 +78607,14 @@ _0202A280: add r1, r2, #0x0
add r0, #0x8
mov r2, #0x4
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0x0
pop {r3, pc}
_0202A28E:
add r1, r2, #0x0
add r0, #0x2c
mov r2, #0x10
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0x0
pop {r3, pc}
_0202A29C:
@@ -78626,7 +78626,7 @@ _0202A2A4: add r1, r2, #0x0
add r0, #0xc
mov r2, #0x1c
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0x0
pop {r3, pc}
_0202A2B2:
@@ -78697,14 +78697,14 @@ _0202A318: add r0, r2, #0x0
add r1, r3, #0x0
mov r2, #0x4
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r4, pc}
_0202A326:
add r3, #0x2c
add r0, r2, #0x0
add r1, r3, #0x0
mov r2, #0x10
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r4, pc}
_0202A334:
ldrb r4, [r3, #0x0]
@@ -78721,7 +78721,7 @@ _0202A346: add r0, r2, #0x0
add r1, r3, #0x0
mov r2, #0x1c
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r4, pc}
_0202A354:
ldr r0, [r2, #0x0]
@@ -78917,14 +78917,14 @@ FUN_0202A474: ; 0x0202A474 add r0, r2, #0x0
add r1, r3, #0x0
mov r2, #0xa8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3, pc}
_0202A48A:
add r3, #0x18
add r0, r2, #0x0
add r1, r3, #0x0
mov r2, #0xa8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3, pc}
thumb_func_start FUN_0202A498
@@ -78935,13 +78935,13 @@ FUN_0202A498: ; 0x0202A498 add r1, r2, #0x0
add r0, #0xc0
mov r2, #0xa8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3, pc}
_0202A4AA:
add r1, r2, #0x0
add r0, #0x18
mov r2, #0xa8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3, pc}
.balign 4
@@ -78990,7 +78990,7 @@ _0202A502: add r0, #0x1e
sub r0, r0, r1
mov r1, #0x1e
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r1, r0, #0x10
_0202A510:
@@ -79014,7 +79014,7 @@ FUN_0202A524: ; 0x0202A524 ldrh r0, [r0, #0x16]
mov r1, #0xfa
lsl r1, r1, #0x2
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x18
lsr r0, r0, #0x18
pop {r3, pc}
@@ -79211,11 +79211,11 @@ FUN_0202A670: ; 0x0202A670 add r0, r4, #0x4
mov r1, #0x0
mov r2, #0xfa
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x4
- blx MI_CpuFill8
+ bl MI_CpuFill8
pop {r4, pc}
.balign 4
@@ -79347,7 +79347,7 @@ FUN_0202A754: ; 0x0202A754 ldr r2, _0202A77C ; =0x0000063C
add r1, r5, r1
add r6, r3, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _0202A780 ; =0x00000101
strb r4, [r5, r0]
sub r0, r0, #0x1
@@ -79420,30 +79420,30 @@ _0202A7EE: add r0, #0xa8
add r1, #0x8
mov r2, #0x10
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_0202A7FC:
add r0, r5, r4
add r1, r6, #0x0
add r0, #0xca
add r1, #0x18
mov r2, #0x8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r5, r4
add r1, r6, #0x0
add r0, #0xd2
add r1, #0x20
mov r2, #0x8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r5, r4
add r6, #0x28
add r0, #0xda
add r1, r6, #0x0
mov r2, #0x8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r5, r4
add r1, r7, #0x0
mov r2, #0xa8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3-r7, pc}
nop
_0202A834: .word 0x00002710
@@ -79460,7 +79460,7 @@ FUN_0202A838: ; 0x0202A838 add r1, r5, r1
lsl r2, r2, #0x2
add r6, r3, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _0202A860 ; =0x00000103
strb r4, [r5, r0]
sub r0, r0, #0x1
@@ -79499,7 +79499,7 @@ FUN_0202A878: ; 0x0202A878 add r0, r5, r0
add r1, r4, #0x0
lsl r2, r2, #0x2
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r4, #0x0
pop {r3-r5, pc}
@@ -79601,7 +79601,7 @@ FUN_0202A92C: ; 0x0202A92C add r4, r0, #0x0
mov r1, #0x0
lsl r2, r2, #0x2
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
bl FUN_0201BA60
str r0, [r4, #0x0]
bl FUN_0201BA60
@@ -80197,7 +80197,7 @@ _0202ACB4: ldr r0, [sp, #0x0]
add r1, r1, r6
sub r2, #0x28
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
lsl r0, r4, #0x2
add r1, r5, r0
mov r0, #0x1
@@ -80267,7 +80267,7 @@ _0202AD3C: mul r1, r2
add r0, r6, #0x0
add r1, r3, r1
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
lsl r0, r4, #0x2
add r1, r5, r0
mov r0, #0x12
@@ -80763,7 +80763,7 @@ _0202B07E: ldr r1, [sp, #0x14]
mov r0, #0x0
lsl r2, r2, #0x2
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
ldr r0, [sp, #0x10]
mov r7, #0x0
cmp r0, #0x0
@@ -81145,18 +81145,18 @@ FUN_0202B390: ; 0x0202B390 mov r0, #0x0
add r1, #0xc
mov r2, #0xc0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r1, r4, #0x0
mov r0, #0x0
add r1, #0xcc
mov r2, #0xc0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r1, #0x63
lsl r1, r1, #0x2
mov r0, #0x0
add r1, r4, r1
mov r2, #0xc0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0x0
bl FUN_0202B3F8
pop {r4, pc}
@@ -81175,7 +81175,7 @@ FUN_0202B3C4: ; 0x0202B3C4 _0202B3D4:
add r0, r2, #0x0
mov r1, #0xf
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0xf
sub r1, r0, r1
str r1, [r4, #0x4]
@@ -81307,7 +81307,7 @@ FUN_0202B470: ; 0x0202B470 add r0, r6, #0x0
add r1, r5, #0x0
mov r2, #0x28
- blx MIi_CpuCopyFast
+ bl MIi_CpuCopyFast
add sp, #0x10
pop {r4-r6, pc}
@@ -81686,7 +81686,7 @@ FUN_0202B710: ; 0x0202B710 add r0, sp, #0x8
mov r1, #0x0
mov r2, #0x4
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x0
str r0, [sp, #0x0]
add r0, sp, #0x8
@@ -81939,7 +81939,7 @@ FUN_0202B8B8: ; 0x0202B8B8 mov r1, #0x0
lsl r2, r2, #0x4
add r6, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r7, #0x0
_0202B8C8:
mov r4, #0x0
@@ -82044,7 +82044,7 @@ _0202B968: mov r1, #0x1d
bl FUN_0202A150
add r1, r7, #0x0
- blx _u32_div_f
+ bl _u32_div_f
add r7, r0, #0x0
_0202B984:
str r7, [r5, #0x0]
@@ -82074,7 +82074,7 @@ _0202B9A0: ldr r2, [r0, #0x28]
mov r0, #0x64
mul r0, r2
- blx _u32_div_f
+ bl _u32_div_f
add r1, r0, #0x0
_0202B9C4:
str r1, [r5, #0x0]
@@ -82115,7 +82115,7 @@ FUN_0202B9EC: ; 0x0202B9EC mov r1, #0x0
lsl r2, r2, #0x2
str r0, [sp, #0x4]
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r5, #0x0
bl FUN_0202881C
mov r1, #0x1
@@ -82232,7 +82232,7 @@ FUN_0202BAD4: ; 0x0202BAD4 mov r1, #0x0
mov r2, #0xe0
add r4, r3, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, sp, #0x10
ldrb r0, [r0, #0x10]
cmp r0, #0x0
@@ -82244,7 +82244,7 @@ FUN_0202BAD4: ; 0x0202BAD4 add r0, r5, r0
add r1, #0x50
str r0, [sp, #0x8]
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r1, sp, #0x10
ldrb r3, [r1, #0x18]
mov r0, #0x0
@@ -82305,7 +82305,7 @@ _0202BB64: add r1, r6, #0x0
add r1, #0x50
str r0, [sp, #0x8]
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, sp, #0x10
ldrb r2, [r0, #0x18]
mov r3, #0x0
@@ -82588,7 +82588,7 @@ FUN_0202BD6C: ; 0x0202BD6C mov r1, #0x0
mov r2, #0x4c
add r7, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
bl FUN_0202881C
mov r1, #0x1
@@ -82646,7 +82646,7 @@ FUN_0202BDF0: ; 0x0202BDF0 mov r1, #0x0
mov r2, #0x4c
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [sp, #0x0]
mov r1, #0x90
mul r1, r0
@@ -82715,7 +82715,7 @@ _0202BE7E: add r0, r6, #0x0
mov r1, #0x0
mov r2, #0x4c
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r6, #0x0
bl FUN_02016A18
pop {r4-r6, pc}
@@ -82734,7 +82734,7 @@ FUN_0202BEA0: ; 0x0202BEA0 ldr r2, _0202BED8 ; =0x00000688
mov r0, #0x0
add r1, r5, #0x0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r4, #0x0
mov r6, #0xab
add r7, r4, #0x0
@@ -82764,7 +82764,7 @@ FUN_0202BEDC: ; 0x0202BEDC ldr r2, _0202BF14 ; =0x00000588
mov r0, #0x0
add r1, r5, #0x0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r4, #0x0
mov r6, #0xab
add r7, r4, #0x0
@@ -82873,14 +82873,14 @@ FUN_0202BF90: ; 0x0202BF90 str r0, [r3, r2]
add r0, r2, #0x4
str r1, [r3, r0]
- blx OS_GetOwnerRtcOffset
+ bl OS_GetOwnerRtcOffset
ldr r2, _0202BFD4 ; =0x00000678
str r0, [r5, r2]
add r0, r2, #0x4
add r2, #0x8
str r1, [r5, r0]
add r0, r5, r2
- blx OS_GetMacAddress
+ bl OS_GetMacAddress
pop {r4-r6, pc}
nop
_0202BFCC: .word 0x00000588
@@ -82971,7 +82971,7 @@ FUN_0202C060: ; 0x0202C060 sub sp, #0x8
add r4, r0, #0x0
add r0, sp, #0x0
- blx OS_GetMacAddress
+ bl OS_GetMacAddress
mov r0, #0x1a
mov r3, #0x0
add r5, sp, #0x0
@@ -82999,7 +82999,7 @@ _0202C084: FUN_0202C094: ; 0x0202C094
push {r4, lr}
add r4, r0, #0x0
- blx OS_GetOwnerRtcOffset
+ bl OS_GetOwnerRtcOffset
ldr r2, _0202C0B4 ; =0x00000678
ldr r3, [r4, r2]
add r2, r2, #0x4
@@ -83178,7 +83178,7 @@ FUN_0202C1C8: ; 0x0202C1C8 ldr r1, _0202C1F0 ; =0x021C59D8
ldr r0, _0202C1F4 ; =FUN_0202C1F8
ldr r1, [r1, #0x4]
- blx WM_SetParentParameter
+ bl WM_SetParentParameter
cmp r0, #0x2
beq _0202C1EC
bl FUN_0202C1AC
@@ -83225,22 +83225,22 @@ FUN_0202C21C: ; 0x0202C21C mov r0, #0x1
pop {r4, pc}
_0202C230:
- blx WMi_GetStatusAddress
+ bl WMi_GetStatusAddress
add r4, r0, #0x0
mov r0, #0x66
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x4
- blx DC_InvalidateRange
+ bl DC_InvalidateRange
mov r0, #0x66
mov r1, #0x0
lsl r0, r0, #0x2
str r1, [r4, r0]
add r0, r4, r0
mov r1, #0x4
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, _0202C280 ; =FUN_0202C288
- blx WM_StartParent
+ bl WM_StartParent
cmp r0, #0x2
beq _0202C264
bl FUN_0202C1AC
@@ -83334,13 +83334,13 @@ _0202C2DA: ldr r0, _0202C38C ; =0x02105D54
add r1, #0x15
mov r2, #0x3
- blx memcmp
+ bl memcmp
cmp r0, #0x0
beq _0202C330
_0202C318:
ldrh r1, [r5, #0x10]
mov r0, #0x0
- blx WM_Disconnect
+ bl WM_Disconnect
cmp r0, #0x2
beq _0202C378
bl FUN_0202C1AC
@@ -83429,7 +83429,7 @@ _0202C3AC: ldr r0, _0202C400 ; =FUN_0202C404
lsr r2, r2, #0x10
add r3, r4, r3
- blx WM_StartMP
+ bl WM_StartMP
cmp r0, #0x2
beq _0202C3E8
bl FUN_0202C1AC
@@ -83502,7 +83502,7 @@ FUN_0202C460: ; 0x0202C460 mov r0, #0x3
bl FUN_0202C198
ldr r0, _0202C480 ; =FUN_0202C484
- blx WM_EndMP
+ bl WM_EndMP
cmp r0, #0x2
beq _0202C47A
bl FUN_0202C1AC
@@ -83535,7 +83535,7 @@ _0202C4A2: FUN_0202C4A4: ; 0x0202C4A4
push {r3, lr}
ldr r0, _0202C4BC ; =FUN_0202C4C0
- blx WM_EndParent
+ bl WM_EndParent
cmp r0, #0x2
beq _0202C4B8
bl FUN_0202C1AC
@@ -83691,7 +83691,7 @@ _0202C5D4: .word 0x021C59D8 thumb_func_start FUN_0202C5D8
FUN_0202C5D8: ; 0x0202C5D8
push {r3-r7, lr}
- blx WM_GetAllowedChannel
+ bl WM_GetAllowedChannel
add r5, r0, #0x0
mov r0, #0x2
lsl r0, r0, #0xe
@@ -83751,7 +83751,7 @@ _0202C64C: sub r0, #0x28
strh r2, [r3, r0]
_0202C650:
- blx WM_GetDispersionScanPeriod
+ bl WM_GetDispersionScanPeriod
ldr r2, _0202C684 ; =0x021C59D8
ldr r1, _0202C690 ; =0x000012E6
ldr r3, [r2, #0x4]
@@ -83766,7 +83766,7 @@ _0202C650: sub r1, r1, #0x6
ldr r0, _0202C694 ; =FUN_0202C698
add r1, r2, r1
- blx WM_StartScan
+ bl WM_StartScan
cmp r0, #0x2
beq _0202C680
bl FUN_0202C1AC
@@ -83820,7 +83820,7 @@ _0202C6D0: sub r0, #0xf0
add r0, r2, r0
mov r1, #0xc0
- blx DC_InvalidateRange
+ bl DC_InvalidateRange
ldr r0, _0202C760 ; =0x021C59D8
ldr r1, [r0, #0x4]
ldr r0, _0202C768 ; =0x00001320
@@ -83910,7 +83910,7 @@ _0202C790: .word 0x00001310 FUN_0202C794: ; 0x0202C794
push {r3, lr}
ldr r0, _0202C7AC ; =FUN_0202C7B0
- blx WM_EndScan
+ bl WM_EndScan
cmp r0, #0x2
beq _0202C7A8
bl FUN_0202C1AC
@@ -83971,7 +83971,7 @@ _0202C800: ldr r0, _0202C84C ; =0x02105D54
add r1, #0x1
mov r2, #0x3
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
bl FUN_02033534
add r1, sp, #0x4
strb r0, [r1, #0x0]
@@ -83984,7 +83984,7 @@ _0202C800: mov r3, #0x1
add r1, r2, r1
add r2, sp, #0x4
- blx WM_StartConnectEx
+ bl WM_StartConnectEx
cmp r0, #0x2
beq _0202C83E
bl FUN_0202C1AC
@@ -84109,7 +84109,7 @@ FUN_0202C908: ; 0x0202C908 ldr r0, _0202C954 ; =FUN_0202C958
lsr r2, r2, #0x10
add r3, r4, r3
- blx WM_StartMP
+ bl WM_StartMP
cmp r0, #0x2
beq _0202C942
bl FUN_0202C1AC
@@ -84185,7 +84185,7 @@ FUN_0202C9BC: ; 0x0202C9BC mov r0, #0x3
bl FUN_0202C198
ldr r0, _0202C9DC ; =FUN_0202C9E0
- blx WM_EndMP
+ bl WM_EndMP
cmp r0, #0x2
beq _0202C9D6
bl FUN_0202C1AC
@@ -84223,7 +84223,7 @@ FUN_0202CA04: ; 0x0202CA04 bl FUN_0202C198
ldr r0, _0202CA28 ; =FUN_0202CA2C
mov r1, #0x0
- blx WM_Disconnect
+ bl WM_Disconnect
cmp r0, #0x2
beq _0202CA24
bl FUN_0202C1AC
@@ -84256,7 +84256,7 @@ FUN_0202CA44: ; 0x0202CA44 mov r0, #0x3
bl FUN_0202C198
ldr r0, _0202CA64 ; =FUN_0202CA68
- blx WM_Reset
+ bl WM_Reset
cmp r0, #0x2
beq _0202CA5E
bl FUN_0202C1AC
@@ -84300,7 +84300,7 @@ FUN_0202CA88: ; 0x0202CA88 add r0, r1, r0
ldr r1, [r1, r2]
add r7, r3, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, _0202CAD8 ; =0x0000FFFF
add r1, r7, #0x0
str r0, [sp, #0x0]
@@ -84312,7 +84312,7 @@ FUN_0202CA88: ; 0x0202CA88 ldr r0, _0202CADC ; =FUN_0202CAE0
add r2, r5, #0x0
add r3, r6, #0x0
- blx WM_SetMPDataToPortEx
+ bl WM_SetMPDataToPortEx
cmp r0, #0x2
bne _0202CACA
add sp, #0xc
@@ -84405,7 +84405,7 @@ FUN_0202CB50: ; 0x0202CB50 _0202CB60:
mov r0, #0x0
add r1, r0, #0x0
- blx FUN_02090CC8
+ bl FUN_02090CC8
mov r0, #0x0
bl FUN_0202C198
pop {r3, pc}
@@ -84497,7 +84497,7 @@ FUN_0202CBFC: ; 0x0202CBFC push {r3-r5, lr}
sub sp, #0x8
add r0, sp, #0x0
- blx OS_GetMacAddress
+ bl OS_GetMacAddress
ldr r0, _0202CC84 ; =0x027FFC3C
ldr r3, [r0, #0x0]
add r0, sp, #0x0
@@ -84566,7 +84566,7 @@ _0202CC94: .word 0x00003039 FUN_0202CC98: ; 0x0202CC98
push {r4, lr}
add r4, r0, #0x0
- blx WM_GetAllowedChannel
+ bl WM_GetAllowedChannel
mov r1, #0x2
lsl r1, r1, #0xe
cmp r0, r1
@@ -84693,7 +84693,7 @@ FUN_0202CD90: ; 0x0202CD90 str r1, [sp, #0x0]
mov r1, #0x3
mov r2, #0x11
- blx WM_MeasureChannel
+ bl WM_MeasureChannel
pop {r3, pc}
.balign 4
@@ -84900,7 +84900,7 @@ FUN_0202CF0C: ; 0x0202CF0C ldr r0, [r0, #0x4]
mov r2, #0x2
add r0, #0x40
- blx WM_Initialize
+ bl WM_Initialize
cmp r0, #0x2
beq _0202CF34
bl FUN_0202C1AC
@@ -84929,7 +84929,7 @@ FUN_0202CF40: ; 0x0202CF40 pop {r3, pc}
_0202CF5A:
ldr r0, _0202CF80 ; =FUN_0202CEF4
- blx WM_SetIndCallback
+ bl WM_SetIndCallback
cmp r0, #0x0
beq _0202CF76
bl FUN_0202C1AC
@@ -85073,14 +85073,14 @@ _0202D066: ldr r1, _0202D09C ; =0x00001220
add r1, r2, r1
mov r2, #0xc0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _0202D094 ; =0x021C59D8
ldr r1, [r0, #0x4]
ldr r0, _0202D09C ; =0x00001220
add r0, r1, r0
mov r1, #0xc0
- blx DC_FlushRange
- blx DC_WaitWriteBufferEmpty
+ bl DC_FlushRange
+ bl DC_WaitWriteBufferEmpty
bl FUN_0202C7E8
pop {r4-r6, pc}
_0202D08E:
@@ -85102,7 +85102,7 @@ FUN_0202D0A0: ; 0x0202D0A0 ldr r1, _0202D0CC ; =FUN_0202CB08
lsr r0, r0, #0x10
mov r2, #0x0
- blx WM_SetPortCallback
+ bl WM_SetPortCallback
cmp r0, #0x0
beq _0202D0C2
mov r0, #0x9
@@ -85210,7 +85210,7 @@ FUN_0202D178: ; 0x0202D178 mov r0, #0x3
bl FUN_0202C198
ldr r0, _0202D198 ; =FUN_0202CB50
- blx WM_End
+ bl WM_End
cmp r0, #0x2
beq _0202D194
mov r0, #0x9
@@ -85344,7 +85344,7 @@ FUN_0202D240: ; 0x0202D240 add r1, r6, #0x0
lsr r2, r2, #0x10
add r3, r4, #0x0
- blx WM_SetGameInfo
+ bl WM_SetGameInfo
_0202D26E:
add sp, #0x8
pop {r4-r6, pc}
@@ -85383,7 +85383,7 @@ FUN_0202D298: ; 0x0202D298 cmp r0, #0x4
bne _0202D2BE
ldr r0, _0202D2CC ; =FUN_0202D27C
- blx WM_SetEntry
+ bl WM_SetEntry
cmp r0, #0x2
bne _0202D2BE
mov r0, #0x1
@@ -85670,7 +85670,7 @@ FUN_0202D4A8: ; 0x0202D4A8 add r0, r1, #0x0
mov r1, #0xa
ldrsh r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
add r0, r1, #0x0
pop {r3, pc}
.balign 4
@@ -85922,7 +85922,7 @@ _0202D660: ldr r0, [r5, #0x0]
ldr r1, [r4, #0x0]
add r2, r3, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_0202D66A:
ldrh r0, [r5, #0xc]
ldr r1, [r4, #0x0]
@@ -86096,7 +86096,7 @@ _0202D7A4: add r0, r6, #0x0
mov r1, #0x0
mov r2, #0x10
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r4, #0x4]
ldr r7, [sp, #0x0]
cmp r0, #0x0
@@ -86130,7 +86130,7 @@ FUN_0202D7D8: ; 0x0202D7D8 mov r1, #0x0
mov r2, #0x20
add r5, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
lsl r7, r4, #0x4
mov r0, #0xf
add r1, r7, #0x0
@@ -86138,7 +86138,7 @@ FUN_0202D7D8: ; 0x0202D7D8 mov r1, #0x0
add r2, r7, #0x0
str r0, [r5, #0x18]
- blx MI_CpuFill8
+ bl MI_CpuFill8
str r4, [r5, #0x1c]
str r6, [r5, #0x14]
pop {r3-r7, pc}
@@ -86152,7 +86152,7 @@ FUN_0202D804: ; 0x0202D804 ldr r0, [r4, #0x18]
mov r1, #0x0
lsl r2, r2, #0x4
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x0
str r0, [r4, #0x0]
str r0, [r4, #0x4]
@@ -86623,7 +86623,7 @@ FUN_0202DB14: ; 0x0202DB14 str r0, [r1, #0x0]
mov r1, #0x0
lsl r2, r2, #0x2
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r6, #0x0
ldr r7, _0202DBA0 ; =0x021C59E4
add r4, r6, #0x0
@@ -86746,7 +86746,7 @@ FUN_0202DBE0: ; 0x0202DBE0 ldr r0, [r0, #0x0]
add r0, #0x64
add r0, r0, r5
- blx OS_GetMacAddress
+ bl OS_GetMacAddress
add r0, r7, #0x0
mov r1, #0x1
mov r2, #0x0
@@ -86756,7 +86756,7 @@ FUN_0202DBE0: ; 0x0202DBE0 ldr r1, [r1, #0x0]
add r1, #0x54
add r1, r1, r5
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r6, #0x0
bl FUN_02029B38
ldr r1, _0202DCD8 ; =0x021C59E4
@@ -86791,14 +86791,14 @@ FUN_0202DBE0: ; 0x0202DBE0 ldr r1, [r1, #0x0]
add r1, #0x48
add r1, r1, r5
- blx FUN_02096CCC
+ bl FUN_02096CCC
ldr r0, _0202DCD8 ; =0x021C59E4
mov r1, #0x0
ldr r0, [r0, #0x0]
mov r2, #0x20
add r0, #0x8
add r0, r0, r5
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202DCD8 ; =0x021C59E4
ldr r1, [r0, #0x0]
ldr r0, [r1, #0x0]
@@ -86874,7 +86874,7 @@ FUN_0202DD08: ; 0x0202DD08 add r3, r1, #0x0
mul r3, r2
add r1, r5, r3
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r4, #0x62
ldr r2, _0202DD78 ; =0x021C59E4
ldrb r3, [r4, #0x0]
@@ -86924,7 +86924,7 @@ FUN_0202DD80: ; 0x0202DD80 add r1, #0x8
add r1, r1, r4
add r2, r3, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _0202DDE0 ; =0x021C59E4
add r1, r5, #0x0
ldr r0, [r0, #0x0]
@@ -87002,7 +87002,7 @@ _0202DE0A: ldr r0, [r1, r0]
add r6, #0x28
add r1, r6, r5
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r1, _0202DE70 ; =0x021C59E4
mov r0, #0x4
ldr r1, [r1, #0x0]
@@ -87639,7 +87639,7 @@ FUN_0202E29C: ; 0x0202E29C str r0, [r1, #0x8]
mov r1, #0x0
lsl r2, r2, #0x4
- blx MI_CpuFill8
+ bl MI_CpuFill8
bl FUN_0202CEEC
add r1, r0, #0x0
mov r0, #0xf
@@ -87655,7 +87655,7 @@ FUN_0202E29C: ; 0x0202E29C ldr r0, _0202E338 ; =0x00000CA4
ldr r0, [r1, r0]
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
bl FUN_02023AC4
add r1, r0, #0x0
mov r0, #0xf
@@ -87671,7 +87671,7 @@ FUN_0202E29C: ; 0x0202E29C ldr r0, _0202E33C ; =0x00000CBC
ldr r0, [r1, r0]
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r2, _0202E334 ; =0x021C59E8
mov r1, #0x33
ldr r3, _0202E340 ; =0x00000333
@@ -87807,7 +87807,7 @@ _0202E3D2: mul r1, r2
add r0, r7, #0x0
add r1, r3, r1
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3-r7, pc}
_0202E412:
add r6, r6, #0x1
@@ -87844,7 +87844,7 @@ _0202E434: mul r3, r2
add r0, r7, #0x0
add r1, r4, r3
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _0202E464 ; =0x021C59E8
mov r2, #0x1
ldr r1, [r0, #0x8]
@@ -87862,7 +87862,7 @@ FUN_0202E470: ; 0x0202E470 push {r3, lr}
cmp r1, #0x0
beq _0202E47A
- blx OS_Terminate
+ bl OS_Terminate
_0202E47A:
ldr r0, _0202E484 ; =0x021C59E8
mov r1, #0x2
@@ -87894,10 +87894,10 @@ FUN_0202E49C: ; 0x0202E49C ldr r1, _0202E4C4 ; =FUN_0202E470
mov r0, #0x8
mov r2, #0x0
- blx FUN_02090DB8
+ bl FUN_02090DB8
cmp r0, #0x1
beq _0202E4BC
- blx OS_Terminate
+ bl OS_Terminate
_0202E4BC:
pop {r3, pc}
nop
@@ -87992,7 +87992,7 @@ _0202E544: ldr r0, [r0, #0x8]
lsl r2, r2, #0xa
add r0, #0x54
- blx MI_CpuFill8
+ bl MI_CpuFill8
pop {r3-r5, pc}
nop
_0202E564: .word 0x021C59E8
@@ -88709,7 +88709,7 @@ _0202EACE: add r2, r0, #0x0
add r0, r4, #0x0
add r1, #0x10
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
bl FUN_02023AC4
add r2, r0, #0x0
ldr r0, _0202EB6C ; =0x021C59E8
@@ -88718,7 +88718,7 @@ _0202EACE: ldr r0, [r1, r0]
add r1, r5, #0x0
add r1, #0x30
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r4, #0x0
bl FUN_020239BC
str r0, [r5, #0x0]
@@ -88733,7 +88733,7 @@ _0202EACE: add r0, r1, r0
add r1, r5, #0x0
add r1, #0x8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
bl FUN_0202D358
add r5, #0x54
strb r0, [r5, #0x0]
@@ -88755,14 +88755,14 @@ _0202EB24: ldr r0, [r0, #0x8]
add r1, r5, #0x0
mov r2, #0x54
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_0202EB4E:
ldr r0, _0202EB6C ; =0x021C59E8
ldr r1, [r0, #0x8]
ldr r0, _0202EB70 ; =0x00000CC4
add r0, r1, r0
mov r1, #0x5c
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, _0202EB6C ; =0x021C59E8
ldr r1, [r0, #0x8]
ldr r0, _0202EB70 ; =0x00000CC4
@@ -88794,7 +88794,7 @@ FUN_0202EB7C: ; 0x0202EB7C ldr r0, _0202EBCC ; =0x00000CC4
add r0, r1, r0
mov r1, #0x5c
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, _0202EBC8 ; =0x021C59E8
ldr r1, [r0, #0x8]
ldr r0, _0202EBCC ; =0x00000CC4
@@ -89240,7 +89240,7 @@ _0202EEE4: .word 0x0000FFFF FUN_0202EEE8: ; 0x0202EEE8
push {r3-r5, lr}
add r5, r0, #0x0
- blx WM_GetDispersionBeaconPeriod
+ bl WM_GetDispersionBeaconPeriod
add r4, r0, #0x0
cmp r5, #0x1a
blo _0202EEFA
@@ -89369,7 +89369,7 @@ _0202EFC2: add r1, r4, #0x0
mul r1, r2
add r1, r3, r1
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_0202EFD8:
pop {r3-r5, pc}
nop
@@ -89484,7 +89484,7 @@ FUN_0202F094: ; 0x0202F094 ldr r1, _0202F0B4 ; =0x00000CBC
add r0, r4, #0x0
ldr r1, [r3, r1]
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r4, pc}
nop
_0202F0B0: .word 0x021C59E8
@@ -89545,7 +89545,7 @@ FUN_0202F10C: ; 0x0202F10C ldr r1, _0202F120 ; =0x021C59E8
mov r2, #0x54
ldr r1, [r1, #0x8]
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
bl FUN_0202F0B8
pop {r3, pc}
nop
@@ -89606,7 +89606,7 @@ _0202F178: ldr r2, _0202F2C0 ; =0x0000068C
str r0, [r1, #0x4]
add r1, r4, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r2, _0202F2BC ; =0x021C59F4
ldr r1, _0202F2C4 ; =0x00000658
ldr r0, [r2, #0x4]
@@ -89795,7 +89795,7 @@ FUN_0202F2F0: ; 0x0202F2F0 ldr r3, [r3, r2]
add r2, r3, #0x0
mul r2, r6
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r4, #0x0
cmp r6, #0x0
ble _0202F360
@@ -89828,7 +89828,7 @@ _0202F360: ldr r3, [r3, r2]
add r2, r3, #0x0
mul r2, r6
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r5, #0x0
cmp r6, #0x0
ble _0202F3A2
@@ -89860,7 +89860,7 @@ _0202F3A2: add r0, r1, r0
mov r1, #0x0
lsl r2, r2, #0x6
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202F54C ; =0x021C59F4
mov r1, #0xb5
ldr r2, [r0, #0x4]
@@ -89894,7 +89894,7 @@ _0202F3DA: mov r1, #0x0
add r0, #0x4c
lsl r2, r2, #0x2
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202F54C ; =0x021C59F4
mov r2, #0x42
ldr r1, [r0, #0x4]
@@ -89930,7 +89930,7 @@ _0202F420: ldr r0, [r3, r0]
mov r1, #0x0
lsl r2, r2, #0x1
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202F54C ; =0x021C59F4
mov r1, #0x47
ldr r3, [r0, #0x4]
@@ -90109,7 +90109,7 @@ FUN_0202F5A4: ; 0x0202F5A4 ldr r3, [r3, r2]
add r2, r3, #0x0
mul r2, r6
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r4, #0x0
cmp r6, #0x0
ble _0202F606
@@ -90142,7 +90142,7 @@ _0202F606: ldr r3, [r3, r2]
add r2, r3, #0x0
mul r2, r6
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r5, #0x0
cmp r6, #0x0
ble _0202F648
@@ -90174,7 +90174,7 @@ _0202F648: add r0, r1, r0
mov r1, #0x0
lsl r2, r2, #0x6
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202F7D4 ; =0x021C59F4
mov r1, #0xb5
ldr r2, [r0, #0x4]
@@ -90208,7 +90208,7 @@ _0202F680: mov r1, #0x0
add r0, #0x4c
lsl r2, r2, #0x2
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202F7D4 ; =0x021C59F4
mov r2, #0x42
ldr r1, [r0, #0x4]
@@ -90244,7 +90244,7 @@ _0202F6C6: ldr r0, [r3, r0]
mov r1, #0x0
lsl r2, r2, #0x1
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202F7D4 ; =0x021C59F4
mov r1, #0x47
ldr r3, [r0, #0x4]
@@ -92269,7 +92269,7 @@ _020306F2: ldr r1, [r6, #0xc]
ldr r2, [r5, r2]
ldr r3, [r6, #0x4]
- blx _ll_mul
+ bl _ll_mul
add r3, r0, #0x0
add r2, r1, #0x0
ldr r0, [r6, #0x10]
@@ -92316,7 +92316,7 @@ _02030746: ldr r1, [r6, #0xc]
ldr r2, [r6, #0x0]
ldr r3, [r6, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r3, [r6, #0x10]
ldr r2, [r6, #0x14]
add r0, r3, r0
@@ -93084,7 +93084,7 @@ _02030D22: ldr r0, [sp, #0x8]
add r1, r2, r1
ldr r2, [sp, #0xc]
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_02030D42:
ldr r1, [r5, #0x0]
ldr r0, [sp, #0xc]
@@ -94087,7 +94087,7 @@ FUN_02031480: ; 0x02031480 ldr r2, _020314CC ; =0x00000253
str r0, [r1, #0x0]
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
_0203149C:
ldr r1, _020314C8 ; =0x021C59FC
mov r3, #0x0
@@ -94363,7 +94363,7 @@ _02031672: add r1, r7, #0x0
add r0, r0, r5
mov r2, #0x2
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r4, r4, #0x1
add r5, r5, #0x2
cmp r4, #0x8
@@ -94405,7 +94405,7 @@ FUN_020316AC: ; 0x020316AC add r3, #0x18
add r0, r1, #0x0
add r1, r3, r4
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r1, _020316DC ; =0x021C59FC
mov r0, #0x14
ldr r1, [r1, #0x0]
@@ -94459,7 +94459,7 @@ FUN_02031704: ; 0x02031704 add r4, #0x18
mul r3, r2
add r1, r4, r3
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3-r5, pc}
nop
_0203172C: .word 0x021C59FC
@@ -94486,7 +94486,7 @@ FUN_02031734: ; 0x02031734 mov r2, #0x50
str r0, [r1, #0x0]
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _020317BC ; =0x021C5A00
mov r2, #0x32
ldr r1, [r0, #0x0]
@@ -95249,7 +95249,7 @@ _02031D04: bl FUN_0202EDF8
cmp r0, #0x0
beq _02031D18
- blx WM_GetLinkLevel
+ bl WM_GetLinkLevel
mov r1, #0x3
sub r0, r1, r0
bl FUN_02033EEC
@@ -95320,7 +95320,7 @@ _02031D42: ldr r1, [r4, #0xc]
ldr r2, [r5, #0xc]
ldr r3, [r4, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r2, [r4, #0x10]
ldr r3, [r4, #0x14]
add r0, r2, r0
@@ -95331,7 +95331,7 @@ _02031D42: mov r1, #0x0
mov r2, #0x14
mov r3, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r0, #0x0
add r5, #0x43
strb r0, [r5, #0x0]
@@ -95404,7 +95404,7 @@ _02031E32: ldr r1, [r4, #0xc]
ldr r2, [r5, #0xc]
ldr r3, [r4, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r2, [r4, #0x10]
ldr r3, [r4, #0x14]
add r0, r2, r0
@@ -95452,7 +95452,7 @@ FUN_02031E8C: ; 0x02031E8C ldr r1, [r5, #0xc]
ldr r2, [r4, #0xc]
ldr r3, [r5, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r2, [r5, #0x10]
ldr r3, [r5, #0x14]
add r0, r2, r0
@@ -95680,7 +95680,7 @@ FUN_02032058: ; 0x02032058 ldr r1, [r4, #0xc]
ldr r2, [r5, #0xc]
ldr r3, [r4, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r2, [r4, #0x10]
ldr r3, [r4, #0x14]
add r0, r2, r0
@@ -95691,7 +95691,7 @@ FUN_02032058: ; 0x02032058 mov r1, #0x0
mov r2, #0x14
mov r3, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r0, #0x0
add r5, #0x43
strb r0, [r5, #0x0]
@@ -96289,7 +96289,7 @@ FUN_02032510: ; 0x02032510 ldr r1, [r5, #0xc]
ldr r2, [r4, #0xc]
ldr r3, [r5, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r2, [r5, #0x10]
ldr r3, [r5, #0x14]
add r0, r2, r0
@@ -96376,7 +96376,7 @@ FUN_020325D0: ; 0x020325D0 ldr r1, [r5, #0xc]
ldr r2, [r4, #0xc]
ldr r3, [r5, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r2, [r5, #0x10]
ldr r3, [r5, #0x14]
add r0, r2, r0
@@ -98019,7 +98019,7 @@ FUN_02033288: ; 0x02033288 mov r2, #0x50
str r0, [r1, #0x0]
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _020332D8 ; =0x021C5A00
mov r2, #0x18
ldr r1, [r0, #0x0]
@@ -98085,7 +98085,7 @@ FUN_02033310: ; 0x02033310 mov r2, #0x50
str r0, [r1, #0x0]
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _02033360 ; =0x021C5A00
mov r2, #0x19
ldr r1, [r0, #0x0]
@@ -98265,7 +98265,7 @@ _02033482: mov r1, #0x0
ldr r0, [r0, #0x0]
add r2, r4, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _020334D4 ; =0x021C5A00
mov r1, #0x0
ldr r2, [r0, #0x0]
@@ -98730,7 +98730,7 @@ FUN_020337E8: ; 0x020337E8 add r0, #0x1f
mov r1, #0x1f
bic r0, r1
- blx FUN_02096B14
+ bl FUN_02096B14
add r5, r0, #0x0
add r0, r4, #0x0
bl FUN_02016A18
@@ -98743,14 +98743,14 @@ FUN_0203380C: ; 0x0203380C push {r4, lr}
bl FUN_02028228
add r4, r0, #0x0
- blx FUN_02096FB0
+ bl FUN_02096FB0
cmp r0, #0x0
bne _0203382A
ldr r1, _0203382C ; =0x4144414A
add r0, r4, #0x0
- blx thunk_FUN_02097190
+ bl thunk_FUN_02097190
add r0, r4, #0x0
- blx thunk_FUN_02096e4c
+ bl thunk_FUN_02096e4c
_0203382A:
pop {r4, pc}
.balign 4
@@ -98763,10 +98763,10 @@ FUN_02033830: ; 0x02033830 bl FUN_02028228
add r4, r0, #0x0
add r1, sp, #0x0
- blx FUN_02096CCC
+ bl FUN_02096CCC
add r0, r4, #0x0
add r1, sp, #0x0
- blx FUN_02096DA0
+ bl FUN_02096DA0
add sp, #0xc
pop {r3-r4, pc}
@@ -98776,11 +98776,11 @@ FUN_0203384C: ; 0x0203384C bl FUN_020286EC
bl FUN_02028228
add r4, r0, #0x0
- blx FUN_02096F80
+ bl FUN_02096F80
cmp r0, #0x0
beq _0203386E
add r0, r4, #0x0
- blx FUN_02096F18
+ bl FUN_02096F18
cmp r0, #0x0
beq _0203386E
mov r0, #0x1
@@ -98810,7 +98810,7 @@ FUN_02033874: ; 0x02033874 mvn r1, r1
str r1, [r0, #0x0]
add r0, r5, #0x0
- blx FUN_0209700C
+ bl FUN_0209700C
cmp r0, #0x0
bne _020338AE
add sp, #0x8
@@ -98821,7 +98821,7 @@ _020338AE: _020338B0:
add r0, r5, #0x0
add r1, r4, #0x0
- blx FUN_02096B78
+ bl FUN_02096B78
cmp r0, #0x0
beq _020338C6
ldr r0, [sp, #0x0]
@@ -98832,16 +98832,16 @@ _020338B0: _020338C6:
add r0, r6, #0x0
add r1, r5, #0x0
- blx FUN_02096DA0
+ bl FUN_02096DA0
cmp r0, #0x0
ble _020338F4
add r0, r6, #0x0
add r1, r5, #0x0
- blx FUN_02096DA0
+ bl FUN_02096DA0
str r0, [sp, #0x4]
add r0, r6, #0x0
add r1, r4, #0x0
- blx FUN_02096DA0
+ bl FUN_02096DA0
ldr r1, [sp, #0x4]
cmp r1, r0
bne _020338F4
@@ -98856,7 +98856,7 @@ _020338F4: cmp r0, #0x0
bge _0203390A
add r0, r4, #0x0
- blx FUN_0209700C
+ bl FUN_0209700C
cmp r0, #0x0
bne _0203390A
ldr r0, [sp, #0x0]
@@ -98889,7 +98889,7 @@ FUN_02033918: ; 0x02033918 ldr r1, [sp, #0x0]
ldr r2, [sp, #0x4]
add r0, r7, #0x0
- blx FUN_020973B4
+ bl FUN_020973B4
cmp r0, #0x0
bne _02033950
add sp, #0x18
@@ -98899,10 +98899,10 @@ _02033950: ldr r1, [sp, #0x0]
ldr r2, [sp, #0x4]
add r0, sp, #0xc
- blx FUN_02096D2C
+ bl FUN_02096D2C
add r0, r7, #0x0
add r1, sp, #0xc
- blx FUN_02096DA0
+ bl FUN_02096DA0
cmp r0, #0x0
bgt _0203396C
add sp, #0x18
@@ -98916,11 +98916,11 @@ _0203396C: _02033974:
add r0, r7, #0x0
add r1, sp, #0xc
- blx FUN_02096DA0
+ bl FUN_02096DA0
str r0, [sp, #0x8]
add r0, r7, #0x0
add r1, r5, #0x0
- blx FUN_02096DA0
+ bl FUN_02096DA0
ldr r1, [sp, #0x8]
cmp r1, r0
bne _02033994
@@ -98933,7 +98933,7 @@ _02033994: cmp r0, #0x0
bge _020339A6
add r0, r5, #0x0
- blx FUN_0209700C
+ bl FUN_0209700C
cmp r0, #0x0
bne _020339A6
str r4, [r6, #0x0]
@@ -99014,7 +99014,7 @@ _02033A1C: add r0, r7, #0x0
add r1, r1, r3
mov r2, #0xc
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r5, #0x0
bl FUN_0202E1BC
b _02033A5C
@@ -99058,7 +99058,7 @@ FUN_02033A70: ; 0x02033A70 bl FUN_0202DFD8
ldr r1, [sp, #0x8]
mov r2, #0xc
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_02033AA6:
ldr r0, [sp, #0x28]
cmp r0, #0x0
@@ -99234,7 +99234,7 @@ _02033C06: ldr r0, _02033CB4 ; =0x00300010
add r7, r1, #0x0
and r7, r0
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
b _02033C2C
_02033C1E:
ldr r0, _02033CB8 ; =0x04001000
@@ -99242,7 +99242,7 @@ _02033C1E: ldr r0, _02033CB4 ; =0x00300010
add r7, r1, #0x0
and r7, r0
- blx GX_GetBankForSubOBJ
+ bl GX_GetBankForSubOBJ
_02033C2C:
cmp r7, #0x10
beq _02033C38
@@ -99413,24 +99413,24 @@ FUN_02033D3C: ; 0x02033D3C mov r1, #0x96
ldr r0, [sp, #0x4]
lsl r1, r1, #0x2
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [sp, #0x4]
add r1, sp, #0x0
- blx FUN_020B0138
+ bl FUN_020B0138
cmp r5, #0x1
bne _02033D80
ldr r0, [sp, #0x0]
add r1, r4, #0x0
ldr r0, [r0, #0xc]
mov r2, #0x20
- blx GX_LoadOBJPltt
+ bl GX_LoadOBJPltt
b _02033D8C
_02033D80:
ldr r0, [sp, #0x0]
add r1, r4, #0x0
ldr r0, [r0, #0xc]
mov r2, #0x20
- blx GXS_LoadOBJPltt
+ bl GXS_LoadOBJPltt
_02033D8C:
ldr r0, [sp, #0x4]
bl FUN_02016A18
@@ -99466,10 +99466,10 @@ _02033DC8: mov r1, #0x96
ldr r0, [sp, #0x4]
lsl r1, r1, #0x2
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [sp, #0x4]
add r1, sp, #0x0
- blx FUN_020B0088
+ bl FUN_020B0088
cmp r5, #0x1
bne _02033DF0
mov r0, #0x1
@@ -99478,7 +99478,7 @@ _02033DC8: ldr r0, _02033E64 ; =0x00300010
add r4, r1, #0x0
and r4, r0
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
b _02033E00
_02033DF0:
mov r0, #0x1
@@ -99487,7 +99487,7 @@ _02033DF0: ldr r0, _02033E64 ; =0x00300010
add r4, r1, #0x0
and r4, r0
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
_02033E00:
cmp r4, #0x10
beq _02033E0C
@@ -99529,14 +99529,14 @@ _02033E34: mov r2, #0x2
ldr r0, [r0, #0x14]
lsl r2, r2, #0x8
- blx GX_LoadOBJ
+ bl GX_LoadOBJ
b _02033E52
_02033E46:
ldr r0, [sp, #0x0]
mov r2, #0x2
ldr r0, [r0, #0x14]
lsl r2, r2, #0x8
- blx GXS_LoadOBJ
+ bl GXS_LoadOBJ
_02033E52:
ldr r0, [sp, #0x4]
bl FUN_02016A18
@@ -99728,12 +99728,12 @@ _02033FA4: mov r1, #0x0
bl FUN_0200E3A0
mov r0, #0x1
- blx OS_DisableIrqMask
+ bl OS_DisableIrqMask
ldr r1, _02034154 ; =FUN_02033F50
mov r0, #0x1
- blx OS_SetIrqFunction
+ bl OS_SetIrqFunction
mov r0, #0x1
- blx OS_EnableIrqMask
+ bl OS_EnableIrqMask
mov r0, #0x0
add r1, r0, #0x0
bl FUN_02015F10
@@ -100068,7 +100068,7 @@ _020342E4: bne _02034308
mov r0, #0x1
add r1, r0, #0x0
- blx OS_WaitIrq
+ bl OS_WaitIrq
b _020342E4
_02034308:
add r0, sp, #0x14
@@ -100180,7 +100180,7 @@ _0203440A: add r0, r5, #0x0
add r1, r4, r1
add r2, r7, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, [sp, #0x8]
add r5, r5, r7
cmp r0, #0x0
@@ -100191,7 +100191,7 @@ _0203440A: add r1, r4, #0x2
mul r2, r3
lsl r2, r2, #0x1
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldrb r1, [r4, #0x1]
ldrb r0, [r4, #0x0]
mul r0, r1
@@ -100207,7 +100207,7 @@ _0203443A: mul r2, r3
lsr r0, r0, #0x10
lsl r2, r2, #0x1
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
_0203444E:
ldr r0, [sp, #0x4]
cmp r0, #0x0
@@ -100218,7 +100218,7 @@ _0203444E: add r0, r5, #0x0
add r1, r4, r1
mul r2, r3
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldrb r1, [r4, #0x1]
ldrb r0, [r4, #0x0]
mul r0, r1
@@ -100231,7 +100231,7 @@ _0203446C: mul r2, r3
add r1, r4, r1
lsl r2, r2, #0x1
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r6, #0x0
bl FUN_02016A18
add sp, #0xc
@@ -100425,7 +100425,7 @@ FUN_020345A8: ; 0x020345A8 ldr r2, _020345D8 ; =0x00000708
add r0, r0, r1
add r1, r5, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r4, #0x0
bl FUN_02016A18
add r0, r5, #0x0
@@ -101482,7 +101482,7 @@ FUN_02034CB4: ; 0x02034CB4 mov r1, #0x0
lsl r2, r2, #0x2
add r5, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
bl FUN_020347D8
cmp r0, #0x0
@@ -101518,7 +101518,7 @@ FUN_02034CEC: ; 0x02034CEC mov r0, #0x0
add r1, r5, r1
lsl r2, r2, #0x8
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0xa
add r1, r4, #0x0
bl LoadFromNARC_7
@@ -101614,7 +101614,7 @@ FUN_02034D98: ; 0x02034D98 add r4, r0, #0x0
mov r1, #0x0
mov r2, #0xa0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
add r0, #0x6c
bl FUN_0204ADE0
@@ -102016,14 +102016,14 @@ _02035010: bne _0203502A
add r0, r6, #0x0
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
bne _02035038
_0203502A:
mov r1, #0x19
add r0, r6, #0x0
lsl r1, r1, #0x4
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
bne _0203503C
_02035038:
@@ -103505,7 +103505,7 @@ FUN_02035C18: ; 0x02035C18 add r6, r2, #0x0
bl FUN_020201DC
mov r1, #0x3
- blx _u32_div_f
+ bl _u32_div_f
add r2, r0, #0x0
lsl r1, r2, #0x1
add r1, r2, r1
@@ -103551,7 +103551,7 @@ FUN_02035C78: ; 0x02035C78 add r4, r0, #0x0
bl FUN_020201DC
mov r1, #0x3
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x1
bne _02035C9E
add r0, r4, #0x0
@@ -103792,7 +103792,7 @@ FUN_02035E50: ; 0x02035E50 ldr r1, [r4, r1]
mov r2, #0x40
add r6, r0, #0x0
- blx memcpy
+ bl memcpy
mov r0, #0x7e
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -104326,7 +104326,7 @@ FUN_020362E4: ; 0x020362E4 add r2, r0, #0x0
ldr r0, [sp, #0x8]
ldr r1, [r4, r1]
- blx memcpy
+ bl memcpy
mov r0, #0x7e
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -104390,7 +104390,7 @@ _0203638A: mov r1, #0x0
mov r2, #0x40
add r5, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r6, #0xc]
bl FUN_0206BB1C
str r0, [r5, #0x0]
@@ -104490,7 +104490,7 @@ _02036474: mov r1, #0x0
mov r2, #0x40
add r5, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [sp, #0x4]
str r0, [r5, #0x0]
ldr r0, [r6, #0xc]
@@ -104964,7 +104964,7 @@ FUN_0203684C: ; 0x0203684C ldr r1, [r4, r1]
mov r2, #0x30
add r7, r0, #0x0
- blx memcpy
+ bl memcpy
mov r0, #0x7e
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -104982,7 +104982,7 @@ FUN_0203684C: ; 0x0203684C str r1, [sp, #0x0]
mov r1, #0x0
add r5, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r6, #0xc]
bl FUN_0206BB1C
str r0, [r5, #0x0]
@@ -105511,7 +105511,7 @@ FUN_02036CEC: ; 0x02036CEC mov r1, #0x0
mov r2, #0x40
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r5, #0xc]
bl FUN_0206BB1C
str r0, [r4, #0x0]
@@ -106335,7 +106335,7 @@ _02037360: _0203736C:
ldr r0, _0203738C ; =0x00000005
mov r1, #0x2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
mov r1, #0x0
str r1, [r4, #0x64]
ldr r0, [r4, #0x0]
@@ -106446,7 +106446,7 @@ FUN_02037400: ; 0x02037400 mov r1, #0x0
mov r2, #0xb8
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0xb
mov r1, #0x10
bl FUN_02016998
@@ -106576,7 +106576,7 @@ _02037546: cmp r0, #0x0
bne _0203756E
ldr r0, _02037590 ; =0x00000005
- bl FUN_02005F60
+ bl UnloadOverlayByID
b _0203756E
_02037562:
ldr r1, [r0, #0x4]
@@ -107138,7 +107138,7 @@ FUN_0203797C: ; 0x0203797C mov r0, #0x0
add r1, r4, #0x0
mov r2, #0x40
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, [r5, #0xc]
bl FUN_0206BB1C
str r0, [r4, #0x0]
@@ -107520,7 +107520,7 @@ FUN_02037C7C: ; 0x02037C7C mov r1, #0x0
mov r2, #0x30
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r5, #0x0
bl LoadPlayerDataAddress
str r0, [r4, #0x4]
@@ -107569,7 +107569,7 @@ FUN_02037CF0: ; 0x02037CF0 mov r1, #0x0
mov r2, #0x30
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r5, #0xc]
bl FUN_0206BB1C
str r0, [r4, #0x0]
@@ -107970,7 +107970,7 @@ FUN_0203800C: ; 0x0203800C mov r1, #0x0
mov r2, #0x20
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0x0
bl FUN_0206BB1C
add r1, r7, #0x0
@@ -109131,7 +109131,7 @@ _02038956: bl FUN_020127C0
mov r2, #0x3c
mov r3, #0x0
- blx _ll_sdiv
+ bl _ll_sdiv
add r3, r0, #0x0
ldr r1, [sp, #0x8]
ldr r2, [r5, #0x0]
@@ -109223,7 +109223,7 @@ FUN_02038A3C: ; 0x02038A3C ldr r0, _02038AAC ; =0x020F2BE8
add r1, sp, #0x8
mov r2, #0xc
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r4, #0x0
mov r7, #0xc
add r6, sp, #0x8
@@ -109236,7 +109236,7 @@ _02038A68: _02038A72:
bl FUN_0201B9EC
add r1, r7, #0x0
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x18
lsr r2, r0, #0x18
ldrb r1, [r6, r4]
diff --git a/arm9/asm/unk_02046030.s b/arm9/asm/unk_02046030.s index b70ef94e..872e976a 100644 --- a/arm9/asm/unk_02046030.s +++ b/arm9/asm/unk_02046030.s @@ -7227,7 +7227,7 @@ _02049A14: str r0, [r5, #0x6c]
ldr r0, _02049AC8 ; =0x00000012
mov r1, #0x2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
add r0, r5, #0x0
bl FUN_0204FC5C
ldr r0, [r4, #0x14]
@@ -7387,7 +7387,7 @@ _02049B76: mov r0, #0x0
str r0, [r5, #0x6c]
ldr r0, _02049BE4 ; =0x00000012
- bl FUN_02005F60
+ bl UnloadOverlayByID
ldr r0, [r4, #0x14]
mov r2, #0x1
str r0, [sp, #0x0]
@@ -132323,7 +132323,7 @@ FUN_02085C08: ; 0x02085C08 mov r0, #0x35
bl FUN_020168D0
ldr r0, _02085D68 ; =0x00000008
- bl FUN_02005F60
+ bl UnloadOverlayByID
mov r0, #0x1
pop {r3-r5, pc}
nop
@@ -137757,40 +137757,40 @@ FUN_02088854: ; 0x02088854 thumb_func_start FUN_02088858
FUN_02088858: ; 0x02088858
- ldr r3, _02088860 ; =FUN_02005FDC
+ ldr r3, _02088860 ; =HandleLoadOverlay
ldr r0, _02088864 ; =0x00000004
mov r1, #0x2
bx r3
.balign 4
-_02088860: .word FUN_02005FDC
+_02088860: .word HandleLoadOverlay
_02088864: .word 0x00000004
thumb_func_start FUN_02088868
FUN_02088868: ; 0x02088868
- ldr r3, _02088870 ; =FUN_02005F60
+ ldr r3, _02088870 ; =UnloadOverlayByID
ldr r0, _02088874 ; =0x00000004
bx r3
nop
-_02088870: .word FUN_02005F60
+_02088870: .word UnloadOverlayByID
_02088874: .word 0x00000004
thumb_func_start FUN_02088878
FUN_02088878: ; 0x02088878
- ldr r3, _02088880 ; =FUN_02005FDC
+ ldr r3, _02088880 ; =HandleLoadOverlay
ldr r0, _02088884 ; =0x0000000D
mov r1, #0x2
bx r3
.balign 4
-_02088880: .word FUN_02005FDC
+_02088880: .word HandleLoadOverlay
_02088884: .word 0x0000000D
thumb_func_start FUN_02088888
FUN_02088888: ; 0x02088888
- ldr r3, _02088890 ; =FUN_02005F60
+ ldr r3, _02088890 ; =UnloadOverlayByID
ldr r0, _02088894 ; =0x0000000D
bx r3
nop
-_02088890: .word FUN_02005F60
+_02088890: .word UnloadOverlayByID
_02088894: .word 0x0000000D
thumb_func_start FUN_02088898
@@ -137810,21 +137810,21 @@ FUN_02088898: ; 0x02088898 thumb_func_start FUN_020888BC
FUN_020888BC: ; 0x020888BC
- ldr r3, _020888C4 ; =FUN_02005FDC
+ ldr r3, _020888C4 ; =HandleLoadOverlay
ldr r0, _020888C8 ; =0x0000004F
mov r1, #0x2
bx r3
.balign 4
-_020888C4: .word FUN_02005FDC
+_020888C4: .word HandleLoadOverlay
_020888C8: .word 0x0000004F
thumb_func_start FUN_020888CC
FUN_020888CC: ; 0x020888CC
- ldr r3, _020888D4 ; =FUN_02005F60
+ ldr r3, _020888D4 ; =UnloadOverlayByID
ldr r0, _020888D8 ; =0x0000004F
bx r3
nop
-_020888D4: .word FUN_02005F60
+_020888D4: .word UnloadOverlayByID
_020888D8: .word 0x0000004F
thumb_func_start FUN_020888DC
diff --git a/arm9/global.inc b/arm9/global.inc index 17fd4c67..7947390a 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -141,8 +141,8 @@ .extern FUN_02005E80
.extern FUN_02005E90
.extern FUN_02005F14
-.extern FUN_02005F60
-.extern FUN_02005FDC
+.extern UnloadOverlayByID
+.extern HandleLoadOverlay
.extern FUN_020061E8
.extern FUN_0200621C
.extern FUN_02006234
@@ -4900,3 +4900,133 @@ .extern MOD08_0222A494
.extern MOD08_0222A568
.extern MOD08_0222A6A4
+.extern FUN_02003084
+.extern FUN_0200317C
+.extern FUN_02003A30
+.extern FUN_02004D34
+.extern FUN_02004F64
+.extern FUN_0200C7F0
+.extern FUN_02011A90
+.extern FUN_02011AF0
+.extern FUN_02013450
+.extern FUN_0201B954
+.extern FUN_0201B9B8
+.extern FUN_02027A14
+.extern FUN_02027BDC
+.extern FUN_020799F4
+.extern FUN_02082878
+.extern FUN_02082880
+.extern FUN_020828BC
+.extern FUN_02082E64
+.extern FUN_02083130
+.extern FUN_02083170
+.extern FUN_02083228
+.extern FUN_020832A4
+.extern FUN_020832DC
+.extern FUN_020832EC
+.extern FUN_02083308
+.extern FUN_0208336C
+.extern FUN_020833D4
+.extern FUN_02083404
+.extern FUN_021DD4F4
+.extern FUN_021DD518
+.extern FUN_021DD540
+.extern FUN_021DD58C
+.extern FUN_021DD594
+.extern FUN_021DD59C
+.extern FUN_021DD604
+.extern FUN_021DD60C
+.extern FUN_021DD620
+.extern FUN_021DD678
+.extern FUN_021DD6B8
+.extern FUN_021DD6CC
+.extern FUN_02211FF0
+.extern MOD08_02228574
+.extern MOD08_0222A6C8
+.extern SDK_MODULE_00_ID
+.extern SDK_MODULE_01_ID
+.extern SDK_MODULE_02_ID
+.extern SDK_MODULE_03_ID
+.extern SDK_MODULE_04_ID
+.extern SDK_MODULE_05_ID
+.extern SDK_MODULE_06_ID
+.extern SDK_MODULE_07_ID
+.extern SDK_MODULE_08_ID
+.extern SDK_MODULE_09_ID
+.extern SDK_MODULE_10_ID
+.extern SDK_MODULE_11_ID
+.extern SDK_MODULE_12_ID
+.extern SDK_MODULE_13_ID
+.extern SDK_MODULE_14_ID
+.extern SDK_MODULE_15_ID
+.extern SDK_MODULE_16_ID
+.extern SDK_MODULE_17_ID
+.extern SDK_MODULE_18_ID
+.extern SDK_MODULE_19_ID
+.extern SDK_MODULE_20_ID
+.extern SDK_MODULE_21_ID
+.extern SDK_MODULE_22_ID
+.extern SDK_MODULE_23_ID
+.extern SDK_MODULE_24_ID
+.extern SDK_MODULE_25_ID
+.extern SDK_MODULE_26_ID
+.extern SDK_MODULE_27_ID
+.extern SDK_MODULE_28_ID
+.extern SDK_MODULE_29_ID
+.extern SDK_MODULE_30_ID
+.extern SDK_MODULE_31_ID
+.extern SDK_MODULE_32_ID
+.extern SDK_MODULE_33_ID
+.extern SDK_MODULE_34_ID
+.extern SDK_MODULE_35_ID
+.extern SDK_MODULE_36_ID
+.extern SDK_MODULE_37_ID
+.extern SDK_MODULE_38_ID
+.extern SDK_MODULE_39_ID
+.extern SDK_MODULE_40_ID
+.extern SDK_MODULE_41_ID
+.extern SDK_MODULE_42_ID
+.extern SDK_MODULE_43_ID
+.extern SDK_MODULE_44_ID
+.extern SDK_MODULE_45_ID
+.extern SDK_MODULE_46_ID
+.extern SDK_MODULE_47_ID
+.extern SDK_MODULE_48_ID
+.extern SDK_MODULE_49_ID
+.extern SDK_MODULE_50_ID
+.extern SDK_MODULE_51_ID
+.extern SDK_MODULE_52_ID
+.extern SDK_MODULE_53_ID
+.extern SDK_MODULE_54_ID
+.extern SDK_MODULE_55_ID
+.extern SDK_MODULE_56_ID
+.extern SDK_MODULE_57_ID
+.extern SDK_MODULE_58_ID
+.extern SDK_MODULE_59_ID
+.extern SDK_MODULE_60_ID
+.extern SDK_MODULE_61_ID
+.extern SDK_MODULE_62_ID
+.extern SDK_MODULE_63_ID
+.extern SDK_MODULE_64_ID
+.extern SDK_MODULE_65_ID
+.extern SDK_MODULE_66_ID
+.extern SDK_MODULE_67_ID
+.extern SDK_MODULE_68_ID
+.extern SDK_MODULE_69_ID
+.extern SDK_MODULE_70_ID
+.extern SDK_MODULE_71_ID
+.extern SDK_MODULE_72_ID
+.extern SDK_MODULE_73_ID
+.extern SDK_MODULE_74_ID
+.extern SDK_MODULE_75_ID
+.extern SDK_MODULE_76_ID
+.extern SDK_MODULE_77_ID
+.extern SDK_MODULE_78_ID
+.extern SDK_MODULE_79_ID
+.extern SDK_MODULE_80_ID
+.extern SDK_MODULE_81_ID
+.extern SDK_MODULE_82_ID
+.extern SDK_MODULE_83_ID
+.extern SDK_MODULE_84_ID
+.extern SDK_MODULE_85_ID
+.extern SDK_MODULE_86_ID
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index e4c836c6..9374c856 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -61,9 +61,9 @@ _021D752C: lsl r0, r0, #8 lsr r0, r0, #0x1c beq _021D7564 - ldr r0, _021D7678 ; =0x00000006 + ldr r0, _021D7678 ; =SDK_MODULE_06_ID mov r1, #2 - bl FUN_02005FDC + bl HandleLoadOverlay _021D7564: ldr r2, [r4, #0x70] mov r0, #3 @@ -174,7 +174,7 @@ _021D7666: .balign 4, 0 _021D7670: .word 0x04000050 _021D7674: .word 0x04001050 -_021D7678: .word 0x00000006 +_021D7678: .word SDK_MODULE_06_ID thumb_func_start MOD05_021D767C MOD05_021D767C: ; 0x021D767C @@ -367,8 +367,8 @@ _021D7806: lsl r0, r0, #8 lsr r0, r0, #0x1c beq _021D7856 - ldr r0, _021D7860 ; =0x00000006 - bl FUN_02005F60 + ldr r0, _021D7860 ; =SDK_MODULE_06_ID + bl UnloadOverlayByID _021D7856: mov r0, #1 pop {r3, r4, r5, pc} @@ -376,7 +376,7 @@ _021D785A: mov r0, #0 pop {r3, r4, r5, pc} nop -_021D7860: .word 0x00000006 +_021D7860: .word SDK_MODULE_06_ID thumb_func_start MOD05_021D7864 MOD05_021D7864: ; 0x021D7864 @@ -9485,16 +9485,16 @@ _021DBE9C: .word 0x02050E2D MOD05_021DBEA0: ; 0x021DBEA0 push {r4, lr} add r4, r0, #0 - ldr r0, _021DBEB8 ; =0x00000033 + ldr r0, _021DBEB8 ; =SDK_MODULE_51_ID mov r1, #2 - bl FUN_02005FDC + bl HandleLoadOverlay add r0, r4, #0 bl FUN_02254A68 add r4, #0x80 str r0, [r4] pop {r4, pc} .balign 4, 0 -_021DBEB8: .word 0x00000033 +_021DBEB8: .word SDK_MODULE_51_ID thumb_func_start MOD05_021DBEBC MOD05_021DBEBC: ; 0x021DBEBC @@ -9516,11 +9516,11 @@ MOD05_021DBECC: ; 0x021DBECC add r0, #0x80 ldr r0, [r0] bl FUN_02254AB8 - ldr r0, _021DBEE0 ; =0x00000033 - bl FUN_02005F60 + ldr r0, _021DBEE0 ; =SDK_MODULE_51_ID + bl UnloadOverlayByID pop {r3, pc} nop -_021DBEE0: .word 0x00000033 +_021DBEE0: .word SDK_MODULE_51_ID thumb_func_start MOD05_021DBEE4 MOD05_021DBEE4: ; 0x021DBEE4 @@ -24576,11 +24576,11 @@ _021E33A0: ldr r0, [r5, #0xc] bl FUN_0204C1A8 add r6, r0, #0 - ldr r0, _021E341C ; =0x00000013 - bl FUN_02005F60 - ldr r0, _021E3420 ; =0x00000014 + ldr r0, _021E341C ; =SDK_MODULE_19_ID + bl UnloadOverlayByID + ldr r0, _021E3420 ; =SDK_MODULE_20_ID mov r1, #2 - bl FUN_02005FDC + bl HandleLoadOverlay add r0, r6, #0 bl FUN_0204BEB8 mov r0, #1 @@ -24624,8 +24624,8 @@ _021E3414: add sp, #4 pop {r3, r4, r5, r6, pc} nop -_021E341C: .word 0x00000013 -_021E3420: .word 0x00000014 +_021E341C: .word SDK_MODULE_19_ID +_021E3420: .word SDK_MODULE_20_ID thumb_func_start MOD05_021E3424 MOD05_021E3424: ; 0x021E3424 @@ -50085,9 +50085,9 @@ MOD05_021EFAAC: ; 0x021EFAAC bl FUN_0205F1E4 cmp r0, #0 bne _021EFAF8 - ldr r0, _021EFB0C ; =0x00000014 + ldr r0, _021EFB0C ; =SDK_MODULE_20_ID mov r1, #2 - bl FUN_02005FDC + bl HandleLoadOverlay mov r0, #1 bl FUN_0200A03C str r0, [sp] @@ -50100,16 +50100,16 @@ MOD05_021EFAAC: ; 0x021EFAAC add sp, #4 pop {r3, r4, r5, r6, pc} _021EFAF8: - ldr r0, _021EFB10 ; =0x00000013 + ldr r0, _021EFB10 ; =SDK_MODULE_19_ID mov r1, #2 - bl FUN_02005FDC + bl HandleLoadOverlay ldr r0, [r5, #8] bl FUN_02252440 add sp, #4 pop {r3, r4, r5, r6, pc} nop -_021EFB0C: .word 0x00000014 -_021EFB10: .word 0x00000013 +_021EFB0C: .word SDK_MODULE_20_ID +_021EFB10: .word SDK_MODULE_19_ID thumb_func_start MOD05_021EFB14 MOD05_021EFB14: ; 0x021EFB14 @@ -50165,8 +50165,8 @@ MOD05_021EFB50: ; 0x021EFB50 ldr r0, [r5, #4] mov r1, #0 str r1, [r0, #0x14] - ldr r0, _021EFBAC ; =0x00000014 - bl FUN_02005F60 + ldr r0, _021EFBAC ; =SDK_MODULE_20_ID + bl UnloadOverlayByID mov r0, #1 pop {r4, r5, r6, pc} _021EFB94: @@ -50174,29 +50174,29 @@ _021EFB94: bl FUN_02252504 cmp r0, #0 beq _021EFBA8 - ldr r0, _021EFBB0 ; =0x00000013 - bl FUN_02005F60 + ldr r0, _021EFBB0 ; =SDK_MODULE_19_ID + bl UnloadOverlayByID mov r0, #1 pop {r4, r5, r6, pc} _021EFBA8: mov r0, #0 pop {r4, r5, r6, pc} .balign 4, 0 -_021EFBAC: .word 0x00000014 -_021EFBB0: .word 0x00000013 +_021EFBAC: .word SDK_MODULE_20_ID +_021EFBB0: .word SDK_MODULE_19_ID thumb_func_start MOD05_021EFBB4 MOD05_021EFBB4: ; 0x021EFBB4 push {r4, lr} add r4, r0, #0 - ldr r0, _021EFBC8 ; =0x00000013 + ldr r0, _021EFBC8 ; =SDK_MODULE_19_ID mov r1, #2 - bl FUN_02005FDC + bl HandleLoadOverlay ldr r0, [r4, #8] bl FUN_02252440 pop {r4, pc} .balign 4, 0 -_021EFBC8: .word 0x00000013 +_021EFBC8: .word SDK_MODULE_19_ID thumb_func_start MOD05_021EFBCC MOD05_021EFBCC: ; 0x021EFBCC @@ -50213,15 +50213,15 @@ MOD05_021EFBD8: ; 0x021EFBD8 bl FUN_02252504 cmp r0, #0 beq _021EFBEE - ldr r0, _021EFBF4 ; =0x00000013 - bl FUN_02005F60 + ldr r0, _021EFBF4 ; =SDK_MODULE_19_ID + bl UnloadOverlayByID mov r0, #1 pop {r3, pc} _021EFBEE: mov r0, #0 pop {r3, pc} nop -_021EFBF4: .word 0x00000013 +_021EFBF4: .word SDK_MODULE_19_ID thumb_func_start MOD05_021EFBF8 MOD05_021EFBF8: ; 0x021EFBF8 diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s index 7f7ae7cf..1f539d08 100644 --- a/arm9/modules/11/asm/module_11.s +++ b/arm9/modules/11/asm/module_11.s @@ -128,8 +128,8 @@ _0222D6AC: bl MOD11_0222FC38
cmp r0, #1
bne _0222D6D2
- ldr r0, _0222D7F0 ; =0x00000007
- bl FUN_02005F60
+ ldr r0, _0222D7F0 ; =SDK_MODULE_07_ID
+ bl UnloadOverlayByID
mov r0, #7
str r0, [r4]
mov r0, #0x3d
@@ -147,9 +147,9 @@ _0222D6D4: str r0, [r4]
b _0222D7EA
_0222D6DA:
- ldr r0, _0222D7F4 ; =0x00000008
+ ldr r0, _0222D7F4 ; =SDK_MODULE_08_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
add r0, r6, #0
bl MOD11_0222DB50
mov r0, #9
@@ -184,8 +184,8 @@ _0222D720: bl MOD11_0222FE58
cmp r0, #1
bne _0222D7EA
- ldr r0, _0222D7F0 ; =0x00000007
- bl FUN_02005F60
+ ldr r0, _0222D7F0 ; =SDK_MODULE_07_ID
+ bl UnloadOverlayByID
mov r0, #5
bl FUN_020168D0
mov r0, #0x3e
@@ -279,8 +279,8 @@ _0222D7EA: add sp, #0x28
pop {r4, r5, r6, pc}
.align 2, 0
-_0222D7F0: .word 0x00000007
-_0222D7F4: .word 0x00000008
+_0222D7F0: .word SDK_MODULE_07_ID
+_0222D7F4: .word SDK_MODULE_08_ID
thumb_func_start MOD11_0222D7F8
MOD11_0222D7F8: ; 0x0222D7F8
@@ -302,16 +302,16 @@ MOD11_0222D7F8: ; 0x0222D7F8 add r0, r4, #0
mov r1, #3
bl MOD11_02231338
- ldr r0, _0222D838 ; =0x00000008
- bl FUN_02005F60
- ldr r0, _0222D83C ; =0x00000009
+ ldr r0, _0222D838 ; =SDK_MODULE_08_ID
+ bl UnloadOverlayByID
+ ldr r0, _0222D83C ; =SDK_MODULE_09_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
pop {r4, pc}
.align 2, 0
_0222D834: .word 0x000023FB
-_0222D838: .word 0x00000008
-_0222D83C: .word 0x00000009
+_0222D838: .word SDK_MODULE_08_ID
+_0222D83C: .word SDK_MODULE_09_ID
thumb_func_start MOD11_0222D840
MOD11_0222D840: ; 0x0222D840
@@ -349,11 +349,11 @@ MOD11_0222D840: ; 0x0222D840 MOD11_0222D88C: ; 0x0222D88C
push {r3, r4, r5, lr}
add r4, r0, #0
- ldr r0, _0222D938 ; =0x00000009
- bl FUN_02005F60
- ldr r0, _0222D93C ; =0x00000008
+ ldr r0, _0222D938 ; =SDK_MODULE_09_ID
+ bl UnloadOverlayByID
+ ldr r0, _0222D93C ; =SDK_MODULE_08_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
add r0, r4, #0
mov r1, #0
bl MOD11_02231338
@@ -363,7 +363,7 @@ MOD11_0222D88C: ; 0x0222D88C add r1, r0, #0
mov r0, #0
add r2, r5, #0
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
bl FUN_02031190
add r1, r0, #0
add r0, r4, #0
@@ -415,8 +415,8 @@ MOD11_0222D88C: ; 0x0222D88C bl FUN_02008D24
pop {r3, r4, r5, pc}
.align 2, 0
-_0222D938: .word 0x00000009
-_0222D93C: .word 0x00000008
+_0222D938: .word SDK_MODULE_09_ID
+_0222D93C: .word SDK_MODULE_08_ID
_0222D940: .word 0x000023FB
thumb_func_start MOD11_0222D944
@@ -663,14 +663,14 @@ MOD11_0222DB50: ; 0x0222DB50 add r1, r0, #0
mov r0, #0
add r2, r5, #0
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
bl FUN_02022300
add r5, r0, #0
bl FUN_020222F8
add r1, r0, #0
mov r0, #0
add r2, r5, #0
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
bl FUN_0201B9D4
ldr r1, _0222DF0C ; =0x00002430
str r0, [r4, r1]
@@ -915,14 +915,14 @@ _0222DC42: ldr r1, _0222DF24 ; =0x00002224
mov r2, #0xe0
add r1, r4, r1
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [r4, #0x28]
mov r1, #2
bl FUN_020031FC
ldr r1, _0222DF28 ; =0x00002304
mov r2, #0xe0
add r1, r4, r1
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0
bl MOD11_02230C68
mov r1, #0
@@ -1396,13 +1396,13 @@ _0222E220: bl FUN_0201C350
add r0, r4, #0
bl FUN_02016A18
- ldr r0, _0222E25C ; =0x00000008
- bl FUN_02005F60
+ ldr r0, _0222E25C ; =SDK_MODULE_08_ID
+ bl UnloadOverlayByID
bl FUN_02033590
cmp r0, #0
bne _0222E244
- ldr r0, _0222E260 ; =0x00000010
- bl FUN_02005F60
+ ldr r0, _0222E260 ; =SDK_MODULE_16_ID
+ bl UnloadOverlayByID
_0222E244:
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -1411,8 +1411,8 @@ _0222E24C: .word 0x00002410 _0222E250: .word 0x000023F9
_0222E254: .word 0x00002430
_0222E258: .word 0x00000704
-_0222E25C: .word 0x00000008
-_0222E260: .word 0x00000010
+_0222E25C: .word SDK_MODULE_08_ID
+_0222E260: .word SDK_MODULE_16_ID
thumb_func_start MOD11_0222E264
MOD11_0222E264: ; 0x0222E264
@@ -1440,25 +1440,25 @@ _0222E282: mov r0, #0
lsl r1, r1, #0x18
lsl r2, r2, #0x12
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x62
mov r2, #2
mov r0, #0
lsl r1, r1, #0x14
lsl r2, r2, #0x10
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x19
mov r2, #1
mov r0, #0
lsl r1, r1, #0x16
lsl r2, r2, #0x12
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x66
mov r2, #2
mov r0, #0
lsl r1, r1, #0x14
lsl r2, r2, #0x10
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
ldr r6, _0222E454 ; =0x0225D9A8
add r3, sp, #0x10
add r2, r3, #0
@@ -3032,13 +3032,13 @@ MOD11_0222EF50: ; 0x0222EF50 add r1, r0, #0
add r2, r0, #0
add r3, r0, #0
- blx G3X_SetFog
+ bl G3X_SetFog
mov r0, #0
ldr r2, _0222EFC8 ; =0x00007FFF
add r1, r0, #0
mov r3, #0x3f
str r0, [sp]
- blx G3X_SetClearColor
+ bl G3X_SetClearColor
ldr r1, _0222EFCC ; =0xBFFF0000
ldr r0, _0222EFD0 ; =0x04000580
str r1, [r0]
@@ -3384,13 +3384,13 @@ MOD11_0222F284: ; 0x0222F284 bl FUN_02033590
cmp r0, #0
bne _0222F296
- ldr r0, _0222F298 ; =0x00000010
+ ldr r0, _0222F298 ; =SDK_MODULE_16_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
_0222F296:
pop {r3, pc}
.align 2, 0
-_0222F298: .word 0x00000010
+_0222F298: .word SDK_MODULE_16_ID
thumb_func_start MOD11_0222F29C
MOD11_0222F29C: ; 0x0222F29C
@@ -3454,31 +3454,31 @@ _0222F30E: mov r0, #0
lsl r1, r1, #0x18
lsl r2, r2, #0x12
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x62
mov r2, #2
mov r0, #0
lsl r1, r1, #0x14
lsl r2, r2, #0x10
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x19
mov r2, #1
mov r0, #0
lsl r1, r1, #0x16
lsl r2, r2, #0x12
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x66
mov r2, #2
mov r0, #0
lsl r1, r1, #0x14
lsl r2, r2, #0x10
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #5
mov r2, #2
mov r0, #0
lsl r1, r1, #0x18
lsl r2, r2, #8
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
ldr r6, _0222F4CC ; =0x0225D9B8
add r3, sp, #0x30
add r2, r3, #0
@@ -4229,7 +4229,7 @@ MOD11_0222F988: ; 0x0222F988 ldr r2, _0222FAB4 ; =0x00002444
mov r0, #0
add r1, r4, #0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0
add r1, r6, #0
bl MOD11_0222E520
@@ -4244,9 +4244,9 @@ _0222F9C6: mov r0, #0
pop {r4, r5, r6, pc}
_0222F9CA:
- ldr r0, _0222FAB8 ; =0x00000007
+ ldr r0, _0222FAB8 ; =SDK_MODULE_07_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
ldr r1, [r4, #0x2c]
mov r0, #8
tst r0, r1
@@ -4263,7 +4263,7 @@ _0222F9DE: ldr r1, [r4, r1]
mov r0, #0
mov r2, #0x2c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r5, #0
bl FUN_020313CC
cmp r0, #3
@@ -4363,7 +4363,7 @@ _0222FAA4: pop {r4, r5, r6, pc}
nop
_0222FAB4: .word 0x00002444
-_0222FAB8: .word 0x00000007
+_0222FAB8: .word SDK_MODULE_07_ID
thumb_func_start MOD11_0222FABC
MOD11_0222FABC: ; 0x0222FABC
@@ -4435,7 +4435,7 @@ _0222FB2E: ldr r1, [r4, r1]
mov r0, #0
mov r2, #0x2c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r1, [r4, #0x2c]
mov r0, #8
tst r0, r1
@@ -4612,9 +4612,9 @@ _0222FCA2: mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_0222FCA8:
- ldr r0, _0222FE54 ; =0x00000007
+ ldr r0, _0222FE54 ; =SDK_MODULE_07_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
mov r0, #5
mov r1, #0x2c
bl FUN_02016998
@@ -4625,7 +4625,7 @@ _0222FCA8: mov r0, #0
add r1, r6, #0
mov r2, #0x2c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
str r7, [r6]
ldr r0, [r7, #0x14]
cmp r0, #5
@@ -4818,7 +4818,7 @@ _0222FE48: add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
-_0222FE54: .word 0x00000007
+_0222FE54: .word SDK_MODULE_07_ID
thumb_func_start MOD11_0222FE58
MOD11_0222FE58: ; 0x0222FE58
@@ -6514,7 +6514,7 @@ _02230AA2: mul r1, r0
add r0, r1, #0
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x20]
cmp r0, #0
bne _02230AC2
@@ -6686,7 +6686,7 @@ _02230BFC: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #8]
_02230C28:
ldr r0, [sp, #0x18]
@@ -7242,7 +7242,7 @@ MOD11_02230FCC: ; 0x02230FCC ldr r0, _02231224 ; =0x06010000
ldr r1, [r4, r1]
lsl r2, r2, #0x10
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
mov r0, #0x22
lsl r0, r0, #4
ldr r5, [r4, r0]
@@ -7252,7 +7252,7 @@ MOD11_02230FCC: ; 0x02230FCC mov r2, #2
add r1, r5, #0
lsl r2, r2, #8
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
mov r0, #0x19
lsl r0, r0, #0x16
str r0, [sp, #0x24]
@@ -11434,7 +11434,7 @@ _02232FB4: ldr r1, [r5, r1]
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _022330E4 ; =0x00002144
str r0, [r5, r1]
_02233040:
@@ -11456,7 +11456,7 @@ _02233040: add r0, #0xa
mul r0, r1
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, _022330E4 ; =0x00002144
str r0, [r5, r1]
_0223306E:
@@ -11497,7 +11497,7 @@ _02233094: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _022330E4 ; =0x00002144
add sp, #0x1c
str r0, [r5, r1]
@@ -12655,7 +12655,7 @@ _022339C6: ldrb r0, [r2, r0]
mul r0, r1
mov r1, #7
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
ldr r1, [sp]
lsr r0, r0, #0x10
@@ -12664,7 +12664,7 @@ _022339C6: lsr r4, r0, #1
ldr r1, [sp, #4]
add r0, r4, #0
- blx _s32_div_f
+ bl _s32_div_f
add r1, r5, #0
add r1, #0x9c
str r0, [r1]
@@ -12680,7 +12680,7 @@ _022339C6: _02233A1E:
ldr r1, [sp]
add r0, r4, #0
- blx _s32_div_f
+ bl _s32_div_f
add r1, r5, #0
add r1, #0xa0
str r0, [r1]
@@ -12695,7 +12695,7 @@ _02233A1E: b _02233A6A
_02233A3E:
ldr r1, [sp, #4]
- blx _s32_div_f
+ bl _s32_div_f
add r1, r5, #0
add r1, #0x9c
str r0, [r1]
@@ -13311,7 +13311,7 @@ _02233EEA: _02233EF4:
ldr r0, [r4]
add r1, r5, #0
- blx _s32_div_f
+ bl _s32_div_f
str r0, [r4]
b _02233F42
_02233F00:
@@ -14219,7 +14219,7 @@ _022345FE: b _02234648
_02234606:
add r1, r4, #0
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0xc]
b _02234648
_02234610:
@@ -14442,7 +14442,7 @@ MOD11_022347B0: ; 0x022347B0 add r6, r0, #0
bl FUN_0201B9EC
add r1, r4, #1
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0x4d
add r1, r6, r1
lsl r0, r0, #2
@@ -14548,7 +14548,7 @@ _02234890: _0223489A:
ldr r0, [r4]
ldr r1, [r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [r4]
b _022348F6
_022348A6:
@@ -14709,7 +14709,7 @@ _022349C0: _022349CA:
ldr r0, [sp, #0xc]
ldr r1, [r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0xc]
b _02234A26
_022349D6:
@@ -15703,7 +15703,7 @@ _0223519E: _022351A0:
bl FUN_0201B9EC
add r1, r6, #0
- blx _s32_div_f
+ bl _s32_div_f
ldr r2, [r4, #0x64]
mov r0, #0xc0
mul r0, r2
@@ -16388,7 +16388,7 @@ _022356AA: lsr r5, r0, #0x10
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r5
bge _0223572C
ldr r1, [r4, #0x64]
@@ -16476,7 +16476,7 @@ _02235784: lsr r5, r0, #0x10
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r5
bge _022357DA
ldr r1, [r4, #0x64]
@@ -16623,7 +16623,7 @@ _022358DE: _022358E0:
ldr r0, [r4]
ldr r1, [r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [r4]
cmp r0, #0
bne _022358F0
@@ -16802,7 +16802,7 @@ MOD11_02235A2C: ; 0x02235A2C _02235A3C:
bl FUN_0201B9EC
ldr r1, _02235A80 ; =0x000001D3
- blx _s32_div_f
+ bl _s32_div_f
add r0, r1, #1
ldr r1, [r6, #0x64]
lsl r0, r0, #0x10
@@ -17258,7 +17258,7 @@ _02235D7E: add r5, r2, #0
mul r5, r1
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
ldr r2, [r4, r5]
mov r0, #0x38
bic r2, r0
@@ -18521,7 +18521,7 @@ _022367DE: _022367EA:
bl FUN_0201B9EC
add r1, r6, #0
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [sp, #0xc]
add r5, r1, #0
add r5, r5, r0
@@ -19867,7 +19867,7 @@ MOD11_02237290: ; 0x02237290 bne _0223731C
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, _0223732C ; =0x00003120
strb r1, [r4, r0]
ldrb r1, [r4, r0]
@@ -20322,7 +20322,7 @@ MOD11_02237584: ; 0x02237584 mov r0, #0x28
mul r0, r1
mov r1, #0x3f
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _02237668 ; =0x00002154
add r0, #0x1e
str r0, [r4, r1]
@@ -20331,7 +20331,7 @@ MOD11_02237584: ; 0x02237584 mov r0, #0xf
mul r0, r1
mov r1, #0x3f
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #1
ldr r0, _0223766C ; =0x00002160
str r1, [r4, r0]
@@ -20496,7 +20496,7 @@ MOD11_022376D0: ; 0x022376D0 mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
str r0, [r5, r4]
b _022377AC
_022377A4:
@@ -20701,7 +20701,7 @@ _02237900: str r2, [r5, r1]
lsl r0, r4, #1
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _02237AB0 ; =0x00002144
add r0, r0, #2
ldr r2, [r5, r1]
@@ -20723,12 +20723,12 @@ _02237900: add r1, r0, #0
ldr r0, _02237AB0 ; =0x00002144
ldr r0, [r5, r0]
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, _02237AB0 ; =0x00002144
str r0, [r5, r1]
ldr r0, [r5, r1]
mov r1, #0x32
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _02237AB0 ; =0x00002144
str r0, [r5, r1]
ldr r0, [r5, r1]
@@ -20753,7 +20753,7 @@ _02237900: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _02237AB0 ; =0x00002144
str r0, [r5, r1]
_022379CC:
@@ -21220,7 +21220,7 @@ _02237D8A: beq _02237DA8
bl FUN_0201B9EC
add r1, r7, #0
- blx _s32_div_f
+ bl _s32_div_f
lsl r1, r1, #1
add r0, sp, #0x18
ldrh r2, [r0, r1]
@@ -21713,7 +21713,7 @@ MOD11_02238130: ; 0x02238130 add r1, r1, #4
ldr r1, [r2, r1]
mul r0, r3
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, _02238178 ; =0x00002154
str r0, [r4, r1]
ldr r0, [r4, r1]
@@ -22681,7 +22681,7 @@ MOD11_022388C0: ; 0x022388C0 lsl r2, r2, #2
add r2, r4, r2
ldr r1, [r2, r1]
- blx _u32_div_f
+ bl _u32_div_f
add r1, r0, #1
ldr r0, _02238900 ; =0x00002154
str r1, [r4, r0]
@@ -22743,7 +22743,7 @@ MOD11_02238904: ; 0x02238904 mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _022389F4 ; =0x00002144
str r0, [r5, r1]
mov r0, #0x71
@@ -22906,7 +22906,7 @@ MOD11_02238A84: ; 0x02238A84 add r1, r1, #4
ldr r1, [r3, r1]
mul r0, r2
- blx _u32_div_f
+ bl _u32_div_f
add r1, r0, #1
ldr r0, _02238AB8 ; =0x00002154
str r1, [r4, r0]
@@ -23905,12 +23905,12 @@ _02239222: bne _022392EC
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
bne _022392EC
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r5, r1, #0
add r0, r4, #0
mov r1, #0xa0
@@ -23918,7 +23918,7 @@ _02239222: bl FUN_020671BC
sub r0, r0, #1
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
lsl r0, r0, #0x18
lsr r2, r0, #0x18
cmp r2, #0xa
@@ -23999,7 +23999,7 @@ _02239324: _0223932E:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
ldr r2, [sp, #0xc]
ldr r0, _02239378 ; =0x0225E15C
ldrb r0, [r0, r2]
@@ -24716,7 +24716,7 @@ _022398F0: _022398F8:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r4
bge _0223991E
add r0, r5, #0
@@ -24799,7 +24799,7 @@ _022399A0: _022399A2:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r4
ble _022399C2
add r0, r5, #0
@@ -25529,7 +25529,7 @@ _02239F82: beq _02239FB0
bl FUN_0201B9EC
add r1, r4, #0
- blx _s32_div_f
+ bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0
ldr r0, [r0, r1]
@@ -25721,7 +25721,7 @@ MOD11_0223A0D8: ; 0x0223A0D8 bne _0223A126
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [sp]
cmp r1, r0
bge _0223A126
@@ -26840,7 +26840,7 @@ _0223A96C: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x34]
_0223A980:
ldr r0, [sp, #0x1c]
@@ -26850,7 +26850,7 @@ _0223A980: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x34]
_0223A994:
ldr r0, [r4]
@@ -26870,7 +26870,7 @@ _0223A994: mov r0, #0xaa
mul r0, r1
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x34]
b _0223A9D0
_0223A9C2:
@@ -26878,7 +26878,7 @@ _0223A9C2: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x34]
_0223A9D0:
mov r1, #2
@@ -29543,7 +29543,7 @@ _0223BFEE: add r0, r2, #0
ldr r2, _0223C208 ; =0x0225DCF1
ldrb r1, [r2, r1]
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp]
b _0223C03A
_0223C026:
@@ -29697,7 +29697,7 @@ _0223C12E: add r0, r1, #0
mul r0, r5
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, _0223C218 ; =0x00002D8C
add r2, r4, r6
ldr r1, [r2, r1]
@@ -29706,7 +29706,7 @@ _0223C12E: mul r1, r0
add r0, r1, #0
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
add r1, r0, #0
ldr r0, _0223C21C ; =0x00002DAC
add r2, r4, r6
@@ -29722,7 +29722,7 @@ _0223C170: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r1, r0, #0
_0223C182:
cmp r1, #0xff
@@ -29735,7 +29735,7 @@ _0223C18A: strh r2, [r0]
mov r0, #0xff
lsl r0, r0, #0x10
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, _0223C224 ; =0x040002B8
add r2, r1, #0
str r0, [r1]
@@ -29772,7 +29772,7 @@ _0223C1CC: ldr r1, _0223C228 ; =0x040002B4
ldr r0, _0223C22C ; =0x000FFFF0
ldr r1, [r1]
- blx _u32_div_f
+ bl _u32_div_f
add r6, r0, #0
mov r5, #0
_0223C1E0:
@@ -31753,7 +31753,7 @@ MOD11_0223D1DC: ; 0x0223D1DC ldr r2, _0223D22C ; =0x0000314C
mov r0, #0
add r1, r4, #0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0
bl MOD11_02245494
add r0, r5, #0
@@ -36663,7 +36663,7 @@ MOD11_0223F770: ; 0x0223F770 str r0, [r4, #0xc]
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0x4e
lsl r0, r0, #2
str r1, [r4, r0]
@@ -36709,7 +36709,7 @@ MOD11_0223F7CC: ; 0x0223F7CC str r0, [r4, #0xc]
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0x4e
lsl r0, r0, #2
str r1, [r4, r0]
@@ -37667,7 +37667,7 @@ _0223FF42: beq _0223FF9E
bl FUN_0201B9EC
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
beq _0223FF82
ldr r0, [sp, #0x1c]
@@ -38595,7 +38595,7 @@ _02240688: ldr r2, _02240880 ; =0x0225E179
ldrb r1, [r2, r1]
mul r0, r4
- blx _u32_div_f
+ bl _u32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r5, #0
@@ -38606,7 +38606,7 @@ _02240688: mov r0, #0x82
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_022406B6:
@@ -38644,7 +38644,7 @@ _022406B6: mov r0, #0x50
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02240708:
@@ -38664,7 +38664,7 @@ _02240708: mov r0, #0x50
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02240732:
@@ -38678,7 +38678,7 @@ _02240732: mov r0, #6
mul r0, r4
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224074E:
@@ -38693,7 +38693,7 @@ _0224074E: mov r0, #0x50
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224076E:
@@ -38713,7 +38713,7 @@ _0224076E: mov r0, #0x32
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02240798:
@@ -38730,7 +38730,7 @@ _02240798: mov r1, #0x64
sub r0, r1, r0
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_022407BE:
@@ -38748,7 +38748,7 @@ _022407BE: add r0, #0x64
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_022407E6:
@@ -38763,7 +38763,7 @@ _022407E6: add r0, r4, #0
mul r0, r6
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02240806:
@@ -38781,7 +38781,7 @@ _02240806: mov r0, #0x78
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224082A:
@@ -38795,13 +38795,13 @@ _0224082A: mov r0, #0xa
mul r0, r4
mov r1, #6
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02240846:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r0, r1, #1
cmp r0, r4
ble _02240860
@@ -39876,7 +39876,7 @@ _0224106A: bne _022410A4
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [sp]
cmp r1, r0
bge _022410A4
@@ -42997,7 +42997,7 @@ MOD11_02242870: ; 0x02242870 _022428B8:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r6
bge _0224290A
ldr r0, _02242918 ; =0x00003044
@@ -46522,7 +46522,7 @@ _02244356: mul r0, r2
ldr r2, _0224456C ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
add r6, r0, #0
ldr r0, [sp, #0x14]
lsl r1, r7, #1
@@ -46534,7 +46534,7 @@ _02244356: mul r0, r2
ldr r2, _0224456C ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0
mov r0, #0xd
str r0, [sp]
@@ -46630,7 +46630,7 @@ _0224442E: mov r0, #0xf
mul r0, r6
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r6, r0, #0
_02244440:
ldr r0, [sp, #0x58]
@@ -46658,7 +46658,7 @@ _02244456: mov r0, #0xf
mul r0, r6
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r6, r0, #0
b _02244488
_02244478:
@@ -46721,14 +46721,14 @@ _022444DE: bne _0224451C
ldr r1, [sp, #0x54]
mov r0, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0
ldr r0, [sp, #8]
lsl r0, r0, #1
add r2, r5, r0
ldr r0, _02244584 ; =0x0000310C
ldrh r0, [r2, r0]
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
bne _0224451C
mov r0, #1
@@ -46806,7 +46806,7 @@ _02244594: mov r0, #0xf
mul r0, r4
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r4, r0, #0
_022445A6:
ldr r0, [sp, #0x50]
@@ -46834,7 +46834,7 @@ _022445BC: mov r0, #0xf
mul r0, r4
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r4, r0, #0
b _022445EE
_022445DE:
@@ -46897,14 +46897,14 @@ _02244644: bne _02244682
ldr r1, [sp, #0x4c]
mov r0, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0
ldr r0, [sp, #0xc]
lsl r0, r0, #1
add r2, r5, r0
ldr r0, _022448A0 ; =0x0000310C
ldrh r0, [r2, r0]
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
bne _02244682
mov r0, #1
@@ -47517,7 +47517,7 @@ _02244AF4: _02244AFC:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r6
bge _02244B16
ldr r1, _02244C1C ; =0x0000213C
@@ -47586,7 +47586,7 @@ _02244B7C: _02244B84:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r7
bge _02244C00
ldr r2, _02244C04 ; =0x00002174
@@ -48866,7 +48866,7 @@ _02245558: mov r0, #0
add r1, r6, #0
mov r2, #0x1c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r1, r5, r4
ldr r0, _02245584 ; =0x000021A4
add r4, r4, #1
@@ -49765,11 +49765,11 @@ _02245C7A: mov r0, #0
add r1, r7, #0
mov r2, #0x40
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0
add r1, r6, #0
mov r2, #4
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, _02245D24 ; =0x00002DB0
ldr r1, [r4, r0]
ldr r0, [sp, #8]
@@ -50618,7 +50618,7 @@ _02246346: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x50]
_02246354:
add r0, r5, #0
@@ -50866,7 +50866,7 @@ _02246532: str r0, [sp, #0x1c]
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x50]
_0224654A:
ldr r0, [sp, #0x54]
@@ -51718,7 +51718,7 @@ MOD11_02246B58: ; 0x02246B58 blo _02246B76
bl FUN_0201B9EC
mov r1, #0x70
- blx _u32_div_f
+ bl _u32_div_f
add r6, r1, #0
mov r0, #0
_02246B76:
@@ -51758,7 +51758,7 @@ _02246BA8: ldrb r0, [r4, #2]
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0
_02246BC2:
cmp r6, r7
@@ -51768,7 +51768,7 @@ _02246BC2: ldrb r0, [r4, #2]
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0
_02246BD6:
add r4, r4, #3
@@ -52481,7 +52481,7 @@ _0224711C: cmp r2, r1
bhs _02247164
lsl r0, r2, #7
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _0224718C ; =0x0000311E
ldrb r2, [r5, r1]
mov r1, #0x1e
@@ -53156,7 +53156,7 @@ _02247616: beq _02247696
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
bge _02247696
ldr r0, [sp, #4]
@@ -53237,7 +53237,7 @@ MOD11_022476C0: ; 0x022476C0 _022476CC:
mov r4, #1
_022476CE:
- blx _s32_div_f
+ bl _s32_div_f
cmp r0, #0
bne _022476D8
add r0, r4, #0
@@ -53740,7 +53740,7 @@ _02247A56: ldr r0, _02247D6C ; =0x0225E284
ldrb r0, [r0, r2]
mul r0, r3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x78]
add r0, r1, r0
str r0, [sp, #0x78]
@@ -53755,7 +53755,7 @@ _02247A56: ldr r0, _02247D6C ; =0x0225E284
ldrb r0, [r0, r2]
mul r0, r3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x74]
add r0, r1, r0
str r0, [sp, #0x74]
@@ -54211,7 +54211,7 @@ _02247E08: add r6, r0, #0
bl FUN_0201B9EC
add r1, r6, #0
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0xc0
add r2, r5, #0
mul r2, r0
@@ -54974,7 +54974,7 @@ _022483C6: beq _022483E6
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
blt _022483E8
_022483E6:
@@ -55214,12 +55214,12 @@ _0224859A: beq _02248650
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
bge _02248650
bl FUN_0201B9EC
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
beq _022485D0
cmp r1, #1
@@ -55322,7 +55322,7 @@ _02248688: beq _02248770
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
bge _02248770
add r0, r5, #0
@@ -55396,7 +55396,7 @@ _02248712: beq _02248770
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
bge _02248770
add r0, r5, #0
@@ -55482,7 +55482,7 @@ _022487AC: beq _0224887A
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
bge _0224887A
add r0, r5, #0
@@ -56527,7 +56527,7 @@ _02248F98: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56561,7 +56561,7 @@ _02248FDC: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56599,7 +56599,7 @@ _02249024: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56634,7 +56634,7 @@ _0224906A: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56669,7 +56669,7 @@ _022490B0: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56704,7 +56704,7 @@ _022490F6: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56740,7 +56740,7 @@ _0224913A: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56765,7 +56765,7 @@ _02249168: _02249172:
bl FUN_0201B9EC
add r1, r7, #0
- blx _s32_div_f
+ bl _s32_div_f
add r0, r5, r1
ldrsb r0, [r0, r6]
cmp r0, #0xc
@@ -56833,7 +56833,7 @@ _022491EA: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56859,7 +56859,7 @@ _0224921E: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57417,7 +57417,7 @@ _0224965C: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57444,7 +57444,7 @@ _02249692: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57654,7 +57654,7 @@ _02249838: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57689,7 +57689,7 @@ _0224987E: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57725,7 +57725,7 @@ _022498C6: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57761,7 +57761,7 @@ _0224990E: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57800,7 +57800,7 @@ _02249958: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57836,7 +57836,7 @@ _022499A0: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57870,7 +57870,7 @@ _022499E4: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57894,7 +57894,7 @@ _02249A12: _02249A1A:
bl FUN_0201B9EC
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
add r0, r5, r1
ldrsb r0, [r0, r7]
cmp r0, #0xc
@@ -59203,7 +59203,7 @@ _0224A3F2: _0224A3FC:
bl FUN_0201B9EC
add r1, r7, #0
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [r4, #0x64]
add r2, r0, #0
mul r2, r6
@@ -60053,7 +60053,7 @@ _0224AA5A: _0224AA64:
bl FUN_0201B9EC
add r1, r7, #0
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [r4, #0x6c]
add r2, r0, #0
mul r2, r6
@@ -61458,7 +61458,7 @@ _0224B564: mov r1, #0xa
ldr r0, [r5, r0]
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, sp, #0x90
@@ -61489,7 +61489,7 @@ _0224B594: mov r0, #0xf
mul r0, r4
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B5B2:
@@ -61503,7 +61503,7 @@ _0224B5B2: mov r0, #0xf
mul r0, r4
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B5CE:
@@ -61561,7 +61561,7 @@ _0224B620: mov r1, #0x64
add r0, #0x64
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
b _0224B648
@@ -61578,7 +61578,7 @@ _0224B648: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
@@ -61590,7 +61590,7 @@ _0224B660: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
@@ -61613,7 +61613,7 @@ _0224B678: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
@@ -61636,7 +61636,7 @@ _0224B6A6: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
@@ -61727,7 +61727,7 @@ _0224B774: mov r1, #0x64
add r0, #0x64
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B78A:
@@ -61748,7 +61748,7 @@ _0224B798: mov r1, #0x64
add r0, #0x64
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B7B2:
@@ -61762,7 +61762,7 @@ _0224B7B2: mov r1, #0x64
add r0, #0x64
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B7CE:
@@ -61777,7 +61777,7 @@ _0224B7CE: add r0, #0x64
str r0, [sp, #0x2c]
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B7EC:
@@ -61802,7 +61802,7 @@ _0224B808: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
@@ -61816,7 +61816,7 @@ _0224B81E: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
@@ -61835,7 +61835,7 @@ _0224B83A: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x78]
@@ -61855,7 +61855,7 @@ _0224B862: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
@@ -61875,7 +61875,7 @@ _0224B88C: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
@@ -61910,14 +61910,14 @@ _0224B8E6: bne _0224B90A
ldr r0, [sp, #0x4c]
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x50]
cmp r1, r0
bgt _0224B90A
mov r0, #0x96
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B90A:
@@ -61927,14 +61927,14 @@ _0224B90A: bne _0224B92E
ldr r0, [sp, #0x4c]
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x50]
cmp r1, r0
bgt _0224B92E
mov r0, #0x96
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B92E:
@@ -61944,14 +61944,14 @@ _0224B92E: bne _0224B952
ldr r0, [sp, #0x4c]
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x50]
cmp r1, r0
bgt _0224B952
mov r0, #0x96
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B952:
@@ -61961,14 +61961,14 @@ _0224B952: bne _0224B976
ldr r0, [sp, #0x4c]
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x50]
cmp r1, r0
bgt _0224B976
mov r0, #0x96
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B976:
@@ -61996,7 +61996,7 @@ _0224B98E: mov r0, #0x7d
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B9B0:
@@ -62129,7 +62129,7 @@ _0224BA5C: mov r0, #0x7d
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224BAAA:
@@ -62148,7 +62148,7 @@ _0224BAAA: mov r0, #0x4b
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224BAD0:
@@ -62164,7 +62164,7 @@ _0224BAD4: mov r0, #0xc
mul r0, r4
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
b _0224BAF8
@@ -62203,7 +62203,7 @@ _0224BAF8: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
@@ -62223,7 +62223,7 @@ _0224BB54: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
@@ -62244,7 +62244,7 @@ _0224BB66: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
@@ -62270,7 +62270,7 @@ _0224BB92: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
@@ -62303,7 +62303,7 @@ _0224BBE0: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
b _0224BC24
_0224BC08:
@@ -62319,7 +62319,7 @@ _0224BC0E: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
_0224BC24:
ldr r0, [sp, #0x84]
@@ -62329,7 +62329,7 @@ _0224BC24: str r1, [sp, #0x84]
lsl r0, r0, #1
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #2
ldr r0, [sp, #0x84]
mul r1, r0
@@ -62347,7 +62347,7 @@ _0224BC24: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x78]
b _0224BC76
_0224BC60:
@@ -62359,14 +62359,14 @@ _0224BC60: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x78]
_0224BC76:
ldr r0, [sp, #0x84]
ldr r1, [sp, #0x78]
- blx _s32_div_f
+ bl _s32_div_f
mov r1, #0x32
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
ldr r0, [sp, #0x48]
mov r1, #0x10
@@ -62406,7 +62406,7 @@ _0224BCB2: ldr r0, [sp, #0x84]
mov r1, #3
lsl r0, r0, #1
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
b _0224BDC8
_0224BCD6:
@@ -62432,7 +62432,7 @@ _0224BCE2: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
b _0224BD24
_0224BD08:
@@ -62448,7 +62448,7 @@ _0224BD0E: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
_0224BD24:
ldr r0, [sp, #0x84]
@@ -62458,7 +62458,7 @@ _0224BD24: str r1, [sp, #0x84]
lsl r0, r0, #1
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #2
ldr r0, [sp, #0x84]
mul r1, r0
@@ -62476,7 +62476,7 @@ _0224BD24: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x10]
b _0224BD76
_0224BD60:
@@ -62488,14 +62488,14 @@ _0224BD60: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x10]
_0224BD76:
ldr r0, [sp, #0x84]
ldr r1, [sp, #0x10]
- blx _s32_div_f
+ bl _s32_div_f
mov r1, #0x32
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
ldr r0, [sp, #0xc]
mov r1, #2
@@ -62520,7 +62520,7 @@ _0224BD76: ldr r0, [sp, #0x84]
mov r1, #3
lsl r0, r0, #1
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
b _0224BDC8
_0224BDBE:
@@ -62628,7 +62628,7 @@ _0224BE8C: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
_0224BE9A:
ldr r1, _0224BF0C ; =0x000080CF
@@ -62658,7 +62658,7 @@ _0224BEC4: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
b _0224BEDE
_0224BED4:
@@ -62681,7 +62681,7 @@ _0224BEDE: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
_0224BF00:
ldr r0, [sp, #0x84]
@@ -62707,7 +62707,7 @@ MOD11_0224BF10: ; 0x0224BF10 mov r1, #0x64
sub r0, r1, r0
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0
bne _0224BF36
mov r4, #1
@@ -62812,7 +62812,7 @@ _0224BFE0: bl FUN_0201B9EC
ldr r1, _0224C040 ; =0x0225E244
ldrb r1, [r1, r5]
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
bne _0224C026
ldr r1, [sp]
@@ -64223,7 +64223,7 @@ _0224C9A6: mov r0, #0xf
mul r0, r1
mov r1, #0x3f
- blx _s32_div_f
+ bl _s32_div_f
add r5, r0, #1
cmp r5, #9
blt _0224CA54
@@ -64295,7 +64295,7 @@ MOD11_0224CA64: ; 0x0224CA64 mov r0, #0
add r1, r4, #0
lsl r2, r2, #2
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x65
ldrb r1, [r5]
lsl r0, r0, #2
@@ -66824,7 +66824,7 @@ MOD11_0224DE50: ; 0x0224DE50 mov r0, #0
add r1, r4, #0
mov r2, #1
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x65
str r7, [r4, #0xc]
lsl r0, r0, #2
@@ -66918,7 +66918,7 @@ MOD11_0224DF18: ; 0x0224DF18 mov r0, #0
add r1, r4, #0
mov r2, #1
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x65
str r6, [r4, #0xc]
lsl r0, r0, #2
@@ -66957,7 +66957,7 @@ MOD11_0224DF60: ; 0x0224DF60 mov r0, #0
add r1, r4, #0
mov r2, #0x3c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r7, #0
strb r7, [r4, #0xa]
strb r7, [r4, #0xb]
@@ -67569,7 +67569,7 @@ _0224E422: add r0, r4, #0
mov r1, #0
mov r2, #1
- blx MI_CpuFill8
+ bl MI_CpuFill8
str r7, [r4, #0xc]
add r0, r4, #0
ldrb r1, [r5]
@@ -67637,7 +67637,7 @@ _0224E4AE: add r0, r4, #0
mov r1, #0
mov r2, #1
- blx MI_CpuFill8
+ bl MI_CpuFill8
str r7, [r4, #0xc]
add r0, r4, #0
ldrb r1, [r5]
@@ -68275,7 +68275,7 @@ MOD11_0224E9C0: ; 0x0224E9C0 mov r0, #0
add r1, r4, #0
mov r2, #1
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x65
str r7, [r4, #0xc]
lsl r0, r0, #2
@@ -72931,11 +72931,11 @@ MOD11_02250F94: ; 0x02250F94 add r0, r2, #0
ldr r2, _02251010 ; =0x0225E831
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
add r5, r0, #0
bl FUN_0201B9EC
mov r1, #0xff
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r5
ldr r0, [r4]
bgt _02250FEA
@@ -73224,7 +73224,7 @@ _0225122E: blt _0225121C
bl FUN_0201B9EC
add r1, r7, #0
- blx _s32_div_f
+ bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x10
ldr r4, [r0, r1]
@@ -74576,7 +74576,7 @@ _02251CEC: mov r1, #0
mov r2, #1
add r5, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r4]
add r1, r6, #0
bl MOD11_02230260
@@ -77140,7 +77140,7 @@ _0225319A: bl MOD11_02231244
add r1, r7, #0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [r4]
bl MOD11_0222FF74
cmp r0, #0x4a
@@ -77153,7 +77153,7 @@ _0225319A: bl MOD11_02231250
add r1, r7, #0
mov r2, #0xa0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _0225323E
_022531DC:
ldr r0, [r4]
@@ -77168,7 +77168,7 @@ _022531DC: bl MOD11_02231250
add r1, r7, #0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _0225323E
_02253200:
ldr r0, [r4]
@@ -77184,7 +77184,7 @@ _02253200: bl MOD11_02231250
add r1, r7, #0
mov r2, #0xa0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _0225323E
_02253226:
add r0, r5, #0
@@ -77195,7 +77195,7 @@ _02253226: bl MOD11_02231250
add r1, r7, #0
mov r2, #0x80
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_0225323E:
mov r0, #0x10
str r0, [sp]
@@ -77292,7 +77292,7 @@ _022532F6: bl MOD11_02231244
add r1, r6, #0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [r4]
bl MOD11_0222FF74
cmp r0, #0x4a
@@ -77305,7 +77305,7 @@ _022532F6: bl MOD11_02231250
add r1, r6, #0
mov r2, #0xa0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _02253394
_02253332:
ldr r0, [r4]
@@ -77320,7 +77320,7 @@ _02253332: bl MOD11_02231250
add r1, r6, #0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _02253394
_02253356:
ldr r0, [r4]
@@ -77336,7 +77336,7 @@ _02253356: bl MOD11_02231250
add r1, r6, #0
mov r2, #0xa0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _02253394
_0225337C:
add r0, r5, #0
@@ -77347,7 +77347,7 @@ _0225337C: bl MOD11_02231250
add r1, r6, #0
mov r2, #0x80
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_02253394:
mov r3, #0
str r3, [sp]
@@ -79823,7 +79823,7 @@ _022546D4: asr r1, r0, #0x1f
lsl r2, r2, #0xa
mov r3, #0
- blx _ll_mul
+ bl _ll_mul
add r2, r1, #0
mov r1, #4
add r5, r0, #0
@@ -81204,7 +81204,7 @@ MOD11_02255188: ; 0x02255188 add r1, sp, #0x28
mov r2, #0x2c
add r6, r3, #0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, [sp, #4]
bl MOD11_0222FF78
ldr r1, [sp, #0xc]
@@ -82911,7 +82911,7 @@ MOD11_02255EAC: ; 0x02255EAC mov r0, #0x64
mul r0, r1
add r1, r2, #0
- blx _s32_div_f
+ bl _s32_div_f
add r1, sp, #4
strh r0, [r1, #2]
mov r0, #4
@@ -82952,7 +82952,7 @@ _02255F12: mul r0, r1
add r1, r2, #4
ldr r1, [r6, r1]
- blx _u32_div_f
+ bl _u32_div_f
add r1, sp, #4
strh r0, [r1, #2]
_02255F24:
@@ -84395,7 +84395,7 @@ MOD11_022569DC: ; 0x022569DC add r1, r5, #0
mov r2, #8
add r6, r3, #0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, [sp]
bl MOD11_0222FF74
add r4, r0, #0
@@ -85259,7 +85259,7 @@ _0225705C: add r1, r1, r3
ldr r3, _0225713C ; =0x0225E9B2
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r0, #0x45
bl MOD11_02257F60
add r1, r5, #0
@@ -85273,7 +85273,7 @@ _0225705C: add r1, r1, r3
ldr r3, _02257144 ; =0x0225EA12
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r1, [r5, #0x28]
add r0, r5, #0
mov r2, #6
@@ -85295,7 +85295,7 @@ _022570E8: add r1, r1, r3
ldr r3, _0225713C ; =0x0225E9B2
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r0, #0x44
bl MOD11_02257F60
add r1, r5, #0
@@ -85309,7 +85309,7 @@ _022570E8: add r1, r1, r3
ldr r3, _0225714C ; =0x0225E9E2
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r1, [r5, #0x28]
add r0, r5, #0
mov r2, #1
@@ -85908,7 +85908,7 @@ MOD11_022574F0: ; 0x022574F0 add r0, r6, #0
ldrh r2, [r2, r7]
add r1, r3, r1
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r5, #0
add r0, #0x25
ldrb r0, [r0]
@@ -85923,7 +85923,7 @@ MOD11_022574F0: ; 0x022574F0 ldr r0, [sp, #0x20]
ldrh r2, [r2, r7]
add r1, r3, r1
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r5, #0
add r0, #0x25
ldrb r0, [r0]
@@ -85940,7 +85940,7 @@ MOD11_022574F0: ; 0x022574F0 add r1, r1, r3
ldr r3, _02257648 ; =0x0225EC92
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r5, #0x25
ldrb r0, [r5]
ldr r4, [r4, #4]
@@ -85957,7 +85957,7 @@ MOD11_022574F0: ; 0x022574F0 ldr r3, _02257650 ; =0x0225EC96
add r1, r4, r1
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, sp, #0x24
bl FUN_02019178
ldr r0, [sp, #0x18]
@@ -86022,7 +86022,7 @@ _02257670: ldrh r2, [r3, r2]
add r0, r0, r1
add r1, r7, #0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [sp]
ldr r1, _02257754 ; =0x0225EABC
add r0, #0x25
@@ -86039,7 +86039,7 @@ _02257670: add r0, r0, r1
add r1, r7, #0
add r1, #0x40
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #0
add r1, r2, #0
_022576D6:
@@ -86077,7 +86077,7 @@ _022576DA: ldr r3, _02257750 ; =0x0225EABA
add r0, r7, #0
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [sp]
ldr r3, _02257754 ; =0x0225EABC
add r0, #0x25
@@ -86095,7 +86095,7 @@ _022576DA: ldr r3, _02257758 ; =0x0225EABE
add r0, #0x40
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r7, #0
bl FUN_02016A18
add sp, #8
@@ -86122,7 +86122,7 @@ MOD11_0225775C: ; 0x0225775C add r0, r4, #0
mov r1, #0xff
mov r2, #0x60
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [sp, #4]
ldr r0, [r0, #0xc]
bl MOD11_022300BC
@@ -86153,7 +86153,7 @@ MOD11_0225775C: ; 0x0225775C ldrh r2, [r3, r2]
add r0, r0, r1
add r1, r7, #0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [sp, #4]
ldr r1, _02257874 ; =0x0225EA2C
add r0, #0x25
@@ -86170,7 +86170,7 @@ MOD11_0225775C: ; 0x0225775C add r0, r0, r1
add r1, r7, #0
add r1, #0x60
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #0
add r1, r2, #0
_022577EE:
@@ -86208,7 +86208,7 @@ _022577F2: ldr r3, _02257870 ; =0x0225EA2A
add r0, r7, #0
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [sp, #4]
ldr r3, _02257874 ; =0x0225EA2C
add r0, #0x25
@@ -86226,7 +86226,7 @@ _022577F2: ldr r3, _02257878 ; =0x0225EA2E
add r0, #0x60
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0
bl FUN_02016A18
add r0, r7, #0
@@ -86250,7 +86250,7 @@ MOD11_0225787C: ; 0x0225787C mov r1, #0xff
mov r2, #0x60
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r5, #0xc]
bl MOD11_022300B4
str r4, [sp]
@@ -86276,7 +86276,7 @@ MOD11_0225787C: ; 0x0225787C ldr r3, _022578FC ; =0x0225EA5A
add r0, r4, #0
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r5, #0x25
ldrb r0, [r5]
ldr r3, _02257900 ; =0x0225EA5C
@@ -86290,7 +86290,7 @@ MOD11_0225787C: ; 0x0225787C ldr r3, _02257904 ; =0x0225EA5E
ldrh r2, [r3, r2]
add r0, r4, r0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0
bl FUN_02016A18
pop {r3, r4, r5, r6, r7, pc}
@@ -86310,7 +86310,7 @@ MOD11_02257908: ; 0x02257908 mov r1, #0xff
mov r2, #0x60
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r5, #0xc]
bl MOD11_022300B4
str r4, [sp]
@@ -86335,7 +86335,7 @@ MOD11_02257908: ; 0x02257908 ldr r3, _02257964 ; =0x0225E9FA
add r0, r4, #0
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0
bl FUN_02016A18
pop {r3, r4, r5, pc}
@@ -86376,7 +86376,7 @@ _02257982: ldr r3, _022579B4 ; =0x0225E9CA
add r1, r4, r1
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
pop {r3, r4, r5, pc}
nop
_022579B0: .word 0x0225E9C8
@@ -86406,7 +86406,7 @@ MOD11_022579B8: ; 0x022579B8 ldr r3, _022579F4 ; =0x0225E99A
add r1, r4, r1
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
pop {r3, r4, r5, pc}
nop
_022579F0: .word 0x0225E998
@@ -86473,7 +86473,7 @@ _02257A26: add r1, r1, r2
add r0, r5, #0
mov r2, #0xc0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #0xd
mov r0, #0x1a
lsl r2, r2, #6
@@ -86483,7 +86483,7 @@ _02257A26: add r1, r1, r2
add r0, r5, r0
mov r2, #0xc0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #0xa
lsl r2, r2, #8
add r0, r5, #0
@@ -86492,7 +86492,7 @@ _02257A26: add r1, r1, r2
add r0, #0xc0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r0, #0x1a
mov r1, #0xb
lsl r0, r0, #4
@@ -86503,7 +86503,7 @@ _02257A26: add r1, r2, r1
add r0, #0xc0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, sp, #0x18
bl FUN_02019178
add r0, r7, #0
@@ -86598,7 +86598,7 @@ _02257B1E: add r1, r1, r2
add r0, r5, #0
mov r2, #0xc0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #0x15
mov r0, #0x1a
lsl r2, r2, #6
@@ -86608,7 +86608,7 @@ _02257B1E: add r1, r1, r2
add r0, r5, r0
mov r2, #0xc0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #3
lsl r2, r2, #0xa
add r0, r5, #0
@@ -86617,7 +86617,7 @@ _02257B1E: add r1, r1, r2
add r0, #0xc0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r0, #0x1a
mov r1, #0xd
lsl r0, r0, #4
@@ -86628,7 +86628,7 @@ _02257B1E: add r1, r2, r1
add r0, #0xc0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, sp, #0x24
bl FUN_02019178
add r0, r6, #0
@@ -86671,8 +86671,8 @@ _02257C10: _02257C22:
ldr r6, [r5, #0x40]
add r0, r6, #0
- blx _s32_div_f
- blx abs
+ bl _s32_div_f
+ bl abs
mov r1, #0xb
lsl r0, r0, #0x10
add r3, r5, #0
@@ -86793,7 +86793,7 @@ _02257CE6: add r2, r3, r2
add r1, r1, r2
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _02257D42
_02257D16:
ldrb r0, [r0, r4]
@@ -86816,7 +86816,7 @@ _02257D16: add r1, r1, r3
add r1, r2, r1
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_02257D42:
add r0, r4, #1
lsl r0, r0, #0x18
@@ -86877,7 +86877,7 @@ _02257D9C: add r0, r6, r0
add r1, r3, r1
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _02257DD0
_02257DBA:
ldrb r0, [r0, r4]
@@ -86889,7 +86889,7 @@ _02257DBA: add r1, r1, r2
add r0, r6, r0
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_02257DD0:
add r0, r4, #1
lsl r0, r0, #0x18
@@ -86957,7 +86957,7 @@ _02257E3E: bge _02257E7E
lsl r0, r0, #8
add r1, r2, #0
- blx _s32_div_f
+ bl _s32_div_f
cmp r6, #0
ldr r1, [r5]
bge _02257E62
@@ -87043,14 +87043,14 @@ _02257ECE: add r0, r1, #0
mul r0, r2
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
lsr r0, r0, #8
b _02257EEC
_02257EE2:
add r0, r1, #0
mul r0, r2
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
_02257EEC:
add r2, r0, #0
cmp r0, #0
@@ -87103,18 +87103,18 @@ _02257F38: add r0, r7, #0
mul r0, r6
add r1, r5, #0
- blx _s32_div_f
+ bl _s32_div_f
add r7, r0, #0
add r0, r4, #0
mul r0, r6
add r1, r5, #0
- blx _s32_div_f
+ bl _s32_div_f
lsl r1, r7, #0x18
lsl r0, r0, #0x18
asr r1, r1, #0x18
asr r0, r0, #0x18
sub r0, r1, r0
- blx abs
+ bl abs
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -87281,7 +87281,7 @@ MOD11_0225805C: ; 0x0225805C mov r1, #0
mov r2, #0xc
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r2, #0xfa
str r5, [r4]
ldr r0, _0225808C ; =MOD11_02258090
@@ -87493,7 +87493,7 @@ _022581FC: asr r1, r0, #0x1f
lsl r2, r2, #0xa
mov r3, #0
- blx _ll_mul
+ bl _ll_mul
mov r2, #2
add r3, r0, #0
add r5, r1, #0
@@ -87722,7 +87722,7 @@ MOD11_022583D8: ; 0x022583D8 add r1, r5, #0
mov r2, #0x10
add r7, r3, #0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
str r4, [r5, #4]
strb r6, [r5, #8]
strb r7, [r5, #9]
@@ -87748,7 +87748,7 @@ MOD11_0225840C: ; 0x0225840C mov r0, #0
add r1, r4, #0
mov r2, #0x10
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
pop {r4, pc}
.align 2, 0
@@ -87763,7 +87763,7 @@ MOD11_02258428: ; 0x02258428 mov r1, #0
lsl r2, r2, #8
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r1, #0
ldr r0, _0225844C ; =0x0000069F
mvn r1, r1
@@ -87891,7 +87891,7 @@ _02258512: ldr r0, [sp, #0x18]
add r2, r7, #0
add r0, #0xc
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
add r0, r5, #0
bl FUN_02016A18
add r4, r4, #1
@@ -87919,7 +87919,7 @@ _0225854E: mov r2, #2
ldr r1, [r6, #0x58]
lsl r2, r2, #8
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r5, r6, #0
mov r7, #0x46
mov r4, #0
@@ -87932,7 +87932,7 @@ _02258592: add r0, r5, r0
mov r1, #0xff
mov r2, #0x18
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r4, r4, #1
_022585A2:
cmp r4, #4
@@ -87981,7 +87981,7 @@ _022585DE: ldr r1, [r6, #0x5c]
ldr r0, [r6, #0x58]
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r0, #7
mov r1, #0xca
add r2, sp, #0x14
@@ -87992,7 +87992,7 @@ _022585DE: ldr r1, [r6, #0x60]
ldr r0, [r0, #0xc]
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0
bl FUN_02016A18
bl FUN_02002BE4
@@ -88226,7 +88226,7 @@ MOD11_02258820: ; 0x02258820 add r0, r3, #0
add r1, #0x18
mov r2, #0x22
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_0225883A:
ldr r0, _0225893C ; =0x000006A2
mov r1, #0
@@ -88333,7 +88333,7 @@ _022588D0: ldr r0, _02258950 ; =0x04001050
mov r1, #2
mov r3, #0x1b
- blx G2x_SetBlendAlpha_
+ bl G2x_SetBlendAlpha_
add r0, r7, #0
bl MOD11_0225ACB0
ldr r0, [sp, #0x2c]
@@ -89077,7 +89077,7 @@ _02258F20: add r0, r5, r0
mov r1, #0
mov r2, #4
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _02258F54 ; =0x000006EC
ldr r0, [r5, r0]
bl MOD11_0225D648
@@ -89445,7 +89445,7 @@ MOD11_0225916C: ; 0x0225916C add r4, r0, #0
mov r1, #0
mov r2, #0x14
- blx MI_CpuFill8
+ bl MI_CpuFill8
str r5, [r4]
ldr r0, _02259254 ; =0xFFFF9C64
strb r6, [r4, #0x12]
@@ -89458,7 +89458,7 @@ MOD11_0225916C: ; 0x0225916C ldr r0, _02259258 ; =0x0000639C
sub r0, r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
strh r0, [r4, #0xc]
mov r0, #0xa
ldrsh r1, [r4, r0]
@@ -89466,7 +89466,7 @@ MOD11_0225916C: ; 0x0225916C lsl r0, r0, #4
sub r0, r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
strh r0, [r4, #0xe]
ldr r0, _0225925C ; =0x0000070E
bl FUN_020054C8
@@ -91621,7 +91621,7 @@ MOD11_0225A428: ; 0x0225A428 add r1, r4, r1
asr r5, r1, #3
mov r1, #8
- blx FX_ModS32
+ bl FX_ModS32
cmp r0, #0
beq _0225A450
add r5, r5, #1
@@ -92109,7 +92109,7 @@ _0225A7CE: ldr r0, [r0, #0x14]
ldr r1, [r1, #0x18]
ldr r2, [sp, #0xc]
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
ldr r0, [sp, #0x44]
bl FUN_02016A18
_0225A814:
@@ -92426,7 +92426,7 @@ _0225AA24: lsl r3, r3, #0x14
ldr r0, [r0, #0x18]
add r1, r3, r1
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_0225AA9E:
add r4, r4, #1
_0225AAA0:
@@ -92821,7 +92821,7 @@ _0225AD90: add r0, r4, r0
mov r1, #0
mov r2, #0x24
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r2, _0225ADAC ; =0x00000514
add r0, r5, #0
add r1, r4, #0
@@ -92845,7 +92845,7 @@ MOD11_0225ADB0: ; 0x0225ADB0 add r0, r4, r0
mov r2, #0x24
str r1, [r4, #8]
- blx MI_CpuFill8
+ bl MI_CpuFill8
_0225ADCE:
pop {r4, pc}
@@ -93706,13 +93706,13 @@ _0225B454: lsl r0, r0, #2
sub r0, r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
strh r0, [r5, #0xc]
mov r0, #0xa
ldrsh r0, [r5, r0]
mov r1, #0x64
neg r0, r0
- blx _s32_div_f
+ bl _s32_div_f
strh r0, [r5, #0xe]
mov r0, #8
ldrsh r0, [r5, r0]
@@ -93829,7 +93829,7 @@ _0225B55A: ldrsh r0, [r5, r0]
mov r1, #0x64
neg r0, r0
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0
b _0225B5B6
_0225B586:
@@ -93852,7 +93852,7 @@ _0225B590: mov r0, #8
ldrsh r0, [r5, r0]
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0
add r4, #0xff
_0225B5B6:
@@ -93869,7 +93869,7 @@ _0225B5B6: mov r0, #0xa
ldrsh r0, [r5, r0]
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r0, #0x90
cmp r4, #0
bge _0225B5E2
@@ -94210,7 +94210,7 @@ _0225B866: add r0, #0x16
add r1, #0x16
mov r2, #0xa
- blx memcmp
+ bl memcmp
cmp r0, #0
bne _0225B8A8
ldr r0, [r5, #0x60]
@@ -94218,7 +94218,7 @@ _0225B866: add r0, #0x16
add r1, r4, #0
mov r2, #0xa
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
pop {r3, r4, r5, r6, r7, pc}
_0225B888:
ldr r1, [r5, #0x60]
@@ -94226,7 +94226,7 @@ _0225B888: add r0, #0x16
add r1, #0x16
mov r2, #0xa
- blx memcmp
+ bl memcmp
cmp r0, #0
bne _0225B8A8
ldr r0, [r5, #0x5c]
@@ -94234,7 +94234,7 @@ _0225B888: add r0, #0x16
add r1, r4, #0
mov r2, #0xa
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_0225B8A8:
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -94819,7 +94819,7 @@ _0225BD10: ldr r0, _0225BDD8 ; =0x0225F6A0
add r1, sp, #8
mov r2, #6
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r4, #0
mov r1, #2
mov r2, #3
@@ -95001,7 +95001,7 @@ MOD11_0225BE30: ; 0x0225BE30 str r0, [sp, #0x48]
ldr r0, _0225C13C ; =0x0225F690
add r1, sp, #0x50
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r1, sp, #0x58
add r0, r6, #0
add r1, #2
@@ -96552,7 +96552,7 @@ MOD11_0225C9D4: ; 0x0225C9D4 mov r1, #0
lsl r2, r2, #6
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0
pop {r4, pc}
.align 2, 0
@@ -96741,7 +96741,7 @@ _0225CB32: add r0, r5, #0
mov r1, #0
mov r2, #0x1c
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r1, [sp, #0x18]
ldr r2, _0225CBA8 ; =0x0225FE48
add r0, r7, #0
@@ -96958,7 +96958,7 @@ _0225CCBC: sub r0, r0, r3
str r0, [sp]
ldr r0, _0225CDA0 ; =0x04000050
- blx G2x_SetBlendAlpha_
+ bl G2x_SetBlendAlpha_
ldrb r0, [r4, #0x1a]
add r0, r0, #1
strb r0, [r4, #0x1a]
@@ -97076,7 +97076,7 @@ _0225CDD4: add r0, r5, #0
mov r1, #0
mov r2, #0x30
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
ldr r2, _0225CEA4 ; =0x0225FE7C
@@ -98000,7 +98000,7 @@ _0225D496: mov r1, #0
mov r2, #0x18
str r0, [sp]
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r5, [sp]
mov r4, #0
_0225D4CE:
@@ -98351,7 +98351,7 @@ _0225D74C: mov r1, #0
mov r2, #0x20
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r1, [sp]
add r0, r7, #0
add r2, sp, #4
@@ -98497,7 +98497,7 @@ _0225D886: bne _0225D8DA
ldr r0, [r4, #0x10]
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bl FUN_0201B93C
@@ -98505,7 +98505,7 @@ _0225D886: asr r1, r0, #0x1f
lsl r2, r2, #0xc
mov r3, #0
- blx _ll_mul
+ bl _ll_mul
add r5, r1, #0
ldr r1, [r4, #8]
mov r2, #2
diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s new file mode 100644 index 00000000..9748eb5c --- /dev/null +++ b/arm9/modules/12/asm/module_12.s @@ -0,0 +1,48108 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD12_0222D5C0 +MOD12_0222D5C0: ; 0x0222D5C0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r1, #1 + lsl r1, r1, #0x1a + ldr r0, [r1] + ldr r2, _0222D85C ; =0xFFFFE0FF + and r0, r2 + str r0, [r1] + ldr r0, _0222D860 ; =0x04001000 + ldr r3, [r0] + and r2, r3 + str r2, [r0] + ldr r3, [r1] + ldr r2, _0222D864 ; =0xFFFF1FFF + and r3, r2 + str r3, [r1] + ldr r3, [r0] + add r1, #0x50 + and r2, r3 + str r2, [r0] + mov r2, #0 + strh r2, [r1] + add r0, #0x50 + strh r2, [r0] + mov r2, #7 + mov r0, #3 + mov r1, #0x15 + lsl r2, r2, #0x10 + bl FUN_0201681C + ldr r1, _0222D868 ; =0x00001658 + add r0, r5, #0 + mov r2, #0x15 + bl FUN_02006268 + ldr r2, _0222D868 ; =0x00001658 + mov r1, #0 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x15 + bl MOD12_022312D8 + str r0, [r4, #8] + add r0, r5, #0 + bl FUN_0200628C + mov r1, #0x5b + str r0, [r4] + lsl r1, r1, #2 + str r4, [r0, r1] + ldr r2, [r4] + mov r3, #2 + add r0, r1, #4 + strb r3, [r2, r0] + ldr r0, [r4] + str r0, [r4, #0xc] + add r0, r4, #0 + bl MOD12_0222DCEC + mov r0, #0x15 + bl FUN_02002FD0 + str r0, [r4, #0x5c] + mov r1, #1 + bl FUN_020038F0 + mov r2, #2 + ldr r0, [r4, #0x5c] + mov r1, #0 + lsl r2, r2, #8 + mov r3, #0x15 + bl FUN_02003008 + mov r1, #1 + ldr r0, [r4, #0x5c] + lsl r2, r1, #9 + mov r3, #0x15 + bl FUN_02003008 + mov r2, #7 + ldr r0, [r4, #0x5c] + mov r1, #2 + lsl r2, r2, #6 + mov r3, #0x15 + bl FUN_02003008 + mov r2, #2 + ldr r0, [r4, #0x5c] + mov r1, #3 + lsl r2, r2, #8 + mov r3, #0x15 + bl FUN_02003008 + mov r0, #0x15 + bl FUN_02016B94 + str r0, [r4, #0x30] + mov r0, #0x40 + mov r1, #0x15 + bl FUN_0201C24C + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + mov r2, #0x23 + add r1, r4, #0 + lsl r2, r2, #4 + ldr r0, [r4] + add r1, #0xc + add r2, r4, r2 + bl MOD12_02231A24 + ldr r1, _0222D86C ; =0x0000081C + str r0, [r4, r1] + ldr r0, [r4, #0x30] + bl MOD12_0222DB50 + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + mov r0, #2 + mov r1, #0x15 + bl FUN_02002C50 + mov r0, #0x15 + bl FUN_0200BB14 + ldr r1, _0222D870 ; =0x022449C8 + ldr r2, _0222D874 ; =0x0224499C + mov r3, #0x20 + str r0, [r4, #0x24] + bl FUN_0200BB6C + ldr r1, _0222D878 ; =0x00100010 + mov r0, #1 + bl FUN_02008D44 + mov r0, #1 + bl FUN_02008DDC + ldr r0, [r4, #0x24] + bl FUN_0200BB34 + str r0, [r4, #0x28] + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + mov r2, #0x80 + bl FUN_0200BBF0 + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + ldr r2, _0222D87C ; =0x022449B0 + bl FUN_0200BF60 + ldr r0, [r4, #0x24] + bl FUN_0200BB68 + mov r2, #0x11 + mov r1, #0 + lsl r2, r2, #0x10 + bl FUN_02008D24 + mov r0, #0x15 + bl FUN_02006D98 + str r0, [r4, #0x10] + bl MOD12_0222DCAC + mov r0, #0x15 + bl FUN_02211F5C + mov r1, #1 + str r0, [r4, #0x2c] + bl FUN_02211FF0 + mov r0, #0 + mov r1, #0x1a + mov r2, #0xbf + mov r3, #0x15 + bl FUN_0200A86C + str r0, [r4, #0x44] + mov r0, #0 + mov r1, #0x1a + mov r2, #0xc0 + mov r3, #0x15 + bl FUN_0200A86C + str r0, [r4, #0x48] + mov r0, #0 + mov r1, #0x1a + mov r2, #0xc5 + mov r3, #0x15 + bl FUN_0200A86C + str r0, [r4, #0x4c] + mov r0, #0 + mov r1, #0x1a + mov r2, #0xc6 + mov r3, #0x15 + bl FUN_0200A86C + str r0, [r4, #0x50] + mov r0, #8 + mov r1, #0x15 + bl FUN_02011744 + str r0, [r4, #0x60] + mov r0, #0x15 + bl FUN_0200AA80 + str r0, [r4, #0x54] + mov r0, #0x1e + lsl r0, r0, #4 + mov r1, #0x15 + bl FUN_020219F4 + str r0, [r4, #0x58] + add r0, r4, #0 + bl MOD12_0222DFC4 + add r0, r4, #0 + bl MOD12_0222E0F8 + add r0, r4, #0 + bl MOD12_0222DC80 + add r0, r4, #0 + bl MOD12_022335B0 + add r0, r4, #0 + bl MOD12_0222DD20 + add r0, r4, #0 + bl MOD12_0222DE30 + ldr r7, _0222D880 ; =0x00000123 + mov r6, #0 + add r5, sp, #0xc +_0222D7BC: + ldr r1, [r4] + mov r2, #0 + ldrb r0, [r1, r7] + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, r6, #0 + add r1, #0x36 + bl FUN_020671BC + strh r0, [r5] + add r6, r6, #1 + add r5, r5, #2 + cmp r6, #4 + blt _0222D7BC + ldr r0, _0222D86C ; =0x0000081C + add r1, sp, #0xc + ldr r0, [r4, r0] + bl MOD12_02232C08 + ldr r0, _0222D86C ; =0x0000081C + mov r1, #0 + ldr r0, [r4, r0] + mov r2, #1 + add r3, r1, #0 + bl MOD12_02231B4C + add r0, r4, #0 + add r0, #0xc + bl MOD12_02233758 + bl FUN_02033E74 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #0x15 + str r1, [sp, #8] + mov r1, #0x1f + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, _0222D884 ; =MOD12_0222DB18 + ldr r2, _0222D888 ; =0x0000EA60 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + ldr r0, _0222D88C ; =0x00000824 + mov r1, #1 + strb r1, [r4, r0] + bl FUN_0201E788 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + ldr r1, _0222D890 ; =0x0000046F + mov r0, #6 + mov r2, #1 + bl FUN_0200433C + ldr r1, [r4] + ldr r0, _0222D894 ; =0x00000171 + ldrb r0, [r1, r0] + bl FUN_020833D4 + ldr r0, _0222D898 ; =MOD12_0222DAE4 + add r1, r4, #0 + bl FUN_02015F10 + mov r0, #1 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0222D85C: .word 0xFFFFE0FF +_0222D860: .word 0x04001000 +_0222D864: .word 0xFFFF1FFF +_0222D868: .word 0x00001658 +_0222D86C: .word 0x0000081C +_0222D870: .word 0x022449C8 +_0222D874: .word 0x0224499C +_0222D878: .word 0x00100010 +_0222D87C: .word 0x022449B0 +_0222D880: .word 0x00000123 +_0222D884: .word MOD12_0222DB18 +_0222D888: .word 0x0000EA60 +_0222D88C: .word 0x00000824 +_0222D890: .word 0x0000046F +_0222D894: .word 0x00000171 +_0222D898: .word MOD12_0222DAE4 + + thumb_func_start MOD12_0222D89C +MOD12_0222D89C: ; 0x0222D89C + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02082878 + ldr r0, [r5] + cmp r0, #0 + beq _0222D8BE + cmp r0, #1 + beq _0222D8CC + cmp r0, #2 + beq _0222D986 + b _0222D994 +_0222D8BE: + bl FUN_0200E308 + cmp r0, #1 + bne _0222D994 + mov r0, #1 + str r0, [r5] + b _0222D994 +_0222D8CC: + ldr r0, [r4] + bl FUN_020828BC + cmp r0, #1 + bne _0222D93E + ldr r2, _0222D99C ; =0x00000822 + ldr r1, _0222D9A0 ; =0x00001648 + ldrh r2, [r4, r2] + add r0, r4, #0 + add r1, r4, r1 + lsl r3, r2, #2 + ldr r2, _0222D9A4 ; =0x02244A10 + ldr r2, [r2, r3] + blx r2 + sub r1, r0, #1 + cmp r1, #1 + bhi _0222D910 + cmp r0, #1 + bne _0222D8FA + ldr r0, _0222D99C ; =0x00000822 + ldrh r1, [r4, r0] + add r1, r1, #1 + b _0222D900 +_0222D8FA: + ldr r0, _0222D9A8 ; =0x0000164A + ldrh r1, [r4, r0] + ldr r0, _0222D99C ; =0x00000822 +_0222D900: + strh r1, [r4, r0] + ldr r0, _0222D9A0 ; =0x00001648 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + b _0222D93E +_0222D910: + cmp r0, #3 + bne _0222D93E + mov r0, #2 + str r0, [r5] + ldr r0, _0222D9A0 ; =0x00001648 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x15 + mov r1, #0x20 + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + b _0222D994 +_0222D93E: + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD12_022410A0 + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r4, r0 + add r1, r4, #0 + bl MOD12_02241114 + ldr r0, _0222D9AC ; =0x00001650 + ldrb r1, [r4, r0] + cmp r1, #1 + bne _0222D994 + mov r1, #2 + sub r0, #8 + str r1, [r5] + add r0, r4, r0 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x15 + mov r1, #0x20 + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + b _0222D994 +_0222D986: + bl FUN_0200E308 + cmp r0, #1 + bne _0222D994 + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_0222D994: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_0222D99C: .word 0x00000822 +_0222D9A0: .word 0x00001648 +_0222D9A4: .word 0x02244A10 +_0222D9A8: .word 0x0000164A +_0222D9AC: .word 0x00001650 + + thumb_func_start MOD12_0222D9B0 +MOD12_0222D9B0: ; 0x0222D9B0 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + bl FUN_02012EAC + ldr r0, [r4, #0x2c] + bl FUN_02212024 + add r0, r4, #0 + bl MOD12_0222DDC4 + add r0, r4, #0 + bl MOD12_0222DEEC + add r0, r4, #0 + bl MOD12_0222E0F4 + add r0, r4, #0 + bl MOD12_0222E0FC + add r0, r4, #0 + add r0, #0x34 + bl FUN_02019178 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + bl MOD12_022319FC + ldr r0, _0222DAD8 ; =0x0000081C + ldr r0, [r4, r0] + bl MOD12_02231AE8 + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + bl FUN_0200C398 + ldr r0, [r4, #0x24] + bl FUN_0200BD04 + bl FUN_0201C29C + add r0, r4, #0 + add r0, #0xc + bl MOD12_02233848 + ldr r0, [r4, #0x10] + bl FUN_020072E8 + mov r0, #2 + bl FUN_02002CF8 + ldr r0, [r4, #0x60] + bl FUN_020117BC + ldr r0, [r4, #0x5c] + mov r1, #0 + bl FUN_02003038 + ldr r0, [r4, #0x5c] + mov r1, #1 + bl FUN_02003038 + ldr r0, [r4, #0x5c] + mov r1, #2 + bl FUN_02003038 + ldr r0, [r4, #0x5c] + mov r1, #3 + bl FUN_02003038 + ldr r0, [r4, #0x5c] + bl FUN_02002FEC + ldr r0, [r4, #0x58] + bl FUN_02021A20 + ldr r0, [r4, #0x54] + bl FUN_0200AB18 + ldr r0, [r4, #0x44] + bl FUN_0200A8B8 + ldr r0, [r4, #0x48] + bl FUN_0200A8B8 + ldr r0, [r4, #0x4c] + bl FUN_0200A8B8 + ldr r0, [r4, #0x50] + bl FUN_0200A8B8 + ldr r0, [r4, #0x30] + bl FUN_02016A18 + ldr r0, [r4, #4] + bl FUN_0200CAB4 + ldr r0, [r4, #8] + bl MOD12_02231378 + bl FUN_0201CD04 + add r0, r5, #0 + bl FUN_0200627C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + mov r0, #0x15 + bl FUN_020168D0 + bl FUN_02083404 + bl FUN_02033ED0 + ldr r0, _0222DADC ; =SDK_MODULE_08_ID + bl UnloadOverlayByID + ldr r0, _0222DAE0 ; =SDK_MODULE_17_ID + bl UnloadOverlayByID + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_0222DAD8: .word 0x0000081C +_0222DADC: .word SDK_MODULE_08_ID +_0222DAE0: .word SDK_MODULE_17_ID + + thumb_func_start MOD12_0222DAE4 +MOD12_0222DAE4: ; 0x0222DAE4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + bl FUN_020081C4 + bl FUN_0201C30C + bl FUN_0200BC30 + ldr r0, [r4, #0x5c] + bl FUN_0200372C + ldr r0, [r4, #0x30] + bl FUN_0201AB60 + ldr r3, _0222DB10 ; =0x027E0000 + ldr r1, _0222DB14 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + .align 2, 0 +_0222DB10: .word 0x027E0000 +_0222DB14: .word 0x00003FF8 + + thumb_func_start MOD12_0222DB18 +MOD12_0222DB18: ; 0x0222DB18 + push {r4, lr} + ldr r0, _0222DB48 ; =0x00000824 + add r4, r1, #0 + ldrb r0, [r4, r0] + cmp r0, #1 + bne _0222DB3E + ldr r0, [r4, #0x10] + bl FUN_02006ED4 + bl FUN_02215A44 + ldr r0, [r4, #0x28] + bl FUN_0200BC1C + bl FUN_0200BC38 + ldr r0, _0222DB4C ; =0x04000540 + mov r1, #1 + str r1, [r0] +_0222DB3E: + ldr r1, [r4, #0x30] + mov r0, #0x15 + bl FUN_020335F0 + pop {r4, pc} + .align 2, 0 +_0222DB48: .word 0x00000824 +_0222DB4C: .word 0x04000540 + + thumb_func_start MOD12_0222DB50 +MOD12_0222DB50: ; 0x0222DB50 + push {r4, r5, lr} + sub sp, #0x8c + add r4, r0, #0 + bl FUN_0201E6D8 + ldr r5, _0222DC70 ; =0x022449E8 + add r3, sp, #0x10 + mov r2, #5 +_0222DB60: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222DB60 + 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, _0222DC74 ; =0x0224498C + 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, _0222DC78 ; =0x02244A50 + add r3, sp, #0x38 + mov r2, #0xa +_0222DBC0: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222DBC0 + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + add r2, sp, #0x38 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #1 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + add r2, sp, #0x54 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #3 + add r2, sp, #0x70 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #3 + add r3, r2, #0 + bl FUN_020179E0 + mov r1, #3 + add r0, r4, #0 + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + ldr r1, _0222DC7C ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + mov r0, #2 + orr r0, r2 + strh r0, [r1] + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + add r0, r4, #0 + bl MOD12_022319A4 + add sp, #0x8c + pop {r4, r5, pc} + .align 2, 0 +_0222DC70: .word 0x022449E8 +_0222DC74: .word 0x0224498C +_0222DC78: .word 0x02244A50 +_0222DC7C: .word 0x04000008 + + thumb_func_start MOD12_0222DC80 +MOD12_0222DC80: ; 0x0222DC80 + push {lr} + sub sp, #0x14 + add r1, r0, #0 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x14 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #3 + lsl r0, r0, #8 + str r0, [sp, #0x10] + ldr r0, [r1, #0x30] + add r1, #0x34 + mov r2, #1 + mov r3, #0xb + bl FUN_02019064 + add sp, #0x14 + pop {pc} + + thumb_func_start MOD12_0222DCAC +MOD12_0222DCAC: ; 0x0222DCAC + push {r3, r4, r5, lr} + ldr r3, _0222DCE4 ; =0x021064B8 + mov r0, #2 + mov r1, #0 + ldr r3, [r3] + lsl r0, r0, #0xe + add r2, r1, #0 + blx r3 + ldr r3, _0222DCE8 ; =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 _0222DCD4 + bl ErrorHandling +_0222DCD4: + cmp r5, #0 + bne _0222DCDC + bl ErrorHandling +_0222DCDC: + bl FUN_02012CC8 + pop {r3, r4, r5, pc} + nop +_0222DCE4: .word 0x021064B8 +_0222DCE8: .word 0x021064C0 + + thumb_func_start MOD12_0222DCEC +MOD12_0222DCEC: ; 0x0222DCEC + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _0222DCFA + bl ErrorHandling +_0222DCFA: + ldr r1, _0222DD1C ; =0x00000172 + mov r0, #0 + add r2, r1, #0 + add r2, #0xbf +_0222DD02: + ldr r3, [r4] + add r3, r3, r0 + ldrb r5, [r3, r1] + add r3, r4, r0 + add r0, r0, #1 + strb r5, [r3, r2] + cmp r0, #4 + blt _0222DD02 + add r0, r4, #0 + bl MOD12_02235D7C + pop {r3, r4, r5, pc} + nop +_0222DD1C: .word 0x00000172 + + thumb_func_start MOD12_0222DD20 +MOD12_0222DD20: ; 0x0222DD20 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #6 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, _0222DDB8 ; =0x000080E9 + mov r1, #2 + str r0, [sp, #0x14] + ldr r0, [r4, #0x5c] + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x28] + bl FUN_0200C0DC + mov r0, #0x2e + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _0222DDBC ; =0x000080ED + mov r1, #2 + str r0, [sp, #0x14] + ldr r0, [r4, #0x5c] + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x28] + bl FUN_0200C0DC + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + bl MOD12_02235194 + add r0, r4, #0 + bl MOD12_022350F8 + add r0, r4, #0 + ldr r1, [r4] + add r0, #0xc + bl MOD12_02233A8C + add r0, r4, #0 + ldr r2, [r4] + ldr r1, _0222DDC0 ; =0x0000011E + add r0, #0xc + ldrb r1, [r2, r1] + bl MOD12_02233EEC + ldr r0, [r4, #0x5c] + ldr r1, [r4, #0x24] + ldr r2, [r4, #0x28] + bl MOD12_02233B04 + add r0, r4, #0 + add r0, #0xc + bl MOD12_02233B7C + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + bl MOD12_02233FAC + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + bl MOD12_022342A8 + add sp, #0x18 + pop {r4, pc} + nop +_0222DDB8: .word 0x000080E9 +_0222DDBC: .word 0x000080ED +_0222DDC0: .word 0x0000011E + + thumb_func_start MOD12_0222DDC4 +MOD12_0222DDC4: ; 0x0222DDC4 + push {r4, lr} + add r4, r0, #0 + add r0, #0xc + bl MOD12_02233F78 + add r0, r4, #0 + add r0, #0xc + bl MOD12_02233AD4 + add r0, r4, #0 + bl MOD12_02235114 + add r0, r4, #0 + add r0, #0xc + bl MOD12_0223524C + ldr r0, [r4, #0x28] + bl MOD12_022351E0 + ldr r0, [r4, #0x28] + ldr r1, _0222DE28 ; =0x000080E9 + bl FUN_0200C368 + ldr r0, [r4, #0x28] + ldr r1, _0222DE2C ; =0x000080ED + bl FUN_0200C368 + add r0, r4, #0 + add r0, #0xc + bl MOD12_02233BBC + ldr r0, [r4, #0x28] + bl MOD12_02233B58 + ldr r0, [r4, #0x28] + bl MOD12_02233FF8 + add r0, r4, #0 + add r0, #0xc + bl MOD12_02234044 + ldr r0, [r4, #0x28] + bl MOD12_02234334 + add r4, #0xc + add r0, r4, #0 + bl MOD12_0223439C + pop {r4, pc} + nop +_0222DE28: .word 0x000080E9 +_0222DE2C: .word 0x000080ED + + thumb_func_start MOD12_0222DE30 +MOD12_0222DE30: ; 0x0222DE30 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r1, #3 + str r1, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + ldr r0, _0222DED8 ; =0x000080EF + str r0, [sp, #0x14] + ldr r0, [r5, #0x5c] + ldr r2, [r5, #0x24] + ldr r3, [r5, #0x28] + bl FUN_0200C0DC + mov r0, #0x2e + str r0, [sp] + mov r0, #9 + 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, _0222DEDC ; =0x000080F0 + mov r1, #3 + str r0, [sp, #0x14] + ldr r0, [r5, #0x5c] + ldr r2, [r5, #0x24] + ldr r3, [r5, #0x28] + bl FUN_0200C0DC + ldr r0, [r5, #0x24] + ldr r1, [r5, #0x28] + bl MOD12_022334A4 + ldr r0, [r5, #0x24] + ldr r1, [r5, #0x28] + bl MOD12_022333F8 + ldr r2, _0222DEE0 ; =0x000080F4 + ldr r0, [r5, #0x24] + ldr r1, [r5, #0x28] + add r3, r2, #0 + bl MOD12_02240E34 + ldr r7, _0222DEE4 ; =0x000080F6 + ldr r6, _0222DEE8 ; =0x00000123 + mov r4, #0 +_0222DE9E: + ldr r1, [r5] + mov r2, #0 + ldrb r0, [r1, r6] + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, r4, #0 + add r1, #0x36 + bl FUN_020671BC + cmp r0, #0 + beq _0222DEBE + mov r1, #0xb + bl FUN_0206AB18 + add r3, r0, #0 + b _0222DEC0 +_0222DEBE: + mov r3, #0 +_0222DEC0: + add r0, r4, r7 + str r0, [sp] + ldr r0, [r5, #0x24] + ldr r1, [r5, #0x28] + mov r2, #2 + bl MOD12_02240E00 + add r4, r4, #1 + cmp r4, #4 + blt _0222DE9E + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222DED8: .word 0x000080EF +_0222DEDC: .word 0x000080F0 +_0222DEE0: .word 0x000080F4 +_0222DEE4: .word 0x000080F6 +_0222DEE8: .word 0x00000123 + + thumb_func_start MOD12_0222DEEC +MOD12_0222DEEC: ; 0x0222DEEC + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x28] + ldr r1, _0222DF24 ; =0x000080EF + bl FUN_0200C368 + ldr r0, [r5, #0x28] + bl MOD12_0223353C + ldr r0, [r5, #0x28] + bl MOD12_02233478 + ldr r1, _0222DF28 ; =0x000080F4 + ldr r0, [r5, #0x28] + add r2, r1, #0 + bl MOD12_02240E84 + ldr r6, _0222DF2C ; =0x000080F6 + mov r4, #0 +_0222DF12: + ldr r0, [r5, #0x28] + add r1, r4, r6 + bl MOD12_02240E7C + add r4, r4, #1 + cmp r4, #4 + blt _0222DF12 + pop {r4, r5, r6, pc} + nop +_0222DF24: .word 0x000080EF +_0222DF28: .word 0x000080F4 +_0222DF2C: .word 0x000080F6 + + thumb_func_start MOD12_0222DF30 +MOD12_0222DF30: ; 0x0222DF30 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + add r4, r2, #0 + cmp r1, #0 + bne _0222DF9A + mov r0, #0 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xe + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x15 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #3 + 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, #0x15 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #5 + mov r3, #2 + bl FUN_020068C8 + mov r0, #1 + add r1, r0, #0 + bl FUN_020178BC + mov r0, #2 + mov r1, #0 + bl FUN_020178BC + add r0, r5, #0 + bl MOD12_022335B0 + cmp r4, #1 + bne _0222DFBE + mov r0, #4 + mov r1, #1 + bl FUN_0201E6E4 + add sp, #0x10 + pop {r3, r4, r5, pc} +_0222DF9A: + mov r0, #2 + lsl r1, r0, #0xd + mov r2, #0 + mov r3, #0x15 + bl FUN_02017F18 + ldr r0, [r5, #0x30] + mov r1, #2 + bl FUN_02018744 + mov r0, #1 + mov r1, #0 + bl FUN_020178BC + mov r0, #2 + mov r1, #1 + bl FUN_020178BC +_0222DFBE: + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0222DFC4 +MOD12_0222DFC4: ; 0x0222DFC4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + mov r0, #0x15 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + 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, #0x15 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #2 + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x15 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x15 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #4 + bl FUN_020068C8 + mov r1, #0 + add r0, r5, #0 + add r2, r1, #0 + bl MOD12_0222DF30 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5, #0x5c] + mov r1, #0x2d + mov r2, #0x1d + mov r3, #0x15 + bl FUN_020030E8 + mov r0, #0x15 + mov r1, #0x20 + bl FUN_02016998 + add r7, r0, #0 + mov r0, #0x15 + mov r1, #0x20 + bl FUN_02016998 + str r0, [sp, #0x10] + ldr r0, [r5, #0x5c] + mov r1, #0 + bl FUN_020031FC + add r4, r0, #0 + ldr r0, [r5, #0x5c] + mov r1, #0 + bl FUN_02003204 + str r0, [sp, #0x14] + ldr r0, _0222E0EC ; =0x022451D0 + add r1, r7, #0 + ldrb r0, [r0] + mov r2, #0x20 + lsl r6, r0, #5 + add r0, r4, r6 + bl MIi_CpuCopy16 + ldr r1, [r5] + ldr r0, _0222E0F0 ; =0x00000123 + mov r2, #0x20 + ldrb r1, [r1, r0] + ldr r0, _0222E0EC ; =0x022451D0 + ldrb r0, [r0, r1] + ldr r1, [sp, #0x10] + lsl r0, r0, #5 + add r0, r4, r0 + bl MIi_CpuCopy16 + ldr r2, [r5] + ldr r1, _0222E0F0 ; =0x00000123 + add r0, r7, #0 + ldrb r2, [r2, r1] + ldr r1, _0222E0EC ; =0x022451D0 + ldrb r1, [r1, r2] + mov r2, #0x20 + lsl r1, r1, #5 + add r1, r4, r1 + bl MIi_CpuCopy16 + ldr r0, [sp, #0x10] + add r1, r4, r6 + mov r2, #0x20 + bl MIi_CpuCopy16 + ldr r2, [r5] + ldr r1, _0222E0F0 ; =0x00000123 + add r0, r7, #0 + ldrb r2, [r2, r1] + ldr r1, _0222E0EC ; =0x022451D0 + ldrb r1, [r1, r2] + lsl r2, r1, #5 + ldr r1, [sp, #0x14] + add r1, r1, r2 + mov r2, #0x20 + bl MIi_CpuCopy16 + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x10] + add r1, r1, r6 + mov r2, #0x20 + bl MIi_CpuCopy16 + add r0, r7, #0 + bl FUN_02016A18 + ldr r0, [sp, #0x10] + bl FUN_02016A18 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222E0EC: .word 0x022451D0 +_0222E0F0: .word 0x00000123 + + thumb_func_start MOD12_0222E0F4 +MOD12_0222E0F4: ; 0x0222E0F4 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0222E0F8 +MOD12_0222E0F8: ; 0x0222E0F8 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0222E0FC +MOD12_0222E0FC: ; 0x0222E0FC + bx lr + .align 2, 0 + + thumb_func_start MOD12_0222E100 +MOD12_0222E100: ; 0x0222E100 + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222E128 + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r2, r0 + add r1, r2, #0 + mov r2, #2 + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E148 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E148 +_0222E128: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r2] + ldr r4, _0222E14C ; =0x00000127 + add r0, r2, r0 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E148 + mov r0, #1 + pop {r4, pc} +_0222E148: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_0222E14C: .word 0x00000127 + + thumb_func_start MOD12_0222E150 +MOD12_0222E150: ; 0x0222E150 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl FUN_020832EC + cmp r0, #0 + bne _0222E164 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E164: + ldrh r0, [r4] + cmp r0, #0 + bne _0222E196 + ldr r3, _0222E1BC ; =0x0000040C + mov r1, #0 + strb r1, [r5, r3] + add r0, r3, #2 + strb r1, [r5, r0] + add r0, r3, #3 + strb r1, [r5, r0] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r3, #0xe4 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0x14 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E1B6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E1B6 +_0222E196: + ldr r4, _0222E1C0 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E1B6 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E1B6: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0222E1BC: .word 0x0000040C +_0222E1C0: .word 0x00000127 + + thumb_func_start MOD12_0222E1C4 +MOD12_0222E1C4: ; 0x0222E1C4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222E218 + ldr r0, [r5] + bl FUN_020832EC + cmp r0, #1 + bne _0222E1E2 + ldr r0, _0222E23C ; =0x0000040C + mov r1, #0x2d + strb r1, [r5, r0] + b _0222E1F0 +_0222E1E2: + ldr r1, [r5] + ldr r0, _0222E240 ; =0x0000011F + ldrb r0, [r1, r0] + bl MOD12_02235A98 + ldr r1, _0222E23C ; =0x0000040C + strb r0, [r5, r1] +_0222E1F0: + ldr r3, _0222E244 ; =0x0000040E + mov r1, #0 + strb r1, [r5, r3] + add r0, r3, #1 + strb r1, [r5, r0] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r3, #0xe6 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0x14 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E238 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E238 +_0222E218: + ldr r4, _0222E248 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E238 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E238: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222E23C: .word 0x0000040C +_0222E240: .word 0x0000011F +_0222E244: .word 0x0000040E +_0222E248: .word 0x00000127 + + thumb_func_start MOD12_0222E24C +MOD12_0222E24C: ; 0x0222E24C + mov r0, #1 + bx lr + + thumb_func_start MOD12_0222E250 +MOD12_0222E250: ; 0x0222E250 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r1, [sp] + ldrh r1, [r1] + add r4, r0, #0 + cmp r1, #0 + beq _0222E268 + cmp r1, #1 + beq _0222E288 + cmp r1, #2 + beq _0222E2B0 + b _0222E2F0 +_0222E268: + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #8 + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E300 + ldr r0, [sp] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp] + strh r1, [r0] + b _0222E300 +_0222E288: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _0222E308 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E300 + ldr r0, [sp] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp] + strh r1, [r0] + b _0222E300 +_0222E2B0: + add r1, sp, #4 + bl MOD12_0223900C + ldr r1, [r4] + ldr r0, _0222E308 ; =0x00000127 + ldrb r0, [r1, r0] + cmp r0, #4 + bge _0222E2E4 + lsl r2, r0, #1 + add r3, sp, #4 + add r1, r3, r2 + ldr r7, _0222E30C ; =0x0000023E + add r2, r4, r2 + add r3, r3, r0 +_0222E2CC: + ldrh r6, [r1] + ldr r5, _0222E310 ; =0x00000236 + add r1, r1, #2 + strh r6, [r2, r5] + ldrb r6, [r3, #8] + add r5, r4, r0 + add r0, r0, #1 + strb r6, [r5, r7] + add r2, r2, #2 + add r3, r3, #1 + cmp r0, #4 + blt _0222E2CC +_0222E2E4: + ldr r0, [sp] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp] + strh r1, [r0] + b _0222E300 +_0222E2F0: + mov r1, #0xce + lsl r1, r1, #2 + add r1, r4, r1 + bl MOD12_0223808C + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0222E300: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222E308: .word 0x00000127 +_0222E30C: .word 0x0000023E +_0222E310: .word 0x00000236 + + thumb_func_start MOD12_0222E314 +MOD12_0222E314: ; 0x0222E314 + push {r3, r4, r5, r6, r7, lr} + ldr r2, _0222E394 ; =0x00000235 + add r4, r0, #0 + ldrb r0, [r4, r2] + add r1, r4, r0 + sub r0, r2, #4 + ldrb r0, [r1, r0] + add r1, r2, #0 + add r1, #0xf3 + strb r0, [r4, r1] + str r0, [sp] + add r0, r2, #0 + ldrb r1, [r4, r2] + add r0, #0xf4 + strb r1, [r4, r0] + ldr r0, [sp] + add r1, r4, r0 + add r0, r2, #0 + add r0, #9 + ldrb r3, [r1, r0] + add r0, r2, #0 + add r0, #0xf5 + strb r3, [r4, r0] + add r3, r2, #0 + mov r0, #0 + add r3, #0xf6 + strb r0, [r4, r3] + ldrb r2, [r4, r2] + cmp r2, #0 + ble _0222E374 + ldr r7, _0222E398 ; =0x0000023E + mov r5, #1 + add r3, r7, #0 +_0222E356: + ldr r2, _0222E39C ; =0x00000231 + add r6, r4, r0 + ldrb r2, [r6, r2] + add r2, r4, r2 + ldrb r6, [r2, r7] + ldrb r2, [r1, r3] + cmp r6, r2 + bne _0222E36A + ldr r2, _0222E3A0 ; =0x0000032B + strb r5, [r4, r2] +_0222E36A: + ldr r2, _0222E394 ; =0x00000235 + add r0, r0, #1 + ldrb r2, [r4, r2] + cmp r0, r2 + blt _0222E356 +_0222E374: + mov r1, #1 + lsl r1, r1, #0xa + ldr r2, [sp] + add r0, r4, #0 + add r1, r4, r1 + bl MOD12_02235274 + ldr r1, _0222E3A4 ; =0x00000406 + ldr r2, [sp] + add r0, r4, #0 + add r1, r4, r1 + bl MOD12_02235274 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222E394: .word 0x00000235 +_0222E398: .word 0x0000023E +_0222E39C: .word 0x00000231 +_0222E3A0: .word 0x0000032B +_0222E3A4: .word 0x00000406 + + thumb_func_start MOD12_0222E3A8 +MOD12_0222E3A8: ; 0x0222E3A8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222E3D4 + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #4 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E3F4 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E3F4 +_0222E3D4: + ldr r4, _0222E3F8 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E3F4 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E3F4: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222E3F8: .word 0x00000127 + + thumb_func_start MOD12_0222E3FC +MOD12_0222E3FC: ; 0x0222E3FC + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #0 + bne _0222E42C + ldr r3, _0222E458 ; =0x0000040C + mov r0, #0 + strb r0, [r4, r3] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r3, #0xe4 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #6 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E452 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222E452 +_0222E42C: + ldr r5, _0222E45C ; =0x00000127 + ldr r3, [r4] + sub r2, r5, #4 + ldrb r1, [r3, r5] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + add r0, r4, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E452 + ldr r0, _0222E458 ; =0x0000040C + mov r1, #0 + strb r1, [r4, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E452: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0222E458: .word 0x0000040C +_0222E45C: .word 0x00000127 + + thumb_func_start MOD12_0222E460 +MOD12_0222E460: ; 0x0222E460 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #0 + beq _0222E472 + cmp r0, #1 + beq _0222E4A2 + b _0222E4C2 +_0222E472: + ldr r0, _0222E4F0 ; =0x0000040C + mov r1, #4 + strb r1, [r4, r0] + add r1, r0, #0 + sub r1, #0xe1 + ldrb r1, [r4, r1] + cmp r1, #1 + bne _0222E486 + mov r1, #5 + b _0222E488 +_0222E486: + mov r1, #0 +_0222E488: + mov r2, #0xce + add r0, r0, #1 + strb r1, [r4, r0] + lsl r2, r2, #2 + add r1, r4, r2 + sub r2, #0x10 + ldrb r2, [r4, r2] + add r0, r4, #0 + bl MOD12_02238224 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] +_0222E4A2: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #7 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E4EC + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222E4EC +_0222E4C2: + ldr r5, _0222E4F4 ; =0x00000127 + ldr r3, [r4] + sub r2, r5, #4 + ldrb r1, [r3, r5] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + add r0, r4, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E4EC + ldr r0, _0222E4F0 ; =0x0000040C + mov r1, #0 + strb r1, [r4, r0] + add r0, r0, #1 + strb r1, [r4, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E4EC: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222E4F0: .word 0x0000040C +_0222E4F4: .word 0x00000127 + + thumb_func_start MOD12_0222E4F8 +MOD12_0222E4F8: ; 0x0222E4F8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrh r1, [r4] + add r5, r0, #0 + cmp r1, #0xc + bls _0222E506 + b _0222E6B6 +_0222E506: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222E512: ; jump table + .short _0222E52C - _0222E512 - 2 ; case 0 + .short _0222E542 - _0222E512 - 2 ; case 1 + .short _0222E556 - _0222E512 - 2 ; case 2 + .short _0222E576 - _0222E512 - 2 ; case 3 + .short _0222E59C - _0222E512 - 2 ; case 4 + .short _0222E5B6 - _0222E512 - 2 ; case 5 + .short _0222E5D6 - _0222E512 - 2 ; case 6 + .short _0222E5FA - _0222E512 - 2 ; case 7 + .short _0222E614 - _0222E512 - 2 ; case 8 + .short _0222E634 - _0222E512 - 2 ; case 9 + .short _0222E658 - _0222E512 - 2 ; case 10 + .short _0222E672 - _0222E512 - 2 ; case 11 + .short _0222E692 - _0222E512 - 2 ; case 12 +_0222E52C: + mov r2, #0xce + lsl r2, r2, #2 + add r1, r5, r2 + sub r2, #0x10 + ldrb r2, [r5, r2] + bl MOD12_022380FC + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E542: + mov r2, #0xce + lsl r2, r2, #2 + add r1, r5, r2 + sub r2, #0x10 + ldrb r2, [r5, r2] + bl MOD12_02238280 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222E556: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0xa + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E592 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E576: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _0222E6D0 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + beq _0222E594 +_0222E592: + b _0222E6CA +_0222E594: + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E59C: + mov r3, #0xce + lsl r3, r3, #2 + add r2, r3, #0 + add r1, r5, r3 + sub r2, #0x10 + sub r3, #0xf + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022382A8 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222E5B6: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0xb + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E6CA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E5D6: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _0222E6D0 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E6CA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E5FA: + mov r3, #0xce + lsl r3, r3, #2 + add r2, r3, #0 + add r1, r5, r3 + sub r2, #0x10 + sub r3, #0xf + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_02238370 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222E614: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0xc + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E6CA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E634: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _0222E6D0 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E6CA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E658: + mov r3, #0xce + lsl r3, r3, #2 + add r2, r3, #0 + sub r2, #0x10 + ldrb r2, [r5, r2] + add r1, r5, r3 + add r3, #0xc8 + add r3, r5, r3 + bl MOD12_0223850C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222E672: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0xd + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E6CA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E692: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _0222E6D0 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E6CA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E6B6: + mov r2, #0xce + lsl r2, r2, #2 + add r1, r5, r2 + sub r2, #0x10 + ldrb r2, [r5, r2] + add r0, r5, #0 + bl MOD12_02238160 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E6CA: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0222E6D0: .word 0x00000127 + + thumb_func_start MOD12_0222E6D4 +MOD12_0222E6D4: ; 0x0222E6D4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222E700 + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #5 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E720 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E720 +_0222E700: + ldr r4, _0222E724 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E720 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E720: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222E724: .word 0x00000127 + + thumb_func_start MOD12_0222E728 +MOD12_0222E728: ; 0x0222E728 + ldr r2, _0222E744 ; =0x00000235 + ldrb r3, [r0, r2] + add r3, r3, #1 + strb r3, [r0, r2] + ldrb r0, [r0, r2] + cmp r0, #4 + blo _0222E73A + mov r0, #1 + bx lr +_0222E73A: + mov r0, #5 + strh r0, [r1, #2] + mov r0, #2 + bx lr + nop +_0222E744: .word 0x00000235 + + thumb_func_start MOD12_0222E748 +MOD12_0222E748: ; 0x0222E748 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + add r7, r1, #0 + ldrh r1, [r7] + str r0, [sp] + cmp r1, #0x18 + bls _0222E758 + b _0222EBFA +_0222E758: + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222E764: ; jump table + .short _0222E796 - _0222E764 - 2 ; case 0 + .short _0222E79C - _0222E764 - 2 ; case 1 + .short _0222E7BA - _0222E764 - 2 ; case 2 + .short _0222E7E8 - _0222E764 - 2 ; case 3 + .short _0222E80C - _0222E764 - 2 ; case 4 + .short _0222E834 - _0222E764 - 2 ; case 5 + .short _0222E850 - _0222E764 - 2 ; case 6 + .short _0222E878 - _0222E764 - 2 ; case 7 + .short _0222E9CE - _0222E764 - 2 ; case 8 + .short _0222E9D6 - _0222E764 - 2 ; case 9 + .short _0222E9FA - _0222E764 - 2 ; case 10 + .short _0222EA2C - _0222E764 - 2 ; case 11 + .short _0222EA44 - _0222E764 - 2 ; case 12 + .short _0222EA50 - _0222E764 - 2 ; case 13 + .short _0222EA6E - _0222E764 - 2 ; case 14 + .short _0222EA9C - _0222E764 - 2 ; case 15 + .short _0222EAC0 - _0222E764 - 2 ; case 16 + .short _0222EB12 - _0222E764 - 2 ; case 17 + .short _0222EB2A - _0222E764 - 2 ; case 18 + .short _0222EB36 - _0222E764 - 2 ; case 19 + .short _0222EB48 - _0222E764 - 2 ; case 20 + .short _0222EB66 - _0222E764 - 2 ; case 21 + .short _0222EB94 - _0222E764 - 2 ; case 22 + .short _0222EBB8 - _0222E764 - 2 ; case 23 + .short _0222EBDE - _0222E764 - 2 ; case 24 +_0222E796: + add r0, r1, #1 + strh r0, [r7] + b _0222EC00 +_0222E79C: + ldr r1, [r7, #4] + ldr r0, [sp] + ldr r2, _0222EAE4 ; =0x00000231 + add r0, r0, r1 + ldrb r3, [r0, r2] + add r1, r2, #0 + ldr r0, [sp] + add r1, #0xf7 + strb r3, [r0, r1] + ldr r1, [r7, #4] + add r2, #0xf8 + strb r1, [r0, r2] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] +_0222E7BA: + mov r3, #0xce + ldr r0, [sp] + lsl r3, r3, #2 + add r4, r3, #0 + add r1, r0, #0 + add r1, r1, r3 + sub r4, #0x10 + add r2, r0, #0 + ldrb r2, [r2, r4] + sub r3, #0xf + add r4, r0, #0 + ldrb r3, [r4, r3] + bl MOD12_022383EC + cmp r0, #1 + bne _0222E7E2 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E7E2: + mov r0, #5 + strh r0, [r7] + b _0222EC00 +_0222E7E8: + mov r1, #0xc3 + ldr r0, [sp] + lsl r1, r1, #4 + add r0, r0, r1 + ldr r1, [sp] + mov r4, #0xca + lsl r4, r4, #2 + add r3, r1, #0 + mov r2, #0xe + add r3, r3, r4 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E82A + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E80C: + ldr r0, [sp] + mov r1, #0xc3 + ldr r4, _0222EAE8 ; =0x00000127 + ldr r3, [r0] + lsl r1, r1, #4 + add r0, r0, r1 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + beq _0222E82C +_0222E82A: + b _0222EC00 +_0222E82C: + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E834: + ldr r0, [r7, #4] + add r0, r0, #1 + str r0, [r7, #4] + cmp r0, #4 + blt _0222E84A + mov r0, #0 + str r0, [r7, #4] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E84A: + mov r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E850: + mov r6, #0xce + lsl r6, r6, #2 + add r5, r6, #0 + mov r4, #0 + add r5, #0xc8 +_0222E85A: + ldr r0, [sp] + add r2, r4, #0 + add r1, r0, #0 + add r3, r0, #0 + add r1, r1, r6 + add r3, r3, r5 + bl MOD12_02238660 + add r4, r4, #1 + cmp r4, #4 + blt _0222E85A + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E878: + mov r5, #0 + add r2, sp, #0x40 + add r3, sp, #0x34 + add r6, sp, #4 + mov r0, #4 +_0222E882: + mov r1, #0 + str r1, [r2] + str r5, [r3] + add r4, r6, #0 +_0222E88A: + add r1, r1, #1 + stmia r4!, {r0} + cmp r1, #4 + blt _0222E88A + add r5, r5, #1 + add r2, r2, #4 + add r3, r3, #4 + add r6, #0x10 + cmp r5, #3 + blt _0222E882 + mov r3, #0 + add r6, sp, #0x40 +_0222E8A2: + ldr r0, [sp] + add r1, r0, r3 + ldr r0, _0222EAE4 ; =0x00000231 + ldrb r1, [r1, r0] + ldr r0, [sp] + add r2, r0, r1 + ldr r0, _0222EAEC ; =0x0000023E + ldrb r0, [r2, r0] + lsl r0, r0, #2 + ldr r4, [r6, r0] + add r4, r4, #1 + str r4, [r6, r0] + ldr r0, _0222EAEC ; =0x0000023E + mov r4, #0 + ldrb r0, [r2, r0] + lsl r2, r0, #4 + add r0, sp, #4 + add r5, r0, r2 + add r2, r5, #0 +_0222E8C8: + ldr r0, [r2] + cmp r0, #4 + bne _0222E8D4 + lsl r0, r4, #2 + str r1, [r5, r0] + b _0222E8DC +_0222E8D4: + add r4, r4, #1 + add r2, r2, #4 + cmp r4, #4 + blt _0222E8C8 +_0222E8DC: + add r3, r3, #1 + cmp r3, #4 + blt _0222E8A2 + mov r6, #0 +_0222E8E4: + mov r2, #2 + cmp r6, #2 + bge _0222E910 + add r0, sp, #0x48 + add r1, sp, #0x3c +_0222E8EE: + sub r3, r0, #4 + ldr r5, [r0] + ldr r4, [r3] + cmp r4, r5 + bge _0222E906 + str r4, [r0] + str r5, [r3] + sub r3, r1, #4 + ldr r5, [r1] + ldr r4, [r3] + str r4, [r1] + str r5, [r3] +_0222E906: + sub r2, r2, #1 + sub r0, r0, #4 + sub r1, r1, #4 + cmp r2, r6 + bgt _0222E8EE +_0222E910: + add r6, r6, #1 + cmp r6, #2 + blt _0222E8E4 + ldr r0, [r7, #4] + mov r2, #0x41 + lsl r0, r0, #2 + add r1, sp, #0x34 + ldr r3, [r1, r0] + ldr r0, [sp] + lsl r2, r2, #4 + strb r3, [r0, r2] + mov r3, #0 + ldr r6, _0222EAF0 ; =0x00000411 + add r2, r3, #0 + add r5, sp, #4 +_0222E92E: + ldr r0, [r7, #4] + ldr r4, [sp] + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r4, r4, r3 + lsl r0, r0, #4 + add r0, r5, r0 + ldr r0, [r2, r0] + add r3, r3, #1 + add r2, r2, #4 + strb r0, [r4, r6] + cmp r3, #4 + blt _0222E92E + ldr r0, [r7, #4] + lsl r1, r0, #2 + add r0, sp, #0x40 + ldr r0, [r0, r1] + cmp r0, #4 + bhi _0222E992 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222E960: ; jump table + .short _0222E992 - _0222E960 - 2 ; case 0 + .short _0222E96A - _0222E960 - 2 ; case 1 + .short _0222E974 - _0222E960 - 2 ; case 2 + .short _0222E97E - _0222E960 - 2 ; case 3 + .short _0222E988 - _0222E960 - 2 ; case 4 +_0222E96A: + ldr r1, _0222EAF4 ; =0x0000040C + ldr r0, [sp] + mov r2, #0xa + strb r2, [r0, r1] + b _0222E99C +_0222E974: + ldr r1, _0222EAF4 ; =0x0000040C + ldr r0, [sp] + mov r2, #7 + strb r2, [r0, r1] + b _0222E99C +_0222E97E: + ldr r1, _0222EAF4 ; =0x0000040C + ldr r0, [sp] + mov r2, #8 + strb r2, [r0, r1] + b _0222E99C +_0222E988: + ldr r1, _0222EAF4 ; =0x0000040C + ldr r0, [sp] + mov r2, #9 + strb r2, [r0, r1] + b _0222E99C +_0222E992: + mov r0, #0xc + strh r0, [r7] + add sp, #0x4c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0222E99C: + ldr r2, _0222EAF8 ; =0x0000040D + ldr r0, [sp] + mov r1, #0 + add r3, r2, #0 + strb r1, [r0, r2] + sub r3, #0xd + add r1, r0, #0 + add r1, r1, r3 + sub r2, #0xe5 + add r3, r0, #0 + ldrb r2, [r3, r2] + bl MOD12_02235274 + ldr r0, [sp] + ldr r3, _0222EAFC ; =0x00000406 + add r1, r0, #0 + add r1, r1, r3 + sub r3, #0xde + add r2, r0, #0 + ldrb r2, [r2, r3] + bl MOD12_02235274 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] +_0222E9CE: + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E9D6: + mov r1, #0xc3 + ldr r0, [sp] + lsl r1, r1, #4 + add r0, r0, r1 + ldr r1, [sp] + mov r4, #0xca + lsl r4, r4, #2 + add r3, r1, #0 + mov r2, #0x10 + add r3, r3, r4 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EADE + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E9FA: + ldr r0, [sp] + mov r1, #0xc3 + ldr r4, _0222EAE8 ; =0x00000127 + ldr r3, [r0] + lsl r1, r1, #4 + add r0, r0, r1 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EADE + ldr r1, _0222EAF4 ; =0x0000040C + ldr r0, [sp] + mov r2, #0 + strb r2, [r0, r1] + add r1, r1, #1 + strb r2, [r0, r1] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EA2C: + ldr r0, [r7, #4] + add r0, r0, #1 + str r0, [r7, #4] + cmp r0, #3 + bge _0222EA3C + mov r0, #7 + strh r0, [r7] + b _0222EC00 +_0222EA3C: + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EA44: + mov r0, #0 + str r0, [r7, #4] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EA50: + ldr r1, [r7, #4] + ldr r0, [sp] + ldr r2, _0222EAE4 ; =0x00000231 + add r0, r0, r1 + ldrb r3, [r0, r2] + add r1, r2, #0 + ldr r0, [sp] + add r1, #0xf7 + strb r3, [r0, r1] + ldr r1, [r7, #4] + add r2, #0xf8 + strb r1, [r0, r2] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] +_0222EA6E: + mov r3, #0xce + ldr r0, [sp] + lsl r3, r3, #2 + add r4, r3, #0 + add r1, r0, #0 + add r1, r1, r3 + sub r4, #0x10 + add r2, r0, #0 + ldrb r2, [r2, r4] + sub r3, #0xf + add r4, r0, #0 + ldrb r3, [r4, r3] + bl MOD12_0223844C + cmp r0, #0 + bne _0222EA94 + mov r0, #0x11 + strh r0, [r7] + b _0222EC00 +_0222EA94: + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EA9C: + mov r1, #0xc3 + ldr r0, [sp] + lsl r1, r1, #4 + add r0, r0, r1 + ldr r1, [sp] + mov r4, #0xca + lsl r4, r4, #2 + add r3, r1, #0 + mov r2, #0x11 + add r3, r3, r4 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EADE + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EAC0: + ldr r0, [sp] + mov r1, #0xc3 + ldr r4, _0222EAE8 ; =0x00000127 + ldr r3, [r0] + lsl r1, r1, #4 + add r0, r0, r1 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + beq _0222EAE0 +_0222EADE: + b _0222EC00 +_0222EAE0: + ldr r1, _0222EAF4 ; =0x0000040C + b _0222EB00 + .align 2, 0 +_0222EAE4: .word 0x00000231 +_0222EAE8: .word 0x00000127 +_0222EAEC: .word 0x0000023E +_0222EAF0: .word 0x00000411 +_0222EAF4: .word 0x0000040C +_0222EAF8: .word 0x0000040D +_0222EAFC: .word 0x00000406 +_0222EB00: + ldr r0, [sp] + mov r2, #0 + strb r2, [r0, r1] + add r1, r1, #1 + strb r2, [r0, r1] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EB12: + ldr r0, [r7, #4] + add r0, r0, #1 + str r0, [r7, #4] + cmp r0, #4 + bge _0222EB22 + mov r0, #0xd + strh r0, [r7] + b _0222EC00 +_0222EB22: + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EB2A: + mov r0, #0 + str r0, [r7, #4] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EB36: + mov r1, #0xce + ldr r0, [sp] + lsl r1, r1, #2 + add r0, r0, r1 + bl MOD12_02238210 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] +_0222EB48: + ldr r1, [r7, #4] + ldr r0, [sp] + ldr r2, _0222EC08 ; =0x00000231 + add r0, r0, r1 + ldrb r3, [r0, r2] + add r1, r2, #0 + ldr r0, [sp] + add r1, #0xf7 + strb r3, [r0, r1] + ldr r1, [r7, #4] + add r2, #0xf8 + strb r1, [r0, r2] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] +_0222EB66: + mov r3, #0xce + ldr r0, [sp] + lsl r3, r3, #2 + add r4, r3, #0 + add r1, r0, #0 + add r1, r1, r3 + sub r4, #0x10 + add r2, r0, #0 + ldrb r2, [r2, r4] + sub r3, #0xf + add r4, r0, #0 + ldrb r3, [r4, r3] + bl MOD12_022384AC + cmp r0, #1 + bne _0222EB8E + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EB8E: + mov r0, #0x18 + strh r0, [r7] + b _0222EC00 +_0222EB94: + mov r1, #0xc3 + ldr r0, [sp] + lsl r1, r1, #4 + add r0, r0, r1 + ldr r1, [sp] + mov r4, #0xca + lsl r4, r4, #2 + add r3, r1, #0 + mov r2, #0xf + add r3, r3, r4 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EC00 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EBB8: + ldr r0, [sp] + mov r1, #0xc3 + ldr r4, _0222EC0C ; =0x00000127 + ldr r3, [r0] + lsl r1, r1, #4 + add r0, r0, r1 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EC00 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EBDE: + ldr r0, [r7, #4] + add r0, r0, #1 + str r0, [r7, #4] + cmp r0, #4 + blt _0222EBF4 + mov r0, #0 + str r0, [r7, #4] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EBF4: + mov r0, #0x14 + strh r0, [r7] + b _0222EC00 +_0222EBFA: + add sp, #0x4c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0222EC00: + mov r0, #0 + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + nop +_0222EC08: .word 0x00000231 +_0222EC0C: .word 0x00000127 + + thumb_func_start MOD12_0222EC10 +MOD12_0222EC10: ; 0x0222EC10 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _0222EC26 + cmp r0, #1 + beq _0222EC2C + cmp r0, #2 + beq _0222EC4C + b _0222EC70 +_0222EC26: + add r0, r0, #1 + strh r0, [r4] + b _0222EC74 +_0222EC2C: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0x12 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EC74 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222EC74 +_0222EC4C: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _0222EC78 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EC74 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222EC74 +_0222EC70: + mov r0, #1 + pop {r3, r4, r5, pc} +_0222EC74: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222EC78: .word 0x00000127 + + thumb_func_start MOD12_0222EC7C +MOD12_0222EC7C: ; 0x0222EC7C + push {r4, r5, r6, lr} + add r5, r1, #0 + ldrh r1, [r5] + add r4, r0, #0 + cmp r1, #6 + bls _0222EC8A + b _0222EDEE +_0222EC8A: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222EC96: ; jump table + .short _0222ECA4 - _0222EC96 - 2 ; case 0 + .short _0222ECC4 - _0222EC96 - 2 ; case 1 + .short _0222ECEA - _0222EC96 - 2 ; case 2 + .short _0222ED4A - _0222EC96 - 2 ; case 3 + .short _0222ED6E - _0222EC96 - 2 ; case 4 + .short _0222EDAA - _0222EC96 - 2 ; case 5 + .short _0222EDCA - _0222EC96 - 2 ; case 6 +_0222ECA4: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #0x15 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222ECE0 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222ECC4: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _0222EE14 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + beq _0222ECE2 +_0222ECE0: + b _0222EE0E +_0222ECE2: + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222ECEA: + mov r2, #0x36 + mov r1, #0 + lsl r2, r2, #4 + add r0, r1, #0 + add r2, r4, r2 +_0222ECF4: + ldr r3, [r2] + lsl r3, r3, #0x1a + lsr r3, r3, #0x1e + beq _0222ECFE + add r1, r1, #1 +_0222ECFE: + add r0, r0, #1 + add r2, #0x2c + cmp r0, #4 + blt _0222ECF4 + mov r0, #0x23 + lsl r0, r0, #4 + ldrb r0, [r4, r0] + cmp r0, #3 + bhs _0222ED1C + cmp r1, #4 + bge _0222ED1C + ldr r0, _0222EE18 ; =0x0000040C + mov r1, #0x2a + strb r1, [r4, r0] + b _0222ED22 +_0222ED1C: + ldr r0, _0222EE18 ; =0x0000040C + mov r1, #0 + strb r1, [r4, r0] +_0222ED22: + ldr r3, _0222EE1C ; =0x0000040E + mov r1, #0 + strb r1, [r4, r3] + add r0, r3, #1 + strb r1, [r4, r0] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r3, #0xe6 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #0x14 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EE0E + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222ED4A: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _0222EE14 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EE0E + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222ED6E: + mov r1, #0xce + lsl r1, r1, #2 + add r1, r4, r1 + bl MOD12_0223818C + mov r0, #0x23 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD12_02235C60 + ldr r0, _0222EE20 ; =0x00000236 + mov r6, #0 + add r1, r0, #0 + add r3, r4, #0 + add r1, #0x20 +_0222ED8C: + ldrh r2, [r3, r0] + add r6, r6, #1 + strh r2, [r3, r1] + add r3, r3, #2 + cmp r6, #4 + blt _0222ED8C + mov r0, #0x23 + lsl r0, r0, #4 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222EDAA: + mov r0, #0xc3 + mov r3, #0x23 + lsl r0, r0, #4 + lsl r3, r3, #4 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #0x13 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EE0E + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222EDCA: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _0222EE14 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EE0E + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222EDEE: + mov r0, #0x23 + lsl r0, r0, #4 + ldrb r1, [r4, r0] + cmp r1, #4 + blo _0222EE00 + mov r0, #0xf + strh r0, [r5, #2] + mov r0, #2 + pop {r4, r5, r6, pc} +_0222EE00: + mov r1, #0 + add r0, r0, #5 + strb r1, [r4, r0] + mov r0, #3 + strh r0, [r5, #2] + mov r0, #2 + pop {r4, r5, r6, pc} +_0222EE0E: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_0222EE14: .word 0x00000127 +_0222EE18: .word 0x0000040C +_0222EE1C: .word 0x0000040E +_0222EE20: .word 0x00000236 + + thumb_func_start MOD12_0222EE24 +MOD12_0222EE24: ; 0x0222EE24 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #3 + bhi _0222EED0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222EE3C: ; jump table + .short _0222EE44 - _0222EE3C - 2 ; case 0 + .short _0222EE66 - _0222EE3C - 2 ; case 1 + .short _0222EE90 - _0222EE3C - 2 ; case 2 + .short _0222EEB4 - _0222EE3C - 2 ; case 3 +_0222EE44: + mov r1, #0 + ldr r7, _0222EEF4 ; =0x0000012E + add r2, r3, #0 + add r5, r1, #0 +_0222EE4C: + ldr r0, _0222EEF8 ; =0x00000242 + ldr r6, [r3] + ldrsh r0, [r2, r0] + add r6, r6, r5 + add r1, r1, #1 + strh r0, [r6, r7] + add r2, r2, #2 + add r5, #0xc + cmp r1, #4 + blt _0222EE4C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222EE66: + ldr r5, _0222EEFC ; =0x0000040C + mov r0, #0x2b + strb r0, [r3, r5] + add r0, r5, #1 + mov r1, #0 + strb r1, [r3, r0] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r5, #0xe4 + add r0, r3, r0 + add r1, r3, #0 + mov r2, #3 + add r3, r3, r5 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EEF0 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222EEF0 +_0222EE90: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r5, [r3] + add r0, r3, r0 + ldr r3, _0222EF00 ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r5, r3] + sub r3, #0xb + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EEF0 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222EEF0 +_0222EEB4: + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r3, r0 + add r1, r3, #0 + mov r2, #1 + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EEF0 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222EEF0 +_0222EED0: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r4, [r3] + add r0, r3, r0 + ldr r3, _0222EF00 ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r4, r3] + sub r3, #0xb + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EEF0 + mov r0, #3 + pop {r3, r4, r5, r6, r7, pc} +_0222EEF0: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222EEF4: .word 0x0000012E +_0222EEF8: .word 0x00000242 +_0222EEFC: .word 0x0000040C +_0222EF00: .word 0x00000127 + + thumb_func_start MOD12_0222EF04 +MOD12_0222EF04: ; 0x0222EF04 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r1, #1 + lsl r1, r1, #0x1a + ldr r0, [r1] + ldr r2, _0222F15C ; =0xFFFFE0FF + and r0, r2 + str r0, [r1] + ldr r0, _0222F160 ; =0x04001000 + ldr r3, [r0] + and r2, r3 + str r2, [r0] + ldr r3, [r1] + ldr r2, _0222F164 ; =0xFFFF1FFF + and r3, r2 + str r3, [r1] + ldr r3, [r0] + add r1, #0x50 + and r2, r3 + str r2, [r0] + mov r2, #0 + strh r2, [r1] + add r0, #0x50 + strh r2, [r0] + mov r2, #7 + mov r0, #3 + mov r1, #0x16 + lsl r2, r2, #0x10 + bl FUN_0201681C + ldr r1, _0222F168 ; =0x00000F68 + add r0, r4, #0 + mov r2, #0x16 + bl FUN_02006268 + ldr r2, _0222F168 ; =0x00000F68 + mov r1, #0 + add r5, r0, #0 + bl MI_CpuFill8 + mov r0, #0x16 + bl MOD12_022312D8 + str r0, [r5, #8] + add r0, r4, #0 + bl FUN_0200628C + mov r1, #0x5b + str r0, [r5] + lsl r1, r1, #2 + str r5, [r0, r1] + ldr r2, [r5] + mov r3, #0 + add r0, r1, #4 + strb r3, [r2, r0] + ldr r0, [r5] + str r0, [r5, #0xc] + add r0, r5, #0 + bl MOD12_0222F720 + mov r0, #0x16 + bl FUN_02002FD0 + str r0, [r5, #0x50] + mov r1, #1 + bl FUN_020038F0 + mov r2, #2 + ldr r0, [r5, #0x50] + mov r1, #0 + lsl r2, r2, #8 + mov r3, #0x16 + bl FUN_02003008 + mov r1, #1 + ldr r0, [r5, #0x50] + lsl r2, r1, #9 + mov r3, #0x16 + bl FUN_02003008 + mov r2, #7 + ldr r0, [r5, #0x50] + mov r1, #2 + lsl r2, r2, #6 + mov r3, #0x16 + bl FUN_02003008 + mov r2, #2 + ldr r0, [r5, #0x50] + mov r1, #3 + lsl r2, r2, #8 + mov r3, #0x16 + bl FUN_02003008 + mov r0, #0x16 + bl FUN_02016B94 + str r0, [r5, #0x30] + mov r0, #0x40 + mov r1, #0x16 + bl FUN_0201C24C + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + ldr r0, [r5, #0x30] + bl MOD12_0222F548 + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + mov r0, #2 + mov r1, #0x16 + bl FUN_02002C50 + mov r0, #0x16 + bl FUN_0200BB14 + ldr r1, _0222F16C ; =0x02244AFC + ldr r2, _0222F170 ; =0x02244AB4 + mov r3, #0x20 + str r0, [r5, #0x28] + bl FUN_0200BB6C + ldr r1, _0222F174 ; =0x00100010 + mov r0, #1 + bl FUN_02008D44 + mov r0, #1 + bl FUN_02008DDC + ldr r0, [r5, #0x28] + bl FUN_0200BB34 + str r0, [r5, #0x2c] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + mov r2, #0x80 + bl FUN_0200BBF0 + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + ldr r2, _0222F178 ; =0x02244AC8 + bl FUN_0200BF60 + ldr r0, [r5, #0x28] + bl FUN_0200BB68 + mov r2, #1 + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + mov r0, #0x16 + bl FUN_02006D98 + str r0, [r5, #0x10] + bl MOD12_0222F6E0 + mov r0, #0 + mov r1, #0x1a + mov r2, #0xc4 + mov r3, #0x16 + bl FUN_0200A86C + str r0, [r5, #0x44] + mov r0, #0x16 + bl FUN_0200AA80 + str r0, [r5, #0x48] + mov r0, #5 + lsl r0, r0, #6 + mov r1, #0x16 + bl FUN_020219F4 + str r0, [r5, #0x4c] + add r0, r5, #0 + bl MOD12_0222F834 + add r0, r5, #0 + bl MOD12_0222F938 + add r0, r5, #0 + bl MOD12_0222F6B4 + add r0, r5, #0 + bl MOD12_0222F748 + add r0, r5, #0 + bl MOD12_0222F7F4 + mov r0, #1 + str r0, [sp] + add r0, #0xff + str r0, [sp, #4] + mov r1, #0 + ldr r0, [r5, #0x50] + ldr r3, _0222F17C ; =0x00007FFF + add r2, r1, #0 + bl FUN_02003914 + mov r1, #1 + add r0, r1, #0 + str r1, [sp] + add r0, #0xff + str r0, [sp, #4] + ldr r0, [r5, #0x50] + ldr r3, _0222F17C ; =0x00007FFF + mov r2, #0 + bl FUN_02003914 + mov r2, #0 + str r2, [sp] + mov r0, #0xe0 + str r0, [sp, #4] + ldr r0, [r5, #0x50] + ldr r3, _0222F17C ; =0x00007FFF + mov r1, #2 + bl FUN_02003914 + mov r2, #0 + mov r0, #1 + str r2, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + ldr r0, [r5, #0x50] + ldr r3, _0222F17C ; =0x00007FFF + mov r1, #3 + bl FUN_02003914 + bl FUN_02033E74 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #0x16 + str r1, [sp, #8] + mov r1, #0x1b + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, _0222F180 ; =MOD12_0222F4F4 + ldr r2, _0222F184 ; =0x0000EA60 + add r1, r5, #0 + bl FUN_0200CA44 + str r0, [r5, #4] + ldr r0, _0222F188 ; =0x000004F8 + mov r1, #1 + strb r1, [r5, r0] + bl FUN_0201E788 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + mov r0, #0 + bl FUN_0200415C + ldr r1, _0222F18C ; =0x0000046F + mov r0, #6 + mov r2, #1 + bl FUN_0200433C + ldr r1, [r5] + ldr r0, _0222F190 ; =0x00000171 + ldrb r0, [r1, r0] + bl FUN_020833D4 + ldr r0, _0222F194 ; =MOD12_0222F458 + add r1, r5, #0 + bl FUN_02015F10 + ldr r0, _0222F198 ; =0x00000605 + bl FUN_020054C8 + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + nop +_0222F15C: .word 0xFFFFE0FF +_0222F160: .word 0x04001000 +_0222F164: .word 0xFFFF1FFF +_0222F168: .word 0x00000F68 +_0222F16C: .word 0x02244AFC +_0222F170: .word 0x02244AB4 +_0222F174: .word 0x00100010 +_0222F178: .word 0x02244AC8 +_0222F17C: .word 0x00007FFF +_0222F180: .word MOD12_0222F4F4 +_0222F184: .word 0x0000EA60 +_0222F188: .word 0x000004F8 +_0222F18C: .word 0x0000046F +_0222F190: .word 0x00000171 +_0222F194: .word MOD12_0222F458 +_0222F198: .word 0x00000605 + + thumb_func_start MOD12_0222F19C +MOD12_0222F19C: ; 0x0222F19C + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02082878 + ldr r0, [r5] + cmp r0, #0 + beq _0222F1C0 + cmp r0, #1 + beq _0222F236 + cmp r0, #2 + bne _0222F1BE + b _0222F2EC +_0222F1BE: + b _0222F2FA +_0222F1C0: + bl FUN_0200E308 + cmp r0, #1 + beq _0222F1CA + b _0222F2FA +_0222F1CA: + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0222F300 ; =0x00007FFF + ldr r2, _0222F304 ; =0x0000FFFF + str r0, [sp, #8] + ldr r0, [r4, #0x50] + mov r1, #1 + mov r3, #6 + bl FUN_02003210 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0222F300 ; =0x00007FFF + ldr r2, _0222F304 ; =0x0000FFFF + str r0, [sp, #8] + ldr r0, [r4, #0x50] + mov r1, #2 + mov r3, #6 + bl FUN_02003210 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + ldr r2, _0222F300 ; =0x00007FFF + str r0, [sp, #4] + str r2, [sp, #8] + ldr r0, [r4, #0x50] + mov r1, #4 + lsr r2, r2, #1 + mov r3, #6 + bl FUN_02003210 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0222F300 ; =0x00007FFF + ldr r2, _0222F304 ; =0x0000FFFF + str r0, [sp, #8] + ldr r0, [r4, #0x50] + mov r1, #8 + mov r3, #6 + bl FUN_02003210 + ldr r0, _0222F308 ; =0x000006E5 + bl FUN_020054C8 + mov r0, #1 + str r0, [r5] + b _0222F2FA +_0222F236: + ldr r0, [r4] + bl FUN_020828BC + cmp r0, #1 + bne _0222F2A8 + ldr r2, _0222F30C ; =0x000004F6 + ldr r1, _0222F310 ; =0x00000F14 + ldrh r2, [r4, r2] + add r0, r4, #0 + add r1, r4, r1 + lsl r3, r2, #2 + ldr r2, _0222F314 ; =0x02244B44 + ldr r2, [r2, r3] + blx r2 + sub r1, r0, #1 + cmp r1, #1 + bhi _0222F27A + cmp r0, #1 + bne _0222F264 + ldr r0, _0222F30C ; =0x000004F6 + ldrh r1, [r4, r0] + add r1, r1, #1 + b _0222F26A +_0222F264: + ldr r0, _0222F318 ; =0x00000F16 + ldrh r1, [r4, r0] + ldr r0, _0222F30C ; =0x000004F6 +_0222F26A: + strh r1, [r4, r0] + ldr r0, _0222F310 ; =0x00000F14 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + b _0222F2A8 +_0222F27A: + cmp r0, #3 + bne _0222F2A8 + mov r0, #2 + str r0, [r5] + ldr r0, _0222F310 ; =0x00000F14 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x16 + str r0, [sp, #8] + mov r0, #2 + mov r1, #0x10 + mov r2, #0x24 + mov r3, #0 + bl FUN_0200E1D0 + b _0222F2FA +_0222F2A8: + ldr r0, _0222F31C ; =0x000004FC + add r0, r4, r0 + bl MOD12_022410A0 + ldr r0, _0222F31C ; =0x000004FC + add r1, r4, #0 + add r0, r4, r0 + bl MOD12_02241114 + ldr r0, _0222F320 ; =0x00000F1C + ldrb r1, [r4, r0] + cmp r1, #1 + bne _0222F2FA + mov r1, #2 + sub r0, #8 + str r1, [r5] + add r0, r4, r0 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x16 + str r0, [sp, #8] + mov r0, #2 + mov r1, #0x10 + mov r2, #0x24 + mov r3, #0 + bl FUN_0200E1D0 + b _0222F2FA +_0222F2EC: + bl FUN_0200E308 + cmp r0, #1 + bne _0222F2FA + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_0222F2FA: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_0222F300: .word 0x00007FFF +_0222F304: .word 0x0000FFFF +_0222F308: .word 0x000006E5 +_0222F30C: .word 0x000004F6 +_0222F310: .word 0x00000F14 +_0222F314: .word 0x02244B44 +_0222F318: .word 0x00000F16 +_0222F31C: .word 0x000004FC +_0222F320: .word 0x00000F1C + + thumb_func_start MOD12_0222F324 +MOD12_0222F324: ; 0x0222F324 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + bl FUN_02006278 + add r4, r0, #0 + bl FUN_02012EAC + add r0, r4, #0 + bl MOD12_0222F7C0 + add r0, r4, #0 + bl MOD12_0222F824 + add r0, r4, #0 + bl MOD12_0222F934 + add r0, r4, #0 + bl MOD12_0222F98C + add r0, r4, #0 + add r0, #0x34 + bl FUN_02019178 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + mov r1, #3 + bl FUN_020178A0 + mov r0, #4 + mov r1, #0 + bl FUN_0201797C + ldr r0, [r4, #0x30] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + bl FUN_0200C398 + ldr r0, [r4, #0x28] + bl FUN_0200BD04 + bl FUN_0201C29C + mov r7, #0xf2 + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #4 +_0222F3A4: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0222F3AE + bl FUN_021DD540 +_0222F3AE: + add r6, r6, #1 + add r5, #0x10 + cmp r6, #4 + blt _0222F3A4 + add r0, r4, #0 + add r0, #0xc + bl MOD12_02239874 + add r0, r4, #0 + bl MOD12_02239A58 + ldr r0, [r4, #0x10] + bl FUN_020072E8 + mov r0, #2 + bl FUN_02002CF8 + ldr r0, [r4, #0x50] + mov r1, #0 + bl FUN_02003038 + ldr r0, [r4, #0x50] + mov r1, #1 + bl FUN_02003038 + ldr r0, [r4, #0x50] + mov r1, #2 + bl FUN_02003038 + ldr r0, [r4, #0x50] + mov r1, #3 + bl FUN_02003038 + ldr r0, [r4, #0x50] + bl FUN_02002FEC + ldr r0, [r4, #0x48] + bl FUN_0200AB18 + ldr r0, [r4, #0x4c] + bl FUN_02021A20 + ldr r0, [r4, #0x44] + bl FUN_0200A8B8 + ldr r0, [r4, #0x30] + bl FUN_02016A18 + ldr r0, [r4, #4] + bl FUN_0200CAB4 + ldr r0, [r4, #8] + bl MOD12_02231378 + bl FUN_0201CD04 + ldr r0, [sp] + bl FUN_0200627C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + mov r0, #0x16 + bl FUN_020168D0 + bl FUN_02083404 + bl FUN_02033ED0 + ldr r0, _0222F450 ; =SDK_MODULE_08_ID + bl UnloadOverlayByID + ldr r0, _0222F454 ; =SDK_MODULE_17_ID + bl UnloadOverlayByID + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222F450: .word SDK_MODULE_08_ID +_0222F454: .word SDK_MODULE_17_ID + + thumb_func_start MOD12_0222F458 +MOD12_0222F458: ; 0x0222F458 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, _0222F4E4 ; =0x00000F63 + sub r1, r0, #2 + ldrb r3, [r6, r1] + sub r1, r0, #3 + ldrb r1, [r6, r1] + sub r5, r0, #1 + ldrb r5, [r6, r5] + lsl r2, r1, #8 + mov r1, #0xff + lsl r1, r1, #8 + and r2, r1 + orr r2, r5 + ldrb r4, [r6, r0] + ldr r5, _0222F4E8 ; =0x04000040 + strh r2, [r5] + lsl r2, r3, #8 + and r2, r1 + orr r2, r4 + strh r2, [r5, #4] + add r2, r0, #4 + ldrb r4, [r6, r2] + add r2, r0, #2 + ldrb r3, [r6, r2] + add r2, r0, #1 + ldrb r2, [r6, r2] + add r0, r0, #3 + ldrb r0, [r6, r0] + lsl r2, r2, #8 + and r2, r1 + orr r0, r2 + strh r0, [r5, #2] + lsl r0, r3, #8 + and r0, r1 + orr r0, r4 + strh r0, [r5, #6] + ldr r0, [r6, #0x10] + bl FUN_020081C4 + mov r7, #0xf2 + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #4 +_0222F4B0: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0222F4BA + bl FUN_021DD58C +_0222F4BA: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #4 + blt _0222F4B0 + bl FUN_0201C30C + bl FUN_0200BC30 + ldr r0, [r6, #0x50] + bl FUN_0200372C + ldr r0, [r6, #0x30] + bl FUN_0201AB60 + ldr r3, _0222F4EC ; =0x027E0000 + ldr r1, _0222F4F0 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222F4E4: .word 0x00000F63 +_0222F4E8: .word 0x04000040 +_0222F4EC: .word 0x027E0000 +_0222F4F0: .word 0x00003FF8 + + thumb_func_start MOD12_0222F4F4 +MOD12_0222F4F4: ; 0x0222F4F4 + push {r3, r4, r5, r6, r7, lr} + ldr r0, _0222F540 ; =0x000004F8 + add r6, r1, #0 + ldrb r0, [r6, r0] + cmp r0, #1 + bne _0222F534 + ldr r0, [r6, #0x10] + bl FUN_02006ED4 + mov r7, #0xf2 + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #4 +_0222F50E: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0222F518 + bl FUN_021DD518 +_0222F518: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #4 + blt _0222F50E + bl FUN_02215A44 + ldr r0, [r6, #0x2c] + bl FUN_0200BC1C + bl FUN_0200BC38 + ldr r0, _0222F544 ; =0x04000540 + mov r1, #1 + str r1, [r0] +_0222F534: + ldr r1, [r6, #0x30] + mov r0, #0x16 + bl FUN_020335F0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222F540: .word 0x000004F8 +_0222F544: .word 0x04000540 + + thumb_func_start MOD12_0222F548 +MOD12_0222F548: ; 0x0222F548 + push {r3, r4, r5, lr} + sub sp, #0xa8 + add r4, r0, #0 + bl FUN_0201E6D8 + ldr r5, _0222F6A0 ; =0x02244B1C + add r3, sp, #0x2c + mov r2, #5 +_0222F558: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222F558 + add r0, sp, #0x2c + 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, _0222F6A4 ; =0x02244AA4 + add r3, sp, #0x1c + 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, _0222F6A8 ; =0x02244B70 + add r3, sp, #0x54 + mov r2, #0xa +_0222F5B8: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222F5B8 + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + add r2, sp, #0x54 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #1 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + add r2, sp, #0x70 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #3 + add r2, sp, #0x8c + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #3 + add r3, r2, #0 + bl FUN_020179E0 + mov r1, #3 + add r0, r4, #0 + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + ldr r1, _0222F6AC ; =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, _0222F6B0 ; =0x02244AE0 + 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] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #4 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #4 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #4 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add sp, #0xa8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222F6A0: .word 0x02244B1C +_0222F6A4: .word 0x02244AA4 +_0222F6A8: .word 0x02244B70 +_0222F6AC: .word 0x04000008 +_0222F6B0: .word 0x02244AE0 + + thumb_func_start MOD12_0222F6B4 +MOD12_0222F6B4: ; 0x0222F6B4 + push {lr} + sub sp, #0x14 + add r1, r0, #0 + mov r0, #0x13 + 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, #0x1f + str r0, [sp, #0x10] + ldr r0, [r1, #0x30] + add r1, #0x34 + mov r2, #1 + mov r3, #2 + bl FUN_02019064 + add sp, #0x14 + pop {pc} + .align 2, 0 + + thumb_func_start MOD12_0222F6E0 +MOD12_0222F6E0: ; 0x0222F6E0 + push {r3, r4, r5, lr} + ldr r3, _0222F718 ; =0x021064B8 + mov r0, #2 + mov r1, #0 + ldr r3, [r3] + lsl r0, r0, #0xe + add r2, r1, #0 + blx r3 + ldr r3, _0222F71C ; =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 _0222F708 + bl ErrorHandling +_0222F708: + cmp r5, #0 + bne _0222F710 + bl ErrorHandling +_0222F710: + bl FUN_02012CC8 + pop {r3, r4, r5, pc} + nop +_0222F718: .word 0x021064B8 +_0222F71C: .word 0x021064C0 + + thumb_func_start MOD12_0222F720 +MOD12_0222F720: ; 0x0222F720 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _0222F72E + bl ErrorHandling +_0222F72E: + mov r3, #0 + mov r0, #3 +_0222F732: + add r1, r4, r3 + sub r2, r0, r3 + add r1, #0xd4 + add r3, r3, #1 + strb r2, [r1] + cmp r3, #4 + blt _0222F732 + add r0, r4, #0 + bl MOD12_02239B88 + pop {r4, pc} + + thumb_func_start MOD12_0222F748 +MOD12_0222F748: ; 0x0222F748 + push {r3, r4, lr} + sub sp, #0x1c + add r4, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #7 + 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] + ldr r0, _0222F7B8 ; =0x000080E9 + mov r1, #2 + str r0, [sp, #0x14] + ldr r0, [r4, #0x50] + ldr r2, [r4, #0x28] + ldr r3, [r4, #0x2c] + bl FUN_0200C0DC + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + bl MOD12_0223988C + mov r0, #0 + mvn r0, r0 + ldr r3, _0222F7B8 ; =0x000080E9 + str r0, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + ldr r2, [r4, #0x50] + bl MOD12_022316F8 + ldr r3, _0222F7B8 ; =0x000080E9 + mov r0, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + str r0, [sp, #0xc] + mov r0, #0xc8 + str r0, [sp, #0x10] + mov r0, #3 + str r0, [sp, #0x14] + ldr r0, _0222F7BC ; =0x0000C350 + str r0, [sp, #0x18] + add r0, r4, #0 + ldr r1, [r4, #0x28] + ldr r2, [r4, #0x2c] + add r0, #0xb4 + bl MOD12_022317C8 + add sp, #0x1c + pop {r3, r4, pc} + .align 2, 0 +_0222F7B8: .word 0x000080E9 +_0222F7BC: .word 0x0000C350 + + thumb_func_start MOD12_0222F7C0 +MOD12_0222F7C0: ; 0x0222F7C0 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #0x2c] + bl MOD12_022398D8 + add r0, r4, #0 + add r0, #0xb4 + bl MOD12_0223185C + ldr r1, _0222F7F0 ; =0x000080E9 + mov r2, #0 + str r1, [sp] + ldr r0, [r4, #0x2c] + mvn r2, r2 + add r3, r1, #0 + bl MOD12_02231780 + ldr r0, [r4, #0x2c] + ldr r1, _0222F7F0 ; =0x000080E9 + bl FUN_0200C368 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0222F7F0: .word 0x000080E9 + + thumb_func_start MOD12_0222F7F4 +MOD12_0222F7F4: ; 0x0222F7F4 + push {r3, lr} + sub sp, #0x18 + add r3, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _0222F820 ; =0x000080EA + mov r1, #3 + str r0, [sp, #0x14] + ldr r0, [r3, #0x50] + ldr r2, [r3, #0x28] + ldr r3, [r3, #0x2c] + bl FUN_0200C0DC + add sp, #0x18 + pop {r3, pc} + .align 2, 0 +_0222F820: .word 0x000080EA + + thumb_func_start MOD12_0222F824 +MOD12_0222F824: ; 0x0222F824 + ldr r3, _0222F82C ; =0x0200C369 + ldr r0, [r0, #0x2c] + ldr r1, _0222F830 ; =0x000080EA + bx r3 + .align 2, 0 +_0222F82C: .word 0x0200C369 +_0222F830: .word 0x000080EA + + thumb_func_start MOD12_0222F834 +MOD12_0222F834: ; 0x0222F834 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r1, #0x16 + str r1, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + 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, #0x16 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #0x15 + mov r3, #3 + bl FUN_020068C8 + ldr r0, [r5, #0x30] + mov r1, #1 + bl FUN_02018744 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5, #0x50] + mov r1, #0x2d + mov r2, #0x22 + mov r3, #0x16 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xd0 + str r0, [sp, #8] + ldr r0, [r5, #0x50] + mov r1, #0x2d + mov r2, #0x23 + mov r3, #0x16 + bl FUN_020030E8 + ldr r1, [r5] + ldr r0, _0222F930 ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02025084 + add r4, r0, #0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x16 + str r0, [sp, #4] + mov r1, #1 + ldr r0, [r5, #0x30] + add r2, r1, #0 + mov r3, #0xf + bl FUN_0200CD68 + add r0, r4, #0 + bl FUN_0200CD64 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xe0 + str r0, [sp, #8] + ldr r0, [r5, #0x50] + mov r1, #0x26 + mov r3, #0x16 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x16 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #0x17 + 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, #0x16 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #0x14 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xc0 + str r0, [sp, #8] + ldr r0, [r5, #0x50] + mov r1, #0x2d + mov r2, #0x24 + mov r3, #0x16 + bl FUN_020030E8 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222F930: .word 0x00001988 + + thumb_func_start MOD12_0222F934 +MOD12_0222F934: ; 0x0222F934 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0222F938 +MOD12_0222F938: ; 0x0222F938 + 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, #0x16 + str r0, [sp, #0xc] + ldr r2, [r4, #0x30] + mov r0, #0x2d + mov r1, #0x12 + mov r3, #4 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x16 + str r0, [sp, #0xc] + ldr r2, [r4, #0x30] + mov r0, #0x2d + mov r1, #0x13 + mov r3, #4 + bl FUN_020068C8 + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4, #0x50] + mov r1, #0x2d + mov r2, #0x21 + mov r3, #0x16 + bl FUN_020030E8 + add sp, #0x10 + pop {r4, pc} + + thumb_func_start MOD12_0222F98C +MOD12_0222F98C: ; 0x0222F98C + bx lr + .align 2, 0 + + thumb_func_start MOD12_0222F990 +MOD12_0222F990: ; 0x0222F990 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222F9BC + ldr r0, [r5, #0x50] + bl FUN_020038E4 + cmp r0, #0 + bne _0222F9C0 + ldr r0, [r5] + mov r1, #0x16 + bl MOD12_022314CC + ldr r0, [r5] + bl MOD12_0223150C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222F9C0 +_0222F9BC: + mov r0, #1 + pop {r3, r4, r5, pc} +_0222F9C0: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0222F9C4 +MOD12_0222F9C4: ; 0x0222F9C4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #0 + bne _0222FA10 + ldr r0, [r4] + bl FUN_020832EC + cmp r0, #1 + bne _0222F9DE + mov r1, #2 + b _0222F9E0 +_0222F9DE: + mov r1, #1 +_0222F9E0: + add r0, r4, #0 + add r0, #0xe9 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0xea + strb r1, [r0] + add r0, r4, #0 + add r0, #0xeb + strb r1, [r0] + ldr r0, _0222FA34 ; =0x000004FC + add r1, r4, #0 + add r0, r4, r0 + add r4, #0xe2 + mov r2, #0xd + add r3, r4, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FA2E + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222FA2E +_0222FA10: + ldr r0, _0222FA34 ; =0x000004FC + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _0222FA38 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FA2E + mov r0, #1 + pop {r3, r4, r5, pc} +_0222FA2E: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0222FA34: .word 0x000004FC +_0222FA38: .word 0x00000127 + + thumb_func_start MOD12_0222FA3C +MOD12_0222FA3C: ; 0x0222FA3C + push {r4, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222FA74 + add r0, r3, #0 + add r0, #0xd8 + ldrb r0, [r0] + mov r2, #0 + add r0, r3, r0 + add r0, #0xd4 + ldrb r1, [r0] + add r0, r3, #0 + add r0, #0xe2 + strb r1, [r0] + ldr r0, _0222FA98 ; =0x000004FC + add r1, r3, #0 + add r0, r3, r0 + add r3, #0xe2 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FA92 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FA92 +_0222FA74: + ldr r0, _0222FA98 ; =0x000004FC + ldr r4, [r3] + add r0, r3, r0 + ldr r3, _0222FA9C ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r4, r3] + sub r3, #0xb + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FA92 + mov r0, #1 + pop {r4, pc} +_0222FA92: + mov r0, #0 + pop {r4, pc} + nop +_0222FA98: .word 0x000004FC +_0222FA9C: .word 0x00000127 + + thumb_func_start MOD12_0222FAA0 +MOD12_0222FAA0: ; 0x0222FAA0 + push {r4, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222FAE6 + add r1, r3, #0 + mov r0, #0 + add r1, #0xec + strb r0, [r1] + add r2, r0, #0 + add r1, r3, #0 + sub r2, #0x10 + add r1, #0xed + strb r2, [r1] + add r1, r3, #0 + mov r2, #0x10 + add r1, #0xee + strb r2, [r1] + add r1, r3, #0 + add r1, #0xf0 + strh r0, [r1] + ldr r0, _0222FB08 ; =0x000004FC + add r1, r3, #0 + add r0, r3, r0 + mov r2, #0xe + add r3, #0xe2 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FB04 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FB04 +_0222FAE6: + ldr r0, _0222FB08 ; =0x000004FC + ldr r4, [r3] + add r0, r3, r0 + ldr r3, _0222FB0C ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r4, r3] + sub r3, #0xb + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FB04 + mov r0, #1 + pop {r4, pc} +_0222FB04: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_0222FB08: .word 0x000004FC +_0222FB0C: .word 0x00000127 + + thumb_func_start MOD12_0222FB10 +MOD12_0222FB10: ; 0x0222FB10 + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _0222FB58 ; =0x000004FC + bne _0222FB36 + add r0, r2, r0 + add r1, r2, #0 + mov r2, #0xf + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FB52 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FB52 +_0222FB36: + ldr r3, [r2] + ldr r4, _0222FB5C ; =0x00000127 + add r0, r2, r0 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FB52 + mov r0, #1 + pop {r4, pc} +_0222FB52: + mov r0, #0 + pop {r4, pc} + nop +_0222FB58: .word 0x000004FC +_0222FB5C: .word 0x00000127 + + thumb_func_start MOD12_0222FB60 +MOD12_0222FB60: ; 0x0222FB60 + push {r4, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _0222FBA8 ; =0x000004FC + bne _0222FB86 + add r0, r3, r0 + add r1, r3, #0 + mov r2, #2 + add r3, #0xe2 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FBA2 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FBA2 +_0222FB86: + ldr r4, [r3] + add r0, r3, r0 + ldr r3, _0222FBAC ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r4, r3] + sub r3, #0xb + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FBA2 + mov r0, #1 + pop {r4, pc} +_0222FBA2: + mov r0, #0 + pop {r4, pc} + nop +_0222FBA8: .word 0x000004FC +_0222FBAC: .word 0x00000127 + + thumb_func_start MOD12_0222FBB0 +MOD12_0222FBB0: ; 0x0222FBB0 + push {r4, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _0222FBC2 + cmp r0, #1 + beq _0222FC1C + b _0222FC36 +_0222FBC2: + add r0, r3, #0 + add r0, #0xd8 + ldrb r0, [r0] + cmp r0, #0 + beq _0222FBD6 + cmp r0, #1 + beq _0222FBE0 + cmp r0, #2 + beq _0222FBEA + b _0222FBF4 +_0222FBD6: + add r0, r3, #0 + mov r1, #3 + add r0, #0xe9 + strb r1, [r0] + b _0222FBFC +_0222FBE0: + add r0, r3, #0 + mov r1, #4 + add r0, #0xe9 + strb r1, [r0] + b _0222FBFC +_0222FBEA: + add r0, r3, #0 + mov r1, #5 + add r0, #0xe9 + strb r1, [r0] + b _0222FBFC +_0222FBF4: + add r0, r3, #0 + mov r1, #6 + add r0, #0xe9 + strb r1, [r0] +_0222FBFC: + add r0, r3, #0 + mov r1, #0 + add r0, #0xea + strb r1, [r0] + add r0, r3, #0 + add r0, #0xeb + strb r1, [r0] + add r0, r3, #0 + add r0, #0xe2 + ldrb r1, [r0] + add r0, r3, #0 + add r0, #0xe5 + strb r1, [r0] + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222FC1C: + ldr r0, _0222FC58 ; =0x000004FC + add r1, r3, #0 + add r0, r3, r0 + mov r2, #0xd + add r3, #0xe2 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FC54 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FC54 +_0222FC36: + ldr r0, _0222FC58 ; =0x000004FC + ldr r4, [r3] + add r0, r3, r0 + ldr r3, _0222FC5C ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r4, r3] + sub r3, #0xb + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FC54 + mov r0, #1 + pop {r4, pc} +_0222FC54: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_0222FC58: .word 0x000004FC +_0222FC5C: .word 0x00000127 + + thumb_func_start MOD12_0222FC60 +MOD12_0222FC60: ; 0x0222FC60 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _0222FC76 + cmp r0, #1 + beq _0222FCA0 + cmp r0, #2 + beq _0222FCBC + b _0222FCDE +_0222FC76: + add r1, r5, #0 + add r1, #0xe2 + ldrb r1, [r1] + ldr r0, [r5] + bl FUN_02083308 + add r1, r5, #0 + add r1, #0xe3 + strb r0, [r1] + add r1, r5, #0 + add r1, #0xe2 + ldrb r1, [r1] + ldr r0, [r5] + bl FUN_0208336C + add r1, r5, #0 + add r1, #0xe4 + strb r0, [r1] + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222FCA0: + ldr r0, _0222FCE8 ; =0x000004FC + add r1, r5, #0 + add r0, r5, r0 + add r5, #0xe2 + mov r2, #6 + add r3, r5, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FCE2 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FCE2 +_0222FCBC: + ldr r0, _0222FCE8 ; =0x000004FC + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _0222FCEC ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FCE2 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FCE2 +_0222FCDE: + mov r0, #1 + pop {r3, r4, r5, pc} +_0222FCE2: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0222FCE8: .word 0x000004FC +_0222FCEC: .word 0x00000127 + + thumb_func_start MOD12_0222FCF0 +MOD12_0222FCF0: ; 0x0222FCF0 + ldrh r2, [r1] + cmp r2, #0 + bne _0222FD0A + add r2, r0, #0 + add r2, #0xd8 + ldrb r2, [r2] + add r0, #0xd8 + add r2, r2, #1 + strb r2, [r0] + ldrh r0, [r1] + add r0, r0, #1 + strh r0, [r1] + b _0222FD1C +_0222FD0A: + add r0, #0xd8 + ldrb r0, [r0] + cmp r0, #4 + blo _0222FD16 + mov r0, #1 + bx lr +_0222FD16: + mov r0, #2 + strh r0, [r1, #2] + bx lr +_0222FD1C: + mov r0, #0 + bx lr + + thumb_func_start MOD12_0222FD20 +MOD12_0222FD20: ; 0x0222FD20 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #3 + bhi _0222FDC8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222FD38: ; jump table + .short _0222FD40 - _0222FD38 - 2 ; case 0 + .short _0222FD62 - _0222FD38 - 2 ; case 1 + .short _0222FD84 - _0222FD38 - 2 ; case 2 + .short _0222FDAE - _0222FD38 - 2 ; case 3 +_0222FD40: + add r0, r3, #0 + ldr r1, _0222FDEC ; =0x000006E5 + add r0, #0xf2 + strh r1, [r0] + ldr r0, _0222FDF0 ; =0x000004FC + add r1, r3, #0 + add r0, r3, r0 + mov r2, #0x10 + add r3, #0xe2 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FDE6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FDE6 +_0222FD62: + ldr r0, _0222FDF0 ; =0x000004FC + ldr r5, [r3] + add r0, r3, r0 + ldr r3, _0222FDF4 ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r5, r3] + sub r3, #0xb + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FDE6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FDE6 +_0222FD84: + ldr r1, [r3] + ldr r0, _0222FDF8 ; =0x00000121 + ldrb r0, [r1, r0] + cmp r0, #2 + bne _0222FD92 + mov r1, #7 + b _0222FD94 +_0222FD92: + mov r1, #0 +_0222FD94: + add r0, r3, #0 + add r0, #0xe9 + strb r1, [r0] + add r0, r3, #0 + mov r1, #0 + add r0, #0xea + strb r1, [r0] + add r0, r3, #0 + add r0, #0xeb + strb r1, [r0] + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222FDAE: + ldr r0, _0222FDF0 ; =0x000004FC + add r1, r3, #0 + add r0, r3, r0 + mov r2, #0xd + add r3, #0xe2 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FDE6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FDE6 +_0222FDC8: + ldr r0, _0222FDF0 ; =0x000004FC + ldr r4, [r3] + add r0, r3, r0 + ldr r3, _0222FDF4 ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r4, r3] + sub r3, #0xb + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FDE6 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222FDE6: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0222FDEC: .word 0x000006E5 +_0222FDF0: .word 0x000004FC +_0222FDF4: .word 0x00000127 +_0222FDF8: .word 0x00000121 + + thumb_func_start MOD12_0222FDFC +MOD12_0222FDFC: ; 0x0222FDFC + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _0222FE44 ; =0x000004FC + bne _0222FE22 + add r0, r2, r0 + add r1, r2, #0 + mov r2, #1 + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FE3E + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FE3E +_0222FE22: + ldr r3, [r2] + ldr r4, _0222FE48 ; =0x00000127 + add r0, r2, r0 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FE3E + mov r0, #3 + pop {r4, pc} +_0222FE3E: + mov r0, #0 + pop {r4, pc} + nop +_0222FE44: .word 0x000004FC +_0222FE48: .word 0x00000127 + + thumb_func_start MOD12_0222FE4C +MOD12_0222FE4C: ; 0x0222FE4C + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r1, #1 + lsl r1, r1, #0x1a + ldr r0, [r1] + ldr r2, _022300E0 ; =0xFFFFE0FF + and r0, r2 + str r0, [r1] + ldr r0, _022300E4 ; =0x04001000 + ldr r3, [r0] + and r2, r3 + str r2, [r0] + ldr r3, [r1] + ldr r2, _022300E8 ; =0xFFFF1FFF + and r3, r2 + str r3, [r1] + ldr r3, [r0] + add r1, #0x50 + and r2, r3 + str r2, [r0] + mov r2, #0 + strh r2, [r1] + add r0, #0x50 + strh r2, [r0] + mov r2, #0xa + mov r0, #3 + mov r1, #0x17 + lsl r2, r2, #0x10 + bl FUN_0201681C + ldr r1, _022300EC ; =0x00001BF4 + add r0, r4, #0 + mov r2, #0x17 + bl FUN_02006268 + ldr r2, _022300EC ; =0x00001BF4 + mov r1, #0 + add r5, r0, #0 + bl MI_CpuFill8 + mov r0, #0x17 + bl MOD12_022312D8 + str r0, [r5, #0x10] + add r0, r4, #0 + bl FUN_0200628C + mov r1, #0x5b + str r0, [r5] + lsl r1, r1, #2 + str r5, [r0, r1] + ldr r2, [r5] + mov r3, #1 + add r0, r1, #4 + strb r3, [r2, r0] + ldr r0, [r5] + str r0, [r5, #0x14] + add r0, r5, #0 + bl MOD12_022306F8 + mov r0, #0x17 + bl FUN_02002FD0 + add r1, r5, #0 + add r1, #0xa4 + str r0, [r1] + add r0, r5, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #1 + bl FUN_020038F0 + add r0, r5, #0 + add r0, #0xa4 + mov r2, #2 + ldr r0, [r0] + mov r1, #0 + lsl r2, r2, #8 + mov r3, #0x17 + bl FUN_02003008 + add r0, r5, #0 + add r0, #0xa4 + mov r1, #1 + ldr r0, [r0] + lsl r2, r1, #9 + mov r3, #0x17 + bl FUN_02003008 + add r0, r5, #0 + add r0, #0xa4 + mov r2, #7 + ldr r0, [r0] + mov r1, #2 + lsl r2, r2, #6 + mov r3, #0x17 + bl FUN_02003008 + add r0, r5, #0 + add r0, #0xa4 + mov r2, #2 + ldr r0, [r0] + mov r1, #3 + lsl r2, r2, #8 + mov r3, #0x17 + bl FUN_02003008 + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #8 + bl FUN_02016998 + ldr r1, _022300F0 ; =0x0000110C + str r0, [r5, r1] + add r0, r5, #0 + mov r1, #1 + bl MOD12_0223EC7C + mov r0, #0x17 + bl FUN_02016B94 + str r0, [r5, #0x74] + mov r0, #0x40 + mov r1, #0x17 + bl FUN_0201C24C + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + add r1, r5, #0 + ldr r0, [r5] + add r1, #0x14 + bl MOD12_0223B49C + ldr r1, _022300F4 ; =0x00001130 + str r0, [r5, r1] + ldr r0, [r5, #0x74] + bl MOD12_02230574 + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + mov r0, #2 + mov r1, #0x17 + bl FUN_02002C50 + mov r0, #0x17 + bl FUN_0200BB14 + ldr r1, _022300F8 ; =0x02244C18 + ldr r2, _022300FC ; =0x02244BD4 + mov r3, #0x20 + str r0, [r5, #0x6c] + bl FUN_0200BB6C + ldr r1, _02230100 ; =0x00100010 + mov r0, #1 + bl FUN_02008D44 + mov r0, #1 + bl FUN_02008DDC + ldr r0, [r5, #0x6c] + bl FUN_0200BB34 + str r0, [r5, #0x70] + ldr r0, [r5, #0x6c] + ldr r1, [r5, #0x70] + mov r2, #0x80 + bl FUN_0200BBF0 + ldr r0, [r5, #0x6c] + ldr r1, [r5, #0x70] + ldr r2, _02230104 ; =0x02244C00 + bl FUN_0200BF60 + ldr r0, [r5, #0x6c] + bl FUN_0200BB68 + mov r2, #1 + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + mov r0, #0x17 + bl FUN_02006D98 + str r0, [r5, #0x58] + bl MOD12_022306F0 + mov r0, #0 + mov r1, #0x1a + mov r2, #0xc1 + mov r3, #0x17 + bl FUN_0200A86C + add r1, r5, #0 + add r1, #0x98 + str r0, [r1] + mov r0, #0x17 + bl FUN_0200AA80 + add r1, r5, #0 + add r1, #0x9c + str r0, [r1] + mov r0, #5 + lsl r0, r0, #6 + mov r1, #0x17 + bl FUN_020219F4 + add r1, r5, #0 + add r1, #0xa0 + str r0, [r1] + mov r0, #9 + mov r1, #0x17 + bl FUN_02011744 + add r1, r5, #0 + add r1, #0xa8 + str r0, [r1] + add r0, r5, #0 + bl MOD12_022308F0 + add r0, r5, #0 + bl MOD12_022309D0 + add r0, r5, #0 + bl MOD12_022306A4 + add r0, r5, #0 + bl MOD12_02230750 + add r0, r5, #0 + bl MOD12_02230880 + ldr r0, _022300F4 ; =0x00001130 + mov r1, #0 + ldr r0, [r5, r0] + mov r2, #1 + add r3, r1, #0 + bl MOD12_0223B758 + add r0, r5, #0 + bl MOD12_0223C248 + add r0, r5, #0 + add r0, #0x14 + bl MOD12_0223D0CC + add r0, r5, #0 + bl MOD12_022309D8 + add r0, r5, #0 + bl MOD12_0223CAF8 + add r0, r5, #0 + bl MOD12_0223D55C + bl FUN_02033E74 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #0x17 + str r1, [sp, #8] + mov r1, #0x11 + mov r2, #0x25 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, _02230108 ; =MOD12_02230520 + ldr r2, _0223010C ; =0x00013880 + add r1, r5, #0 + bl FUN_0200CA44 + str r0, [r5, #4] + ldr r0, _02230110 ; =0x00001154 + mov r1, #1 + strb r1, [r5, r0] + bl FUN_0201E788 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + ldr r1, _02230114 ; =0x0000046F + mov r0, #6 + mov r2, #1 + bl FUN_0200433C + ldr r1, [r5] + ldr r0, _02230118 ; =0x00000171 + ldrb r0, [r1, r0] + bl FUN_020833D4 + mov r1, #0x39 + add r2, r1, #0 + ldr r0, _0223011C ; =0x04000050 + sub r2, #0x3f + bl G2x_SetBlendBrightness_ + ldr r0, _02230120 ; =0x000006E5 + bl FUN_020054C8 + ldr r0, _02230124 ; =MOD12_022303C0 + add r1, r5, #0 + bl FUN_02015F10 + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_022300E0: .word 0xFFFFE0FF +_022300E4: .word 0x04001000 +_022300E8: .word 0xFFFF1FFF +_022300EC: .word 0x00001BF4 +_022300F0: .word 0x0000110C +_022300F4: .word 0x00001130 +_022300F8: .word 0x02244C18 +_022300FC: .word 0x02244BD4 +_02230100: .word 0x00100010 +_02230104: .word 0x02244C00 +_02230108: .word MOD12_02230520 +_0223010C: .word 0x00013880 +_02230110: .word 0x00001154 +_02230114: .word 0x0000046F +_02230118: .word 0x00000171 +_0223011C: .word 0x04000050 +_02230120: .word 0x000006E5 +_02230124: .word MOD12_022303C0 + + thumb_func_start MOD12_02230128 +MOD12_02230128: ; 0x02230128 + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02082878 + ldr r0, [r5] + cmp r0, #0 + beq _0223014A + cmp r0, #1 + beq _02230158 + cmp r0, #2 + beq _0223020E + b _0223021C +_0223014A: + bl FUN_0200E308 + cmp r0, #1 + bne _0223021C + mov r0, #1 + str r0, [r5] + b _0223021C +_02230158: + ldr r0, [r4] + bl FUN_020828BC + cmp r0, #1 + bne _022301CA + ldr r2, _02230224 ; =0x00001152 + ldr r1, _02230228 ; =0x00001BE8 + ldrh r2, [r4, r2] + add r0, r4, #0 + add r1, r4, r1 + lsl r3, r2, #2 + ldr r2, _0223022C ; =0x02244C60 + ldr r2, [r2, r3] + blx r2 + sub r1, r0, #1 + cmp r1, #1 + bhi _0223019C + cmp r0, #1 + bne _02230186 + ldr r0, _02230224 ; =0x00001152 + ldrh r1, [r4, r0] + add r1, r1, #1 + b _0223018C +_02230186: + ldr r0, _02230230 ; =0x00001BEA + ldrh r1, [r4, r0] + ldr r0, _02230224 ; =0x00001152 +_0223018C: + strh r1, [r4, r0] + ldr r0, _02230228 ; =0x00001BE8 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + b _022301CA +_0223019C: + cmp r0, #3 + bne _022301CA + mov r0, #2 + str r0, [r5] + ldr r0, _02230228 ; =0x00001BE8 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x17 + mov r1, #0x1e + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + b _0223021C +_022301CA: + ldr r0, _02230234 ; =0x00001158 + add r0, r4, r0 + bl MOD12_022410A0 + ldr r0, _02230234 ; =0x00001158 + add r1, r4, #0 + add r0, r4, r0 + bl MOD12_02241114 + ldr r0, _02230238 ; =0x00001BF0 + ldrb r1, [r4, r0] + cmp r1, #1 + bne _0223021C + mov r1, #2 + sub r0, #8 + str r1, [r5] + add r0, r4, r0 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x17 + mov r1, #0x1e + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + b _0223021C +_0223020E: + bl FUN_0200E308 + cmp r0, #1 + bne _0223021C + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_0223021C: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_02230224: .word 0x00001152 +_02230228: .word 0x00001BE8 +_0223022C: .word 0x02244C60 +_02230230: .word 0x00001BEA +_02230234: .word 0x00001158 +_02230238: .word 0x00001BF0 + + thumb_func_start MOD12_0223023C +MOD12_0223023C: ; 0x0223023C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_020133C8 + cmp r0, #0 + beq _02230254 + bl ErrorHandling +_02230254: + add r0, r4, #0 + bl MOD12_02230A40 + bl FUN_02012EAC + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223CA1C + add r0, r4, #0 + bl MOD12_0223CB18 + add r0, r4, #0 + bl MOD12_0223D578 + add r0, r4, #0 + bl MOD12_0223DCC0 + add r0, r4, #0 + bl MOD12_02230808 + add r0, r4, #0 + bl MOD12_022308EC + add r0, r4, #0 + bl MOD12_022309CC + add r0, r4, #0 + bl MOD12_022309D4 + add r5, r4, #0 + mov r6, #0 + add r5, #0x78 +_02230296: + add r0, r5, #0 + bl FUN_02019178 + add r6, r6, #1 + add r5, #0x10 + cmp r6, #2 + blt _02230296 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4, #0x74] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x74] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x74] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0x74] + bl MOD12_0223B474 + ldr r0, _022303B0 ; =0x00001130 + ldr r0, [r4, r0] + bl MOD12_0223B4C0 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl FUN_0200C398 + ldr r0, [r4, #0x6c] + bl FUN_0200BD04 + bl FUN_0201C29C + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223C300 + ldr r0, [r4, #0x58] + bl FUN_020072E8 + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + bl FUN_020117BC + mov r0, #2 + bl FUN_02002CF8 + ldr r0, _022303B4 ; =0x0000110C + ldr r0, [r4, r0] + bl FUN_02016A18 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #0 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #1 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #2 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #3 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + bl FUN_02002FEC + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + bl FUN_02021A20 + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + bl FUN_0200AB18 + add r0, r4, #0 + add r0, #0x98 + ldr r0, [r0] + bl FUN_0200A8B8 + ldr r0, [r4, #0x74] + bl FUN_02016A18 + ldr r0, [r4, #4] + bl FUN_0200CAB4 + ldr r0, [r4, #0x10] + bl MOD12_02231378 + bl FUN_0201CD04 + add r0, r7, #0 + bl FUN_0200627C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + mov r0, #0x17 + bl FUN_020168D0 + bl FUN_02083404 + bl FUN_02033ED0 + ldr r0, _022303B8 ; =SDK_MODULE_08_ID + bl UnloadOverlayByID + ldr r0, _022303BC ; =SDK_MODULE_17_ID + bl UnloadOverlayByID + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022303B0: .word 0x00001130 +_022303B4: .word 0x0000110C +_022303B8: .word SDK_MODULE_08_ID +_022303BC: .word SDK_MODULE_17_ID + + thumb_func_start MOD12_022303C0 +MOD12_022303C0: ; 0x022303C0 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r0, _02230494 ; =0x00001134 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _02230450 + add r1, r0, #4 + add r3, r4, r1 + ldr r2, [r4, r1] + mov r5, #0 + ldr r1, [r3, #4] + add r2, r2, #1 + adc r1, r5 + add r0, r0, #4 + str r2, [r4, r0] + mov r0, #7 + str r1, [r3, #4] + bl FUN_02004F64 + ldr r1, _02230498 ; =0x00000AF8 + ldr r1, [r4, r1] + mul r0, r1 + ldr r1, _0223049C ; =0x00001388 + add r0, r0, r1 + lsl r1, r1, #1 + bl _u32_div_f + ldr r7, _022304A0 ; =0x0000114C + add r5, r0, #1 + add r1, r7, #0 + str r0, [r4, r7] + sub r1, #0x14 + ldr r2, [r4, r1] + add r1, r7, #0 + sub r1, #0x10 + add r0, r5, #0 + ldr r6, [r4, r1] + mov r3, #0 + add r1, r3, #0 + eor r1, r6 + eor r0, r2 + orr r0, r1 + beq _0223044C + sub r0, r7, #4 + ldr r0, [r4, r0] + cmp r0, #0x12 + bhi _02230430 + mov ip, r3 + mov r0, ip + sub r1, r5, r2 + sbc r0, r6 + mov r6, #0 + mov r2, #1 + sub r1, r2, r1 + sbc r6, r0 + bhs _02230440 +_02230430: + ldr r1, _022304A4 ; =0x00001138 + str r5, [r4, r1] + add r0, r1, #4 + str r3, [r4, r0] + mov r0, #0 + add r1, #0x10 + str r0, [r4, r1] + b _02230450 +_02230440: + sub r0, r7, #4 + ldr r0, [r4, r0] + add r1, r0, #1 + sub r0, r7, #4 + str r1, [r4, r0] + b _02230450 +_0223044C: + sub r0, r7, #4 + str r3, [r4, r0] +_02230450: + ldr r0, [r4, #0x58] + bl FUN_020081C4 + mov r6, #0 + add r5, r4, #0 +_0223045A: + ldr r0, [r5, #0x18] + cmp r0, #0 + beq _02230464 + bl FUN_021DD58C +_02230464: + add r6, r6, #1 + add r5, #0x10 + cmp r6, #4 + blt _0223045A + bl FUN_0201C30C + bl FUN_0200BC30 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + bl FUN_0200372C + ldr r0, [r4, #0x74] + bl FUN_0201AB60 + ldr r3, _022304A8 ; =0x027E0000 + ldr r1, _022304AC ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r3, r4, r5, r6, r7, pc} + nop +_02230494: .word 0x00001134 +_02230498: .word 0x00000AF8 +_0223049C: .word 0x00001388 +_022304A0: .word 0x0000114C +_022304A4: .word 0x00001138 +_022304A8: .word 0x027E0000 +_022304AC: .word 0x00003FF8 + + thumb_func_start MOD12_022304B0 +MOD12_022304B0: ; 0x022304B0 + push {r3, r4, r5, lr} + ldr r1, _0223051C ; =0x0000110C + add r5, r0, r1 + ldrb r1, [r5, #0x11] + cmp r1, #0 + beq _02230518 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #0 + bl FUN_02003204 + add r4, r0, #0 + mov r2, #2 + ldr r0, [r5] + add r1, r4, #0 + lsl r2, r2, #8 + bl MIi_CpuCopy16 + ldrb r0, [r5, #0x10] + cmp r0, #1 + bne _02230518 + ldrh r0, [r5, #0xe] + add r1, r4, #0 + str r0, [sp] + ldrh r3, [r5, #8] + ldrh r2, [r5, #6] + ldr r0, [r5] + asr r3, r3, #8 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02003A30 + ldrh r3, [r5, #0xa] + ldrh r1, [r5, #8] + cmp r1, r3 + bne _022304FE + mov r0, #0 + strb r0, [r5, #0x10] + pop {r3, r4, r5, pc} +_022304FE: + mov r0, #0xc + ldrsh r2, [r5, r0] + add r0, r1, r2 + cmp r2, #0 + ble _0223050C + cmp r0, r3 + bge _02230514 +_0223050C: + cmp r2, #0 + bge _02230516 + cmp r0, r3 + bgt _02230516 +_02230514: + add r0, r3, #0 +_02230516: + strh r0, [r5, #8] +_02230518: + pop {r3, r4, r5, pc} + nop +_0223051C: .word 0x0000110C + + thumb_func_start MOD12_02230520 +MOD12_02230520: ; 0x02230520 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD12_022304B0 + ldr r0, _0223056C ; =0x00001154 + ldrb r0, [r6, r0] + cmp r0, #1 + bne _02230562 + ldr r0, [r6, #0x58] + bl FUN_02006ED4 + mov r4, #0 + add r5, r6, #0 +_0223053C: + ldr r0, [r5, #0x18] + cmp r0, #0 + beq _02230546 + bl FUN_021DD518 +_02230546: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #4 + blt _0223053C + bl FUN_02215A44 + ldr r0, [r6, #0x70] + bl FUN_0200BC1C + bl FUN_0200BC38 + ldr r0, _02230570 ; =0x04000540 + mov r1, #1 + str r1, [r0] +_02230562: + ldr r1, [r6, #0x74] + mov r0, #0x17 + bl FUN_020335F0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223056C: .word 0x00001154 +_02230570: .word 0x04000540 + + thumb_func_start MOD12_02230574 +MOD12_02230574: ; 0x02230574 + push {r4, r5, lr} + sub sp, #0x8c + add r4, r0, #0 + bl FUN_0201E6D8 + ldr r5, _02230694 ; =0x02244C38 + add r3, sp, #0x10 + mov r2, #5 +_02230584: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02230584 + 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, _02230698 ; =0x02244BC4 + 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, _0223069C ; =0x02244C94 + add r3, sp, #0x38 + mov r2, #0xa +_022305E4: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022305E4 + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + add r2, sp, #0x38 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #1 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + add r2, sp, #0x54 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #3 + add r2, sp, #0x70 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #3 + add r3, r2, #0 + bl FUN_020179E0 + mov r1, #3 + add r0, r4, #0 + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + ldr r1, _022306A0 ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + mov r0, #2 + orr r0, r2 + strh r0, [r1] + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + add r0, r4, #0 + bl MOD12_0223B41C + add sp, #0x8c + pop {r4, r5, pc} + .align 2, 0 +_02230694: .word 0x02244C38 +_02230698: .word 0x02244BC4 +_0223069C: .word 0x02244C94 +_022306A0: .word 0x04000008 + + thumb_func_start MOD12_022306A4 +MOD12_022306A4: ; 0x022306A4 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0x13 + 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, #0x1f + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r4, #0x74] + add r1, #0x78 + mov r2, #1 + mov r3, #2 + bl FUN_02019064 + mov r0, #0xb + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r3, #2 + str r3, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x1f + str r0, [sp, #0x10] + ldr r0, [r4, #0x74] + add r4, #0x88 + add r1, r4, #0 + mov r2, #1 + bl FUN_02019064 + add sp, #0x14 + pop {r3, r4, pc} + + thumb_func_start MOD12_022306F0 +MOD12_022306F0: ; 0x022306F0 + ldr r3, _022306F4 ; =0x02012CC9 + bx r3 + .align 2, 0 +_022306F4: .word 0x02012CC9 + + thumb_func_start MOD12_022306F8 +MOD12_022306F8: ; 0x022306F8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + cmp r0, #0 + bne _02230706 + bl ErrorHandling +_02230706: + mov r4, #0xad + lsl r4, r4, #4 + mov r1, #0 + mov r2, #3 + add r6, r4, #5 +_02230710: + sub r3, r2, r1 + lsl r3, r3, #0x18 + add r0, r5, r1 + lsr r3, r3, #0x18 + strb r3, [r0, r4] + add r1, r1, #1 + strb r3, [r0, r6] + cmp r1, #4 + blt _02230710 + add r0, r5, #0 + bl MOD12_0223EE80 + mov r4, #0 + ldr r7, _0223074C ; =0x00000AB4 + add r6, r4, #0 +_0223072E: + ldr r0, [r5] + mov r1, #5 + ldr r0, [r0, r6] + mov r2, #0 + bl FUN_020671BC + bl MOD12_0223EE70 + add r1, r5, r4 + add r4, r4, #1 + add r6, r6, #4 + strb r0, [r1, r7] + cmp r4, #4 + blt _0223072E + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223074C: .word 0x00000AB4 + + thumb_func_start MOD12_02230750 +MOD12_02230750: ; 0x02230750 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, _02230804 ; =0x000080E9 + mov r1, #2 + str r0, [sp, #0x14] + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + ldr r2, [r4, #0x6c] + ldr r3, [r4, #0x70] + bl FUN_0200C0DC + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223C320 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223C450 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223C668 + add r0, r4, #0 + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x70] + add r0, #0x14 + bl MOD12_0223C6DC + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223C734 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223CA44 + add r0, r4, #0 + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x70] + add r0, #0x14 + bl MOD12_0223CAB8 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223E2B8 + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x70] + add r0, r4, #0 + bl MOD12_0223E32C + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223CB54 + add r0, r4, #0 + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x70] + add r0, #0x14 + bl MOD12_0223CBC8 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223CD40 + add r0, r4, #0 + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x70] + add r0, #0x14 + bl MOD12_0223CDB4 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223CDBC + add sp, #0x18 + pop {r4, pc} + .align 2, 0 +_02230804: .word 0x000080E9 + + thumb_func_start MOD12_02230808 +MOD12_02230808: ; 0x02230808 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x70] + bl MOD12_0223C324 + ldr r0, [r4, #0x70] + bl MOD12_0223C4E8 + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223C640 + ldr r0, [r4, #0x70] + bl MOD12_0223C6B8 + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223C710 + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223C878 + ldr r0, [r4, #0x70] + bl MOD12_0223CA94 + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223CADC + add r0, r4, #0 + bl MOD12_0223E38C + ldr r0, [r4, #0x70] + bl MOD12_0223E308 + ldr r0, [r4, #0x70] + bl MOD12_0223CBA4 + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223CC70 + ldr r0, [r4, #0x70] + bl MOD12_0223CD90 + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223CDB8 + ldr r0, [r4, #0x70] + bl MOD12_0223CE0C + ldr r0, [r4, #0x70] + ldr r1, _0223087C ; =0x000080E9 + bl FUN_0200C368 + pop {r4, pc} + .align 2, 0 +_0223087C: .word 0x000080E9 + + thumb_func_start MOD12_02230880 +MOD12_02230880: ; 0x02230880 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _022308E0 ; =0x000080EA + mov r1, #3 + str r0, [sp, #0x14] + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + ldr r2, [r4, #0x6c] + ldr r3, [r4, #0x70] + bl FUN_0200C0DC + mov r0, #0x2e + str r0, [sp] + mov r0, #9 + 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, _022308E4 ; =0x000080EB + mov r1, #3 + str r0, [sp, #0x14] + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + ldr r2, [r4, #0x6c] + ldr r3, [r4, #0x70] + bl FUN_0200C0DC + ldr r0, _022308E8 ; =0x00001130 + ldr r0, [r4, r0] + bl MOD12_0223B4E0 + add sp, #0x18 + pop {r4, pc} + .align 2, 0 +_022308E0: .word 0x000080EA +_022308E4: .word 0x000080EB +_022308E8: .word 0x00001130 + + thumb_func_start MOD12_022308EC +MOD12_022308EC: ; 0x022308EC + bx lr + .align 2, 0 + + thumb_func_start MOD12_022308F0 +MOD12_022308F0: ; 0x022308F0 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x17 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + mov r0, #0x2d + mov r1, #0xd + 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, #0x17 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + mov r0, #0x2d + mov r1, #0xe + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #0x2d + mov r2, #0x1f + mov r3, #0x17 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xd0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #0x2d + mov r2, #0x23 + mov r3, #0x17 + bl FUN_020030E8 + ldr r1, [r5] + ldr r0, _022309C4 ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02025084 + add r4, r0, #0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x17 + str r0, [sp, #4] + mov r1, #1 + ldr r0, [r5, #0x74] + add r2, r1, #0 + mov r3, #0xf + bl FUN_0200CD68 + add r0, r4, #0 + bl FUN_0200CD64 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xe0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #0x26 + mov r3, #0x17 + bl FUN_020030E8 + add r0, r5, #0 + bl MOD12_0223E734 + add r0, r5, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #0 + bl FUN_020031FC + ldr r1, _022309C8 ; =0x0000110C + mov r2, #2 + ldr r1, [r5, r1] + lsl r2, r2, #8 + bl MIi_CpuCopy16 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_022309C4: .word 0x00001988 +_022309C8: .word 0x0000110C + + thumb_func_start MOD12_022309CC +MOD12_022309CC: ; 0x022309CC + bx lr + .align 2, 0 + + thumb_func_start MOD12_022309D0 +MOD12_022309D0: ; 0x022309D0 + bx lr + .align 2, 0 + + thumb_func_start MOD12_022309D4 +MOD12_022309D4: ; 0x022309D4 + bx lr + .align 2, 0 + + thumb_func_start MOD12_022309D8 +MOD12_022309D8: ; 0x022309D8 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _022309E8 + bl ErrorHandling +_022309E8: + mov r1, #0x12 + mov r0, #0x17 + lsl r1, r1, #0xa + bl FUN_02016998 + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + mov r0, #0x17 + str r0, [sp, #4] + mov r3, #0x12 + ldr r0, _02230A38 ; =MOD12_02230A60 + ldr r1, _02230A3C ; =MOD12_02230A7C + lsl r3, r3, #0xa + bl FUN_02012CDC + str r0, [r4, #0xc] + 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, #3 + mov r2, #0x17 + bl FUN_0201318C + add r1, r0, #0 + ldr r0, [r4, #0xc] + mov r2, #0xa + mov r3, #1 + bl FUN_02013194 + add sp, #8 + pop {r4, pc} + nop +_02230A38: .word MOD12_02230A60 +_02230A3C: .word MOD12_02230A7C + + thumb_func_start MOD12_02230A40 +MOD12_02230A40: ; 0x02230A40 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_020133E8 + add r5, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_02012DE4 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0xc] + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_02230A60 +MOD12_02230A60: ; 0x02230A60 + push {r4, lr} + ldr r3, _02230A78 ; =0x021064B8 + mov r2, #0 + ldr r3, [r3] + blx r3 + add r4, r0, #0 + bl FUN_0201327C + lsl r0, r4, #0x10 + lsr r0, r0, #0xd + pop {r4, pc} + nop +_02230A78: .word 0x021064B8 + + thumb_func_start MOD12_02230A7C +MOD12_02230A7C: ; 0x02230A7C + push {r4, lr} + ldr r3, _02230A94 ; =0x021064C0 + mov r2, #0 + ldr r3, [r3] + blx r3 + add r4, r0, #0 + bl FUN_020132BC + lsl r0, r4, #0x10 + lsr r0, r0, #0xd + pop {r4, pc} + nop +_02230A94: .word 0x021064C0 + + thumb_func_start MOD12_02230A98 +MOD12_02230A98: ; 0x02230A98 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _02230AE4 ; =0x00001158 + bne _02230AC2 + mov r3, #0xad + lsl r3, r3, #4 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0xa + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230ADE + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230ADE +_02230AC2: + ldr r4, _02230AE8 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _02230ADE + mov r0, #1 + pop {r3, r4, r5, pc} +_02230ADE: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02230AE4: .word 0x00001158 +_02230AE8: .word 0x00000127 + + thumb_func_start MOD12_02230AEC +MOD12_02230AEC: ; 0x02230AEC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02230AFE + cmp r0, #1 + beq _02230B52 + b _02230B74 +_02230AFE: + ldr r0, _02230B7C ; =0x00000B37 + mov r2, #0 + strb r2, [r5, r0] + add r1, r0, #1 + strb r2, [r5, r1] + ldr r2, [r5] + ldr r1, _02230B80 ; =0x00000123 + sub r0, r0, #7 + ldrb r2, [r2, r1] + strb r2, [r5, r0] + ldr r2, [r5] + sub r0, r1, #3 + ldrb r0, [r2, r0] + bl MOD12_0223E464 + ldr r1, _02230B84 ; =0x00000B34 + strb r0, [r5, r1] + ldr r0, [r5] + bl FUN_020832EC + cmp r0, #1 + bne _02230B2E + mov r1, #2 + b _02230B30 +_02230B2E: + mov r1, #1 +_02230B30: + ldr r0, _02230B88 ; =0x00000B36 + mov r3, #0xb + strb r1, [r5, r0] + ldr r0, _02230B8C ; =0x00001158 + lsl r3, r3, #8 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #9 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230B78 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230B78 +_02230B52: + ldr r0, _02230B8C ; =0x00001158 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _02230B90 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _02230B78 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230B78 +_02230B74: + mov r0, #1 + pop {r3, r4, r5, pc} +_02230B78: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02230B7C: .word 0x00000B37 +_02230B80: .word 0x00000123 +_02230B84: .word 0x00000B34 +_02230B88: .word 0x00000B36 +_02230B8C: .word 0x00001158 +_02230B90: .word 0x00000127 + + thumb_func_start MOD12_02230B94 +MOD12_02230B94: ; 0x02230B94 + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _02230BDC ; =0x00001158 + bne _02230BBA + add r0, r2, r0 + add r1, r2, #0 + mov r2, #3 + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _02230BD6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230BD6 +_02230BBA: + ldr r3, [r2] + ldr r4, _02230BE0 ; =0x00000127 + add r0, r2, r0 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02230BD6 + mov r0, #1 + pop {r4, pc} +_02230BD6: + mov r0, #0 + pop {r4, pc} + nop +_02230BDC: .word 0x00001158 +_02230BE0: .word 0x00000127 + + thumb_func_start MOD12_02230BE4 +MOD12_02230BE4: ; 0x02230BE4 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #4 + bls _02230BF2 + b _02230D7C +_02230BF2: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02230BFE: ; jump table + .short _02230C08 - _02230BFE - 2 ; case 0 + .short _02230CFE - _02230BFE - 2 ; case 1 + .short _02230D1C - _02230BFE - 2 ; case 2 + .short _02230D3E - _02230BFE - 2 ; case 3 + .short _02230D5A - _02230BFE - 2 ; case 4 +_02230C08: + mov r0, #0x12 + ldr r1, [r4] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _02230C18 + cmp r0, #1 + bne _02230C1C +_02230C18: + mov r1, #0 + b _02230C1E +_02230C1C: + mov r1, #1 +_02230C1E: + mov r0, #0xc + add r6, r1, #0 + mul r6, r0 + ldr r0, _02230D84 ; =0x02244BE8 + add r1, r0, r6 + mov r0, #0xab + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r0, _02230D88 ; =0x02244BEA + ldrh r7, [r0, r6] + ldr r0, _02230D8C ; =0x0112A880 + add r1, r7, #0 + bl _s32_div_f + ldr r1, _02230D90 ; =0x00000AE8 + mov r3, #0 + str r0, [r4, r1] + ldr r0, [r4, r1] + ldr r2, _02230D94 ; =0x00001388 + lsl r0, r0, #4 + mov ip, r3 + mov r1, ip + add r0, r0, r2 + adc r1, r3 + lsl r2, r2, #1 + bl _ll_udiv + ldr r1, _02230D98 ; =0x00000AEC + str r0, [r4, r1] + add r0, r1, #0 + add r0, #0x10 + strh r7, [r4, r0] + sub r0, r1, #4 + ldr r2, [r4, r0] + ldr r0, _02230D9C ; =0x02244BEE + add r3, r2, #0 + ldrb r0, [r0, r6] + mul r3, r0 + add r0, r1, #4 + str r3, [r4, r0] + sub r0, r1, #4 + ldr r2, [r4, r0] + ldr r0, _02230DA0 ; =0x02244BEF + add r3, r2, #0 + ldrb r0, [r0, r6] + mul r3, r0 + add r0, r1, #0 + add r0, #8 + str r3, [r4, r0] + sub r0, r1, #4 + ldr r0, [r4, r0] + mov r1, #0x30 + bl _u32_div_f + ldr r1, _02230DA4 ; =0x00000AF8 + str r0, [r4, r1] + ldr r0, _02230DA8 ; =0x02244BED + ldrb r2, [r0, r6] + add r0, r1, #6 + strb r2, [r4, r0] + ldr r0, _02230D84 ; =0x02244BE8 + ldrh r2, [r0, r6] + add r0, r1, #0 + sub r0, #0x14 + str r2, [r4, r0] + add r0, r1, #0 + sub r0, #0x48 + ldr r0, [r4, r0] + add r2, r1, #0 + ldrh r3, [r0] + add r2, #0x2c + strh r3, [r4, r2] + add r2, r1, #0 + ldrh r3, [r0, #2] + add r2, #0x2e + strh r3, [r4, r2] + add r2, r1, #0 + ldrh r3, [r0, #4] + add r2, #0x30 + strh r3, [r4, r2] + add r2, r1, #0 + ldrh r3, [r0, #6] + add r2, #0x32 + strh r3, [r4, r2] + add r2, r1, #0 + ldrh r3, [r0, #8] + add r2, #0x34 + strh r3, [r4, r2] + ldrh r2, [r0, #0xa] + add r0, r1, #0 + add r0, #0x36 + strh r2, [r4, r0] + add r0, r1, #0 + sub r0, #0x10 + ldr r2, [r4, r0] + add r0, r1, #0 + add r0, #0x10 + str r2, [r4, r0] + add r0, r1, #0 + sub r0, #0xc + ldr r2, [r4, r0] + add r0, r1, #0 + add r0, #0x14 + str r2, [r4, r0] + add r0, r1, #4 + ldrh r0, [r4, r0] + add r1, #0x18 + strh r0, [r4, r1] + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02230D80 +_02230CFE: + ldr r0, _02230DAC ; =0x00001158 + mov r3, #0xad + lsl r3, r3, #4 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #0xa + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230D80 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02230D80 +_02230D1C: + ldr r0, _02230DAC ; =0x00001158 + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _02230DB0 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02230D80 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02230D80 +_02230D3E: + ldr r0, _02230DAC ; =0x00001158 + mov r2, #0xb + lsl r3, r2, #8 + add r0, r4, r0 + add r1, r4, #0 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230D80 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02230D80 +_02230D5A: + ldr r0, _02230DAC ; =0x00001158 + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _02230DB0 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02230D80 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02230D80 +_02230D7C: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02230D80: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02230D84: .word 0x02244BE8 +_02230D88: .word 0x02244BEA +_02230D8C: .word 0x0112A880 +_02230D90: .word 0x00000AE8 +_02230D94: .word 0x00001388 +_02230D98: .word 0x00000AEC +_02230D9C: .word 0x02244BEE +_02230DA0: .word 0x02244BEF +_02230DA4: .word 0x00000AF8 +_02230DA8: .word 0x02244BED +_02230DAC: .word 0x00001158 +_02230DB0: .word 0x00000127 + + thumb_func_start MOD12_02230DB4 +MOD12_02230DB4: ; 0x02230DB4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldrh r0, [r1] + str r1, [sp] + cmp r0, #0 + bne _02230E0E + ldr r1, _02230E18 ; =0x00000AD4 + mov r4, #0 + ldrb r0, [r5, r1] + add r2, r5, r0 + sub r0, r1, #4 + ldrb r0, [r2, r0] + add r1, #0x2c + strb r0, [r5, r1] + ldr r0, _02230E1C ; =0x00000AD5 + add r1, r0, #0 + add r1, #0x2d +_02230DD6: + add r3, r5, r4 + ldrb r2, [r3, r0] + add r4, r4, #1 + cmp r4, #4 + strb r2, [r3, r1] + blt _02230DD6 + ldr r1, [r5] + ldr r0, _02230E20 ; =0x00000127 + ldrb r6, [r1, r0] + cmp r6, #4 + bge _02230E02 + lsl r0, r6, #2 + ldr r7, _02230E24 ; =0x00000B14 + add r4, r5, r0 +_02230DF2: + ldr r0, [r5] + bl FUN_02082878 + str r0, [r4, r7] + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _02230DF2 +_02230E02: + ldr r0, [sp] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp] + strh r1, [r0] + b _02230E12 +_02230E0E: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02230E12: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02230E18: .word 0x00000AD4 +_02230E1C: .word 0x00000AD5 +_02230E20: .word 0x00000127 +_02230E24: .word 0x00000B14 + + thumb_func_start MOD12_02230E28 +MOD12_02230E28: ; 0x02230E28 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _02230E74 ; =0x00001158 + bne _02230E52 + mov r3, #0xb + lsl r3, r3, #8 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #7 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230E6E + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230E6E +_02230E52: + ldr r4, _02230E78 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _02230E6E + mov r0, #1 + pop {r3, r4, r5, pc} +_02230E6E: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02230E74: .word 0x00001158 +_02230E78: .word 0x00000127 + + thumb_func_start MOD12_02230E7C +MOD12_02230E7C: ; 0x02230E7C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _02230EC8 ; =0x00001158 + bne _02230EA6 + mov r3, #0xb + lsl r3, r3, #8 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #5 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230EC2 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230EC2 +_02230EA6: + ldr r4, _02230ECC ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _02230EC2 + mov r0, #1 + pop {r3, r4, r5, pc} +_02230EC2: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02230EC8: .word 0x00001158 +_02230ECC: .word 0x00000127 + + thumb_func_start MOD12_02230ED0 +MOD12_02230ED0: ; 0x02230ED0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _02230F1C ; =0x00001158 + bne _02230EFA + mov r3, #0xb + lsl r3, r3, #8 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #8 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230F16 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230F16 +_02230EFA: + ldr r4, _02230F20 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _02230F16 + mov r0, #1 + pop {r3, r4, r5, pc} +_02230F16: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02230F1C: .word 0x00001158 +_02230F20: .word 0x00000127 + + thumb_func_start MOD12_02230F24 +MOD12_02230F24: ; 0x02230F24 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _02230F76 + ldr r1, _02230F98 ; =0x00000AD4 + ldrb r0, [r5, r1] + cmp r0, #3 + blo _02230F3C + mov r0, #1 + pop {r3, r4, r5, pc} +_02230F3C: + add r0, r1, #2 + ldrb r0, [r5, r0] + add r1, #0x5c + strb r0, [r5, r1] + mov r0, #0x12 + ldr r1, [r5] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + bl MOD12_0223E464 + ldr r3, _02230F9C ; =0x00000B34 + mov r1, #0 + strb r0, [r5, r3] + add r0, r3, #2 + strb r1, [r5, r0] + ldr r0, _02230FA0 ; =0x00001158 + sub r3, #0x34 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #6 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230F94 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230F94 +_02230F76: + ldr r4, _02230FA4 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + ldr r0, _02230FA0 ; =0x00001158 + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _02230F94 + mov r0, #1 + pop {r3, r4, r5, pc} +_02230F94: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02230F98: .word 0x00000AD4 +_02230F9C: .word 0x00000B34 +_02230FA0: .word 0x00001158 +_02230FA4: .word 0x00000127 + + thumb_func_start MOD12_02230FA8 +MOD12_02230FA8: ; 0x02230FA8 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02230FBE + cmp r0, #1 + beq _02230FE8 + cmp r0, #2 + beq _02231006 + b _02231028 +_02230FBE: + ldr r0, _0223104C ; =0x00000AD5 + ldr r1, _0223104C ; =0x00000AD5 + ldrb r7, [r3, r0] + mov r6, #0 + add r0, r0, #1 +_02230FC8: + add r5, r3, r6 + ldrb r2, [r5, r0] + add r6, r6, #1 + cmp r6, #3 + strb r2, [r5, r1] + blt _02230FC8 + ldr r0, _02231050 ; =0x00000AD8 + strb r7, [r3, r0] + sub r1, r0, #4 + ldrb r1, [r3, r1] + sub r0, r0, #4 + add r1, r1, #1 + strb r1, [r3, r0] + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_02230FE8: + ldr r0, _02231054 ; =0x00001158 + mov r5, #0xad + lsl r5, r5, #4 + add r0, r3, r0 + add r1, r3, #0 + mov r2, #0xa + add r3, r3, r5 + bl MOD12_02241050 + cmp r0, #1 + bne _02231048 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02231048 +_02231006: + ldr r0, _02231054 ; =0x00001158 + ldr r5, [r3] + add r0, r3, r0 + ldr r3, _02231058 ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r5, r3] + sub r3, #0xb + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _02231048 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02231048 +_02231028: + ldr r1, _0223105C ; =0x00000AD4 + ldrb r0, [r3, r1] + cmp r0, #4 + bhs _02231044 + add r0, r1, #0 + add r0, #0x2d + ldrb r0, [r3, r0] + add r1, #0x2d + add r0, r0, #1 + strb r0, [r3, r1] + mov r0, #4 + strh r0, [r4, #2] + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_02231044: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02231048: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223104C: .word 0x00000AD5 +_02231050: .word 0x00000AD8 +_02231054: .word 0x00001158 +_02231058: .word 0x00000127 +_0223105C: .word 0x00000AD4 + + thumb_func_start MOD12_02231060 +MOD12_02231060: ; 0x02231060 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02231072 + cmp r0, #1 + beq _02231090 + b _022310B2 +_02231072: + ldr r0, _022310BC ; =0x00001158 + mov r3, #0xb + lsl r3, r3, #8 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0xc + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _022310B6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _022310B6 +_02231090: + ldr r0, _022310BC ; =0x00001158 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _022310C0 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _022310B6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _022310B6 +_022310B2: + mov r0, #1 + pop {r3, r4, r5, pc} +_022310B6: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_022310BC: .word 0x00001158 +_022310C0: .word 0x00000127 + + thumb_func_start MOD12_022310C4 +MOD12_022310C4: ; 0x022310C4 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp] + ldrh r0, [r1] + str r1, [sp, #4] + cmp r0, #0 + beq _022310DE + cmp r0, #1 + beq _022311D4 + cmp r0, #2 + bne _022310DC + b _022311FA +_022310DC: + b _02231222 +_022310DE: + mov r1, #0 + mov r6, #0x4b + ldr r2, [sp] + ldr r5, _02231230 ; =0x00000ADA + add r3, r1, #0 + lsl r6, r6, #2 +_022310EA: + ldr r4, [sp] + ldrsh r0, [r2, r5] + ldr r4, [r4] + add r1, r1, #1 + add r4, r4, r3 + strh r0, [r4, r6] + add r2, r2, #2 + add r3, #0xc + cmp r1, #4 + blt _022310EA + ldr r0, [sp] + mov r1, #0 + ldr r0, [r0] + add r2, sp, #0x1c + bl MOD12_022435E4 + ldr r0, [sp] + mov r1, #1 + ldr r0, [r0] + add r2, sp, #0x14 + bl MOD12_022435E4 + mov r6, #0 + add r2, sp, #0x14 + add r3, sp, #0x1c + add r4, sp, #0xc + add r5, sp, #8 + add r7, r6, #0 +_02231122: + mov r0, #0 + ldrsh r1, [r3, r0] + ldrsh r0, [r2, r7] + strb r6, [r5] + add r6, r6, #1 + add r0, r1, r0 + strh r0, [r4] + add r2, r2, #2 + add r3, r3, #2 + add r4, r4, #2 + add r5, r5, #1 + cmp r6, #4 + blt _02231122 + mov r6, #0 + sub r7, r6, #2 +_02231140: + mov r3, #3 + cmp r6, #3 + bge _02231172 + add r4, sp, #0x10 + add r5, sp, #8 + add r4, #2 + add r5, #3 +_0223114E: + mov r0, #0 + ldrsh r0, [r4, r0] + ldrsh r1, [r4, r7] + cmp r1, r0 + bge _02231168 + strh r1, [r4] + sub r1, r4, #2 + strh r0, [r1] + sub r0, r5, #1 + ldrb r2, [r5] + ldrb r1, [r0] + strb r1, [r5] + strb r2, [r0] +_02231168: + sub r3, r3, #1 + sub r4, r4, #2 + sub r5, r5, #1 + cmp r3, r6 + bgt _0223114E +_02231172: + add r6, r6, #1 + cmp r6, #3 + blt _02231140 + ldr r1, _02231234 ; =0x00000172 + mov r4, #0 + add r3, sp, #8 +_0223117E: + ldr r0, [sp] + ldrb r2, [r3] + ldr r0, [r0] + add r3, r3, #1 + add r0, r0, r4 + add r4, r4, #1 + strb r2, [r0, r1] + cmp r4, #4 + blt _0223117E + ldr r2, _02231238 ; =0x00000B37 + ldr r1, [sp] + mov r0, #0 + strb r0, [r1, r2] + add r3, r2, #1 + strb r0, [r1, r3] + ldr r1, [r1] + ldr r4, _02231234 ; =0x00000172 + sub r3, r2, #7 + ldrb r5, [r1, r4] + ldr r1, [sp] + sub r4, #0x51 + strb r5, [r1, r3] + ldr r1, [r1] + ldrb r1, [r1, r4] + cmp r1, #0 + beq _022311BA + cmp r1, #1 + beq _022311BA + cmp r1, #2 + bne _022311C4 +_022311BA: + ldr r1, _0223123C ; =0x00000B36 + ldr r0, [sp] + mov r2, #6 + strb r2, [r0, r1] + b _022311CA +_022311C4: + ldr r1, [sp] + sub r2, r2, #1 + strb r0, [r1, r2] +_022311CA: + ldr r0, [sp, #4] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #4] + strh r1, [r0] +_022311D4: + ldr r1, _02231240 ; =0x00001158 + ldr r0, [sp] + mov r4, #0xb + add r0, r0, r1 + ldr r1, [sp] + lsl r4, r4, #8 + add r3, r1, #0 + mov r2, #9 + add r3, r3, r4 + bl MOD12_02241050 + cmp r0, #1 + bne _02231228 + ldr r0, [sp, #4] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #4] + strh r1, [r0] + b _02231228 +_022311FA: + ldr r0, [sp] + ldr r4, _02231244 ; =0x00000127 + ldr r3, [r0] + ldr r1, _02231240 ; =0x00001158 + sub r2, r4, #4 + add r0, r0, r1 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02231228 + ldr r0, [sp, #4] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #4] + strh r1, [r0] + b _02231228 +_02231222: + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02231228: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_02231230: .word 0x00000ADA +_02231234: .word 0x00000172 +_02231238: .word 0x00000B37 +_0223123C: .word 0x00000B36 +_02231240: .word 0x00001158 +_02231244: .word 0x00000127 + + thumb_func_start MOD12_02231248 +MOD12_02231248: ; 0x02231248 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _0223125A + cmp r0, #1 + beq _0223125E + b _0223128E +_0223125A: + add r0, r0, #1 + strh r0, [r4] +_0223125E: + ldr r3, _022312B0 ; =0x00000172 + mov r0, #0 + add r1, sp, #0 +_02231264: + ldr r5, [r2] + add r5, r5, r0 + ldrb r5, [r5, r3] + add r0, r0, #1 + strb r5, [r1] + add r1, r1, #1 + cmp r0, #4 + blt _02231264 + ldr r0, _022312B4 ; =0x00001158 + add r1, r2, #0 + add r0, r2, r0 + mov r2, #4 + add r3, sp, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _022312AC + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _022312AC +_0223128E: + ldr r0, _022312B4 ; =0x00001158 + ldr r3, [r2] + ldr r4, _022312B8 ; =0x00000127 + add r0, r2, r0 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _022312AC + mov r0, #3 + pop {r3, r4, r5, pc} +_022312AC: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022312B0: .word 0x00000172 +_022312B4: .word 0x00001158 +_022312B8: .word 0x00000127 + + thumb_func_start MOD12_022312BC +MOD12_022312BC: ; 0x022312BC + push {r3, lr} + ldr r0, _022312D0 ; =SDK_MODULE_08_ID + mov r1, #2 + bl HandleLoadOverlay + ldr r0, _022312D4 ; =SDK_MODULE_17_ID + mov r1, #2 + bl HandleLoadOverlay + pop {r3, pc} + .align 2, 0 +_022312D0: .word SDK_MODULE_08_ID +_022312D4: .word SDK_MODULE_17_ID + + thumb_func_start MOD12_022312D8 +MOD12_022312D8: ; 0x022312D8 + push {r3, lr} + sub sp, #8 + mov r2, #2 + ldr r1, _022312F0 ; =MOD12_022312F4 + str r2, [sp] + str r1, [sp, #4] + mov r1, #0 + add r3, r1, #0 + bl FUN_02022318 + add sp, #8 + pop {r3, pc} + .align 2, 0 +_022312F0: .word MOD12_022312F4 + + thumb_func_start MOD12_022312F4 +MOD12_022312F4: ; 0x022312F4 + push {r3, lr} + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r0, _02231360 ; =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, _02231364 ; =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, _02231368 ; =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, _0223136C ; =0x00007FFF + add r1, r0, #0 + mov r3, #0x3f + str r0, [sp] + bl G3X_SetClearColor + ldr r1, _02231370 ; =0xBFFF0000 + ldr r0, _02231374 ; =0x04000580 + str r1, [r0] + pop {r3, pc} + .align 2, 0 +_02231360: .word 0x04000008 +_02231364: .word 0xFFFFCFFD +_02231368: .word 0x0000CFFB +_0223136C: .word 0x00007FFF +_02231370: .word 0xBFFF0000 +_02231374: .word 0x04000580 + + thumb_func_start MOD12_02231378 +MOD12_02231378: ; 0x02231378 + ldr r3, _0223137C ; =0x020223BD + bx r3 + .align 2, 0 +_0223137C: .word 0x020223BD + + thumb_func_start MOD12_02231380 +MOD12_02231380: ; 0x02231380 + push {r4, r5, r6, r7, lr} + sub sp, #0x74 + str r0, [sp, #0x18] + str r1, [sp, #0x1c] + str r2, [sp, #0x20] + ldr r0, [sp, #0x90] + ldr r1, [sp, #0x8c] + mov r2, #0 + str r3, [sp, #0x24] + ldr r5, [sp, #0x88] + ldr r4, [sp, #0xa0] + bl FUN_02002E14 + add r7, r0, #0 + asr r1, r7, #2 + lsr r1, r1, #0x1d + add r1, r7, r1 + asr r6, r1, #3 + mov r1, #8 + bl FX_ModS32 + cmp r0, #0 + beq _022313B0 + add r6, r6, #1 +_022313B0: + add r0, sp, #0x34 + bl FUN_0201901C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + lsl r2, r6, #0x18 + ldr r0, [sp, #0x1c] + add r1, sp, #0x34 + lsr r2, r2, #0x18 + mov r3, #2 + bl FUN_020190EC + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x94] + ldr r1, [sp, #0x90] + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldr r2, [sp, #0x8c] + add r0, sp, #0x34 + str r3, [sp, #0x14] + bl FUN_0201BE3C + ldr r2, [sp, #0x18] + add r0, sp, #0x34 + mov r1, #1 + bl FUN_02011898 + mov r1, #1 + add r2, r1, #0 + add r3, sp, #0x28 + bl FUN_0201D568 + ldr r0, [sp, #0xa8] + cmp r0, #1 + bne _02231408 + lsr r0, r7, #0x1f + add r0, r7, r0 + asr r0, r0, #1 + sub r4, r4, r0 +_02231408: + ldr r0, [sp, #0x24] + str r0, [sp, #0x44] + add r0, sp, #0x34 + str r0, [sp, #0x48] + ldr r0, [sp, #0x20] + bl FUN_0200CA40 + str r0, [sp, #0x4c] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x9c] + bl FUN_0200C334 + str r0, [sp, #0x50] + mov r0, #0 + str r0, [sp, #0x54] + ldr r0, [sp, #0x2c] + str r4, [sp, #0x5c] + str r0, [sp, #0x58] + ldr r0, [sp, #0xa4] + sub r0, #8 + str r0, [sp, #0x60] + ldr r0, [sp, #0xac] + str r0, [sp, #0x64] + ldr r0, [sp, #0xb0] + str r0, [sp, #0x68] + mov r0, #1 + str r0, [sp, #0x6c] + ldr r0, [sp, #0x18] + str r0, [sp, #0x70] + add r0, sp, #0x44 + bl FUN_020117E8 + ldr r1, [sp, #0x98] + add r6, r0, #0 + cmp r1, #0 + beq _02231454 + bl FUN_02011A90 +_02231454: + ldr r2, [sp, #0xa4] + add r0, r6, #0 + add r1, r4, #0 + sub r2, #8 + bl FUN_020118C4 + add r0, sp, #0x34 + bl FUN_02019178 + str r6, [r5] + add r3, sp, #0x28 + ldmia r3!, {r0, r1} + add r2, r5, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + strh r7, [r5, #0x10] + add sp, #0x74 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223147C +MOD12_0223147C: ; 0x0223147C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02011870 + add r0, r4, #4 + bl FUN_0201D5E8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_02231490 +MOD12_02231490: ; 0x02231490 + cmp r3, #1 + bne _0223149A + ldrh r3, [r0, #0x10] + lsr r3, r3, #1 + sub r1, r1, r3 +_0223149A: + ldr r3, _022314A4 ; =0x020118C5 + ldr r0, [r0] + sub r2, #8 + bx r3 + nop +_022314A4: .word 0x020118C5 + + thumb_func_start MOD12_022314A8 +MOD12_022314A8: ; 0x022314A8 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r3, r1, #0 + mov r0, #1 + mov r1, #0x1a + mov r2, #0xc2 + bl FUN_0200A86C + add r5, r0, #0 + add r1, r4, #0 + bl FUN_0200A914 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0200A8B8 + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_022314CC +MOD12_022314CC: ; 0x022314CC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, r1, #0 + ldr r1, _02231504 ; =0x00000122 + ldrb r1, [r5, r1] + bl MOD12_0224473C + add r7, r0, #0 + mov r6, #0 + add r4, r5, #0 +_022314E0: + add r0, r5, #0 + add r0, #0xf8 + ldr r0, [r0] + add r1, r7, #0 + bl MOD12_02244710 + ldr r1, _02231508 ; =0x0000012A + add r6, r6, #1 + strh r0, [r4, r1] + add r5, r5, #4 + add r4, #0xc + cmp r6, #4 + blt _022314E0 + add r0, r7, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02231504: .word 0x00000122 +_02231508: .word 0x0000012A + + thumb_func_start MOD12_0223150C +MOD12_0223150C: ; 0x0223150C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + ldr r4, [sp] + mov r0, #0 + str r0, [sp, #0x10] + add r0, r4, #0 + str r0, [sp, #4] +_0223151C: + ldr r0, [r4] + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + mov r6, #0x64 + add r5, r0, #0 + add r0, r6, #0 + ldr r1, [sp] + add r0, #0xbb + ldrb r0, [r1, r0] + cmp r0, #4 + bls _02231538 + b _022316AA +_02231538: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02231544: ; jump table + .short _0223154E - _02231544 - 2 ; case 0 + .short _02231594 - _02231544 - 2 ; case 1 + .short _022315DA - _02231544 - 2 ; case 2 + .short _02231620 - _02231544 - 2 ; case 3 + .short _02231666 - _02231544 - 2 ; case 4 +_0223154E: + ldr r0, [r4] + mov r1, #0x13 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xc] + ldr r0, [r4] + mov r1, #0x17 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x14 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r6, #0 + add r0, #0xa0 + cmp r5, r0 + beq _0223158C + add r0, r6, #0 + add r0, #0xa1 + cmp r5, r0 + beq _02231590 + add r0, r6, #0 + add r0, #0xa4 + cmp r5, r0 + beq _02231590 + b _022316B2 +_0223158C: + mov r6, #0x6e + b _022316B2 +_02231590: + mov r6, #0x69 + b _022316B2 +_02231594: + ldr r0, [r4] + mov r1, #0x14 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xc] + ldr r0, [r4] + mov r1, #0x13 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x15 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r6, #0 + add r0, #0xa0 + cmp r5, r0 + beq _022315D6 + add r0, r6, #0 + add r0, #0xa1 + cmp r5, r0 + beq _022315D2 + add r0, r6, #0 + add r0, #0xa2 + cmp r5, r0 + beq _022315D6 + b _022316B2 +_022315D2: + mov r6, #0x6e + b _022316B2 +_022315D6: + mov r6, #0x69 + b _022316B2 +_022315DA: + ldr r0, [r4] + mov r1, #0x15 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xc] + ldr r0, [r4] + mov r1, #0x14 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x16 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r6, #0 + add r0, #0xa1 + cmp r5, r0 + beq _0223161C + add r0, r6, #0 + add r0, #0xa2 + cmp r5, r0 + beq _02231618 + add r0, r6, #0 + add r0, #0xa3 + cmp r5, r0 + beq _0223161C + b _022316B2 +_02231618: + mov r6, #0x6e + b _022316B2 +_0223161C: + mov r6, #0x69 + b _022316B2 +_02231620: + ldr r0, [r4] + mov r1, #0x16 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xc] + ldr r0, [r4] + mov r1, #0x15 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x17 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r6, #0 + add r0, #0xa2 + cmp r5, r0 + beq _02231662 + add r0, r6, #0 + add r0, #0xa3 + cmp r5, r0 + beq _0223165E + add r0, r6, #0 + add r0, #0xa4 + cmp r5, r0 + beq _02231662 + b _022316B2 +_0223165E: + mov r6, #0x6e + b _022316B2 +_02231662: + mov r6, #0x69 + b _022316B2 +_02231666: + ldr r0, [r4] + mov r1, #0x17 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xc] + ldr r0, [r4] + mov r1, #0x16 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x13 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r6, #0 + add r0, #0xa0 + cmp r5, r0 + beq _022316A6 + add r0, r6, #0 + add r0, #0xa3 + cmp r5, r0 + beq _022316A6 + add r0, r6, #0 + add r0, #0xa4 + cmp r5, r0 + bne _022316B2 + mov r6, #0x6e + b _022316B2 +_022316A6: + mov r6, #0x69 + b _022316B2 +_022316AA: + bl ErrorHandling + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_022316B2: + ldr r0, [r4] + mov r1, #0x18 + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp, #8] + add r1, r1, r7 + add r1, r0, r1 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r1, r0, #1 + ldr r0, [sp, #0xc] + add r1, r0, r1 + add r0, r1, #0 + mul r0, r6 + mov r1, #0x64 + bl _s32_div_f + mov r1, #0x4a + ldr r2, [sp, #4] + lsl r1, r1, #2 + strh r0, [r2, r1] + add r0, r2, #0 + add r0, #0xc + str r0, [sp, #4] + ldr r0, [sp, #0x10] + add r4, r4, #4 + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #4 + bge _022316F2 + b _0223151C +_022316F2: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_022316F8 +MOD12_022316F8: ; 0x022316F8 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r6, r2, #0 + mov r2, #0 + mvn r2, r2 + add r5, r0, #0 + add r4, r1, #0 + cmp r3, r2 + beq _0223171A + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + str r3, [sp, #8] + mov r2, #0x2e + mov r3, #0x49 + bl FUN_0200C00C +_0223171A: + mov r1, #0 + ldr r0, [sp, #0x28] + mvn r1, r1 + cmp r0, r1 + beq _02231744 + mov r1, #0x2e + str r1, [sp] + mov r1, #7 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + mov r1, #1 + str r1, [sp, #0xc] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + add r0, r6, #0 + mov r1, #2 + add r2, r5, #0 + add r3, r4, #0 + bl FUN_0200C0DC +_02231744: + mov r0, #0 + ldr r1, [sp, #0x2c] + mvn r0, r0 + cmp r1, r0 + beq _02231760 + mov r0, #1 + str r0, [sp] + str r1, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x2e + mov r3, #0x4a + bl FUN_0200C124 +_02231760: + mov r0, #0 + ldr r1, [sp, #0x30] + mvn r0, r0 + cmp r1, r0 + beq _0223177C + mov r0, #1 + str r0, [sp] + str r1, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x2e + mov r3, #0x4b + bl FUN_0200C13C +_0223177C: + add sp, #0x18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02231780 +MOD12_02231780: ; 0x02231780 + push {r4, r5, r6, lr} + add r4, r2, #0 + mov r2, #0 + mvn r2, r2 + add r5, r0, #0 + add r6, r3, #0 + cmp r1, r2 + beq _02231794 + bl FUN_0200C358 +_02231794: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _022317A4 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200C368 +_022317A4: + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + beq _022317B4 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0200C378 +_022317B4: + mov r0, #0 + ldr r1, [sp, #0x10] + mvn r0, r0 + cmp r1, r0 + beq _022317C4 + add r0, r5, #0 + bl FUN_0200C388 +_022317C4: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_022317C8 +MOD12_022317C8: ; 0x022317C8 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + ldr r5, _02231850 ; =0x02244D18 + str r2, [sp, #4] + str r0, [sp] + add r7, r1, #0 + add r4, sp, #8 + mov r2, #6 +_022317D8: + ldmia r5!, {r0, r1} + stmia r4!, {r0, r1} + sub r2, r2, #1 + bne _022317D8 + ldr r0, [r5] + ldr r5, _02231854 ; =0x02244CE8 + str r0, [r4] + ldr r0, [sp, #0x50] + ldr r4, [sp] + str r0, [sp, #0x20] + ldr r0, [sp, #0x54] + str r3, [sp, #0x1c] + str r0, [sp, #0x24] + ldr r0, [sp, #0x58] + mov r6, #0 + str r0, [sp, #0x28] + ldr r0, [sp, #0x5c] + str r0, [sp, #0x14] + ldr r0, [sp, #0x60] + str r0, [sp, #0x10] + ldr r0, [sp, #0x64] + str r0, [sp, #0x34] +_02231804: + ldr r1, [sp, #4] + add r0, r7, #0 + add r2, sp, #8 + bl FUN_0200C154 + str r0, [r4] + mov r1, #0 + mov r2, #2 + ldrsh r1, [r5, r1] + ldrsh r2, [r5, r2] + bl FUN_0200C714 + ldrb r1, [r5, #6] + ldr r0, [r4] + bl FUN_0200C5C0 + ldr r0, [r4] + mov r1, #1 + bl FUN_0200C840 + ldr r0, [r4] + ldr r0, [r0] + bl FUN_0200C59C + add r6, r6, #1 + add r4, r4, #4 + add r5, #8 + cmp r6, #6 + blt _02231804 + ldr r0, _02231858 ; =MOD12_02231880 + ldr r1, [sp] + ldr r2, [sp, #0x68] + bl FUN_0200CA44 + ldr r1, [sp] + str r0, [r1, #0x18] + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02231850: .word 0x02244D18 +_02231854: .word 0x02244CE8 +_02231858: .word MOD12_02231880 + + thumb_func_start MOD12_0223185C +MOD12_0223185C: ; 0x0223185C + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_02231864: + ldr r0, [r5] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _02231864 + ldr r0, [r6, #0x18] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r6, #0x18] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_02231880 +MOD12_02231880: ; 0x02231880 + push {r3, r4, r5, r6, r7, lr} + ldr r4, _022318A0 ; =0x02244CE8 + add r5, r1, #0 + mov r6, #0 + mov r7, #4 +_0223188A: + ldrsh r1, [r4, r7] + ldr r0, [r5] + bl FUN_0200C8BC + add r6, r6, #1 + add r4, #8 + add r5, r5, #4 + cmp r6, #6 + blt _0223188A + pop {r3, r4, r5, r6, r7, pc} + nop +_022318A0: .word 0x02244CE8 + + thumb_func_start MOD12_022318A4 +MOD12_022318A4: ; 0x022318A4 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + mov r1, #0x14 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r5, [r4, #4] + str r6, [r4, #0xc] + ldr r0, [sp, #0x18] + strb r7, [r4, #0x10] + strb r0, [r4, #0x12] + ldr r0, _022318D8 ; =MOD12_0223190C + ldr r2, [sp, #0x1c] + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_022318D8: .word MOD12_0223190C + + thumb_func_start MOD12_022318DC +MOD12_022318DC: ; 0x022318DC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _022318EA + bl ErrorHandling +_022318EA: + ldr r0, [r4] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD12_022318F8 +MOD12_022318F8: ; 0x022318F8 + push {r3, lr} + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _02231908 + mov r0, #1 + pop {r3, pc} +_02231908: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD12_0223190C +MOD12_0223190C: ; 0x0223190C + push {r3, r4, lr} + sub sp, #4 + mov r0, #1 + add r4, r1, #0 + bl FUN_0200A344 + cmp r0, #0 + beq _02231972 + ldr r0, [r4, #8] + add r2, r0, #1 + str r2, [r4, #8] + ldrb r0, [r4, #0x11] + ldr r1, [r4, #0xc] + lsl r0, r0, #1 + ldrh r0, [r1, r0] + cmp r2, r0 + ble _02231972 + mov r0, #1 + str r0, [sp] + mov r0, #6 + mov r1, #0 + mov r2, #4 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, _02231978 ; =0x000005F8 + bl FUN_020054C8 + mov r0, #0 + str r0, [r4, #8] + ldrb r0, [r4, #0x11] + add r0, r0, #1 + strb r0, [r4, #0x11] + ldrb r1, [r4, #0x11] + ldrb r0, [r4, #0x10] + cmp r1, r0 + blo _02231972 + ldrb r0, [r4, #0x12] + cmp r0, #0 + bne _02231966 + add r0, r4, #0 + bl MOD12_022318DC + add sp, #4 + pop {r3, r4, pc} +_02231966: + cmp r0, #0xff + beq _0223196E + sub r0, r0, #1 + strb r0, [r4, #0x12] +_0223196E: + mov r0, #0 + strb r0, [r4, #0x11] +_02231972: + add sp, #4 + pop {r3, r4, pc} + nop +_02231978: .word 0x000005F8 + + thumb_func_start MOD12_0223197C +MOD12_0223197C: ; 0x0223197C + push {r4, lr} + mov r1, #0x32 + mov r0, #0x15 + lsl r1, r1, #4 + bl FUN_02016998 + mov r2, #0x32 + mov r1, #0 + lsl r2, r2, #4 + add r4, r0, #0 + bl MI_CpuFill8 + mov r1, #0 + mov r0, #0x2e + mvn r1, r1 + lsl r0, r0, #4 + strb r1, [r4, r0] + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_022319A4 +MOD12_022319A4: ; 0x022319A4 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r6, _022319F8 ; =0x02244F64 + add r5, r0, #0 + add r7, r4, #0 +_022319AE: + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + add r2, r6, #0 + add r3, r7, #0 + bl FUN_02016C18 + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + mov r2, #0 + bl FUN_02018768 + add r1, r4, #4 + lsl r1, r1, #0x18 + mov r2, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + add r3, r2, #0 + bl FUN_020179E0 + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r4, r4, #1 + add r6, #0x1c + cmp r4, #4 + blo _022319AE + pop {r3, r4, r5, r6, r7, pc} + nop +_022319F8: .word 0x02244F64 + + thumb_func_start MOD12_022319FC +MOD12_022319FC: ; 0x022319FC + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_02231A04: + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, r6, #0 + bl FUN_0201797C + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl FUN_020178A0 + add r4, r4, #1 + cmp r4, #4 + blo _02231A04 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02231A24 +MOD12_02231A24: ; 0x02231A24 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + bl MOD12_0223197C + add r4, r0, #0 + str r5, [r4] + str r6, [r4, #4] + mov r0, #0xc + mov r1, #0x15 + str r7, [r4, #8] + bl FUN_02011744 + mov r7, #2 + str r0, [r4, #0x3c] + mov r5, #0 + lsl r7, r7, #0xa + b _02231A88 +_02231A4C: + mov r0, #0x15 + add r1, r7, #0 + bl FUN_02016998 + lsl r1, r5, #2 + add r1, r4, r1 + str r0, [r1, #0x20] + mov r0, #0x15 + str r0, [sp] + ldr r1, _02231AE0 ; =0x02244D6C + lsl r2, r5, #1 + ldrh r1, [r1, r2] + mov r0, #0x2d + mov r2, #1 + add r3, sp, #0xc + bl FUN_02006BDC + add r6, r0, #0 + lsl r0, r5, #2 + add r0, r4, r0 + ldr r1, [r0, #0x20] + ldr r0, [sp, #0xc] + add r2, r7, #0 + add r0, #0xc + bl MIi_CpuCopy32 + add r0, r6, #0 + bl FUN_02016A18 + add r5, r5, #1 +_02231A88: + cmp r5, #5 + blt _02231A4C + ldr r0, [r4, #4] + mov r7, #2 + ldr r6, [r0, #0x50] + mov r5, #0 + lsl r7, r7, #8 + b _02231AD6 +_02231A98: + mov r0, #0x15 + add r1, r7, #0 + bl FUN_02016998 + lsl r1, r5, #2 + add r1, r4, r1 + str r0, [r1, #0x34] + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r2, _02231AE4 ; =0x02244D54 + lsl r3, r5, #1 + ldrh r2, [r2, r3] + add r0, r6, #0 + mov r1, #0x2d + mov r3, #0x15 + bl FUN_020030E8 + add r0, r6, #0 + mov r1, #1 + bl FUN_020031FC + lsl r1, r5, #2 + add r1, r4, r1 + ldr r1, [r1, #0x34] + add r2, r7, #0 + bl MIi_CpuCopy16 + add r5, r5, #1 +_02231AD6: + cmp r5, #2 + blt _02231A98 + add r0, r4, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02231AE0: .word 0x02244D6C +_02231AE4: .word 0x02244D54 + + thumb_func_start MOD12_02231AE8 +MOD12_02231AE8: ; 0x02231AE8 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r0, #0 + bl MOD12_02232638 + ldr r0, [r6, #0x3c] + bl FUN_020117BC + ldr r3, _02231B48 ; =0x000080F8 + str r3, [sp] + ldr r0, [r6, #4] + add r1, r3, #5 + ldr r0, [r0, #0x1c] + sub r2, r3, #7 + bl MOD12_022447C0 + mov r0, #0xc5 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl MOD12_0224486C + mov r4, #0 + add r5, r6, #0 +_02231B16: + ldr r0, [r5, #0x20] + bl FUN_02016A18 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _02231B16 + mov r5, #0 + add r4, r6, #0 +_02231B28: + ldr r0, [r4, #0x34] + bl FUN_02016A18 + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #2 + blt _02231B28 + add r0, r6, #0 + bl MOD12_02232B7C + add r0, r6, #0 + bl FUN_02016A18 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_02231B48: .word 0x000080F8 + + thumb_func_start MOD12_02231B4C +MOD12_02231B4C: ; 0x02231B4C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r0, #0 + str r3, [r7, #0xc] + ldr r0, [r7, #4] + str r2, [sp, #8] + ldr r0, [r0, #0x24] + str r1, [sp, #4] + str r0, [sp, #0xc] + mov r0, #0x2e + lsl r0, r0, #4 + ldrsb r2, [r7, r0] + mov r0, #0 + mvn r0, r0 + cmp r2, r0 + bne _02231B76 + mov r0, #1 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0x10] + b _02231B80 +_02231B76: + mov r0, #0x30 + ldr r1, _02231C70 ; =0x02245074 + mul r0, r2 + add r0, r1, r0 + str r0, [sp, #0x10] +_02231B80: + ldr r0, [sp, #4] + mov r1, #0x30 + ldr r2, _02231C70 ; =0x02245074 + mul r1, r0 + add r0, r2, r1 + str r0, [sp, #0x14] + mov r4, #0 + add r5, r0, #0 +_02231B90: + ldrh r1, [r5, #0xc] + add r0, r4, #4 + lsl r0, r0, #0x18 + lsl r1, r1, #0x18 + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + bl FUN_020178BC + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _02231B90 + mov r0, #2 + lsl r0, r0, #8 + str r0, [sp] + ldr r1, [sp, #0x14] + ldr r0, [r7, #4] + ldrh r1, [r1, #2] + ldr r0, [r0, #0x50] + mov r2, #1 + lsl r1, r1, #2 + add r1, r7, r1 + ldr r1, [r1, #0x34] + mov r3, #0 + bl FUN_02003054 + ldr r6, [sp, #0x14] + ldr r4, [sp, #0x10] + mov r5, #0 +_02231BCA: + ldrh r2, [r6, #4] + ldr r0, _02231C74 ; =0x0000FFFF + cmp r2, r0 + beq _02231C00 + ldr r0, [sp, #8] + cmp r0, #1 + beq _02231BDE + ldrh r0, [r4, #4] + cmp r2, r0 + beq _02231C00 +_02231BDE: + lsl r2, r2, #2 + add r1, r5, #4 + add r2, r7, r2 + lsl r1, r1, #0x18 + mov r3, #2 + ldr r0, [sp, #0xc] + ldr r2, [r2, #0x20] + lsr r1, r1, #0x18 + lsl r3, r3, #0xa + bl FUN_02017DFC + add r1, r5, #4 + lsl r1, r1, #0x18 + ldr r0, [sp, #0xc] + lsr r1, r1, #0x18 + bl FUN_0201AC68 +_02231C00: + add r5, r5, #1 + add r6, r6, #2 + add r4, r4, #2 + cmp r5, #4 + blt _02231BCA + mov r1, #0x2e + ldr r0, [sp, #4] + lsl r1, r1, #4 + strb r0, [r7, r1] + add r0, r7, #0 + bl MOD12_02232638 + ldr r0, [sp, #0x14] + ldr r3, [r0, #0x28] + cmp r3, #0 + beq _02231C28 + ldr r1, [sp, #4] + ldr r2, [sp, #8] + add r0, r7, #0 + blx r3 +_02231C28: + ldr r0, [sp, #0x14] + ldrh r1, [r0] + ldr r0, _02231C74 ; =0x0000FFFF + cmp r1, r0 + beq _02231C62 + ldr r0, [sp, #8] + cmp r0, #1 + beq _02231C40 + ldr r0, [sp, #0x10] + ldrh r0, [r0] + cmp r1, r0 + beq _02231C62 +_02231C40: + mov r3, #0xb7 + mov r0, #0x15 + lsl r3, r3, #2 + str r0, [sp] + mov r0, #0x2d + mov r2, #1 + add r3, r7, r3 + bl FUN_02006BB0 + mov r1, #0xb6 + lsl r1, r1, #2 + str r0, [r7, r1] + ldr r0, _02231C78 ; =MOD12_0223336C + add r1, r7, #0 + mov r2, #0xa + bl FUN_0200CA98 +_02231C62: + ldr r0, _02231C7C ; =MOD12_022333A8 + add r1, r7, #0 + mov r2, #0xa + bl FUN_0200CA98 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02231C70: .word 0x02245074 +_02231C74: .word 0x0000FFFF +_02231C78: .word MOD12_0223336C +_02231C7C: .word MOD12_022333A8 + + thumb_func_start MOD12_02231C80 +MOD12_02231C80: ; 0x02231C80 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0x2e + lsl r0, r0, #4 + ldrsb r1, [r5, r0] + mov r6, #0 + sub r0, r6, #1 + cmp r1, r0 + bne _02231C96 + bl ErrorHandling +_02231C96: + mov r0, #0x2e + lsl r0, r0, #4 + ldrsb r1, [r5, r0] + ldr r3, _02231D44 ; =0x02245074 + mov r0, #0x30 + add r2, r1, #0 + mul r2, r0 + add r4, r3, r2 + ldr r1, [r4, #0x14] + cmp r1, #0 + bne _02231CB0 + sub r0, #0x31 + pop {r3, r4, r5, r6, r7, pc} +_02231CB0: + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _02231CBA + bl ErrorHandling +_02231CBA: + ldr r0, [r4, #0x14] + bl FUN_02020988 + add r7, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r7, r0 + bne _02231CD4 + add r0, r5, #0 + bl MOD12_02232E18 + add r7, r0, #0 + add r6, r6, #1 +_02231CD4: + mov r0, #0 + mvn r0, r0 + str r0, [sp] + cmp r7, r0 + bne _02231CE2 + mov r2, #0xff + b _02231CEE +_02231CE2: + ldr r1, [r4, #0x18] + lsl r0, r7, #2 + ldr r0, [r1, r0] + str r0, [sp] + ldr r0, [r4, #0x1c] + ldrb r2, [r0, r7] +_02231CEE: + ldr r3, [r4, #0x2c] + cmp r3, #0 + beq _02231D3E + ldr r1, [sp] + add r0, r5, #0 + blx r3 + mov r1, #0 + mvn r1, r1 + str r0, [sp] + cmp r0, r1 + beq _02231D3E + ldr r2, [r4, #0x24] + cmp r2, #0 + beq _02231D10 + add r0, r5, #0 + add r1, r7, #0 + blx r2 +_02231D10: + mov r0, #0xc6 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + mov r0, #0xc5 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD12_0224493C + cmp r6, #0 + ble _02231D36 + mov r0, #0xc7 + mov r1, #1 + lsl r0, r0, #2 + strb r1, [r5, r0] + b _02231D3E +_02231D36: + mov r0, #0xc7 + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r5, r0] +_02231D3E: + ldr r0, [sp] + pop {r3, r4, r5, r6, r7, pc} + nop +_02231D44: .word 0x02245074 + + thumb_func_start MOD12_02231D48 +MOD12_02231D48: ; 0x02231D48 + ldr r1, [r0, #0x10] + cmp r1, #0 + bne _02231D58 + ldr r0, [r0, #0x14] + cmp r0, #0 + bne _02231D58 + mov r0, #1 + bx lr +_02231D58: + mov r0, #0 + bx lr + + thumb_func_start MOD12_02231D5C +MOD12_02231D5C: ; 0x02231D5C + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, [r5, #4] + mov r2, #0x12 + lsl r2, r2, #4 + ldr r3, [r0] + add r1, r2, #1 + ldrb r0, [r3, r2] + ldrb r1, [r3, r1] + ldr r3, [r5] + add r2, #0x51 + ldrb r2, [r3, r2] + bl FUN_02083228 + add r4, r0, #0 + ldr r0, [r5, #4] + ldr r1, _02231E28 ; =0x0000011F + ldr r2, [r0] + ldrb r0, [r2, r1] + add r1, r1, #2 + ldrb r1, [r2, r1] + bl FUN_020832A4 + add r6, r0, #0 + ldr r0, [r5, #4] + add r1, r4, #0 + ldr r0, [r0, #0x38] + bl FUN_0200A914 + add r4, r0, #0 + ldr r0, [r5, #4] + add r1, r6, #0 + ldr r0, [r0, #0x38] + bl FUN_0200A914 + add r6, r0, #0 + ldr r0, _02231E2C ; =0x00010200 + add r1, r5, #0 + str r0, [sp] + mov r3, #0 + ldr r0, _02231E30 ; =0x000080F0 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x7f + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + add r0, r5, #0 + add r1, #0x40 + add r2, r4, #0 + str r3, [sp, #0x18] + bl MOD12_022322C0 + ldr r0, _02231E2C ; =0x00010200 + add r1, r5, #0 + str r0, [sp] + mov r3, #0 + ldr r0, _02231E30 ; =0x000080F0 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x9f + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + add r0, r5, #0 + add r1, #0x54 + add r2, r6, #0 + str r3, [sp, #0x18] + bl MOD12_022322C0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + ldr r2, [r5, #4] + mov r0, #1 + str r0, [sp] + mov r1, #0x20 + str r1, [sp, #4] + str r1, [sp, #8] + ldr r0, [r2] + add r1, #0xff + ldrb r0, [r0, r1] + mov r1, #0x2d + mov r3, #0x15 + lsl r0, r0, #0x14 + lsr r0, r0, #0x10 + str r0, [sp, #0xc] + ldr r0, [r2, #0x50] + mov r2, #0x25 + bl FUN_02003084 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + nop +_02231E28: .word 0x0000011F +_02231E2C: .word 0x00010200 +_02231E30: .word 0x000080F0 + + thumb_func_start MOD12_02231E34 +MOD12_02231E34: ; 0x02231E34 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r6, r0, #0 + mov r0, #0x69 + lsl r0, r0, #2 + add r5, r6, r0 + ldr r0, _022320A0 ; =0x000002E1 + mov r1, #0xff + strb r1, [r6, r0] + add r0, r5, #0 + str r0, [sp, #0x24] + add r0, #0x50 + str r0, [sp, #0x24] + add r0, r5, #0 + add r7, r6, #0 + str r0, [sp, #0x28] + add r0, #0xa0 + mov r4, #0 + add r7, #0x40 + str r0, [sp, #0x28] + b _02231F80 +_02231E5E: + ldr r0, [r6, #4] + ldr r1, _022320A4 ; =0x00000123 + ldr r0, [r0] + mov r2, #0 + ldrb r1, [r0, r1] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r4, #0 + add r1, #0x36 + bl FUN_020671BC + lsl r1, r4, #1 + add r2, sp, #0x3c + strh r0, [r2, r1] + add r0, r2, #0 + ldrh r0, [r0, r1] + cmp r0, #0 + beq _02231E8C + mov r0, #0x4b + add r2, r5, r4 + lsl r0, r0, #2 + ldrb r2, [r2, r0] + b _02231E8E +_02231E8C: + mov r2, #0 +_02231E8E: + add r0, sp, #0x34 + strh r2, [r0, r1] + ldr r0, _022320A8 ; =0x00010708 + ldr r1, _022320AC ; =0x02244D94 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _022320B0 ; =0x000080F0 + mov r2, #0 + str r0, [sp, #8] + lsl r0, r4, #2 + ldrh r1, [r1, r0] + mov r3, #2 + str r1, [sp, #0xc] + ldr r1, _022320AC ; =0x02244D94 + add r0, r1, r0 + ldrh r0, [r0, #2] + add r1, r4, #0 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x14 + mul r1, r0 + add r0, r5, r1 + str r0, [sp, #0x18] + add r0, r6, #0 + add r1, r7, r1 + bl MOD12_022322C0 + ldr r0, _022320B4 ; =0x00010200 + ldr r1, _022320B8 ; =0x02244E30 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _022320B0 ; =0x000080F0 + add r2, r4, #4 + str r0, [sp, #8] + lsl r0, r4, #3 + ldrh r1, [r1, r0] + str r1, [sp, #0xc] + ldr r1, _022320B8 ; =0x02244E30 + add r0, r1, r0 + ldrh r0, [r0, #2] + add r1, r4, #0 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x14 + mul r1, r0 + ldr r0, [sp, #0x24] + add r0, r0, r1 + mov r1, #0x14 + mul r1, r2 + mov r2, #0 + str r0, [sp, #0x18] + add r0, r6, #0 + add r1, r7, r1 + add r3, r2, #0 + bl MOD12_022322C0 + ldr r0, _022320B4 ; =0x00010200 + add r2, r4, #0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _022320B0 ; =0x000080F0 + lsl r1, r4, #3 + str r0, [sp, #8] + ldr r0, _022320B8 ; =0x02244E30 + add r2, #8 + add r1, r0, r1 + ldrh r0, [r1, #4] + str r0, [sp, #0xc] + ldrh r0, [r1, #6] + add r1, r4, #0 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x14 + mul r1, r0 + ldr r0, [sp, #0x28] + add r0, r0, r1 + mov r1, #0x14 + mul r1, r2 + mov r2, #0 + str r0, [sp, #0x18] + add r0, r6, #0 + add r1, r7, r1 + add r3, r2, #0 + bl MOD12_022322C0 + lsl r1, r4, #1 + add r0, sp, #0x3c + ldrh r0, [r0, r1] + cmp r0, #0 + bne _02231F7E + mov r0, #0x14 + mul r0, r4 + add r0, r6, r0 + ldr r0, [r0, #0x40] + mov r1, #0 + bl FUN_020119D0 + add r1, r4, #4 + mov r0, #0x14 + mul r0, r1 + add r0, r6, r0 + ldr r0, [r0, #0x40] + mov r1, #0 + bl FUN_020119D0 + add r1, r4, #0 + add r1, #8 + mov r0, #0x14 + mul r0, r1 + add r0, r6, r0 + ldr r0, [r0, #0x40] + mov r1, #0 + bl FUN_020119D0 +_02231F7E: + add r4, r4, #1 +_02231F80: + cmp r4, #4 + bge _02231F86 + b _02231E5E +_02231F86: + mov r4, #0 + add r7, sp, #0x3c + b _02231FB4 +_02231F8C: + lsl r0, r4, #1 + ldrh r0, [r7, r0] + cmp r0, #0 + beq _02231FA6 + mov r0, #0x13 + add r1, r5, r4 + lsl r0, r0, #4 + ldrb r1, [r1, r0] + add r0, r6, #0 + add r2, r4, #0 + bl MOD12_022325AC + b _02231FB2 +_02231FA6: + mov r1, #0 + add r0, r6, #0 + mvn r1, r1 + add r2, r4, #0 + bl MOD12_022325AC +_02231FB2: + add r4, r4, #1 +_02231FB4: + cmp r4, #4 + blt _02231F8C + mov r4, #0 + mov r7, #0x20 + add r5, sp, #0x3c + b _02232006 +_02231FC0: + lsl r0, r4, #1 + ldrh r2, [r5, r0] + cmp r2, #0 + beq _02232004 + ldr r1, [r6, #4] + ldr r0, [r6, #8] + ldr r3, [r1] + ldr r1, _022320A4 ; =0x00000123 + ldrb r1, [r3, r1] + bl MOD12_02235BEC + cmp r0, #0 + bne _02232004 + str r7, [sp] + ldr r0, [r6, #4] + mov r1, #1 + add r3, r4, #4 + lsl r3, r3, #0x14 + ldr r2, [r6, #0x38] + lsl r1, r1, #8 + add r1, r2, r1 + ldr r0, [r0, #0x50] + mov r2, #1 + lsr r3, r3, #0x10 + bl FUN_02003054 + ldr r0, _022320A0 ; =0x000002E1 + ldrb r0, [r6, r0] + cmp r0, #0xff + beq _02232000 + bl ErrorHandling +_02232000: + ldr r0, _022320A0 ; =0x000002E1 + strb r4, [r6, r0] +_02232004: + add r4, r4, #1 +_02232006: + cmp r4, #4 + blt _02231FC0 + add r0, r6, #0 + add r1, sp, #0x3c + bl MOD12_02232470 + mov r4, #0 + b _02232096 +_02232016: + lsl r1, r4, #1 + add r0, sp, #0x3c + ldrh r0, [r0, r1] + cmp r0, #0 + beq _02232094 + add r0, sp, #0x34 + ldrh r0, [r0, r1] + bl FUN_02083114 + str r0, [sp, #0x20] + cmp r0, #0 + bge _02232030 + neg r0, r0 +_02232030: + mov r1, #0xa + bl _s32_div_f + str r0, [sp, #0x1c] + cmp r0, #6 + ble _02232040 + bl ErrorHandling +_02232040: + mov r0, #0x18 + mul r0, r4 + add r7, r6, r0 + lsl r0, r4, #3 + ldr r1, _022320BC ; =0x02244E50 + str r0, [sp, #0x2c] + add r0, r1, r0 + mov r5, #0 + str r0, [sp, #0x30] + b _0223208E +_02232054: + lsl r0, r5, #2 + add r1, r7, r0 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02232066 + bl ErrorHandling +_02232066: + ldr r0, [sp, #0x20] + ldr r3, _022320BC ; =0x02244E50 + str r0, [sp] + ldr r2, [sp, #0x2c] + ldr r1, [r6, #4] + ldr r3, [r3, r2] + lsl r2, r5, #3 + add r2, r3, r2 + ldr r3, [sp, #0x30] + ldr r0, [r1, #0x18] + ldr r1, [r1, #0x1c] + ldr r3, [r3, #4] + bl MOD12_022334F4 + lsl r1, r5, #2 + add r2, r7, r1 + mov r1, #0x51 + lsl r1, r1, #2 + str r0, [r2, r1] + add r5, r5, #1 +_0223208E: + ldr r0, [sp, #0x1c] + cmp r5, r0 + blt _02232054 +_02232094: + add r4, r4, #1 +_02232096: + cmp r4, #4 + blt _02232016 + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_022320A0: .word 0x000002E1 +_022320A4: .word 0x00000123 +_022320A8: .word 0x00010708 +_022320AC: .word 0x02244D94 +_022320B0: .word 0x000080F0 +_022320B4: .word 0x00010200 +_022320B8: .word 0x02244E30 +_022320BC: .word 0x02244E50 + + thumb_func_start MOD12_022320C0 +MOD12_022320C0: ; 0x022320C0 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + mov r0, #0x69 + lsl r0, r0, #2 + add r6, r5, r0 + add r7, r5, #0 + mov r4, #0 + add r6, #0xf0 + add r7, #0x40 + b _0223210E +_022320D6: + ldr r0, _0223216C ; =0x0001090A + ldr r1, _02232170 ; =0x02244D78 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _02232174 ; =0x000080F0 + mov r2, #0 + str r0, [sp, #8] + lsl r0, r4, #2 + ldrh r1, [r1, r0] + mov r3, #2 + str r1, [sp, #0xc] + ldr r1, _02232170 ; =0x02244D78 + add r0, r1, r0 + ldrh r0, [r0, #2] + add r1, r4, #0 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0x14 + mul r1, r0 + add r0, r6, r1 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, r7, r1 + bl MOD12_022322C0 + add r4, r4, #1 +_0223210E: + cmp r4, #3 + blt _022320D6 + ldr r0, [r5, #4] + mov r1, #0x35 + ldr r0, [r0, #0x38] + bl FUN_0200A914 + add r6, r0, #0 + ldr r0, _0223216C ; =0x0001090A + ldr r1, _02232174 ; =0x000080F0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r1, [sp, #8] + mov r1, #0x80 + str r1, [sp, #0xc] + mov r1, #0xa4 + str r1, [sp, #0x10] + mov r1, #1 + str r1, [sp, #0x14] + add r2, r5, #0 + mov r1, #0x14 + str r0, [sp, #0x18] + add r2, #0x40 + mul r1, r4 + add r1, r2, r1 + add r0, r5, #0 + add r2, r6, #0 + mov r3, #2 + bl MOD12_022322C0 + add r0, r6, #0 + bl FUN_02021A20 + ldr r2, [r5, #4] + ldr r0, [r2, #0x18] + ldr r1, [r2, #0x1c] + ldr r3, [r2] + ldr r2, _02232178 ; =0x0000011E + ldrb r2, [r3, r2] + bl MOD12_02233448 + mov r1, #5 + lsl r1, r1, #6 + str r0, [r5, r1] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223216C: .word 0x0001090A +_02232170: .word 0x02244D78 +_02232174: .word 0x000080F0 +_02232178: .word 0x0000011E + + thumb_func_start MOD12_0223217C +MOD12_0223217C: ; 0x0223217C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + add r0, r5, #1 + str r2, [sp] + cmp r0, #4 + bhi _022321A0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02232196: ; jump table + .short _022321A0 - _02232196 - 2 ; case 0 + .short _022321A6 - _02232196 - 2 ; case 1 + .short _022321A6 - _02232196 - 2 ; case 2 + .short _022321A6 - _02232196 - 2 ; case 3 + .short _022321A6 - _02232196 - 2 ; case 4 +_022321A0: + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_022321A6: + ldr r0, [r4, #4] + mov r2, #0 + ldr r1, [r0] + ldr r0, _02232208 ; =0x00000123 + ldrb r0, [r1, r0] + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, r5, #0 + add r1, #0x36 + bl FUN_020671BC + cmp r0, #0 + beq _022321C8 + ldr r0, _0223220C ; =0x000002E1 + ldrb r0, [r4, r0] + cmp r0, r5 + bne _022321CE +_022321C8: + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_022321CE: + mov r0, #6 + ldr r1, _02232210 ; =0x02244E00 + mul r0, r5 + add r7, r1, r0 + ldr r1, _02232214 ; =0x02244EA4 + lsl r0, r5, #4 + add r6, r1, r0 + ldr r1, [sp] + add r0, r4, #0 + bl MOD12_02232AB8 + ldr r0, _02232218 ; =MOD12_022327E0 + add r1, r4, #0 + bl MOD12_02232654 + mov r1, #0xbd + lsl r1, r1, #2 + str r7, [r4, r1] + add r0, r1, #4 + str r6, [r4, r0] + add r0, r1, #0 + mov r2, #2 + add r0, #0xc + strb r2, [r4, r0] + add r1, #8 + str r5, [r4, r1] + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02232208: .word 0x00000123 +_0223220C: .word 0x000002E1 +_02232210: .word 0x02244E00 +_02232214: .word 0x02244EA4 +_02232218: .word MOD12_022327E0 + + thumb_func_start MOD12_0223221C +MOD12_0223221C: ; 0x0223221C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + add r0, r5, #1 + cmp r0, #4 + bhi _0223223E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02232234: ; jump table + .short _0223223E - _02232234 - 2 ; case 0 + .short _02232242 - _02232234 - 2 ; case 1 + .short _02232246 - _02232234 - 2 ; case 2 + .short _0223224A - _02232234 - 2 ; case 3 + .short _0223224E - _02232234 - 2 ; case 4 +_0223223E: + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} +_02232242: + mov r6, #0 + b _02232250 +_02232246: + mov r6, #1 + b _02232250 +_0223224A: + mov r6, #2 + b _02232250 +_0223224E: + mov r6, #3 +_02232250: + ldr r0, [r4, #4] + ldr r1, [r0] + ldr r0, _022322B0 ; =0x0000011E + ldrb r0, [r1, r0] + cmp r5, r0 + bne _02232260 + mov r7, #1 + b _02232262 +_02232260: + mov r7, #0 +_02232262: + add r0, r4, #0 + add r1, r2, #0 + bl MOD12_02232AB8 + ldr r0, _022322B4 ; =MOD12_022326A4 + add r1, r4, #0 + bl MOD12_02232654 + mov r0, #6 + ldr r1, _022322B8 ; =0x02244E18 + mul r0, r5 + add r0, r1, r0 + mov r1, #0xbd + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r2, _022322BC ; =0x02244EE4 + lsl r0, r5, #4 + add r2, r2, r0 + add r0, r1, #4 + str r2, [r4, r0] + mov r2, #3 + lsl r0, r2, #8 + strb r2, [r4, r0] + add r0, r1, #0 + add r0, #8 + str r5, [r4, r0] + add r0, r1, #0 + add r0, #0xd + strb r6, [r4, r0] + cmp r7, #1 + bne _022322AA + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + sub r1, #0xc + str r0, [r4, r1] +_022322AA: + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_022322B0: .word 0x0000011E +_022322B4: .word MOD12_022326A4 +_022322B8: .word 0x02244E18 +_022322BC: .word 0x02244EE4 + + thumb_func_start MOD12_022322C0 +MOD12_022322C0: ; 0x022322C0 + push {r4, r5, r6, r7, lr} + sub sp, #0x7c + add r5, r1, #0 + add r7, r0, #0 + ldr r0, [r5] + str r2, [sp, #0x18] + str r3, [sp, #0x1c] + ldr r6, [sp, #0x9c] + ldr r4, [sp, #0xa8] + cmp r0, #0 + beq _022322DA + bl ErrorHandling +_022322DA: + ldr r1, [r7, #4] + cmp r4, #0 + ldr r0, [r1, #0x24] + str r0, [sp, #0x24] + ldr r0, [r1, #0x1c] + str r0, [sp, #0x20] + bne _022322F6 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + add r2, sp, #0x2c + add r3, sp, #0x28 + bl MOD12_02232DE8 + b _022322FE +_022322F6: + ldrh r0, [r4, #0x12] + str r0, [sp, #0x2c] + ldrh r0, [r4, #0x10] + str r0, [sp, #0x28] +_022322FE: + cmp r4, #0 + bne _0223233C + add r0, sp, #0x3c + bl FUN_0201901C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r2, [sp, #0x28] + ldr r0, [sp, #0x24] + lsl r2, r2, #0x18 + add r1, sp, #0x3c + lsr r2, r2, #0x18 + mov r3, #2 + bl FUN_020190EC + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x90] + ldr r1, [sp, #0x1c] + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldr r2, [sp, #0x18] + add r0, sp, #0x3c + str r3, [sp, #0x14] + bl FUN_0201BE3C + b _02232348 +_0223233C: + add r3, r4, #0 + add r2, sp, #0x3c + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} +_02232348: + add r0, sp, #0x3c + mov r1, #2 + mov r2, #0x15 + bl FUN_02011898 + mov r1, #1 + mov r2, #2 + add r3, sp, #0x30 + bl FUN_0201D568 + ldr r0, [sp, #0xa4] + cmp r0, #1 + bne _0223236C + ldr r1, [sp, #0x2c] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + sub r6, r6, r0 +_0223236C: + ldr r0, [r7, #0x3c] + str r0, [sp, #0x4c] + add r0, sp, #0x3c + str r0, [sp, #0x50] + ldr r0, [sp, #0x20] + bl FUN_0200CA40 + str r0, [sp, #0x54] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x98] + bl FUN_0200C334 + str r0, [sp, #0x58] + mov r0, #0 + ldr r1, [sp, #0x34] + str r0, [sp, #0x5c] + str r0, [sp, #0x6c] + mov r0, #0x64 + str r1, [sp, #0x60] + mov r1, #0x42 + str r0, [sp, #0x70] + mov r0, #2 + str r0, [sp, #0x74] + mov r0, #0x15 + str r0, [sp, #0x78] + ldr r2, [sp, #0xa0] + lsl r1, r1, #2 + add r1, r2, r1 + add r0, sp, #0x4c + str r6, [sp, #0x64] + str r1, [sp, #0x68] + bl FUN_020117E8 + ldr r1, [sp, #0x94] + add r7, r0, #0 + bl FUN_02011AC0 + mov r2, #0x42 + ldr r3, [sp, #0xa0] + lsl r2, r2, #2 + add r0, r7, #0 + add r1, r6, #0 + add r2, r3, r2 + bl FUN_020118C4 + cmp r4, #0 + bne _022323D0 + add r0, sp, #0x3c + bl FUN_02019178 +_022323D0: + str r7, [r5] + add r3, sp, #0x30 + ldmia r3!, {r0, r1} + add r2, r5, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [sp, #0x2c] + strh r0, [r5, #0x10] + add sp, #0x7c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_022323E8 +MOD12_022323E8: ; 0x022323E8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 + add r4, #0x44 + add r7, r6, #0 +_022323F4: + ldr r0, [r5, #0x40] + cmp r0, #0 + beq _02232406 + bl FUN_02011870 + add r0, r4, #0 + bl FUN_0201D5E8 + str r7, [r5, #0x40] +_02232406: + add r6, r6, #1 + add r5, #0x14 + add r4, #0x14 + cmp r6, #0xc + blt _022323F4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02232414 +MOD12_02232414: ; 0x02232414 + push {r4, lr} + add r4, r0, #0 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0223242E + bl MOD12_0223349C + mov r0, #5 + mov r1, #0 + lsl r0, r0, #6 + str r1, [r4, r0] +_0223242E: + pop {r4, pc} + + thumb_func_start MOD12_02232430 +MOD12_02232430: ; 0x02232430 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + mov r0, #0 + mov r7, #0x51 + str r0, [sp, #4] + add r6, r0, #0 + lsl r7, r7, #2 +_02232440: + ldr r5, [sp] + mov r4, #0 +_02232444: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02232454 + bl MOD12_02233534 + mov r0, #0x51 + lsl r0, r0, #2 + str r6, [r5, r0] +_02232454: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _02232444 + ldr r0, [sp] + add r0, #0x18 + str r0, [sp] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #4 + blt _02232440 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02232470 +MOD12_02232470: ; 0x02232470 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + add r5, r0, #0 + add r7, r1, #0 + ldr r1, [r5, #4] + ldr r4, _02232504 ; =0x02244E70 + ldr r0, [r1, #0x18] + add r3, sp, #8 + str r0, [sp, #4] + ldr r0, [r1, #0x1c] + mov r2, #6 + str r0, [sp] +_02232488: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02232488 + ldr r0, [r4] + mov r4, #0 + str r0, [r3] + add r6, sp, #8 + b _022324FC +_0223249A: + lsl r0, r4, #2 + add r1, r5, r0 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _022324AC + bl ErrorHandling +_022324AC: + lsl r0, r4, #1 + ldrh r0, [r7, r0] + cmp r0, #0 + beq _022324FA + mov r0, #0xb5 + add r1, r5, r4 + lsl r0, r0, #2 + ldrb r2, [r1, r0] + ldr r0, _02232508 ; =0x000080F6 + ldr r1, _0223250C ; =0x02244DB4 + add r0, r4, r0 + str r0, [sp, #0x1c] + lsl r0, r4, #2 + ldrh r1, [r1, r0] + add r3, sp, #8 + strh r1, [r6] + ldr r1, _0223250C ; =0x02244DB4 + add r0, r1, r0 + ldrh r0, [r0, #2] + ldr r1, [sp] + strh r0, [r6, #2] + ldr r0, [sp, #4] + bl MOD12_02240E98 + lsl r1, r4, #2 + mov r2, #0x13 + mov r3, #0x11 + add r1, r5, r1 + lsl r2, r2, #4 + str r0, [r1, r2] + add r0, r2, #0 + ldr r0, [r1, r0] + mov r1, #0 + mov r2, #2 + ldrsh r1, [r6, r1] + ldrsh r2, [r6, r2] + lsl r3, r3, #0x10 + bl FUN_0200C750 +_022324FA: + add r4, r4, #1 +_022324FC: + cmp r4, #4 + blt _0223249A + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02232504: .word 0x02244E70 +_02232508: .word 0x000080F6 +_0223250C: .word 0x02244DB4 + + thumb_func_start MOD12_02232510 +MOD12_02232510: ; 0x02232510 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + mov r7, #0x13 + add r5, r0, #0 + add r6, r4, #0 + lsl r7, r7, #4 +_0223251C: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0223252C + bl MOD12_02240EC8 + mov r0, #0x13 + lsl r0, r0, #4 + str r6, [r5, r0] +_0223252C: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0223251C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02232538 +MOD12_02232538: ; 0x02232538 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #4] + add r6, r1, #0 + ldr r0, [r0, #0x24] + add r7, r3, #0 + mov r1, #4 + add r4, r2, #0 + str r0, [sp, #4] + bl FUN_0201886C + mov ip, r0 + lsl r0, r7, #2 + add r0, r5, r0 + ldr r0, [r0, #0x20] + ldr r7, [r4] + str r0, [sp] + ldr r0, [sp, #0x20] + lsl r0, r0, #1 + ldrsh r1, [r6, r0] + ldr r0, [r4, #4] + cmp r7, r0 + bgt _0223259E + lsl r6, r7, #5 +_0223256A: + lsl r2, r6, #1 + mov r0, ip + add r5, r0, r2 + ldr r0, [sp] + ldr r3, [r4, #0xc] + add r2, r0, r2 + ldr r0, [r4, #8] + cmp r0, r3 + bgt _02232594 + lsl r3, r0, #1 + add r2, r2, r3 + add r3, r5, r3 +_02232582: + ldrh r5, [r2] + add r0, r0, #1 + add r2, r2, #2 + add r5, r1, r5 + strh r5, [r3] + ldr r5, [r4, #0xc] + add r3, r3, #2 + cmp r0, r5 + ble _02232582 +_02232594: + ldr r0, [r4, #4] + add r7, r7, #1 + add r6, #0x20 + cmp r7, r0 + ble _0223256A +_0223259E: + ldr r0, [sp, #4] + mov r1, #4 + bl FUN_0201AC68 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_022325AC +MOD12_022325AC: ; 0x022325AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + ldr r6, _02232624 ; =0x02244DD8 + add r5, r2, #0 + add r4, r0, #0 + add r3, r1, #0 + add r2, sp, #4 + ldmia r6!, {r0, r1} + add r7, r2, #0 + stmia r2!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r6] + str r0, [r2] + mov r0, #0 + mvn r0, r0 + cmp r3, r0 + beq _022325EC + mov r0, #0x20 + str r0, [sp] + lsl r1, r3, #2 + ldr r0, [r4, #4] + add r3, r5, #4 + lsl r3, r3, #0x14 + ldr r0, [r0, #0x50] + ldr r1, [r7, r1] + mov r2, #1 + lsr r3, r3, #0x10 + bl FUN_02003054 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_022325EC: + ldr r2, _02232628 ; =0x02244D64 + lsl r1, r5, #1 + mov r0, #0 + add r1, r2, r1 + str r0, [sp] + ldr r3, _0223262C ; =0x02244F24 + lsl r2, r5, #4 + add r2, r3, r2 + add r0, r4, #0 + mov r3, #2 + bl MOD12_02232538 + mov r2, #0x20 + str r2, [sp] + ldr r0, [r4, #4] + add r3, r5, #4 + lsl r3, r3, #0x14 + ldr r1, [r4, #0x38] + add r2, #0xe0 + add r1, r1, r2 + ldr r0, [r0, #0x50] + mov r2, #1 + lsr r3, r3, #0x10 + bl FUN_02003054 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02232624: .word 0x02244DD8 +_02232628: .word 0x02244D64 +_0223262C: .word 0x02244F24 + + thumb_func_start MOD12_02232630 +MOD12_02232630: ; 0x02232630 + ldr r3, _02232634 ; =MOD12_02232638 + bx r3 + .align 2, 0 +_02232634: .word MOD12_02232638 + + thumb_func_start MOD12_02232638 +MOD12_02232638: ; 0x02232638 + push {r4, lr} + add r4, r0, #0 + bl MOD12_02232414 + add r0, r4, #0 + bl MOD12_02232430 + add r0, r4, #0 + bl MOD12_02232510 + add r0, r4, #0 + bl MOD12_022323E8 + pop {r4, pc} + + thumb_func_start MOD12_02232654 +MOD12_02232654: ; 0x02232654 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _02232664 + bl ErrorHandling +_02232664: + mov r0, #0xb9 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + mov r2, #0x20 + bl MI_CpuFill8 + ldr r2, _02232680 ; =0x00000514 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x10] + pop {r3, r4, r5, pc} + .align 2, 0 +_02232680: .word 0x00000514 + + thumb_func_start MOD12_02232684 +MOD12_02232684: ; 0x02232684 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _022326A2 + bl FUN_0200CAB4 + mov r0, #0xb9 + lsl r0, r0, #2 + mov r1, #0 + add r0, r4, r0 + mov r2, #0x20 + str r1, [r4, #0x10] + bl MI_CpuFill8 +_022326A2: + pop {r4, pc} + + thumb_func_start MOD12_022326A4 +MOD12_022326A4: ; 0x022326A4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov r3, #0xb9 + add r5, r1, #0 + lsl r3, r3, #2 + ldrsh r0, [r5, r3] + cmp r0, #0 + beq _022326BE + cmp r0, #1 + beq _02232730 + cmp r0, #2 + beq _0223274C + b _022327BC +_022326BE: + mov r0, #2 + str r0, [sp] + add r1, r3, #0 + add r2, r3, #0 + add r3, #0x1c + add r1, #0x10 + add r2, #0x14 + ldrb r3, [r5, r3] + ldr r1, [r5, r1] + ldr r2, [r5, r2] + add r0, r5, #0 + bl MOD12_02232538 + ldr r0, _022327DC ; =0x00000301 + add r2, sp, #4 + ldrb r1, [r5, r0] + mov r0, #0x14 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x40] + add r1, sp, #8 + bl FUN_020119A4 + ldr r0, _022327DC ; =0x00000301 + ldr r2, [sp, #4] + ldrb r1, [r5, r0] + mov r0, #0x14 + sub r2, r2, #2 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x40] + ldr r1, [sp, #8] + bl FUN_020118C4 + mov r7, #0xba + mov r6, #0 + add r4, r5, #0 + lsl r7, r7, #2 +_0223270A: + ldr r0, [r4, r7] + cmp r0, #0 + beq _0223271A + mov r1, #0 + ldr r0, [r0] + sub r2, r1, #2 + bl FUN_0200C7FC +_0223271A: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #3 + blt _0223270A + mov r0, #0xb9 + lsl r0, r0, #2 + ldrsh r1, [r5, r0] + add sp, #0xc + add r1, r1, #1 + strh r1, [r5, r0] + pop {r4, r5, r6, r7, pc} +_02232730: + add r0, r3, #2 + ldrsh r0, [r5, r0] + add r1, r0, #1 + add r0, r3, #2 + strh r1, [r5, r0] + ldrsh r0, [r5, r0] + cmp r0, #0 + ble _022327D8 + mov r1, #0 + add r0, r3, #2 + strh r1, [r5, r0] + ldrsh r0, [r5, r3] + add r0, r0, #1 + strh r0, [r5, r3] +_0223274C: + mov r0, #1 + mov r3, #0xbd + str r0, [sp] + lsl r3, r3, #2 + add r2, r3, #4 + ldr r1, [r5, r3] + add r3, #0xc + ldrb r3, [r5, r3] + ldr r2, [r5, r2] + add r0, r5, #0 + bl MOD12_02232538 + ldr r0, _022327DC ; =0x00000301 + add r2, sp, #4 + ldrb r1, [r5, r0] + mov r0, #0x14 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x40] + add r1, sp, #8 + bl FUN_020119A4 + ldr r0, _022327DC ; =0x00000301 + ldr r2, [sp, #4] + ldrb r1, [r5, r0] + mov r0, #0x14 + add r2, r2, #1 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x40] + ldr r1, [sp, #8] + bl FUN_020118C4 + mov r7, #0xba + mov r6, #0 + add r4, r5, #0 + lsl r7, r7, #2 +_02232796: + ldr r0, [r4, r7] + cmp r0, #0 + beq _022327A6 + ldr r0, [r0] + mov r1, #0 + mov r2, #1 + bl FUN_0200C7FC +_022327A6: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #3 + blt _02232796 + mov r0, #0xb9 + lsl r0, r0, #2 + ldrsh r1, [r5, r0] + add sp, #0xc + add r1, r1, #1 + strh r1, [r5, r0] + pop {r4, r5, r6, r7, pc} +_022327BC: + add r0, r3, #2 + ldrsh r0, [r5, r0] + add r1, r0, #1 + add r0, r3, #2 + strh r1, [r5, r0] + ldrsh r0, [r5, r0] + cmp r0, #0 + ble _022327D8 + add r0, r5, #0 + bl MOD12_02232630 + add r0, r5, #0 + bl MOD12_02232684 +_022327D8: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022327DC: .word 0x00000301 + + thumb_func_start MOD12_022327E0 +MOD12_022327E0: ; 0x022327E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + ldr r7, _02232A64 ; =0x00000123 + add r4, r1, #0 + mov r6, #0 + add r5, sp, #0x20 +_022327EC: + ldr r0, [r4, #4] + mov r2, #0 + ldr r0, [r0] + ldrb r1, [r0, r7] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r6, #0 + add r1, #0x36 + bl FUN_020671BC + strh r0, [r5] + add r6, r6, #1 + add r5, r5, #2 + cmp r6, #4 + blt _022327EC + mov r0, #0xbf + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #3 + bhi _02232870 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02232820: ; jump table + .short _02232828 - _02232820 - 2 ; case 0 + .short _0223283A - _02232820 - 2 ; case 1 + .short _0223284C - _02232820 - 2 ; case 2 + .short _0223285E - _02232820 - 2 ; case 3 +_02232828: + mov r0, #8 + str r0, [sp, #0xc] + add r0, sp, #0x20 + ldrh r0, [r0] + mov r5, #0 + mov r6, #4 + str r0, [sp, #8] + str r5, [sp, #4] + b _02232878 +_0223283A: + mov r0, #9 + str r0, [sp, #0xc] + add r0, sp, #0x20 + ldrh r0, [r0, #2] + mov r5, #1 + mov r6, #5 + str r0, [sp, #8] + str r5, [sp, #4] + b _02232878 +_0223284C: + mov r0, #0xa + str r0, [sp, #0xc] + add r0, sp, #0x20 + ldrh r0, [r0, #4] + mov r5, #2 + mov r6, #6 + str r0, [sp, #8] + str r5, [sp, #4] + b _02232878 +_0223285E: + mov r0, #0xb + str r0, [sp, #0xc] + add r0, sp, #0x20 + ldrh r0, [r0, #6] + mov r5, #3 + mov r6, #7 + str r0, [sp, #8] + str r5, [sp, #4] + b _02232878 +_02232870: + mov r5, #0 + add r6, r5, #0 + str r5, [sp, #0xc] + str r5, [sp, #8] +_02232878: + mov r3, #0xb9 + lsl r3, r3, #2 + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _0223288C + cmp r0, #1 + beq _0223295A + cmp r0, #2 + beq _02232976 + b _02232A42 +_0223288C: + mov r0, #2 + str r0, [sp] + add r1, r3, #0 + add r2, r3, #0 + add r3, #0x1c + add r1, #0x10 + add r2, #0x14 + ldrb r3, [r4, r3] + ldr r1, [r4, r1] + ldr r2, [r4, r2] + add r0, r4, #0 + bl MOD12_02232538 + add r7, r4, #0 + mov r0, #0x14 + mul r0, r5 + add r7, #0x40 + str r0, [sp, #0x10] + ldr r0, [r7, r0] + add r1, sp, #0x2c + add r2, sp, #0x28 + bl FUN_020119A4 + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x28] + ldr r0, [r7, r0] + ldr r1, [sp, #0x2c] + sub r2, r2, #2 + bl FUN_020118C4 + add r7, r4, #0 + mov r0, #0x14 + mul r0, r6 + add r7, #0x40 + str r0, [sp, #0x14] + ldr r0, [r7, r0] + add r1, sp, #0x2c + add r2, sp, #0x28 + bl FUN_020119A4 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x28] + ldr r0, [r7, r0] + ldr r1, [sp, #0x2c] + sub r2, r2, #2 + bl FUN_020118C4 + ldr r0, [sp, #0xc] + add r6, r4, #0 + mov r1, #0x14 + add r7, r0, #0 + mul r7, r1 + add r6, #0x40 + ldr r0, [r6, r7] + add r1, sp, #0x2c + add r2, sp, #0x28 + bl FUN_020119A4 + ldr r2, [sp, #0x28] + ldr r0, [r6, r7] + ldr r1, [sp, #0x2c] + sub r2, r2, #2 + bl FUN_020118C4 + ldr r0, [sp, #8] + cmp r0, #0 + beq _0223294C + lsl r0, r5, #2 + add r1, r4, r0 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #0 + ldr r0, [r0] + sub r2, r1, #2 + bl FUN_0200C7FC + mov r7, #0x51 + ldr r0, [sp, #4] + mov r1, #0x18 + mul r1, r0 + mov r6, #0 + add r5, r4, r1 + lsl r7, r7, #2 +_02232934: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02232944 + mov r1, #0 + ldr r0, [r0] + sub r2, r1, #2 + bl FUN_0200C7FC +_02232944: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #6 + blt _02232934 +_0223294C: + mov r0, #0xb9 + lsl r0, r0, #2 + ldrsh r1, [r4, r0] + add sp, #0x30 + add r1, r1, #1 + strh r1, [r4, r0] + pop {r3, r4, r5, r6, r7, pc} +_0223295A: + add r0, r3, #2 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r3, #2 + strh r1, [r4, r0] + ldrsh r0, [r4, r0] + cmp r0, #0 + ble _02232A5E + mov r1, #0 + add r0, r3, #2 + strh r1, [r4, r0] + ldrsh r0, [r4, r3] + add r0, r0, #1 + strh r0, [r4, r3] +_02232976: + mov r0, #1 + mov r3, #0xbd + str r0, [sp] + lsl r3, r3, #2 + add r2, r3, #4 + ldr r1, [r4, r3] + add r3, #0xc + ldrb r3, [r4, r3] + ldr r2, [r4, r2] + add r0, r4, #0 + bl MOD12_02232538 + add r7, r4, #0 + mov r0, #0x14 + mul r0, r5 + add r7, #0x40 + str r0, [sp, #0x18] + ldr r0, [r7, r0] + add r1, sp, #0x2c + add r2, sp, #0x28 + bl FUN_020119A4 + ldr r0, [sp, #0x18] + ldr r2, [sp, #0x28] + ldr r0, [r7, r0] + ldr r1, [sp, #0x2c] + add r2, r2, #1 + bl FUN_020118C4 + add r7, r4, #0 + mov r0, #0x14 + mul r0, r6 + add r7, #0x40 + str r0, [sp, #0x1c] + ldr r0, [r7, r0] + add r1, sp, #0x2c + add r2, sp, #0x28 + bl FUN_020119A4 + ldr r0, [sp, #0x1c] + ldr r2, [sp, #0x28] + ldr r0, [r7, r0] + ldr r1, [sp, #0x2c] + add r2, r2, #1 + bl FUN_020118C4 + ldr r0, [sp, #0xc] + add r6, r4, #0 + mov r1, #0x14 + add r7, r0, #0 + mul r7, r1 + add r6, #0x40 + ldr r0, [r6, r7] + add r1, sp, #0x2c + add r2, sp, #0x28 + bl FUN_020119A4 + ldr r2, [sp, #0x28] + ldr r0, [r6, r7] + ldr r1, [sp, #0x2c] + add r2, r2, #1 + bl FUN_020118C4 + ldr r0, [sp, #8] + cmp r0, #0 + beq _02232A34 + lsl r0, r5, #2 + add r1, r4, r0 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #0 + ldr r0, [r0] + mov r2, #1 + bl FUN_0200C7FC + mov r7, #0x51 + ldr r0, [sp, #4] + mov r1, #0x18 + mul r1, r0 + mov r6, #0 + add r5, r4, r1 + lsl r7, r7, #2 +_02232A1C: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02232A2C + ldr r0, [r0] + mov r1, #0 + mov r2, #1 + bl FUN_0200C7FC +_02232A2C: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #6 + blt _02232A1C +_02232A34: + mov r0, #0xb9 + lsl r0, r0, #2 + ldrsh r1, [r4, r0] + add sp, #0x30 + add r1, r1, #1 + strh r1, [r4, r0] + pop {r3, r4, r5, r6, r7, pc} +_02232A42: + add r0, r3, #2 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r3, #2 + strh r1, [r4, r0] + ldrsh r0, [r4, r0] + cmp r0, #0 + ble _02232A5E + add r0, r4, #0 + bl MOD12_02232630 + add r0, r4, #0 + bl MOD12_02232684 +_02232A5E: + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_02232A64: .word 0x00000123 + + thumb_func_start MOD12_02232A68 +MOD12_02232A68: ; 0x02232A68 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _02232A78 + bl ErrorHandling +_02232A78: + mov r0, #0xc1 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + mov r2, #0xc + bl MI_CpuFill8 + ldr r2, _02232A94 ; =0x00000528 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x14] + pop {r3, r4, r5, pc} + .align 2, 0 +_02232A94: .word 0x00000528 + + thumb_func_start MOD12_02232A98 +MOD12_02232A98: ; 0x02232A98 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _02232AB6 + bl FUN_0200CAB4 + mov r0, #0xc1 + lsl r0, r0, #2 + mov r1, #0 + add r0, r4, r0 + mov r2, #0xc + str r1, [r4, #0x14] + bl MI_CpuFill8 +_02232AB6: + pop {r4, pc} + + thumb_func_start MOD12_02232AB8 +MOD12_02232AB8: ; 0x02232AB8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #0xff + beq _02232ACE + ldr r0, _02232AD0 ; =MOD12_02232AD8 + add r1, r5, #0 + bl MOD12_02232A68 + ldr r0, _02232AD4 ; =0x0000030D + strb r4, [r5, r0] +_02232ACE: + pop {r3, r4, r5, pc} + .align 2, 0 +_02232AD0: .word MOD12_02232AD8 +_02232AD4: .word 0x0000030D + + thumb_func_start MOD12_02232AD8 +MOD12_02232AD8: ; 0x02232AD8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r0, #0xc1 + add r5, r1, #0 + lsl r0, r0, #2 + add r2, r5, r0 + ldr r0, [r5, #4] + mov r4, #0 + ldr r3, [r0, #0x50] + ldrb r0, [r2, #8] + cmp r0, #0 + beq _02232AF8 + cmp r0, #1 + beq _02232B14 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02232AF8: + mov r0, #0xa + lsl r0, r0, #8 + strh r0, [r2, #4] + ldr r0, _02232B74 ; =0xFFFFFB00 + strh r0, [r2, #6] + mov r0, #4 + ldrsh r1, [r2, r0] + mov r0, #6 + ldrsh r0, [r2, r0] + sub r0, r1, r0 + strh r0, [r2, #4] + ldrb r0, [r2, #8] + add r0, r0, #1 + strb r0, [r2, #8] +_02232B14: + mov r7, #4 + mov r6, #6 + ldrsh r1, [r2, r7] + ldrsh r0, [r2, r6] + add r0, r1, r0 + strh r0, [r2, #4] + ldrsh r6, [r2, r6] + cmp r6, #0 + blt _02232B34 + ldrsh r1, [r2, r7] + lsl r0, r7, #0xa + cmp r1, r0 + blt _02232B34 + strh r0, [r2, #4] + mov r4, #1 + b _02232B46 +_02232B34: + cmp r6, #0 + bge _02232B46 + mov r0, #4 + ldrsh r0, [r2, r0] + cmp r0, #0 + bgt _02232B46 + mov r0, #0 + strh r0, [r2, #4] + mov r4, #1 +_02232B46: + mov r0, #4 + ldrsh r0, [r2, r0] + mov r1, #1 + asr r0, r0, #8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, _02232B78 ; =0x00007FFF + str r0, [sp, #4] + ldrb r2, [r2, #9] + add r0, r3, #0 + mov r3, #0x10 + lsl r2, r2, #0x14 + lsr r2, r2, #0x10 + bl FUN_020039E8 + cmp r4, #1 + bne _02232B70 + add r0, r5, #0 + bl MOD12_02232A98 +_02232B70: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02232B74: .word 0xFFFFFB00 +_02232B78: .word 0x00007FFF + + thumb_func_start MOD12_02232B7C +MOD12_02232B7C: ; 0x02232B7C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r1, #0x69 + add r5, r0, #0 + mov r0, #0 + lsl r1, r1, #2 + str r0, [sp, #4] + add r0, r5, r1 + str r0, [sp] + add r0, r1, #0 + add r0, #0x50 + add r1, #0xa0 + add r4, r5, #0 + add r7, r5, r0 + add r6, r5, r1 +_02232B9A: + mov r0, #0x1b + lsl r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02232BAA + ldr r0, [sp] + bl FUN_02019178 +_02232BAA: + mov r0, #2 + lsl r0, r0, #8 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02232BBA + add r0, r7, #0 + bl FUN_02019178 +_02232BBA: + mov r0, #0x25 + lsl r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02232BCA + add r0, r6, #0 + bl FUN_02019178 +_02232BCA: + ldr r0, [sp] + add r4, #0x14 + add r0, #0x14 + str r0, [sp] + ldr r0, [sp, #4] + add r7, #0x14 + add r0, r0, #1 + add r6, #0x14 + str r0, [sp, #4] + cmp r0, #4 + blt _02232B9A + mov r0, #0xa5 + lsl r0, r0, #2 + add r7, r0, #0 + mov r6, #0 + add r4, r5, r0 + add r7, #0xc +_02232BEC: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02232BF8 + add r0, r4, #0 + bl FUN_02019178 +_02232BF8: + add r6, r6, #1 + add r5, #0x14 + add r4, #0x14 + cmp r6, #3 + blt _02232BEC + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02232C08 +MOD12_02232C08: ; 0x02232C08 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r0, #0 + mov r0, #0x69 + lsl r0, r0, #2 + add r6, r5, r0 + mov r0, #0 + str r0, [sp, #0x20] + add r0, r6, #0 + str r0, [sp, #0x18] + add r0, #0x50 + str r0, [sp, #0x18] + add r0, r6, #0 + str r0, [sp, #0x14] + add r0, #0xa0 + add r7, r1, #0 + str r6, [sp, #0x1c] + str r0, [sp, #0x14] +_02232C2C: + ldrh r0, [r7] + cmp r0, #0 + beq _02232C52 + ldr r1, [sp, #0x20] + add r4, r6, r1 + mov r1, #0xa + bl FUN_0206AB18 + mov r1, #0x4b + lsl r1, r1, #2 + strb r0, [r4, r1] + ldrh r0, [r7] + mov r1, #0xb + bl FUN_0206AB18 + mov r1, #0x13 + lsl r1, r1, #4 + strb r0, [r4, r1] + b _02232C62 +_02232C52: + ldr r0, [sp, #0x20] + mov r1, #0 + add r4, r6, r0 + mov r0, #0x4b + lsl r0, r0, #2 + strb r1, [r4, r0] + add r0, r0, #4 + strb r1, [r4, r0] +_02232C62: + ldrh r0, [r7] + mov r1, #0x15 + bl FUN_0200AA14 + str r0, [sp, #0x24] + ldr r0, _02232D6C ; =0x00010708 + ldr r1, [sp, #0x24] + str r0, [sp] + ldr r3, [sp, #0x1c] + add r0, r5, #0 + mov r2, #2 + bl MOD12_02232D7C + ldr r0, [sp, #0x24] + bl FUN_02021A20 + mov r0, #0x4b + lsl r0, r0, #2 + ldrb r0, [r4, r0] + add r1, sp, #0x34 + add r2, sp, #0x30 + bl FUN_02083130 + ldr r0, [r5, #4] + ldr r1, [sp, #0x34] + ldr r0, [r0, #0x40] + bl FUN_0200A914 + str r0, [sp, #0x28] + ldr r0, [r5, #4] + ldr r1, [sp, #0x30] + ldr r0, [r0, #0x40] + bl FUN_0200A914 + add r4, r0, #0 + ldr r0, _02232D70 ; =0x00010200 + ldr r1, [sp, #0x28] + str r0, [sp] + ldr r3, [sp, #0x18] + add r0, r5, #0 + mov r2, #0 + bl MOD12_02232D7C + ldr r0, _02232D70 ; =0x00010200 + ldr r3, [sp, #0x14] + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD12_02232D7C + ldr r0, [sp, #0x28] + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x1c] + add r7, r7, #2 + add r0, #0x14 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r0, #0x14 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + add r0, #0x14 + str r0, [sp, #0x14] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #4 + blt _02232C2C + mov r7, #0 + add r4, r7, #0 + add r6, #0xf0 +_02232CF8: + ldr r0, [r5, #4] + mov r1, #0x15 + ldr r0, [r0] + add r0, r0, r4 + add r0, #0xd0 + ldrh r0, [r0] + bl MOD12_022314A8 + str r0, [sp, #0x2c] + ldr r0, _02232D74 ; =0x0001090A + ldr r1, [sp, #0x2c] + str r0, [sp] + add r0, r5, #0 + mov r2, #2 + add r3, r6, #0 + bl MOD12_02232D7C + ldr r0, [sp, #0x2c] + bl FUN_02021A20 + add r7, r7, #1 + add r4, #8 + add r6, #0x14 + cmp r7, #3 + blt _02232CF8 + ldr r3, _02232D78 ; =0x000080F1 + ldr r2, [r5, #4] + add r0, r3, #7 + str r3, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r2, #0x18] + ldr r1, [r2, #0x1c] + ldr r2, [r2, #0x50] + add r3, #0xc + bl MOD12_02244750 + ldr r3, _02232D78 ; =0x000080F1 + ldr r1, [r5, #4] + add r0, r3, #7 + str r3, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #5 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [r1, #0x18] + ldr r1, [r1, #0x1c] + mov r2, #0x15 + add r3, #0xc + bl MOD12_022447E8 + mov r1, #0xc5 + lsl r1, r1, #2 + str r0, [r5, r1] + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02232D6C: .word 0x00010708 +_02232D70: .word 0x00010200 +_02232D74: .word 0x0001090A +_02232D78: .word 0x000080F1 + + thumb_func_start MOD12_02232D7C +MOD12_02232D7C: ; 0x02232D7C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r7, r2, #0 + add r6, r1, #0 + add r5, r0, #0 + add r4, r3, #0 + add r0, r6, #0 + add r1, r7, #0 + add r2, sp, #0x1c + add r3, sp, #0x18 + bl MOD12_02232DE8 + ldr r0, [sp, #0x1c] + strh r0, [r4, #0x12] + ldr r0, [sp, #0x18] + strh r0, [r4, #0x10] + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _02232DA8 + add r0, r4, #0 + bl FUN_02019178 +_02232DA8: + add r0, r4, #0 + bl FUN_0201901C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [r5, #4] + ldr r2, [sp, #0x18] + ldr r0, [r0, #0x24] + lsl r2, r2, #0x18 + add r1, r4, #0 + lsr r2, r2, #0x18 + mov r3, #2 + bl FUN_020190EC + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x38] + add r1, r7, #0 + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + add r0, r4, #0 + add r2, r6, #0 + str r3, [sp, #0x14] + bl FUN_0201BE3C + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02232DE8 +MOD12_02232DE8: ; 0x02232DE8 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r6, r2, #0 + add r0, r1, #0 + add r1, r4, #0 + mov r2, #0 + add r7, r3, #0 + bl FUN_02002E14 + add r4, r0, #0 + asr r1, r4, #2 + lsr r1, r1, #0x1d + add r1, r4, r1 + asr r5, r1, #3 + mov r1, #8 + bl FX_ModS32 + cmp r0, #0 + beq _02232E10 + add r5, r5, #1 +_02232E10: + str r4, [r6] + str r5, [r7] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02232E18 +MOD12_02232E18: ; 0x02232E18 + push {r4, r5, r6, lr} + mov r6, #0xc6 + lsl r6, r6, #2 + add r2, r6, #0 + add r5, r0, #0 + sub r2, #0x38 + ldrsb r2, [r5, r2] + ldr r1, _02232E7C ; =0x02245074 + mov r3, #0x30 + add r4, r2, #0 + mul r4, r3 + add r4, r1, r4 + ldr r2, [r4, #0x20] + cmp r2, #0 + bne _02232E3C + sub r3, #0x31 + add r0, r3, #0 + pop {r4, r5, r6, pc} +_02232E3C: + ldrb r1, [r5, r6] + cmp r1, #0 + bne _02232E76 + add r0, r6, #4 + ldrb r0, [r5, r0] + cmp r0, #1 + beq _02232E54 + ldr r1, _02232E80 ; =0x021C48B8 + ldr r2, [r1, #0x48] + ldr r1, _02232E84 ; =0x00000CF3 + tst r1, r2 + beq _02232E70 +_02232E54: + cmp r0, #0 + bne _02232E5E + ldr r0, _02232E88 ; =0x000005DC + bl FUN_020054C8 +_02232E5E: + mov r1, #1 + mov r0, #0xc7 + strb r1, [r5, r6] + mov r2, #0 + lsl r0, r0, #2 + strb r2, [r5, r0] + ldr r2, [r4, #0x20] + add r0, r5, #0 + blx r2 +_02232E70: + mov r0, #0 + mvn r0, r0 + pop {r4, r5, r6, pc} +_02232E76: + mov r1, #0 + blx r2 + pop {r4, r5, r6, pc} + .align 2, 0 +_02232E7C: .word 0x02245074 +_02232E80: .word 0x021C48B8 +_02232E84: .word 0x00000CF3 +_02232E88: .word 0x000005DC + + thumb_func_start MOD12_02232E8C +MOD12_02232E8C: ; 0x02232E8C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r1, [sp, #8] + mov r1, #0x31 + add r5, r0, #0 + lsl r1, r1, #4 + add r0, r5, r1 + str r0, [sp, #0xc] + add r0, r1, #0 + sub r1, #0x30 + add r0, #8 + add r6, r5, r0 + ldrsb r1, [r5, r1] + mov r0, #0x30 + ldr r2, _02232FE4 ; =0x02245074 + mul r0, r1 + add r7, r2, r0 + mov r4, #0 + b _02232ED0 +_02232EB2: + ldr r0, [r5, #4] + ldr r1, _02232FE8 ; =0x00000123 + ldr r0, [r0] + mov r2, #0 + ldrb r1, [r0, r1] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r4, #0 + add r1, #0x36 + bl FUN_020671BC + lsl r2, r4, #1 + add r1, sp, #0x10 + strh r0, [r1, r2] + add r4, r4, #1 +_02232ED0: + cmp r4, #4 + blt _02232EB2 + ldr r0, [sp, #8] + cmp r0, #1 + bne _02232F4E + ldr r0, [sp, #0xc] + mov r1, #0 + ldrsb r0, [r0, r1] + mov r4, #1 + strb r0, [r6, #2] + ldr r0, [sp, #0xc] + ldrsb r0, [r0, r4] + strb r0, [r6, #1] + ldrsb r0, [r6, r4] + lsl r3, r0, #1 + mov r0, #2 + ldrsb r2, [r6, r0] + ldr r0, _02232FEC ; =0x02244D58 + add r0, r0, r3 + ldrb r3, [r2, r0] + add r0, sp, #0x10 + lsl r2, r3, #1 + ldrh r0, [r0, r2] + cmp r0, #0 + bne _02232F1A + ldr r0, [sp, #0xc] + strb r1, [r0] + strb r1, [r0, #1] + strb r1, [r6, #2] + strb r1, [r6, #1] + ldrsb r0, [r6, r4] + lsl r2, r0, #1 + mov r0, #2 + ldrsb r1, [r6, r0] + ldr r0, _02232FEC ; =0x02244D58 + add r0, r0, r2 + ldrb r3, [r1, r0] +_02232F1A: + ldr r0, [r7, #0x14] + lsl r3, r3, #2 + add r0, r0, r3 + ldrb r0, [r0, #1] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r4, [r7, #0x14] + mov r0, #0xc5 + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD12_02244918 + mov r0, #0 + add sp, #0x1c + mvn r0, r0 + pop {r4, r5, r6, r7, pc} +_02232F4E: + ldr r0, _02232FEC ; =0x02244D58 + add r1, sp, #0x18 + mov r2, #4 + bl MI_CpuCopy8 + mov r1, #2 + add r0, r6, #0 + add r2, r1, #0 + add r3, sp, #0x18 + bl MOD12_0223318C + cmp r0, #0x20 + bhi _02232F7E + bhs _02232F8A + cmp r0, #2 + bhi _02232F78 + cmp r0, #1 + blo _02232FDC + beq _02232FC8 + cmp r0, #2 + b _02232FDC +_02232F78: + cmp r0, #0x10 + beq _02232F8A + b _02232FDC +_02232F7E: + cmp r0, #0x40 + bhi _02232F86 + beq _02232F8A + b _02232FDC +_02232F86: + cmp r0, #0x80 + bne _02232FDC +_02232F8A: + mov r0, #1 + ldrsb r0, [r6, r0] + ldr r2, _02232FEC ; =0x02244D58 + lsl r3, r0, #1 + mov r0, #2 + ldrsb r1, [r6, r0] + add r0, r2, r3 + ldrb r1, [r1, r0] + ldr r0, [r7, #0x14] + lsl r3, r1, #2 + add r0, r0, r3 + ldrb r0, [r0, #1] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r4, [r7, #0x14] + mov r0, #0xc5 + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD12_02244918 + b _02232FDC +_02232FC8: + mov r0, #1 + ldrsb r0, [r6, r0] + ldr r2, _02232FEC ; =0x02244D58 + add sp, #0x1c + lsl r3, r0, #1 + mov r0, #2 + ldrsb r1, [r6, r0] + add r0, r2, r3 + ldrb r0, [r1, r0] + pop {r4, r5, r6, r7, pc} +_02232FDC: + mov r0, #0 + mvn r0, r0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02232FE4: .word 0x02245074 +_02232FE8: .word 0x00000123 +_02232FEC: .word 0x02244D58 + + thumb_func_start MOD12_02232FF0 +MOD12_02232FF0: ; 0x02232FF0 + push {r4, r5, r6, r7} + mov r2, #0x31 + lsl r2, r2, #4 + mov r4, #0 + add r2, r0, r2 + ldr r7, _02233028 ; =0x02244D58 + add r0, r4, #0 + b _0223301E +_02233000: + lsl r5, r4, #1 + add r3, r0, #0 + add r6, r7, r5 + b _02233018 +_02233008: + ldrb r5, [r3, r6] + cmp r1, r5 + bne _02233016 + strb r3, [r2] + strb r4, [r2, #1] + pop {r4, r5, r6, r7} + bx lr +_02233016: + add r3, r3, #1 +_02233018: + cmp r3, #2 + blt _02233008 + add r4, r4, #1 +_0223301E: + cmp r4, #2 + blt _02233000 + pop {r4, r5, r6, r7} + bx lr + nop +_02233028: .word 0x02244D58 + + thumb_func_start MOD12_0223302C +MOD12_0223302C: ; 0x0223302C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r7, #0x31 + lsl r7, r7, #4 + add r3, r7, #0 + add r5, r0, #0 + sub r3, #0x30 + add r0, r7, #0 + ldrsb r6, [r5, r3] + add r0, #8 + add r4, r5, r0 + mov r3, #0x30 + add r2, r1, #0 + ldr r0, _02233144 ; =0x02245074 + mul r3, r6 + add r1, r5, r7 + add r6, r0, r3 + cmp r2, #1 + bne _022330A0 + mov r0, #2 + ldrsb r2, [r1, r0] + strb r2, [r4, #2] + mov r2, #3 + ldrsb r1, [r1, r2] + strb r1, [r4, #1] + mov r1, #1 + ldrsb r2, [r4, r1] + ldrsb r3, [r4, r0] + lsl r1, r2, #1 + add r2, r2, r1 + ldr r1, _02233148 ; =0x02244D5C + add r0, r1, r2 + ldrb r1, [r3, r0] + ldr r0, [r6, #0x14] + lsl r3, r1, #2 + add r0, r0, r3 + ldrb r0, [r0, #1] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r4, [r6, #0x14] + add r0, r7, #4 + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + ldr r0, [r5, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD12_02244918 + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_022330A0: + ldr r0, _02233148 ; =0x02244D5C + add r1, sp, #8 + mov r2, #6 + bl MI_CpuCopy8 + add r0, r4, #0 + mov r1, #3 + mov r2, #2 + add r3, sp, #8 + bl MOD12_0223318C + cmp r0, #0x20 + bhi _022330D2 + bhs _022330DE + cmp r0, #2 + bhi _022330CC + cmp r0, #1 + blo _0223313A + beq _0223311E + cmp r0, #2 + beq _02233134 + b _0223313A +_022330CC: + cmp r0, #0x10 + beq _022330DE + b _0223313A +_022330D2: + cmp r0, #0x40 + bhi _022330DA + beq _022330DE + b _0223313A +_022330DA: + cmp r0, #0x80 + bne _0223313A +_022330DE: + mov r0, #1 + ldrsb r1, [r4, r0] + ldr r2, _02233148 ; =0x02244D5C + lsl r0, r1, #1 + add r3, r1, r0 + mov r0, #2 + ldrsb r1, [r4, r0] + add r0, r2, r3 + ldrb r1, [r1, r0] + ldr r0, [r6, #0x14] + lsl r3, r1, #2 + add r0, r0, r3 + ldrb r0, [r0, #1] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r4, [r6, #0x14] + mov r0, #0xc5 + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD12_02244918 + b _0223313A +_0223311E: + mov r0, #1 + ldrsb r1, [r4, r0] + ldr r2, _02233148 ; =0x02244D5C + add sp, #0x10 + lsl r0, r1, #1 + add r3, r1, r0 + mov r0, #2 + ldrsb r1, [r4, r0] + add r0, r2, r3 + ldrb r0, [r1, r0] + pop {r3, r4, r5, r6, r7, pc} +_02233134: + add sp, #0x10 + mov r0, #3 + pop {r3, r4, r5, r6, r7, pc} +_0223313A: + mov r0, #0 + mvn r0, r0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02233144: .word 0x02245074 +_02233148: .word 0x02244D5C + + thumb_func_start MOD12_0223314C +MOD12_0223314C: ; 0x0223314C + push {r4, r5, r6, r7} + cmp r1, #3 + beq _02233184 + mov r2, #0x31 + lsl r2, r2, #4 + add r3, r0, r2 + mov r5, #0 + ldr r0, _02233188 ; =0x02244D5C + add r2, r5, #0 + b _02233180 +_02233160: + lsl r6, r5, #1 + add r6, r5, r6 + add r4, r2, #0 + add r7, r0, r6 + b _0223317A +_0223316A: + ldrb r6, [r4, r7] + cmp r1, r6 + bne _02233178 + strb r4, [r3, #2] + strb r5, [r3, #3] + pop {r4, r5, r6, r7} + bx lr +_02233178: + add r4, r4, #1 +_0223317A: + cmp r4, #3 + blt _0223316A + add r5, r5, #1 +_02233180: + cmp r5, #2 + blt _02233160 +_02233184: + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_02233188: .word 0x02244D5C + + thumb_func_start MOD12_0223318C +MOD12_0223318C: ; 0x0223318C + push {r3, r4, r5, r6, r7, lr} + mov r7, #2 + add r4, r1, #0 + ldrsb r1, [r0, r7] + mov r5, #1 + add r6, r2, #0 + str r1, [sp] + ldrsb r1, [r0, r5] + add r2, r3, #0 + mov r3, #0x40 + mov ip, r1 + ldr r1, _02233364 ; =0x021C48B8 + ldr r1, [r1, #0x48] + tst r3, r1 + beq _022331FA + mov r1, ip + sub r1, r1, #1 + strb r1, [r0, #1] + ldrsb r1, [r0, r5] + cmp r1, #0 + bge _022331BA + mov r1, #0 + strb r1, [r0, #1] +_022331BA: + cmp r2, #0 + beq _022331F6 + mov r3, #1 + mov r1, #2 + ldrsb r3, [r0, r3] + ldrsb r1, [r0, r1] + mul r3, r4 + add r1, r1, r3 + ldrb r1, [r2, r1] + cmp r1, #0xff + bne _022331F6 + add r1, r0, #1 + mov r7, #0 + mov r6, #1 +_022331D6: + ldrsb r3, [r1, r7] + sub r3, r3, #1 + strb r3, [r1] + ldrsb r3, [r0, r6] + cmp r3, #0 + bge _022331E8 + mov r1, ip + strb r1, [r0, #1] + b _022331F6 +_022331E8: + mov r5, #2 + ldrsb r5, [r0, r5] + mul r3, r4 + add r5, r2, r5 + ldrb r3, [r3, r5] + cmp r3, #0xff + beq _022331D6 +_022331F6: + mov r5, #0x40 + b _0223330E +_022331FA: + mov r3, #0x80 + tst r3, r1 + beq _02233250 + mov r1, ip + add r1, r1, #1 + strb r1, [r0, #1] + ldrsb r1, [r0, r5] + cmp r1, r6 + blt _02233210 + sub r1, r6, #1 + strb r1, [r0, #1] +_02233210: + cmp r2, #0 + beq _0223324C + mov r3, #1 + mov r1, #2 + ldrsb r3, [r0, r3] + ldrsb r1, [r0, r1] + mul r3, r4 + add r1, r1, r3 + ldrb r1, [r2, r1] + cmp r1, #0xff + bne _0223324C + add r1, r0, #1 + mov r7, #1 +_0223322A: + mov r3, #0 + ldrsb r3, [r1, r3] + add r3, r3, #1 + strb r3, [r1] + ldrsb r3, [r0, r7] + cmp r3, r6 + blt _0223323E + mov r1, ip + strb r1, [r0, #1] + b _0223324C +_0223323E: + mov r5, #2 + ldrsb r5, [r0, r5] + mul r3, r4 + add r5, r2, r5 + ldrb r3, [r3, r5] + cmp r3, #0xff + beq _0223322A +_0223324C: + mov r5, #0x80 + b _0223330E +_02233250: + mov r3, #0x20 + tst r3, r1 + beq _022332A6 + ldr r1, [sp] + sub r1, r1, #1 + strb r1, [r0, #2] + ldrsb r1, [r0, r7] + cmp r1, #0 + bge _02233266 + mov r1, #0 + strb r1, [r0, #2] +_02233266: + cmp r2, #0 + beq _022332A2 + mov r3, #1 + mov r1, #2 + ldrsb r3, [r0, r3] + ldrsb r1, [r0, r1] + mul r3, r4 + add r1, r1, r3 + ldrb r1, [r2, r1] + cmp r1, #0xff + bne _022332A2 + add r5, r0, #2 + mov r7, #0 + mov r6, #2 +_02233282: + ldrsb r1, [r5, r7] + sub r1, r1, #1 + strb r1, [r5] + ldrsb r3, [r0, r6] + cmp r3, #0 + bge _02233294 + ldr r1, [sp] + strb r1, [r0, #2] + b _022332A2 +_02233294: + mov r1, #1 + ldrsb r1, [r0, r1] + add r3, r2, r3 + mul r1, r4 + ldrb r1, [r1, r3] + cmp r1, #0xff + beq _02233282 +_022332A2: + mov r5, #0x20 + b _0223330E +_022332A6: + mov r3, #0x10 + tst r3, r1 + beq _022332FC + ldr r1, [sp] + add r1, r1, #1 + strb r1, [r0, #2] + ldrsb r1, [r0, r7] + cmp r1, r4 + blt _022332BC + sub r1, r4, #1 + strb r1, [r0, #2] +_022332BC: + cmp r2, #0 + beq _022332F8 + mov r3, #1 + mov r1, #2 + ldrsb r3, [r0, r3] + ldrsb r1, [r0, r1] + mul r3, r4 + add r1, r1, r3 + ldrb r1, [r2, r1] + cmp r1, #0xff + bne _022332F8 + add r5, r0, #2 + mov r7, #0 + mov r6, #2 +_022332D8: + ldrsb r1, [r5, r7] + add r1, r1, #1 + strb r1, [r5] + ldrsb r3, [r0, r6] + cmp r3, r4 + blt _022332EA + ldr r1, [sp] + strb r1, [r0, #2] + b _022332F8 +_022332EA: + mov r1, #1 + ldrsb r1, [r0, r1] + add r3, r2, r3 + mul r1, r4 + ldrb r1, [r1, r3] + cmp r1, #0xff + beq _022332D8 +_022332F8: + mov r5, #0x10 + b _0223330E +_022332FC: + add r3, r1, #0 + tst r3, r5 + bne _0223330E + tst r1, r7 + beq _0223330A + add r5, r7, #0 + b _0223330E +_0223330A: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223330E: + cmp r2, #0 + beq _02233338 + mov r1, ip + add r3, r4, #0 + mul r3, r1 + ldr r1, [sp] + add r1, r1, r3 + mov r3, #2 + ldrsb r6, [r0, r3] + mov r3, #1 + ldrsb r3, [r0, r3] + ldrb r1, [r2, r1] + mul r3, r4 + add r3, r6, r3 + ldrb r2, [r2, r3] + cmp r1, r2 + bne _02233338 + ldr r1, [sp] + strb r1, [r0, #2] + mov r1, ip + strb r1, [r0, #1] +_02233338: + mov r1, #2 + ldrsb r2, [r0, r1] + ldr r1, [sp] + cmp r2, r1 + bne _0223334C + mov r1, #1 + ldrsb r1, [r0, r1] + mov r0, ip + cmp r1, r0 + beq _02233354 +_0223334C: + ldr r0, _02233368 ; =0x000005DC + bl FUN_020054C8 + b _0223335E +_02233354: + mov r0, #0xf0 + tst r0, r5 + beq _0223335E + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223335E: + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02233364: .word 0x021C48B8 +_02233368: .word 0x000005DC + + thumb_func_start MOD12_0223336C +MOD12_0223336C: ; 0x0223336C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + mov r2, #0xb7 + add r4, r1, #0 + str r0, [sp] + lsl r2, r2, #2 + ldr r0, [r4, #4] + ldr r2, [r4, r2] + mov r3, #6 + ldr r0, [r0, #0x24] + ldr r2, [r2, #0x14] + mov r1, #4 + lsl r3, r3, #0xc + bl FUN_02017E14 + mov r0, #0xb6 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0xb6 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_022333A8 +MOD12_022333A8: ; 0x022333A8 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + mov r0, #0x2e + lsl r0, r0, #4 + ldrsb r1, [r1, r0] + mov r0, #0x30 + mov r4, #0 + ldr r2, _022333F0 ; =0x02245074 + mul r0, r1 + ldr r6, _022333F4 ; =0x0000FFFF + add r5, r2, r0 + add r7, r4, #0 +_022333C0: + ldrh r0, [r5, #4] + cmp r0, r6 + bne _022333D4 + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, r7, #0 + bl FUN_0201797C + b _022333E0 +_022333D4: + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r1, #1 + bl FUN_0201797C +_022333E0: + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _022333C0 + ldr r0, [sp] + bl FUN_0200CAB4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022333F0: .word 0x02245074 +_022333F4: .word 0x0000FFFF + + thumb_func_start MOD12_022333F8 +MOD12_022333F8: ; 0x022333F8 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + mov r2, #2 + str r2, [sp, #4] + ldr r2, _02233440 ; =0x000080FB + mov r3, #0x2a + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02233444 ; =0x000080F6 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x2b + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02233444 ; =0x000080F6 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x2c + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02233440: .word 0x000080FB +_02233444: .word 0x000080F6 + + thumb_func_start MOD12_02233448 +MOD12_02233448: ; 0x02233448 + push {r3, r4, r5, lr} + add r5, r2, #0 + ldr r2, _02233474 ; =0x02245168 + bl FUN_0200C154 + mov r1, #0x58 + mul r1, r5 + add r1, #0x28 + lsl r1, r1, #0x10 + mov r3, #0x11 + add r4, r0, #0 + asr r1, r1, #0x10 + mov r2, #0x60 + lsl r3, r3, #0x10 + bl FUN_0200C750 + ldr r0, [r4] + bl FUN_0200C59C + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_02233474: .word 0x02245168 + + thumb_func_start MOD12_02233478 +MOD12_02233478: ; 0x02233478 + push {r4, lr} + ldr r1, _02233494 ; =0x000080FB + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _02233498 ; =0x000080F6 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _02233498 ; =0x000080F6 + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_02233494: .word 0x000080FB +_02233498: .word 0x000080F6 + + thumb_func_start MOD12_0223349C +MOD12_0223349C: ; 0x0223349C + ldr r3, _022334A0 ; =0x0200C3DD + bx r3 + .align 2, 0 +_022334A0: .word 0x0200C3DD + + thumb_func_start MOD12_022334A4 +MOD12_022334A4: ; 0x022334A4 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + mov r2, #2 + str r2, [sp, #4] + ldr r2, _022334EC ; =0x000080FA + mov r3, #0x2d + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _022334F0 ; =0x000080F5 + mov r2, #0x2e + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + add r3, r2, #0 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _022334F0 ; =0x000080F5 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x2f + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_022334EC: .word 0x000080FA +_022334F0: .word 0x000080F5 + + thumb_func_start MOD12_022334F4 +MOD12_022334F4: ; 0x022334F4 + push {r4, r5, r6, lr} + add r5, r2, #0 + ldr r2, [sp, #0x10] + add r6, r3, #0 + cmp r2, #0 + blt _02233508 + ldr r2, _0223352C ; =0x02245134 + bl FUN_0200C154 + b _0223350E +_02233508: + ldr r2, _02233530 ; =0x0224519C + bl FUN_0200C154 +_0223350E: + add r4, r0, #0 + lsl r1, r5, #0x10 + lsl r2, r6, #0x10 + mov r3, #0x11 + add r0, r4, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x10 + bl FUN_0200C750 + ldr r0, [r4] + bl FUN_0200C59C + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223352C: .word 0x02245134 +_02233530: .word 0x0224519C + + thumb_func_start MOD12_02233534 +MOD12_02233534: ; 0x02233534 + ldr r3, _02233538 ; =0x0200C3DD + bx r3 + .align 2, 0 +_02233538: .word 0x0200C3DD + + thumb_func_start MOD12_0223353C +MOD12_0223353C: ; 0x0223353C + push {r4, lr} + ldr r1, _02233558 ; =0x000080FA + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223355C ; =0x000080F5 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223355C ; =0x000080F5 + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_02233558: .word 0x000080FA +_0223355C: .word 0x000080F5 + + thumb_func_start MOD12_02233560 +MOD12_02233560: ; 0x02233560 + ldr r0, _02233568 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + bx lr + .align 2, 0 +_02233568: .word 0x04000050 + + thumb_func_start MOD12_0223356C +MOD12_0223356C: ; 0x0223356C + push {r3, r4, r5, r6, r7, lr} + ldr r0, [r0, #0x30] + add r5, r1, #0 + mov r1, #2 + add r4, r2, #0 + bl FUN_0201886C + mov r1, #0xc0 + mul r1, r5 + lsl r1, r1, #1 + mov r2, #0 + ldr r6, _022335AC ; =0x00000FFF + add r0, r0, r1 + add r3, r2, #0 + lsl r4, r4, #0xc +_0223358A: + lsl r5, r3, #1 + mov r1, #0 + add r5, r0, r5 +_02233590: + ldrh r7, [r5] + add r1, r1, #1 + and r7, r6 + orr r7, r4 + strh r7, [r5] + add r5, r5, #2 + cmp r1, #0xa + blt _02233590 + add r2, r2, #1 + add r3, #0x20 + cmp r2, #6 + blt _0223358A + pop {r3, r4, r5, r6, r7, pc} + nop +_022335AC: .word 0x00000FFF + + thumb_func_start MOD12_022335B0 +MOD12_022335B0: ; 0x022335B0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r4, #0 + ldr r6, _022335DC ; =0x022451D0 + ldr r7, _022335E0 ; =0x00000231 + b _022335CC +_022335BC: + add r2, r5, r4 + ldrb r2, [r2, r7] + add r0, r5, #0 + add r1, r4, #0 + ldrb r2, [r6, r2] + bl MOD12_0223356C + add r4, r4, #1 +_022335CC: + cmp r4, #4 + blt _022335BC + ldr r0, [r5, #0x30] + mov r1, #2 + bl FUN_0201AC68 + pop {r3, r4, r5, r6, r7, pc} + nop +_022335DC: .word 0x022451D0 +_022335E0: .word 0x00000231 + + thumb_func_start MOD12_022335E4 +MOD12_022335E4: ; 0x022335E4 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x15 + mov r1, #0xc + bl FUN_02016998 + mov r1, #0 + mov r2, #0xc + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [r5, #0x5c] + ldr r2, _02233614 ; =0x00009CA4 + str r0, [r4] + ldr r0, _02233618 ; =MOD12_02233648 + add r1, r4, #0 + strb r6, [r4, #0xa] + bl FUN_0200CA44 + str r0, [r4, #4] + add r0, r4, #0 + pop {r4, r5, r6, pc} + nop +_02233614: .word 0x00009CA4 +_02233618: .word MOD12_02233648 + + thumb_func_start MOD12_0223361C +MOD12_0223361C: ; 0x0223361C + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0223362A + bl ErrorHandling +_0223362A: + ldr r0, [r4, #4] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD12_02233638 +MOD12_02233638: ; 0x02233638 + mov r1, #1 + strb r1, [r0, #0xb] + mov r1, #0xa + lsl r1, r1, #8 + strh r1, [r0, #8] + bx lr + + thumb_func_start MOD12_02233644 +MOD12_02233644: ; 0x02233644 + ldrb r0, [r0, #0xb] + bx lr + + thumb_func_start MOD12_02233648 +MOD12_02233648: ; 0x02233648 + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0223369E + mov r0, #8 + ldrsh r0, [r4, r0] + ldr r2, _022336A4 ; =0x022451D0 + mov r1, #0 + asr r0, r0, #8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, _022336A8 ; =0x00007FFF + str r0, [sp, #4] + ldrb r3, [r4, #0xa] + ldr r0, [r4] + ldrb r2, [r2, r3] + mov r3, #4 + lsl r2, r2, #4 + add r2, r2, #1 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + bl FUN_020039E8 + mov r1, #8 + ldrsh r2, [r4, r1] + cmp r2, #0 + bne _0223368C + mov r0, #0 + add sp, #8 + strb r0, [r4, #0xb] + pop {r4, pc} +_0223368C: + mov r0, #0xa + lsl r0, r0, #6 + sub r0, r2, r0 + strh r0, [r4, #8] + ldrsh r0, [r4, r1] + cmp r0, #0 + bge _0223369E + mov r0, #0 + strh r0, [r4, #8] +_0223369E: + add sp, #8 + pop {r4, pc} + nop +_022336A4: .word 0x022451D0 +_022336A8: .word 0x00007FFF + + thumb_func_start MOD12_022336AC +MOD12_022336AC: ; 0x022336AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + str r0, [sp, #0x18] + add r0, #8 + str r0, [sp, #0x18] + add r6, r1, #0 + lsl r0, r6, #2 + ldr r1, [sp, #0x18] + str r0, [sp, #0x1c] + ldr r0, [r1, r0] + bl FUN_02007534 + lsl r0, r6, #4 + add r0, r5, r0 + ldr r0, [r0, #0x58] + cmp r0, #0 + bne _022336D4 + bl ErrorHandling +_022336D4: + add r2, r5, #0 + add r2, #0x58 + lsl r1, r6, #4 + add r0, r2, r1 + str r0, [sp, #0x14] + ldr r0, [r2, r1] + mov r2, #0x32 + mov r1, #0 + lsl r2, r2, #6 + bl MI_CpuFill8 + ldr r1, [sp, #0x14] + lsl r0, r6, #5 + str r1, [sp] + mov r1, #0x15 + str r1, [sp, #4] + mov r1, #0xd8 + sub r1, r1, r0 + str r1, [sp, #8] + mov r1, #0x70 + sub r0, r1, r0 + str r0, [sp, #0xc] + ldr r0, _02233754 ; =0xFFFFFE00 + add r7, r5, #0 + str r0, [sp, #0x10] + ldr r2, [r5] + lsl r4, r6, #2 + ldr r0, [r5, #4] + ldr r2, [r2, r4] + add r7, #8 + add r1, r6, #0 + mov r3, #0 + bl FUN_02082E64 + str r0, [r7, r4] + ldr r0, [r7, r4] + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + ldr r0, [r7, r4] + mov r1, #0x25 + mov r2, #1 + bl FUN_02007558 + ldr r0, [r5] + mov r1, #5 + ldr r0, [r0, r4] + mov r2, #0 + bl FUN_020671BC + bl MOD08_0222A6C8 + cmp r0, #1 + bne _02233750 + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x1c] + mov r2, #1 + ldr r0, [r1, r0] + mov r1, #0x23 + bl FUN_02007558 +_02233750: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02233754: .word 0xFFFFFE00 + + thumb_func_start MOD12_02233758 +MOD12_02233758: ; 0x02233758 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r0, [sp, #0x14] + ldr r7, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x1c] + add r6, r0, #0 + add r0, r7, #0 + str r0, [sp, #0x18] + add r0, #0x58 + ldr r4, [sp, #0x1c] + str r0, [sp, #0x18] + add r5, r7, #0 +_02233772: + ldr r0, [r7, #0x58] + cmp r0, #0 + beq _0223377C + bl ErrorHandling +_0223377C: + mov r1, #0x32 + mov r0, #0x15 + lsl r1, r1, #6 + bl FUN_02016998 + str r0, [r7, #0x58] + ldr r0, [sp, #0x18] + ldr r2, [sp, #0x14] + str r0, [sp] + mov r0, #0x15 + str r0, [sp, #4] + mov r0, #0xd8 + sub r0, r0, r6 + str r0, [sp, #8] + mov r0, #0x70 + sub r0, r0, r6 + str r0, [sp, #0xc] + ldr r0, _02233844 ; =0xFFFFFE00 + ldr r1, [sp, #0x1c] + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r2, [r2] + ldr r0, [r0, #4] + ldr r2, [r2, r4] + mov r3, #0 + bl FUN_02082E64 + str r0, [r5, #8] + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + ldr r0, [r5, #8] + mov r1, #0x25 + mov r2, #1 + bl FUN_02007558 + ldr r0, [sp, #0x14] + mov r1, #5 + ldr r0, [r0] + mov r2, #0 + ldr r0, [r0, r4] + bl FUN_020671BC + bl MOD08_0222A6C8 + cmp r0, #1 + bne _022337E6 + ldr r0, [r5, #8] + mov r1, #0x23 + mov r2, #1 + bl FUN_02007558 +_022337E6: + ldr r0, [sp, #0x18] + add r7, #0x10 + add r0, #0x10 + str r0, [sp, #0x18] + ldr r0, [sp, #0x1c] + add r6, #0x20 + add r0, r0, #1 + add r4, r4, #4 + add r5, r5, #4 + str r0, [sp, #0x1c] + cmp r0, #4 + blt _02233772 + ldr r0, [sp, #0x14] + add r0, #0x98 + ldr r0, [r0] + cmp r0, #0 + beq _0223380C + bl ErrorHandling +_0223380C: + mov r1, #0x32 + mov r0, #0x15 + lsl r1, r1, #6 + bl FUN_02016998 + ldr r1, [sp, #0x14] + mov r2, #0x32 + add r1, #0x98 + str r0, [r1] + ldr r0, [sp, #0x14] + lsl r2, r2, #6 + ldr r1, [r0, #0x60] + add r0, #0xa0 + str r1, [r0] + ldr r0, [sp, #0x14] + ldr r1, [r0, #0x5c] + add r0, #0x9c + str r1, [r0] + ldr r1, [sp, #0x14] + mov r0, #0 + add r1, #0x98 + str r1, [sp, #0x14] + ldr r1, [r1] + bl MIi_CpuClear32 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_02233844: .word 0xFFFFFE00 + + thumb_func_start MOD12_02233848 +MOD12_02233848: ; 0x02233848 + push {r3, r4, r5, r6, r7, lr} + mov r6, #0 + str r0, [sp] + add r4, r0, #0 + add r5, r0, #0 + add r7, r6, #0 +_02233854: + ldr r0, [r4, #8] + bl FUN_02007534 + ldr r0, [r5, #0x58] + bl FUN_02016A18 + str r7, [r5, #0x58] + add r6, r6, #1 + add r4, r4, #4 + add r5, #0x10 + cmp r6, #4 + blt _02233854 + ldr r0, [sp] + add r0, #0x98 + ldr r0, [r0] + bl FUN_02016A18 + ldr r0, [sp] + mov r1, #0 + add r0, #0x98 + str r0, [sp] + str r1, [r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02233884 +MOD12_02233884: ; 0x02233884 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x58 + ldr r4, [sp, #0x70] + str r0, [sp, #0x18] + add r5, r1, #0 + add r7, r2, #0 + cmp r4, #0 + beq _0223389A + cmp r4, #1 + beq _022338A8 + b _022338B6 +_0223389A: + mov r0, #0x20 + str r0, [sp, #0x20] + mov r0, #0x1e + mov r3, #0x1f + mov r6, #1 + str r0, [sp, #0x1c] + b _022338C2 +_022338A8: + mov r0, #0x26 + str r0, [sp, #0x20] + mov r0, #0x24 + mov r3, #0x25 + mov r6, #3 + str r0, [sp, #0x1c] + b _022338C2 +_022338B6: + mov r0, #0x23 + str r0, [sp, #0x20] + mov r0, #0x21 + mov r3, #0x22 + mov r6, #2 + str r0, [sp, #0x1c] +_022338C2: + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0223396C ; =0x000080E9 + add r1, r7, #0 + add r0, r4, r0 + str r0, [sp, #8] + add r0, r5, #0 + mov r2, #0x2e + bl FUN_0200C00C + mov r0, #0x2e + str r0, [sp] + str r6, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _02233970 ; =0x000080EA + mov r1, #2 + add r0, r4, r0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r2, r5, #0 + add r3, r7, #0 + bl FUN_0200C0DC + mov r0, #1 + str r0, [sp] + ldr r0, _0223396C ; =0x000080E9 + ldr r3, [sp, #0x20] + add r0, r4, r0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0x2e + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223396C ; =0x000080E9 + ldr r3, [sp, #0x1c] + add r0, r4, r0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0x2e + bl FUN_0200C13C + ldr r6, _02233974 ; =0x022453D8 + add r3, sp, #0x24 + mov r2, #6 +_0223392C: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223392C + ldr r0, [r6] + add r2, sp, #0x24 + str r0, [r3] + ldr r0, _0223396C ; =0x000080E9 + add r1, r4, r0 + add r0, r0, #1 + add r0, r4, r0 + str r0, [sp, #0x3c] + str r1, [sp, #0x38] + str r1, [sp, #0x40] + str r1, [sp, #0x44] + lsl r1, r4, #5 + add r1, #0x60 + add r0, sp, #0x24 + strh r1, [r0] + mov r1, #0x28 + strh r1, [r0, #2] + add r0, r5, #0 + add r1, r7, #0 + bl FUN_0200C154 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0200C59C + add r0, r4, #0 + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223396C: .word 0x000080E9 +_02233970: .word 0x000080EA +_02233974: .word 0x022453D8 + + thumb_func_start MOD12_02233978 +MOD12_02233978: ; 0x02233978 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #0 + add r4, r2, #0 + bl FUN_0200C3DC + ldr r1, _022339B0 ; =0x000080E9 + add r0, r5, #0 + add r1, r4, r1 + bl FUN_0200C358 + ldr r1, _022339B4 ; =0x000080EA + add r0, r5, #0 + add r1, r4, r1 + bl FUN_0200C368 + ldr r1, _022339B0 ; =0x000080E9 + add r0, r5, #0 + add r1, r4, r1 + bl FUN_0200C378 + ldr r1, _022339B0 ; =0x000080E9 + add r0, r5, #0 + add r1, r4, r1 + bl FUN_0200C388 + pop {r3, r4, r5, pc} + nop +_022339B0: .word 0x000080E9 +_022339B4: .word 0x000080EA + + thumb_func_start MOD12_022339B8 +MOD12_022339B8: ; 0x022339B8 + push {r4, r5, lr} + sub sp, #0xc + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02233A04 ; =0x000080EC + add r4, r2, #0 + add r5, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x2e + mov r3, #0x27 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02233A04 ; =0x000080EC + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x28 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02233A04 ; =0x000080EC + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x29 + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_02233A04: .word 0x000080EC + + thumb_func_start MOD12_02233A08 +MOD12_02233A08: ; 0x02233A08 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + ldr r4, _02233A5C ; =0x0224520C + add r6, r2, #0 + add r3, r0, #0 + add r7, r1, #0 + ldmia r4!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r4] + ldr r5, _02233A60 ; =0x0224533C + str r0, [r2] + add r4, sp, #0xc + mov r2, #6 +_02233A24: + ldmia r5!, {r0, r1} + stmia r4!, {r0, r1} + sub r2, r2, #1 + bne _02233A24 + ldr r0, [r5] + lsl r1, r6, #5 + str r0, [r4] + add r1, #0x60 + add r0, sp, #0 + strh r1, [r0, #0xc] + mov r1, #0x20 + strh r1, [r0, #0xe] + lsl r1, r6, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + add r1, r7, #0 + str r0, [sp, #0x18] + add r0, r3, #0 + add r2, sp, #0xc + bl FUN_0200C154 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0200C59C + add r0, r4, #0 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02233A5C: .word 0x0224520C +_02233A60: .word 0x0224533C + + thumb_func_start MOD12_02233A64 +MOD12_02233A64: ; 0x02233A64 + ldr r3, _02233A68 ; =0x0200C3DD + bx r3 + .align 2, 0 +_02233A68: .word 0x0200C3DD + + thumb_func_start MOD12_02233A6C +MOD12_02233A6C: ; 0x02233A6C + push {r4, lr} + ldr r1, _02233A88 ; =0x000080EC + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _02233A88 ; =0x000080EC + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _02233A88 ; =0x000080EC + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_02233A88: .word 0x000080EC + + thumb_func_start MOD12_02233A8C +MOD12_02233A8C: ; 0x02233A8C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r6, r1, #0 + ldr r0, [r7, #0x50] + ldr r1, [r7, #0x18] + ldr r2, [r7, #0x1c] + bl MOD12_022339B8 + mov r4, #0 + add r5, r7, #0 + add r6, #0xd0 +_02233AA2: + ldr r0, [r7, #0x18] + ldr r1, [r7, #0x1c] + add r2, r4, #0 + bl MOD12_02233A08 + add r1, r5, #0 + add r1, #0xb4 + str r0, [r1] + str r4, [sp] + ldr r0, [r7, #0x50] + ldr r1, [r7, #0x18] + ldr r2, [r7, #0x1c] + add r3, r6, #0 + bl MOD12_02233884 + add r1, r5, #0 + add r1, #0xa8 + add r4, r4, #1 + str r0, [r1] + add r5, r5, #4 + add r6, #8 + cmp r4, #3 + blt _02233AA2 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02233AD4 +MOD12_02233AD4: ; 0x02233AD4 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_02233ADC: + add r1, r5, #0 + add r1, #0xa8 + ldr r0, [r6, #0x1c] + ldr r1, [r1] + add r2, r4, #0 + bl MOD12_02233978 + add r0, r5, #0 + add r0, #0xb4 + ldr r0, [r0] + bl MOD12_02233A64 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _02233ADC + ldr r0, [r6, #0x1c] + bl MOD12_02233A6C + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02233B04 +MOD12_02233B04: ; 0x02233B04 + push {r4, r5, lr} + sub sp, #0xc + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02233B50 ; =0x000080F5 + add r4, r2, #0 + add r5, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x2e + mov r3, #0xe + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02233B54 ; =0x000080F3 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0xd + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02233B54 ; =0x000080F3 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0xc + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_02233B50: .word 0x000080F5 +_02233B54: .word 0x000080F3 + + thumb_func_start MOD12_02233B58 +MOD12_02233B58: ; 0x02233B58 + push {r4, lr} + ldr r1, _02233B74 ; =0x000080F5 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _02233B78 ; =0x000080F3 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _02233B78 ; =0x000080F3 + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_02233B74: .word 0x000080F5 +_02233B78: .word 0x000080F3 + + thumb_func_start MOD12_02233B7C +MOD12_02233B7C: ; 0x02233B7C + push {r4, r5, lr} + sub sp, #0x34 + ldr r4, _02233BB8 ; =0x022452D4 + add r5, r0, #0 + add r3, sp, #0 + mov r2, #6 +_02233B88: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02233B88 + ldr r0, [r4] + add r2, sp, #0 + str r0, [r3] + ldr r0, [r5, #0x18] + ldr r1, [r5, #0x1c] + bl FUN_0200C154 + add r4, r0, #0 + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4] + bl FUN_0200C59C + mov r0, #0x5f + lsl r0, r0, #2 + str r4, [r5, r0] + add sp, #0x34 + pop {r4, r5, pc} + nop +_02233BB8: .word 0x022452D4 + + thumb_func_start MOD12_02233BBC +MOD12_02233BBC: ; 0x02233BBC + push {r4, lr} + add r4, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _02233BCE + bl ErrorHandling +_02233BCE: + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200C3DC + mov r0, #0x5f + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_02233BE4 +MOD12_02233BE4: ; 0x02233BE4 + push {r4, r5, r6, lr} + add r4, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r6, r1, #0 + add r5, r2, #0 + cmp r0, #0 + bne _02233BFA + bl ErrorHandling +_02233BFA: + ldr r1, _02233C60 ; =0x02245200 + lsl r2, r6, #2 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r3, _02233C64 ; =0x02245202 + ldrsh r1, [r1, r2] + ldrsh r2, [r3, r2] + ldr r0, [r4, r0] + bl FUN_0200C714 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r5, #0 + bl FUN_0200C5C0 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200C644 + cmp r5, #3 + bhi _02233C5C + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02233C36: ; jump table + .short _02233C3E - _02233C36 - 2 ; case 0 + .short _02233C46 - _02233C36 - 2 ; case 1 + .short _02233C4E - _02233C36 - 2 ; case 2 + .short _02233C56 - _02233C36 - 2 ; case 3 +_02233C3E: + ldr r0, _02233C68 ; =0x000006E1 + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_02233C46: + ldr r0, _02233C6C ; =0x000006DF + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_02233C4E: + ldr r0, _02233C70 ; =0x000005DD + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_02233C56: + ldr r0, _02233C70 ; =0x000005DD + bl FUN_020054C8 +_02233C5C: + pop {r4, r5, r6, pc} + nop +_02233C60: .word 0x02245200 +_02233C64: .word 0x02245202 +_02233C68: .word 0x000006E1 +_02233C6C: .word 0x000006DF +_02233C70: .word 0x000005DD + + thumb_func_start MOD12_02233C74 +MOD12_02233C74: ; 0x02233C74 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _02233C86 + bl ErrorHandling +_02233C86: + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200C644 + pop {r4, pc} + + thumb_func_start MOD12_02233C94 +MOD12_02233C94: ; 0x02233C94 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r1, [sp] + mov r0, #0x15 + mov r1, #0x28 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x28 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + strb r0, [r7] + str r7, [r4, #4] + add r1, r4, #0 + add r2, r4, #0 + ldr r0, [sp] + str r5, [r4] + strb r0, [r4, #8] + lsl r0, r0, #2 + add r0, r5, r0 + add r0, #0xb4 + ldr r0, [r0] + add r1, #0xc + add r2, #0xe + bl FUN_0200C7A0 + cmp r6, #6 + bhi _02233CEE + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02233CE0: ; jump table + .short _02233CEE - _02233CE0 - 2 ; case 0 + .short _02233D04 - _02233CE0 - 2 ; case 1 + .short _02233D10 - _02233CE0 - 2 ; case 2 + .short _02233D20 - _02233CE0 - 2 ; case 3 + .short _02233D30 - _02233CE0 - 2 ; case 4 + .short _02233D40 - _02233CE0 - 2 ; case 5 + .short _02233D50 - _02233CE0 - 2 ; case 6 +_02233CEE: + mov r0, #1 + strb r0, [r4, #0x18] + ldr r0, _02233D64 ; =0xFFFFFE00 + ldr r2, _02233D68 ; =0x00009C40 + strh r0, [r4, #0x24] + strh r0, [r4, #0x26] + ldr r0, _02233D6C ; =MOD12_02233E48 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02233D04: + ldr r0, _02233D70 ; =MOD12_02233D84 + ldr r2, _02233D68 ; =0x00009C40 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02233D10: + ldr r0, _02233D74 ; =0xFFFFFD00 + ldr r2, _02233D68 ; =0x00009C40 + strh r0, [r4, #0x24] + ldr r0, _02233D6C ; =MOD12_02233E48 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02233D20: + ldr r0, _02233D78 ; =0xFFFFFC00 + ldr r2, _02233D68 ; =0x00009C40 + strh r0, [r4, #0x24] + ldr r0, _02233D6C ; =MOD12_02233E48 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02233D30: + ldr r0, _02233D7C ; =0xFFFFFB80 + ldr r2, _02233D68 ; =0x00009C40 + strh r0, [r4, #0x24] + ldr r0, _02233D6C ; =MOD12_02233E48 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02233D40: + ldr r0, _02233D80 ; =0xFFFFFD80 + ldr r2, _02233D68 ; =0x00009C40 + strh r0, [r4, #0x24] + ldr r0, _02233D6C ; =MOD12_02233E48 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02233D50: + mov r0, #0xff + mvn r0, r0 + strh r0, [r4, #0x24] + ldr r0, _02233D6C ; =MOD12_02233E48 + ldr r2, _02233D68 ; =0x00009C40 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02233D64: .word 0xFFFFFE00 +_02233D68: .word 0x00009C40 +_02233D6C: .word MOD12_02233E48 +_02233D70: .word MOD12_02233D84 +_02233D74: .word 0xFFFFFD00 +_02233D78: .word 0xFFFFFC00 +_02233D7C: .word 0xFFFFFB80 +_02233D80: .word 0xFFFFFD80 + + thumb_func_start MOD12_02233D84 +MOD12_02233D84: ; 0x02233D84 + push {r4, lr} + add r2, r1, #0 + add r4, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #0 + beq _02233D9A + cmp r0, #1 + beq _02233DB0 + cmp r0, #2 + beq _02233DF0 + b _02233E0A +_02233D9A: + mov r0, #0xc + ldrsh r0, [r2, r0] + lsl r0, r0, #8 + str r0, [r2, #0x10] + mov r0, #0xe + ldrsh r0, [r2, r0] + lsl r0, r0, #8 + str r0, [r2, #0x14] + ldrb r0, [r2, #0xa] + add r0, r0, #1 + strb r0, [r2, #0xa] +_02233DB0: + ldrb r0, [r2, #0x18] + mov r1, #1 + tst r0, r1 + beq _02233DC4 + mov r0, #0xc + ldrsh r0, [r2, r0] + lsl r3, r0, #8 + lsl r0, r1, #9 + add r0, r3, r0 + b _02233DCE +_02233DC4: + mov r0, #0xc + ldrsh r0, [r2, r0] + lsl r3, r0, #8 + lsl r0, r1, #9 + sub r0, r3, r0 +_02233DCE: + str r0, [r2, #0x10] + ldrb r0, [r2, #0x18] + add r0, r0, #1 + strb r0, [r2, #0x18] + ldrb r0, [r2, #0x18] + cmp r0, #4 + bls _02233E1E + mov r0, #0xc + ldrsh r0, [r2, r0] + lsl r0, r0, #8 + str r0, [r2, #0x10] + mov r0, #0 + strb r0, [r2, #0x18] + ldrb r0, [r2, #0xa] + add r0, r0, #1 + strb r0, [r2, #0xa] + b _02233E1E +_02233DF0: + mov r0, #9 + ldrsb r1, [r2, r0] + add r1, r1, #1 + strb r1, [r2, #9] + ldrsb r0, [r2, r0] + cmp r0, #0xf + ble _02233E1E + mov r0, #0 + strb r0, [r2, #9] + ldrb r0, [r2, #0xa] + add r0, r0, #1 + strb r0, [r2, #0xa] + b _02233E1E +_02233E0A: + ldr r0, [r2, #4] + mov r1, #1 + strb r1, [r0] + add r0, r2, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} +_02233E1E: + ldrb r0, [r2, #8] + ldr r1, [r2] + ldr r3, [r2, #0x10] + lsl r0, r0, #2 + add r0, r1, r0 + asr r1, r3, #7 + lsr r1, r1, #0x18 + add r1, r3, r1 + ldr r3, [r2, #0x14] + add r0, #0xb4 + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + lsl r1, r1, #8 + lsl r2, r2, #8 + ldr r0, [r0] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + pop {r4, pc} + + thumb_func_start MOD12_02233E48 +MOD12_02233E48: ; 0x02233E48 + push {r4, lr} + add r2, r1, #0 + add r4, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #0 + beq _02233E5A + cmp r0, #1 + beq _02233E70 + b _02233ED8 +_02233E5A: + mov r0, #0xc + ldrsh r0, [r2, r0] + lsl r0, r0, #8 + str r0, [r2, #0x10] + mov r0, #0xe + ldrsh r0, [r2, r0] + lsl r0, r0, #8 + str r0, [r2, #0x14] + ldrb r0, [r2, #0xa] + add r0, r0, #1 + strb r0, [r2, #0xa] +_02233E70: + mov r0, #0x24 + ldrsh r1, [r2, r0] + ldr r3, [r2, #0x14] + add r1, r3, r1 + str r1, [r2, #0x14] + ldrsh r0, [r2, r0] + add r0, #0x80 + strh r0, [r2, #0x24] + mov r0, #0xe + ldrsh r0, [r2, r0] + lsl r1, r0, #8 + ldr r0, [r2, #0x14] + cmp r0, r1 + blt _02233EAE + str r1, [r2, #0x14] + ldrb r0, [r2, #0x18] + cmp r0, #0 + beq _02233EA8 + mov r0, #0x26 + ldrsh r0, [r2, r0] + strh r0, [r2, #0x24] + ldrb r0, [r2, #0x18] + sub r0, r0, #1 + strb r0, [r2, #0x18] + ldrb r0, [r2, #0xa] + sub r0, r0, #1 + strb r0, [r2, #0xa] + b _02233EAE +_02233EA8: + ldrb r0, [r2, #0xa] + add r0, r0, #1 + strb r0, [r2, #0xa] +_02233EAE: + ldrb r0, [r2, #8] + ldr r1, [r2] + ldr r3, [r2, #0x10] + lsl r0, r0, #2 + add r0, r1, r0 + asr r1, r3, #7 + lsr r1, r1, #0x18 + add r1, r3, r1 + ldr r3, [r2, #0x14] + add r0, #0xb4 + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + lsl r1, r1, #8 + lsl r2, r2, #8 + ldr r0, [r0] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + pop {r4, pc} +_02233ED8: + ldr r0, [r2, #4] + mov r1, #1 + strb r1, [r0] + add r0, r2, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + + thumb_func_start MOD12_02233EEC +MOD12_02233EEC: ; 0x02233EEC + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r0, #0xc0 + ldr r0, [r0] + add r4, r1, #0 + cmp r0, #0 + beq _02233F00 + bl ErrorHandling +_02233F00: + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02233F70 ; =0x000080ED + mov r2, #0x2e + str r0, [sp, #8] + ldr r0, [r5, #0x18] + ldr r1, [r5, #0x1c] + mov r3, #0x14 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02233F70 ; =0x000080ED + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r5, #0x18] + ldr r1, [r5, #0x1c] + mov r3, #0x13 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02233F70 ; =0x000080ED + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r5, #0x18] + ldr r1, [r5, #0x1c] + mov r3, #0x12 + bl FUN_0200C13C + ldr r0, [r5, #0x18] + ldr r1, [r5, #0x1c] + ldr r2, _02233F74 ; =0x02245370 + bl FUN_0200C154 + add r1, r5, #0 + add r1, #0xc0 + str r0, [r1] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_0200C59C + lsl r1, r4, #5 + add r5, #0xc0 + add r1, #0x60 + lsl r1, r1, #0x10 + ldr r0, [r5] + asr r1, r1, #0x10 + mov r2, #0x38 + bl FUN_0200C714 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02233F70: .word 0x000080ED +_02233F74: .word 0x02245370 + + thumb_func_start MOD12_02233F78 +MOD12_02233F78: ; 0x02233F78 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x1c] + ldr r1, _02233FA8 ; =0x000080ED + bl FUN_0200C358 + ldr r0, [r4, #0x1c] + ldr r1, _02233FA8 ; =0x000080ED + bl FUN_0200C378 + ldr r0, [r4, #0x1c] + ldr r1, _02233FA8 ; =0x000080ED + bl FUN_0200C388 + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + bl FUN_0200C3DC + mov r0, #0 + add r4, #0xc0 + str r0, [r4] + pop {r4, pc} + nop +_02233FA8: .word 0x000080ED + + thumb_func_start MOD12_02233FAC +MOD12_02233FAC: ; 0x02233FAC + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _02233FF4 ; =0x000080EE + mov r3, #0x11 + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02233FF4 ; =0x000080EE + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x10 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02233FF4 ; =0x000080EE + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0xf + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_02233FF4: .word 0x000080EE + + thumb_func_start MOD12_02233FF8 +MOD12_02233FF8: ; 0x02233FF8 + push {r4, lr} + ldr r1, _02234014 ; =0x000080EE + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _02234014 ; =0x000080EE + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _02234014 ; =0x000080EE + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_02234014: .word 0x000080EE + + thumb_func_start MOD12_02234018 +MOD12_02234018: ; 0x02234018 + push {r4, r5, r6, lr} + mov r2, #0x18 + mov r4, #0 + mul r2, r1 + add r5, r0, r2 + add r6, r4, #0 +_02234024: + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0 + beq _02234038 + bl FUN_0200C3DC + add r0, r5, #0 + add r0, #0xc4 + str r6, [r0] +_02234038: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _02234024 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_02234044 +MOD12_02234044: ; 0x02234044 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_0223404A: + add r0, r5, #0 + add r1, r4, #0 + bl MOD12_02234018 + add r4, r4, #1 + cmp r4, #4 + blt _0223404A + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223405C +MOD12_0223405C: ; 0x0223405C + push {r4, r5, r6, lr} + add r5, r2, #0 + ldr r2, _02234084 ; =0x022453A4 + add r4, r3, #0 + bl FUN_0200C154 + add r6, r0, #0 + ldr r0, [r6] + bl FUN_0200C59C + lsl r1, r5, #0x10 + lsl r2, r4, #0x10 + add r0, r6, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + add r0, r6, #0 + pop {r4, r5, r6, pc} + nop +_02234084: .word 0x022453A4 + + thumb_func_start MOD12_02234088 +MOD12_02234088: ; 0x02234088 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp] + add r7, r1, #0 + add r0, r3, #0 + mov r1, #0xa + str r2, [sp, #4] + bl _s32_div_f + str r0, [sp, #8] + cmp r0, #0x18 + ble _022340A4 + mov r0, #0x18 + str r0, [sp, #8] +_022340A4: + mov r0, #0x18 + add r1, r7, #0 + mul r1, r0 + ldr r0, [sp] + ldr r4, [sp, #8] + mov r6, #0 + add r5, r0, r1 + b _022340CE +_022340B4: + lsl r0, r4, #2 + add r0, r5, r0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0 + beq _022340CC + bl FUN_0200C3DC + lsl r0, r4, #2 + add r0, r5, r0 + add r0, #0xc4 + str r6, [r0] +_022340CC: + add r4, r4, #1 +_022340CE: + cmp r4, #6 + blt _022340B4 + ldr r0, [sp, #8] + add r1, r7, #0 + sub r4, r0, #1 + mov r0, #0x18 + mul r1, r0 + ldr r0, [sp] + add r7, r0, r1 + ldr r0, [sp, #4] + ldr r1, _02234190 ; =0x02245228 + lsl r0, r0, #2 + str r0, [sp, #0xc] + add r0, r1, r0 + str r0, [sp, #0x10] + b _02234170 +_022340EE: + add r0, r4, #0 + mov r1, #6 + bl _s32_div_f + add r5, r1, #0 + add r0, r4, #0 + mov r1, #6 + bl _s32_div_f + str r0, [sp, #0x14] + lsl r0, r5, #2 + add r0, r7, r0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0 + bne _0223414C + ldr r3, _02234190 ; =0x02245228 + ldr r2, [sp, #0xc] + ldr r0, [sp] + ldrsh r3, [r3, r2] + lsl r2, r5, #3 + ldr r1, [sp] + add r2, r3, r2 + ldr r6, [sp, #0x10] + mov r3, #2 + ldrsh r3, [r6, r3] + ldr r0, [r0, #0x18] + ldr r1, [r1, #0x1c] + bl MOD12_0223405C + lsl r2, r5, #2 + add r1, r7, r2 + add r1, #0xc4 + str r0, [r1] + add r0, r7, r2 + add r0, #0xc4 + ldr r0, [r0] + ldr r1, [sp, #0x14] + bl FUN_0200C5C0 + lsl r0, r5, #2 + add r0, r7, r0 + add r0, #0xc4 + ldr r0, [r0] + bl MOD12_0223419C + b _0223416E +_0223414C: + bl FUN_0200C5CC + ldr r1, [sp, #0x14] + cmp r0, r1 + bhs _0223416E + lsl r0, r5, #2 + add r0, r7, r0 + add r0, #0xc4 + ldr r0, [r0] + bl FUN_0200C5C0 + lsl r0, r5, #2 + add r0, r7, r0 + add r0, #0xc4 + ldr r0, [r0] + bl MOD12_0223419C +_0223416E: + sub r4, r4, #1 +_02234170: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bgt _022340EE + ldr r0, _02234194 ; =0x000006E1 + bl FUN_020054C8 + ldr r2, [sp, #8] + ldr r0, _02234194 ; =0x000006E1 + sub r2, r2, #1 + ldr r1, _02234198 ; =0x0000FFFF + lsl r2, r2, #6 + bl FUN_02004D34 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02234190: .word 0x02245228 +_02234194: .word 0x000006E1 +_02234198: .word 0x0000FFFF + + thumb_func_start MOD12_0223419C +MOD12_0223419C: ; 0x0223419C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x15 + mov r1, #0x10 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x10 + add r4, r0, #0 + bl MI_CpuFill8 + add r0, r5, #0 + mov r1, #0 + str r5, [r4] + bl FUN_0200C644 + ldr r0, _022341C8 ; =MOD12_022341D0 + ldr r2, _022341CC ; =0x00009C40 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, pc} + .align 2, 0 +_022341C8: .word MOD12_022341D0 +_022341CC: .word 0x00009C40 + + thumb_func_start MOD12_022341D0 +MOD12_022341D0: ; 0x022341D0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _022341E6 + cmp r0, #1 + beq _02234202 + cmp r0, #2 + beq _0223423C + b _0223428A +_022341E6: + ldr r0, [r4] + mov r1, #2 + bl FUN_0200C840 + ldr r0, _022342A0 ; =0x3DCCCCCD + mov r1, #1 + str r0, [r4, #4] + str r0, [r4, #8] + ldr r0, [r4] + bl FUN_0200C644 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02234202: + ldr r0, [r4, #4] + ldr r1, _022342A4 ; =0x3E99999A + bl _fadd + str r0, [r4, #4] + ldr r0, [r4, #8] + ldr r1, _022342A4 ; =0x3E99999A + bl _fadd + str r0, [r4, #8] + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + bl FUN_0200C884 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200C8BC + mov r1, #0xff + ldr r0, [r4, #4] + lsl r1, r1, #0x16 + bl _fgeq + blo _0223429E + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223423C: + ldr r0, [r4, #4] + ldr r1, _022342A4 ; =0x3E99999A + bl _fsub + str r0, [r4, #4] + ldr r0, [r4, #8] + ldr r1, _022342A4 ; =0x3E99999A + bl _fsub + str r0, [r4, #8] + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + bl FUN_0200C884 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200C8BC + mov r1, #0xfe + ldr r0, [r4, #4] + lsl r1, r1, #0x16 + bl _fleq + bhi _0223429E + mov r1, #0xfe + lsl r1, r1, #0x16 + ldr r0, [r4] + add r2, r1, #0 + bl FUN_0200C884 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200C898 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223428A: + ldr r0, [r4] + mov r1, #0 + bl FUN_0200C840 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0223429E: + pop {r3, r4, r5, pc} + .align 2, 0 +_022342A0: .word 0x3DCCCCCD +_022342A4: .word 0x3E99999A + + thumb_func_start MOD12_022342A8 +MOD12_022342A8: ; 0x022342A8 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223432C ; =0x000080F0 + mov r3, #0x1a + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223432C ; =0x000080F0 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x19 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223432C ; =0x000080F0 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x18 + bl FUN_0200C13C + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02234330 ; =0x000080EF + add r1, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x1d + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02234330 ; =0x000080EF + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x1c + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02234330 ; =0x000080EF + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x1b + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_0223432C: .word 0x000080F0 +_02234330: .word 0x000080EF + + thumb_func_start MOD12_02234334 +MOD12_02234334: ; 0x02234334 + push {r4, lr} + ldr r1, _02234368 ; =0x000080F0 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _02234368 ; =0x000080F0 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _02234368 ; =0x000080F0 + add r0, r4, #0 + bl FUN_0200C388 + ldr r1, _0223436C ; =0x000080EF + add r0, r4, #0 + bl FUN_0200C358 + ldr r1, _0223436C ; =0x000080EF + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223436C ; =0x000080EF + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_02234368: .word 0x000080F0 +_0223436C: .word 0x000080EF + + thumb_func_start MOD12_02234370 +MOD12_02234370: ; 0x02234370 + push {r3, r4, r5, r6, r7, lr} + mov r2, #0x14 + mov r4, #0 + mul r2, r1 + mov r7, #0x49 + add r5, r0, r2 + add r6, r4, #0 + lsl r7, r7, #2 +_02234380: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02234390 + bl FUN_0200C3DC + mov r0, #0x49 + lsl r0, r0, #2 + str r6, [r5, r0] +_02234390: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _02234380 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223439C +MOD12_0223439C: ; 0x0223439C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_022343A2: + add r0, r5, #0 + add r1, r4, #0 + bl MOD12_02234370 + add r4, r4, #1 + cmp r4, #3 + blt _022343A2 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_022343B4 +MOD12_022343B4: ; 0x022343B4 + push {r4, r5, r6, lr} + add r5, r2, #0 + ldr r2, _022343DC ; =0x02245308 + add r4, r3, #0 + bl FUN_0200C154 + add r6, r0, #0 + ldr r0, [r6] + bl FUN_0200C59C + lsl r1, r5, #0x10 + lsl r2, r4, #0x10 + add r0, r6, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + add r0, r6, #0 + pop {r4, r5, r6, pc} + nop +_022343DC: .word 0x02245308 + + thumb_func_start MOD12_022343E0 +MOD12_022343E0: ; 0x022343E0 + push {r4, r5, r6, lr} + add r5, r2, #0 + ldr r2, _02234408 ; =0x02245238 + add r4, r3, #0 + bl FUN_0200C154 + add r6, r0, #0 + ldr r0, [r6] + bl FUN_0200C59C + lsl r1, r5, #0x10 + lsl r2, r4, #0x10 + add r0, r6, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + add r0, r6, #0 + pop {r4, r5, r6, pc} + nop +_02234408: .word 0x02245238 + + thumb_func_start MOD12_0223440C +MOD12_0223440C: ; 0x0223440C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + cmp r0, #5 + bls _0223441E + b _022345AC +_0223441E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223442A: ; jump table + .short _02234436 - _0223442A - 2 ; case 0 + .short _0223447C - _0223442A - 2 ; case 1 + .short _022344BC - _0223442A - 2 ; case 2 + .short _022344EC - _0223442A - 2 ; case 3 + .short _0223452A - _0223442A - 2 ; case 4 + .short _0223457C - _0223442A - 2 ; case 5 +_02234436: + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_0200C840 + mov r0, #2 + ldr r1, [r4, #0x10] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [r4, #0x20] + mov r0, #0x12 + ldr r1, [r4, #0x14] + lsl r0, r0, #0xa + add r0, r1, r0 + str r0, [r4, #0x24] + ldr r1, [r4, #0x20] + ldr r0, [r4, #0x10] + sub r0, r1, r0 + mov r1, #0xa + bl _s32_div_f + strh r0, [r4, #0x28] + ldr r1, [r4, #0x24] + ldr r0, [r4, #0x14] + sub r0, r1, r0 + mov r1, #0xa + bl _s32_div_f + strh r0, [r4, #0x2a] + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2e + strb r1, [r0] +_0223447C: + mov r1, #0x28 + ldrsh r0, [r4, r1] + ldr r2, [r4, #0x10] + add r0, r2, r0 + str r0, [r4, #0x10] + mov r0, #0x2a + ldrsh r0, [r4, r0] + ldr r2, [r4, #0x14] + add r0, r2, r0 + str r0, [r4, #0x14] + ldrsh r2, [r4, r1] + cmp r2, #0 + ble _0223449E + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x20] + cmp r1, r0 + bge _022344AC +_0223449E: + cmp r2, #0 + bge _022344AA + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x20] + cmp r1, r0 + ble _022344AC +_022344AA: + b _022345D0 +_022344AC: + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2e + strb r1, [r0] + b _022345D0 +_022344BC: + add r0, r4, #0 + add r0, #0x2f + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2f + strb r1, [r0] + add r0, r4, #0 + add r0, #0x2f + ldrb r0, [r0] + cmp r0, #3 + bls _022345D0 + add r0, r4, #0 + mov r1, #0 + add r0, #0x2f + strb r1, [r0] + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2e + strb r1, [r0] + b _022345D0 +_022344EC: + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + lsl r0, r0, #8 + str r0, [r4, #0x20] + add r0, r4, #0 + add r0, #0x2d + ldrb r0, [r0] + lsl r0, r0, #8 + str r0, [r4, #0x24] + ldr r1, [r4, #0x20] + ldr r0, [r4, #0x10] + sub r0, r1, r0 + mov r1, #6 + bl _s32_div_f + strh r0, [r4, #0x28] + ldr r1, [r4, #0x24] + ldr r0, [r4, #0x14] + sub r0, r1, r0 + mov r1, #6 + bl _s32_div_f + strh r0, [r4, #0x2a] + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2e + strb r1, [r0] +_0223452A: + mov r1, #0x28 + ldrsh r0, [r4, r1] + ldr r2, [r4, #0x10] + add r0, r2, r0 + str r0, [r4, #0x10] + mov r0, #0x2a + ldrsh r0, [r4, r0] + ldr r2, [r4, #0x14] + add r0, r2, r0 + str r0, [r4, #0x14] + ldrsh r2, [r4, r1] + cmp r2, #0 + ble _0223454C + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x20] + cmp r1, r0 + bge _02234558 +_0223454C: + cmp r2, #0 + bge _022345D0 + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x20] + cmp r1, r0 + bgt _022345D0 +_02234558: + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + lsl r0, r0, #8 + str r0, [r4, #0x10] + add r0, r4, #0 + add r0, #0x2d + ldrb r0, [r0] + lsl r0, r0, #8 + str r0, [r4, #0x14] + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2e + strb r1, [r0] + b _022345D0 +_0223457C: + add r0, r4, #0 + add r0, #0x2f + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2f + strb r1, [r0] + add r0, r4, #0 + add r0, #0x2f + ldrb r0, [r0] + cmp r0, #2 + bls _022345D0 + add r0, r4, #0 + mov r1, #0 + add r0, #0x2f + strb r1, [r0] + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2e + strb r1, [r0] + b _022345D0 +_022345AC: + ldr r0, [r4, #4] + bl FUN_0200C3DC + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_0200C644 + mov r0, #0x6e + lsl r0, r0, #4 + bl FUN_020054C8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} +_022345D0: + mov r1, #2 + ldr r0, [r4, #4] + lsl r1, r1, #0xc + bl FUN_0200C8BC + ldr r2, [r4, #0x10] + ldr r3, [r4, #0x14] + asr r1, r2, #7 + lsr r1, r1, #0x18 + add r1, r2, r1 + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + lsl r1, r1, #8 + lsl r2, r2, #8 + ldr r0, [r4, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_022345FC +MOD12_022345FC: ; 0x022345FC + push {r4, r5, r6, lr} + mov r2, #0x14 + mul r2, r1 + mov r6, #0x49 + mov r4, #0 + add r5, r0, r2 + lsl r6, r6, #2 +_0223460A: + ldr r0, [r5, r6] + cmp r0, #0 + beq _0223461C + bl FUN_0200C658 + cmp r0, #0 + bne _0223461C + mov r0, #0 + pop {r4, r5, r6, pc} +_0223461C: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _0223460A + mov r0, #1 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02234628 +MOD12_02234628: ; 0x02234628 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r4, r2, #0 + str r0, [sp, #0x1c] + str r1, [sp] + add r0, r4, #0 + mov r1, #0xa + bl _s32_div_f + str r0, [sp, #4] + cmp r0, #5 + ble _02234644 + bl ErrorHandling +_02234644: + ldr r0, [sp] + mov r1, #0x14 + lsl r7, r0, #2 + ldr r0, _02234770 ; =0x022451F4 + mov r5, #0 + add r0, r0, r7 + str r0, [sp, #0xc] + ldr r0, [sp] + mul r1, r0 + ldr r0, [sp, #0x1c] + add r0, r0, r1 + str r0, [sp, #8] + ldr r0, _02234774 ; =0x02245200 + add r0, r0, r7 + str r0, [sp, #0x10] + ldr r0, [sp] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x14] + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + b _02234738 +_02234672: + ldr r0, [sp, #8] + lsl r2, r5, #2 + add r1, r0, r2 + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + bne _02234736 + ldr r3, _02234770 ; =0x022451F4 + ldr r0, [sp, #0x1c] + ldrsh r3, [r3, r7] + add r2, r5, r2 + ldr r4, [sp, #0xc] + ldr r1, [sp, #0x1c] + add r2, r3, r2 + mov r3, #2 + ldrsh r3, [r4, r3] + ldr r0, [r0, #0x18] + ldr r1, [r1, #0x1c] + bl MOD12_022343B4 + ldr r1, [sp, #8] + lsl r2, r5, #2 + add r2, r1, r2 + mov r1, #0x49 + lsl r1, r1, #2 + str r0, [r2, r1] + add r0, r1, #0 + ldr r0, [r2, r0] + mov r1, #0 + bl FUN_0200C644 + mov r0, #0x15 + mov r1, #0x34 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x34 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp, #0x1c] + lsl r1, r5, #2 + str r0, [r4] + ldr r0, [sp, #8] + ldr r2, _02234774 ; =0x02245200 + add r1, r0, r1 + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r1, r0] + ldr r6, [sp, #0x10] + str r0, [r4, #8] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x1c] + mov r3, #2 + ldrsh r2, [r2, r7] + ldrsh r3, [r6, r3] + ldr r0, [r0, #0x18] + ldr r1, [r1, #0x1c] + bl MOD12_022343E0 + str r0, [r4, #4] + ldr r0, _02234774 ; =0x02245200 + ldr r1, [sp, #0x10] + ldrsh r0, [r0, r7] + ldr r2, _02234778 ; =0x00009C40 + lsl r0, r0, #8 + str r0, [r4, #0x10] + mov r0, #2 + ldrsh r0, [r1, r0] + lsl r0, r0, #8 + str r0, [r4, #0x14] + ldr r0, _02234770 ; =0x022451F4 + ldrsh r1, [r0, r7] + lsl r0, r5, #2 + add r0, r5, r0 + add r1, r1, r0 + add r0, r4, #0 + add r0, #0x2c + strb r1, [r0] + ldr r1, [sp, #0xc] + mov r0, #2 + ldrsh r1, [r1, r0] + add r0, r4, #0 + add r0, #0x2d + strb r1, [r0] + add r1, r4, #0 + ldr r0, [sp, #0x14] + add r1, #0x30 + strb r0, [r1] + add r1, r4, #0 + ldr r0, [sp, #0x18] + add r1, #0x31 + strb r0, [r1] + ldr r0, _0223477C ; =MOD12_0223440C + add r1, r4, #0 + bl FUN_0200CA44 +_02234736: + add r5, r5, #1 +_02234738: + ldr r0, [sp, #4] + cmp r5, r0 + blt _02234672 + ldr r0, [sp] + mov r1, #0x14 + mul r1, r0 + ldr r0, [sp, #0x1c] + mov r7, #0x49 + lsl r7, r7, #2 + add r4, r0, r1 + add r6, r7, #0 + b _02234768 +_02234750: + lsl r0, r5, #2 + add r0, r4, r0 + ldr r0, [r0, r6] + cmp r0, #0 + beq _02234766 + bl FUN_0200C3DC + lsl r0, r5, #2 + add r1, r4, r0 + mov r0, #0 + str r0, [r1, r7] +_02234766: + add r5, r5, #1 +_02234768: + cmp r5, #5 + blt _02234750 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02234770: .word 0x022451F4 +_02234774: .word 0x02245200 +_02234778: .word 0x00009C40 +_0223477C: .word MOD12_0223440C + + thumb_func_start MOD12_02234780 +MOD12_02234780: ; 0x02234780 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r1, #0 + str r0, [sp] + cmp r2, #1 + bne _02234790 + mov r6, #1 + b _02234792 +_02234790: + mov r6, #0 +_02234792: + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp] + str r0, [sp, #8] + str r0, [sp, #4] +_0223479C: + ldr r5, [sp] + mov r4, #0 +_022347A0: + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + cmp r0, #0 + beq _022347BC + add r1, r7, #0 + bl FUN_0200C90C + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + add r1, r6, #0 + bl FUN_0200C644 +_022347BC: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _022347A0 + mov r1, #0x5b + ldr r0, [sp, #8] + lsl r1, r1, #2 + ldr r0, [r0, r1] + cmp r0, #0 + beq _022347E4 + add r1, r7, #0 + bl FUN_0200C90C + mov r1, #0x5b + ldr r0, [sp, #8] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r6, #0 + bl FUN_0200C644 +_022347E4: + mov r1, #0x63 + ldr r0, [sp, #4] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r7, #0 + bl FUN_02011AF0 + mov r1, #0x77 + ldr r0, [sp, #4] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r7, #0 + bl FUN_02011AF0 + mov r1, #0x63 + ldr r0, [sp, #4] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r6, #0 + bl FUN_020119D0 + mov r1, #0x77 + ldr r0, [sp, #4] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r6, #0 + bl FUN_020119D0 + ldr r0, [sp] + add r0, #0x18 + str r0, [sp] + ldr r0, [sp, #8] + add r0, r0, #4 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r0, #0x14 + str r0, [sp, #4] + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #4 + blt _0223479C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0223483C +MOD12_0223483C: ; 0x0223483C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + mov r0, #0 + strb r0, [r7] + mov r0, #0x15 + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + str r5, [r4] + mov r2, #0xfa + strb r6, [r4, #0xd] + ldr r0, _02234870 ; =MOD12_02234874 + add r1, r4, #0 + lsl r2, r2, #2 + str r7, [r4, #4] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02234870: .word MOD12_02234874 + + thumb_func_start MOD12_02234874 +MOD12_02234874: ; 0x02234874 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #3 + bls _02234882 + b _022349B8 +_02234882: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223488E: ; jump table + .short _02234896 - _0223488E - 2 ; case 0 + .short _022348F2 - _0223488E - 2 ; case 1 + .short _02234926 - _0223488E - 2 ; case 2 + .short _0223497A - _0223488E - 2 ; case 3 +_02234896: + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _022348BE + mov r0, #1 + lsl r0, r0, #0xc + strh r0, [r4, #8] + mov r1, #0 + strh r1, [r4, #0xa] + ldr r0, _022349D0 ; =0x04000050 + str r1, [sp] + mov r2, #0xe + mov r3, #0x10 + bl G2x_SetBlendAlpha_ + mov r1, #1 + ldr r0, [r4] + add r2, r1, #0 + bl MOD12_02234780 + b _022348E0 +_022348BE: + mov r3, #0 + mov r0, #1 + strh r3, [r4, #8] + lsl r0, r0, #0xc + strh r0, [r4, #0xa] + mov r0, #0x10 + str r0, [sp] + ldr r0, _022349D0 ; =0x04000050 + mov r1, #4 + mov r2, #0xe + bl G2x_SetBlendAlpha_ + ldr r0, [r4] + mov r1, #0 + mov r2, #1 + bl MOD12_0222DF30 +_022348E0: + ldr r0, _022349D4 ; =MOD12_022349D8 + add r1, r4, #0 + mov r2, #0xa + bl FUN_0200CA98 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022348F2: + ldrb r1, [r4, #0xd] + cmp r1, #0 + bne _02234912 + mov r0, #8 + ldrsh r0, [r4, r0] + cmp r0, #0 + bne _02234912 + mov r1, #0 + ldr r0, [r4] + add r2, r1, #0 + bl MOD12_02234780 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02234912: + cmp r1, #1 + bne _022349CE + mov r0, #0xa + ldrsh r0, [r4, r0] + cmp r0, #0 + bne _022349CE + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02234926: + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _02234946 + mov r0, #1 + lsl r0, r0, #0xc + strh r0, [r4, #8] + mov r0, #0 + strh r0, [r4, #0xa] + str r0, [sp] + ldr r0, _022349D0 ; =0x04000050 + mov r1, #4 + mov r2, #0xe + mov r3, #0x10 + bl G2x_SetBlendAlpha_ + b _02234968 +_02234946: + mov r1, #0 + mov r0, #1 + strh r1, [r4, #8] + lsl r0, r0, #0xc + strh r0, [r4, #0xa] + mov r0, #0x10 + str r0, [sp] + ldr r0, _022349D0 ; =0x04000050 + mov r2, #0xe + add r3, r1, #0 + bl G2x_SetBlendAlpha_ + mov r1, #1 + ldr r0, [r4] + add r2, r1, #0 + bl MOD12_02234780 +_02234968: + ldr r0, _022349D4 ; =MOD12_022349D8 + add r1, r4, #0 + mov r2, #0xa + bl FUN_0200CA98 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223497A: + ldrb r1, [r4, #0xd] + cmp r1, #0 + bne _0223499A + mov r0, #8 + ldrsh r0, [r4, r0] + cmp r0, #0 + bne _0223499A + mov r1, #1 + ldr r0, [r4] + add r2, r1, #0 + bl MOD12_0222DF30 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223499A: + cmp r1, #1 + bne _022349CE + mov r0, #0xa + ldrsh r0, [r4, r0] + cmp r0, #0 + bne _022349CE + ldr r0, [r4] + mov r1, #0 + mov r2, #1 + bl MOD12_02234780 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022349B8: + bl MOD12_02233560 + ldr r0, [r4, #4] + mov r1, #1 + strb r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_022349CE: + pop {r3, r4, r5, pc} + .align 2, 0 +_022349D0: .word 0x04000050 +_022349D4: .word MOD12_022349D8 + + thumb_func_start MOD12_022349D8 +MOD12_022349D8: ; 0x022349D8 + push {r3, r4, r5, lr} + ldrb r3, [r1, #0xd] + mov r2, #0 + cmp r3, #0 + bne _02234A10 + mov r4, #8 + ldrsh r5, [r1, r4] + lsl r3, r4, #8 + sub r3, r5, r3 + strh r3, [r1, #8] + mov r3, #0xa + ldrsh r5, [r1, r3] + lsl r3, r4, #8 + add r3, r5, r3 + strh r3, [r1, #0xa] + ldrsh r3, [r1, r4] + cmp r3, #0 + bgt _02234A00 + strh r2, [r1, #8] + add r2, r2, #1 +_02234A00: + mov r3, #0xa + ldrsh r4, [r1, r3] + mov r3, #1 + lsl r3, r3, #0xc + cmp r4, r3 + blt _02234A3C + strh r3, [r1, #0xa] + b _02234A3C +_02234A10: + mov r4, #8 + ldrsh r5, [r1, r4] + lsl r3, r4, #8 + add r3, r5, r3 + strh r3, [r1, #8] + mov r3, #0xa + ldrsh r5, [r1, r3] + lsl r3, r4, #8 + sub r3, r5, r3 + strh r3, [r1, #0xa] + ldrsh r5, [r1, r4] + lsl r3, r4, #9 + cmp r5, r3 + blt _02234A30 + strh r3, [r1, #8] + add r2, r2, #1 +_02234A30: + mov r3, #0xa + ldrsh r3, [r1, r3] + cmp r3, #0 + bgt _02234A3C + mov r3, #0 + strh r3, [r1, #0xa] +_02234A3C: + mov r3, #8 + ldrsh r3, [r1, r3] + asr r4, r3, #8 + mov r3, #0xa + ldrsh r3, [r1, r3] + mov r1, #0xff + bic r3, r1 + orr r3, r4 + ldr r1, _02234A5C ; =0x04000052 + cmp r2, #0 + strh r3, [r1] + ble _02234A58 + bl FUN_0200CAB4 +_02234A58: + pop {r3, r4, r5, pc} + nop +_02234A5C: .word 0x04000052 + + thumb_func_start MOD12_02234A60 +MOD12_02234A60: ; 0x02234A60 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r1, #0 + add r4, r0, #0 + add r5, r2, #0 + add r6, r3, #0 + cmp r7, #2 + blt _02234A78 + cmp r5, #0 + bne _02234A78 + bl ErrorHandling +_02234A78: + cmp r7, #0x1c + bls _02234A7E + b _02234EF2 +_02234A7E: + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02234A8A: ; jump table + .short _02234EF6 - _02234A8A - 2 ; case 0 + .short _02234AC4 - _02234A8A - 2 ; case 1 + .short _02234AE2 - _02234A8A - 2 ; case 2 + .short _02234AFC - _02234A8A - 2 ; case 3 + .short _02234B16 - _02234A8A - 2 ; case 4 + .short _02234B24 - _02234A8A - 2 ; case 5 + .short _02234B38 - _02234A8A - 2 ; case 6 + .short _02234B50 - _02234A8A - 2 ; case 7 + .short _02234B80 - _02234A8A - 2 ; case 8 + .short _02234BA4 - _02234A8A - 2 ; case 9 + .short _02234BD0 - _02234A8A - 2 ; case 10 + .short _02234BFE - _02234A8A - 2 ; case 11 + .short _02234C2E - _02234A8A - 2 ; case 12 + .short _02234C52 - _02234A8A - 2 ; case 13 + .short _02234C7E - _02234A8A - 2 ; case 14 + .short _02234CAE - _02234A8A - 2 ; case 15 + .short _02234CD2 - _02234A8A - 2 ; case 16 + .short _02234CF6 - _02234A8A - 2 ; case 17 + .short _02234D16 - _02234A8A - 2 ; case 18 + .short _02234D3A - _02234A8A - 2 ; case 19 + .short _02234D64 - _02234A8A - 2 ; case 20 + .short _02234D8E - _02234A8A - 2 ; case 21 + .short _02234DAC - _02234A8A - 2 ; case 22 + .short _02234DD6 - _02234A8A - 2 ; case 23 + .short _02234E04 - _02234A8A - 2 ; case 24 + .short _02234E32 - _02234A8A - 2 ; case 25 + .short _02234E54 - _02234A8A - 2 ; case 26 + .short _02234E7E - _02234A8A - 2 ; case 27 + .short _02234EB6 - _02234A8A - 2 ; case 28 +_02234AC4: + mov r0, #0xca + lsl r0, r0, #2 + ldrb r0, [r4, r0] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234AE2: + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234AFC: + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234B16: + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200AD5C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234B24: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + bl FUN_0200AD38 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234B38: + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #0 + bl FUN_0200B244 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234B50: + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234B80: + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200AD5C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234BA4: + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + mov r0, #0 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + add r3, r1, #0 + bl FUN_0200AD38 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234BD0: + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #1 + bl FUN_0200B244 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234BFE: + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234C2E: + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200AD5C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234C52: + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + mov r0, #0 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + add r3, r1, #0 + bl FUN_0200AD38 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234C7E: + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234CAE: + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200AD5C + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234CD2: + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200AD5C + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234CF6: + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200AD5C + mov r0, #0 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + add r3, r1, #0 + bl FUN_0200AD38 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234D16: + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200AD5C + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234D3A: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + bl FUN_0200AD38 + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234D64: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + bl FUN_0200AD38 + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234D8E: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + bl FUN_0200AD38 + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200AD5C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234DAC: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + bl FUN_0200AD38 + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234DD6: + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #0 + bl FUN_0200B244 + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234E04: + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #0 + bl FUN_0200B244 + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234E32: + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #0 + bl FUN_0200B244 + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200AD5C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234E54: + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #0 + bl FUN_0200B244 + mov r0, #0 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + add r3, r1, #0 + bl FUN_0200AD38 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234E7E: + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #1 + bl FUN_0200B244 + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #2 + bl FUN_0200AD5C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234EB6: + ldrb r2, [r6] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #0 + bl FUN_0200B244 + mov r5, #0 +_02234ECC: + add r0, r6, r5 + ldrb r0, [r0, #1] + cmp r0, #4 + beq _02234EF6 + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + add r1, r5, #1 + bl FUN_0200ACF8 + add r5, r5, #1 + cmp r5, #4 + blt _02234ECC + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234EF2: + bl ErrorHandling +_02234EF6: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02234EFC +MOD12_02234EFC: ; 0x02234EFC + push {r4, lr} + add r4, r0, #0 + add r0, #0x34 + mov r1, #0xff + bl FUN_02019620 + add r4, #0x34 + add r0, r4, #0 + bl FUN_020191D0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_02234F14 +MOD12_02234F14: ; 0x02234F14 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [sp, #0x30] + add r6, r1, #0 + add r7, r2, #0 + str r3, [sp, #0xc] + cmp r0, #1 + bne _02234F2A + mov r4, #0 + b _02234F42 +_02234F2A: + ldr r1, [r5] + ldr r0, _02234FA8 ; =0x00000171 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _02234F40 + ldr r0, _02234FAC ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02024FF4 + add r4, r0, #0 + b _02234F42 +_02234F40: + mov r4, #1 +_02234F42: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_0200A914 + add r6, r0, #0 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x2c] + add r0, r5, #0 + bl MOD12_02234A60 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + add r0, #0x34 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + str r3, [sp, #8] + add r0, r5, #0 + ldr r2, [r5, #0x58] + add r0, #0x34 + mov r1, #1 + bl FUN_0201BD84 + mov r1, #0x8b + lsl r1, r1, #2 + strb r0, [r5, r1] + cmp r4, #0 + bne _02234F96 + mov r0, #0xff + strb r0, [r5, r1] + add r0, r5, #0 + add r0, #0x34 + bl FUN_020191D0 +_02234F96: + ldr r0, [r5, #0x30] + mov r1, #1 + bl FUN_02017B48 + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02234FA8: .word 0x00000171 +_02234FAC: .word 0x00001988 + + thumb_func_start MOD12_02234FB0 +MOD12_02234FB0: ; 0x02234FB0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r7, r0, #0 + add r4, r2, #0 + add r6, r3, #0 + cmp r5, #0x2f + blo _02234FC4 + bl ErrorHandling +_02234FC4: + ldr r0, _02234FE4 ; =0x0224540F + lsl r3, r5, #2 + ldrb r0, [r0, r3] + str r4, [sp] + ldr r2, _02234FE8 ; =0x0224540C + str r6, [sp, #4] + str r0, [sp, #8] + ldr r4, _02234FEC ; =0x0224540E + ldrh r2, [r2, r3] + ldrb r3, [r4, r3] + ldr r1, [r7, #0x44] + add r0, r7, #0 + bl MOD12_02234F14 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02234FE4: .word 0x0224540F +_02234FE8: .word 0x0224540C +_02234FEC: .word 0x0224540E + + thumb_func_start MOD12_02234FF0 +MOD12_02234FF0: ; 0x02234FF0 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + add r5, r3, #0 + add r0, r1, #0 + add r1, r2, #0 + add r2, sp, #0x10 + add r3, sp, #0xc + bl FUN_02083170 + ldr r0, [sp, #0x20] + str r5, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r1, [r4, #0x50] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0xc] + add r0, r4, #0 + bl MOD12_02234F14 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_02235020 +MOD12_02235020: ; 0x02235020 + push {r3, lr} + mov r1, #0x8b + lsl r1, r1, #2 + ldrb r0, [r0, r1] + cmp r0, #0xff + bne _02235030 + mov r0, #0 + pop {r3, pc} +_02235030: + bl FUN_0201BD70 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02235038 +MOD12_02235038: ; 0x02235038 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0xc + mov r1, #0x15 + bl FUN_020219F4 + str r0, [sp, #0x30] + lsl r0, r4, #2 + ldr r1, [r5, #0xc] + str r0, [sp, #0x2c] + ldr r0, [r1, r0] + ldr r2, [sp, #0x30] + mov r1, #0x76 + bl FUN_020671BC + ldr r1, [r5] + ldr r0, _022350E8 ; =0x00000123 + ldrb r0, [r1, r0] + cmp r4, r0 + bne _02235068 + ldr r6, _022350EC ; =0x00010200 + b _0223506A +_02235068: + ldr r6, _022350F0 ; =0x00050600 +_0223506A: + mov r0, #0x14 + add r7, r4, #0 + mul r7, r0 + mov r0, #0x77 + lsl r0, r0, #2 + add r0, r5, r0 + add r0, r0, r7 + str r0, [sp] + ldr r0, [sp, #0x30] + mov r1, #0 + str r0, [sp, #4] + str r1, [sp, #8] + str r6, [sp, #0xc] + ldr r0, _022350F4 ; =0x000080ED + str r1, [sp, #0x10] + str r0, [sp, #0x14] + str r1, [sp, #0x18] + str r1, [sp, #0x1c] + str r1, [sp, #0x20] + str r1, [sp, #0x24] + mov r0, #0xf + str r0, [sp, #0x28] + ldr r1, [r5, #0x30] + ldr r2, [r5, #0x28] + ldr r3, [r5, #0x60] + mov r0, #0x15 + bl MOD12_02231380 + mov r0, #0x63 + lsl r0, r0, #2 + add r0, r5, r0 + add r0, r0, r7 + str r0, [sp] + ldr r1, [r5] + ldr r0, [sp, #0x2c] + add r0, r1, r0 + add r0, #0xe8 + ldr r0, [r0] + mov r1, #0 + str r0, [sp, #4] + str r1, [sp, #8] + str r6, [sp, #0xc] + ldr r0, _022350F4 ; =0x000080ED + str r1, [sp, #0x10] + str r0, [sp, #0x14] + str r1, [sp, #0x18] + str r1, [sp, #0x1c] + str r1, [sp, #0x20] + str r1, [sp, #0x24] + mov r0, #0xf + str r0, [sp, #0x28] + ldr r1, [r5, #0x30] + ldr r2, [r5, #0x28] + ldr r3, [r5, #0x60] + mov r0, #0x15 + bl MOD12_02231380 + ldr r0, [sp, #0x30] + bl FUN_02021A20 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_022350E8: .word 0x00000123 +_022350EC: .word 0x00010200 +_022350F0: .word 0x00050600 +_022350F4: .word 0x000080ED + + thumb_func_start MOD12_022350F8 +MOD12_022350F8: ; 0x022350F8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_022350FE: + add r0, r5, #0 + add r1, r4, #0 + bl MOD12_02235038 + add r4, r4, #1 + cmp r4, #4 + blt _022350FE + add r0, r5, #0 + bl MOD12_0223513C + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_02235114 +MOD12_02235114: ; 0x02235114 + push {r4, r5, r6, lr} + mov r1, #0x77 + lsl r1, r1, #2 + add r4, r0, r1 + sub r1, #0x50 + mov r6, #0 + add r5, r0, r1 +_02235122: + add r0, r4, #0 + bl MOD12_0223147C + add r0, r5, #0 + bl MOD12_0223147C + add r6, r6, #1 + add r4, #0x14 + add r5, #0x14 + cmp r6, #4 + blt _02235122 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_0223513C +MOD12_0223513C: ; 0x0223513C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov r1, #0x77 + lsl r1, r1, #2 + str r0, [sp] + add r0, r0, r1 + str r0, [sp, #4] + ldr r0, [sp] + sub r1, #0x50 + add r0, r0, r1 + mov r4, #0 + mov r6, #0xc + mov r5, #0x1c + str r0, [sp, #8] +_02235158: + ldr r0, [sp] + add r2, r6, #0 + add r1, r0, r4 + ldr r0, _02235190 ; =0x00000231 + mov r3, #0 + ldrb r1, [r1, r0] + mov r0, #0x14 + add r7, r1, #0 + mul r7, r0 + ldr r0, [sp, #4] + mov r1, #1 + add r0, r0, r7 + bl MOD12_02231490 + ldr r0, [sp, #8] + mov r1, #1 + add r0, r0, r7 + add r2, r5, #0 + mov r3, #0 + bl MOD12_02231490 + add r4, r4, #1 + add r6, #0x30 + add r5, #0x30 + cmp r4, #4 + blt _02235158 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02235190: .word 0x00000231 + + thumb_func_start MOD12_02235194 +MOD12_02235194: ; 0x02235194 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _022351DC ; =0x000080F1 + mov r3, #0x17 + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _022351DC ; =0x000080F1 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x16 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _022351DC ; =0x000080F1 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x15 + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_022351DC: .word 0x000080F1 + + thumb_func_start MOD12_022351E0 +MOD12_022351E0: ; 0x022351E0 + push {r4, lr} + ldr r1, _022351FC ; =0x000080F1 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _022351FC ; =0x000080F1 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _022351FC ; =0x000080F1 + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_022351FC: .word 0x000080F1 + + thumb_func_start MOD12_02235200 +MOD12_02235200: ; 0x02235200 + push {r3, r4, r5, r6, r7, lr} + add r3, r0, #0 + mov r0, #0x16 + add r6, r1, #0 + lsl r0, r0, #4 + lsl r5, r6, #2 + add r4, r3, r0 + ldr r0, [r4, r5] + add r7, r2, #0 + cmp r0, #0 + bne _02235222 + ldr r0, [r3, #0x18] + ldr r1, [r3, #0x1c] + ldr r2, _02235248 ; =0x0224526C + bl FUN_0200C154 + str r0, [r4, r5] +_02235222: + ldr r0, [r4, r5] + add r1, r7, #0 + bl FUN_0200C5C0 + mov r2, #0x30 + mul r2, r6 + add r2, #0x2a + lsl r2, r2, #0x10 + ldr r0, [r4, r5] + mov r1, #0x40 + asr r2, r2, #0x10 + bl FUN_0200C714 + ldr r0, [r4, r5] + ldr r0, [r0] + bl FUN_0200C59C + pop {r3, r4, r5, r6, r7, pc} + nop +_02235248: .word 0x0224526C + + thumb_func_start MOD12_0223524C +MOD12_0223524C: ; 0x0223524C + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + mov r7, #0x16 + add r5, r0, #0 + add r6, r4, #0 + lsl r7, r7, #4 +_02235258: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02235268 + bl FUN_0200C3DC + mov r0, #0x16 + lsl r0, r0, #4 + str r6, [r5, r0] +_02235268: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02235258 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02235274 +MOD12_02235274: ; 0x02235274 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + add r0, r4, #0 + mov r1, #0 + mov r2, #6 + bl MI_CpuFill8 + lsl r0, r6, #1 + add r1, r5, r0 + ldr r0, _0223529C ; =0x00000236 + strb r6, [r4] + ldrh r1, [r1, r0] + add r0, #8 + strh r1, [r4, #2] + add r1, r5, r6 + ldrb r0, [r1, r0] + strb r0, [r4, #5] + pop {r4, r5, r6, pc} + .align 2, 0 +_0223529C: .word 0x00000236 + + thumb_func_start MOD12_022352A0 +MOD12_022352A0: ; 0x022352A0 + strb r0, [r2] + cmp r1, #0 + bgt _022352AA + mov r0, #0x1f + bx lr +_022352AA: + cmp r1, #0x14 + bgt _022352B2 + mov r0, #0x20 + bx lr +_022352B2: + cmp r1, #0x32 + bgt _022352BA + mov r0, #0x21 + bx lr +_022352BA: + cmp r1, #0x5a + bgt _022352C2 + mov r0, #0x22 + bx lr +_022352C2: + mov r0, #0x23 + bx lr + .align 2, 0 + + thumb_func_start MOD12_022352C8 +MOD12_022352C8: ; 0x022352C8 + push {r4, lr} + mov r1, #0x32 + bl _s32_div_f + cmp r0, #4 + blo _022352D6 + mov r0, #3 +_022352D6: + lsl r1, r0, #2 + ldr r0, _022352F0 ; =0x02245218 + ldr r4, [r0, r1] + cmp r4, #0 + bge _022352E4 + bl ErrorHandling +_022352E4: + cmp r4, #0x7f + ble _022352EC + bl ErrorHandling +_022352EC: + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 +_022352F0: .word 0x02245218 + + thumb_func_start MOD12_022352F4 +MOD12_022352F4: ; 0x022352F4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + ldr r0, [sp, #0x1c] + mov r1, #0 + strb r1, [r0] + mov r0, #0x15 + mov r1, #0x14 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + mov r1, #0 + mov r2, #0x14 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp, #0x1c] + str r5, [r4] + str r0, [r4, #0x10] + strb r7, [r4, #0xd] + ldr r0, [sp] + strb r6, [r4, #0xb] + str r0, [r4, #4] + ldr r0, [sp, #0x18] + ldr r2, _02235334 ; =0x00000BB8 + strb r0, [r4, #0xe] + ldr r0, _02235338 ; =MOD12_0223533C + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02235334: .word 0x00000BB8 +_02235338: .word MOD12_0223533C + + thumb_func_start MOD12_0223533C +MOD12_0223533C: ; 0x0223533C + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #8] + cmp r0, #0 + beq _02235354 + cmp r0, #1 + beq _02235376 + cmp r0, #2 + beq _022353A6 + b _0223541C +_02235354: + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _02235362 + sub r0, r0, #1 + add sp, #0x10 + strb r0, [r4, #0xd] + pop {r3, r4, r5, pc} +_02235362: + ldr r0, _02235468 ; =0x000006E5 + bl FUN_020054C8 + ldr r0, _02235468 ; =0x000006E5 + ldr r1, [r4, #4] + bl FUN_0200488C + ldrb r0, [r4, #8] + add r0, r0, #1 + strb r0, [r4, #8] +_02235376: + ldrb r0, [r4, #9] + cmp r0, #0 + bne _02235380 + mov r1, #0 + b _02235382 +_02235380: + mov r1, #2 +_02235382: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x15 + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x2d + ldr r2, [r2, #0x30] + mov r3, #3 + bl FUN_020068C8 + ldrb r0, [r4, #8] + add sp, #0x10 + add r0, r0, #1 + strb r0, [r4, #8] + pop {r3, r4, r5, pc} +_022353A6: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xc] + cmp r0, #2 + bls _022353DE + mov r0, #0 + strb r0, [r4, #0xc] + ldrb r1, [r4, #9] + mov r0, #1 + eor r0, r1 + strb r0, [r4, #9] + ldrb r0, [r4, #8] + sub r0, r0, #1 + strb r0, [r4, #8] + ldrb r0, [r4, #9] + cmp r0, #0 + bne _022353DE + ldrb r0, [r4, #0xa] + add r0, r0, #1 + strb r0, [r4, #0xa] + ldrb r0, [r4, #0xa] + cmp r0, #2 + bls _022353DE + mov r0, #0xff + add sp, #0x10 + strb r0, [r4, #8] + pop {r3, r4, r5, pc} +_022353DE: + ldrb r0, [r4, #0xe] + cmp r0, #1 + bne _02235464 + ldrb r0, [r4, #0xb] + mov r1, #0x32 + lsl r0, r0, #4 + bl _s32_div_f + mov r1, #0xf + ldrsb r2, [r4, r1] + cmp r2, r0 + bge _02235464 + add r2, r2, #2 + strb r2, [r4, #0xf] + ldrsb r1, [r4, r1] + cmp r1, r0 + ble _02235402 + strb r0, [r4, #0xf] +_02235402: + ldrb r0, [r4, #0xf] + mov r1, #0 + mov r2, #1 + str r0, [sp] + ldr r0, _0223546C ; =0x0000237E + mov r3, #2 + str r0, [sp, #4] + ldr r0, [r4] + ldr r0, [r0, #0x5c] + bl FUN_020039E8 + add sp, #0x10 + pop {r3, r4, r5, pc} +_0223541C: + ldrb r0, [r4, #0xe] + cmp r0, #1 + bne _02235452 + mov r0, #0xf + ldrsb r1, [r4, r0] + cmp r1, #0 + beq _02235452 + sub r1, r1, #2 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #0 + bge _02235438 + mov r0, #0 + strb r0, [r4, #0xf] +_02235438: + ldrb r0, [r4, #0xf] + mov r1, #0 + mov r2, #1 + str r0, [sp] + ldr r0, _0223546C ; =0x0000237E + mov r3, #2 + str r0, [sp, #4] + ldr r0, [r4] + ldr r0, [r0, #0x5c] + bl FUN_020039E8 + add sp, #0x10 + pop {r3, r4, r5, pc} +_02235452: + ldr r0, [r4, #0x10] + mov r1, #1 + strb r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02235464: + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_02235468: .word 0x000006E5 +_0223546C: .word 0x0000237E + + thumb_func_start MOD12_02235470 +MOD12_02235470: ; 0x02235470 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r3, #0 + ldr r3, [sp, #0x38] + add r6, sp, #0x1c + str r3, [sp, #0x38] + mov r3, #0 + str r3, [sp, #8] + strb r3, [r5] + mov r3, #0x30 + mul r3, r2 + ldr r2, [sp, #8] + str r3, [sp, #0x10] + add r3, #0x18 + str r2, [sp, #4] + str r2, [sp, #0xc] + mov r2, #0x18 + mul r2, r1 + add r7, r0, r2 + add r0, r3, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r3, [sp, #0x10] + str r0, [sp, #0x18] +_022354A0: + add r0, r7, #0 + add r0, #0xd0 + ldr r0, [r0] + cmp r0, #0 + bne _022354AC + b _0223560C +_022354AC: + ldrb r1, [r5] + cmp r1, #0 + bne _02235576 + add r1, sp, #0x20 + add r1, #2 + add r2, sp, #0x20 + bl FUN_0200C7A0 + mov r0, #4 + ldrsh r1, [r6, r0] + ldr r0, [sp, #0x10] + sub r1, r1, r0 + bpl _022354C8 + neg r1, r1 +_022354C8: + mov r0, #6 + ldrsh r0, [r6, r0] + sub r0, #0x28 + bpl _022354D2 + neg r0, r0 +_022354D2: + bl FUN_020799F4 + lsl r0, r0, #8 + str r0, [sp, #8] + mov r0, #6 + ldrsh r0, [r6, r0] + sub r0, #0x28 + bl _fflt + str r0, [sp, #0x14] + mov r0, #4 + ldrsh r1, [r6, r0] + ldr r0, [sp, #0x10] + sub r0, r1, r0 + bl _fflt + add r4, r0, #0 + ldr r0, [sp, #0x14] + mov r1, #0 + bl _fgr + ldr r0, _02235620 ; =0x45800000 + bls _02235514 + ldr r1, [sp, #0x14] + bl _fmul + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + str r0, [sp] + b _02235524 +_02235514: + ldr r1, [sp, #0x14] + bl _fmul + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub + str r0, [sp] +_02235524: + add r0, r4, #0 + mov r1, #0 + bl _fgr + ldr r0, _02235620 ; =0x45800000 + bls _02235542 + add r1, r4, #0 + bl _fmul + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _02235550 +_02235542: + add r1, r4, #0 + bl _fmul + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_02235550: + bl _ffix + add r4, r0, #0 + ldr r0, [sp] + bl _ffix + add r1, r0, #0 + add r0, r4, #0 + bl FX_Atan2 + ldr r1, _02235624 ; =0x00008CA0 + mul r1, r0 + add r0, r1, #0 + ldr r1, _02235628 ; =0x0000FFFF + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] +_02235576: + mov r0, #0x15 + mov r1, #0x28 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x28 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp, #0x38] + add r1, r4, #0 + str r0, [r4, #4] + add r0, r7, #0 + add r0, #0xd0 + ldr r0, [r0] + add r1, #0x21 + str r0, [r4, #8] + ldr r0, [sp, #8] + add r2, sp, #0x1c + str r0, [r4, #0x10] + ldr r0, [sp, #4] + strh r0, [r4, #0x1e] + mov r0, #2 + lsl r0, r0, #0xa + str r0, [r4, #0x14] + mov r0, #0x28 + strb r0, [r1] + add r1, r4, #0 + ldr r0, [sp, #0x18] + add r1, #0x22 + strb r0, [r1] + str r5, [r4, #0xc] + mov r0, #6 + ldrsh r1, [r6, r0] + add r0, r4, #0 + add r0, #0x23 + strb r1, [r0] + mov r0, #4 + ldrsh r1, [r6, r0] + add r0, r4, #0 + add r0, #0x24 + strb r1, [r0] + add r0, r7, #0 + add r0, #0xd0 + add r1, sp, #0x1c + ldr r0, [r0] + add r1, #2 + bl FUN_0200C7A0 + mov r0, #6 + ldrsh r1, [r6, r0] + mov r0, #2 + ldrsh r0, [r6, r0] + sub r0, r1, r0 + bpl _022355E6 + neg r0, r0 +_022355E6: + ldrb r2, [r5] + lsl r0, r0, #8 + lsl r1, r2, #1 + add r1, r2, r1 + bl _s32_div_f + strh r0, [r4, #0x1c] + mov r0, #2 + ldrsh r0, [r6, r0] + ldr r2, _0223562C ; =0x00009C40 + add r1, r4, #0 + lsl r0, r0, #8 + str r0, [r4, #0x18] + ldr r0, _02235630 ; =MOD12_02235634 + bl FUN_0200CA44 + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] +_0223560C: + ldr r0, [sp, #0xc] + add r7, r7, #4 + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #6 + bge _0223561A + b _022354A0 +_0223561A: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_02235620: .word 0x45800000 +_02235624: .word 0x00008CA0 +_02235628: .word 0x0000FFFF +_0223562C: .word 0x00009C40 +_02235630: .word MOD12_02235634 + + thumb_func_start MOD12_02235634 +MOD12_02235634: ; 0x02235634 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #0 + beq _0223564C + cmp r0, #1 + beq _02235696 + b _02235778 +_0223564C: + ldrh r0, [r5, #0x1c] + ldr r1, [r5, #0x18] + sub r1, r1, r0 + add r0, r5, #0 + str r1, [r5, #0x18] + add r0, #0x23 + ldrb r0, [r0] + lsl r0, r0, #8 + cmp r1, r0 + bgt _02235670 + str r0, [r5, #0x18] + add r0, r5, #0 + add r0, #0x20 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x20 + strb r1, [r0] +_02235670: + add r1, sp, #0xc + ldr r0, [r5, #8] + add r1, #2 + add r2, sp, #0xc + bl FUN_0200C7A0 + ldr r0, [r5, #0x18] + add r3, sp, #0xc + asr r0, r0, #8 + strh r0, [r3, #2] + mov r1, #2 + mov r2, #0 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + ldr r0, [r5, #8] + bl FUN_0200C714 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02235696: + ldrh r2, [r5, #0x1e] + ldr r1, [r5, #0x14] + add r0, r5, #0 + add r1, r2, r1 + strh r1, [r5, #0x1e] + ldrh r2, [r5, #0x1e] + ldr r1, _022357A4 ; =0x00008CA0 + add r0, #0x1e + cmp r2, r1 + blo _022356B0 + ldrh r2, [r0] + sub r1, r2, r1 + strh r1, [r0] +_022356B0: + mov r0, #3 + ldr r1, [r5, #0x10] + lsl r0, r0, #8 + cmp r1, r0 + bls _022356BE + sub r0, r1, r0 + b _022356C0 +_022356BE: + mov r0, #0 +_022356C0: + str r0, [r5, #0x10] + mov r0, #2 + ldr r1, [r5, #0x10] + lsl r0, r0, #8 + cmp r1, r0 + bhi _022356DA + add r0, r5, #0 + add r0, #0x20 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x20 + strb r1, [r0] +_022356DA: + ldr r0, [r5, #0x10] + mov r1, #0x64 + lsr r4, r0, #8 + ldrh r0, [r5, #0x1e] + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0201B954 + str r0, [sp] + lsl r6, r4, #0xc + ldrh r0, [r5, #0x1e] + mov r1, #0x64 + asr r7, r6, #0x1f + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0201B93C + str r0, [sp, #4] + ldr r0, [sp] + add r2, r6, #0 + asr r1, r0, #0x1f + add r3, r7, #0 + bl _ll_mul + str r0, [sp, #8] + ldr r0, [sp, #4] + add r4, r1, #0 + asr r1, r0, #0x1f + add r2, r6, #0 + add r3, r7, #0 + bl _ll_mul + mov r3, #2 + add r2, r1, #0 + add r1, r5, #0 + add r7, r0, #0 + add r1, #0x21 + ldr r6, [sp, #8] + lsl r3, r3, #0xa + add r6, r6, r3 + ldr r3, _022357A8 ; =0x00000000 + ldrb r1, [r1] + adc r4, r3 + lsl r3, r4, #0x14 + lsr r4, r6, #0xc + orr r4, r3 + asr r3, r4, #0xb + lsr r3, r3, #0x14 + add r3, r4, r3 + asr r3, r3, #0xc + add r1, r1, r3 + mov r4, #2 + ldr r0, [r5, #8] + lsl r1, r1, #0x10 + add r5, #0x22 + lsl r4, r4, #0xa + asr r1, r1, #0x10 + ldrb r3, [r5] + add r5, r7, r4 + ldr r4, _022357A8 ; =0x00000000 + adc r2, r4 + lsl r2, r2, #0x14 + lsr r4, r5, #0xc + orr r4, r2 + asr r2, r4, #0xb + lsr r2, r2, #0x14 + add r2, r4, r2 + asr r2, r2, #0xc + add r2, r3, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02235778: + ldr r0, [r5, #8] + mov r1, #0 + bl FUN_0200C644 + ldr r0, _022357AC ; =0x000005E1 + bl FUN_020054C8 + ldr r0, [r5, #4] + bl MOD12_02233638 + ldr r1, [r5, #0xc] + ldrb r0, [r1] + sub r0, r0, #1 + strb r0, [r1] + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022357A4: .word 0x00008CA0 +_022357A8: .word 0x00000000 +_022357AC: .word 0x000005E1 + + thumb_func_start MOD12_022357B0 +MOD12_022357B0: ; 0x022357B0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x15 + mov r1, #0xc + bl FUN_02016998 + mov r1, #0 + mov r2, #0xc + add r4, r0, #0 + bl MI_CpuFill8 + str r5, [r4] + ldr r0, _022357DC ; =MOD12_022357F8 + ldr r2, _022357E0 ; =0x00009C40 + add r1, r4, #0 + strb r6, [r4, #8] + bl FUN_0200CA44 + str r0, [r4, #4] + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_022357DC: .word MOD12_022357F8 +_022357E0: .word 0x00009C40 + + thumb_func_start MOD12_022357E4 +MOD12_022357E4: ; 0x022357E4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_022357F8 +MOD12_022357F8: ; 0x022357F8 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + mov r7, #0x13 + add r6, r1, #0 + add r5, r4, #0 + lsl r7, r7, #4 +_02235804: + ldrb r2, [r6, #8] + mov r1, #0x14 + ldr r0, [r6] + mul r1, r2 + add r0, r0, r1 + add r0, r5, r0 + ldr r0, [r0, r7] + cmp r0, #0 + beq _0223581A + bl FUN_0200C5A8 +_0223581A: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _02235804 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02235824 +MOD12_02235824: ; 0x02235824 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + mov r0, #0x30 + mul r0, r2 + add r0, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r1, #0x14 + add r2, r3, #0 + mul r2, r1 + ldr r1, [sp] + ldr r5, [sp, #0x20] + mov r7, #0 + strb r7, [r5] + add r6, r1, r2 + str r0, [sp, #4] +_02235846: + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r6, r0] + cmp r0, #0 + beq _02235890 + mov r0, #0x15 + mov r1, #0x28 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x28 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _0223589C ; =0x00009C40 + str r0, [r4] + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r6, r0] + str r0, [r4, #4] + str r5, [r4, #8] + mov r0, #0x28 + strb r0, [r4, #0xf] + ldr r0, [sp, #4] + strb r0, [r4, #0x10] + ldrb r1, [r5] + mov r0, #0xc + mul r0, r1 + strh r0, [r4, #0x24] + ldr r0, _022358A0 ; =MOD12_022358A4 + add r1, r4, #0 + bl FUN_0200CA44 + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] +_02235890: + add r7, r7, #1 + add r6, r6, #4 + cmp r7, #5 + blt _02235846 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223589C: .word 0x00009C40 +_022358A0: .word MOD12_022358A4 + + thumb_func_start MOD12_022358A4 +MOD12_022358A4: ; 0x022358A4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + add r4, r0, #0 + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _022358BE + cmp r0, #1 + beq _022358FE + cmp r0, #2 + bne _022358BC + b _02235A26 +_022358BC: + b _02235A5E +_022358BE: + mov r0, #0x24 + ldrsh r0, [r5, r0] + cmp r0, #0 + ble _022358CE + sub r0, r0, #1 + add sp, #8 + strh r0, [r5, #0x24] + pop {r3, r4, r5, r6, r7, pc} +_022358CE: + add r1, sp, #4 + ldr r0, [r5, #4] + add r1, #2 + add r2, sp, #4 + bl FUN_0200C7A0 + add r2, sp, #4 + mov r1, #0 + ldrsh r0, [r2, r1] + add r0, r0, #6 + strh r0, [r2] + mov r0, #2 + ldrsh r0, [r2, r0] + lsl r0, r0, #8 + str r0, [r5, #0x1c] + ldrsh r0, [r2, r1] + lsl r0, r0, #8 + str r0, [r5, #0x20] + ldr r0, _02235A84 ; =0x000007F9 + bl FUN_020054C8 + ldrb r0, [r5, #0xe] + add r0, r0, #1 + strb r0, [r5, #0xe] +_022358FE: + ldrh r2, [r5, #0xc] + mov r1, #2 + lsl r1, r1, #0xa + add r1, r2, r1 + strh r1, [r5, #0xc] + ldrh r2, [r5, #0xc] + ldr r1, _02235A88 ; =0x00008CA0 + add r0, r5, #0 + add r0, #0xc + cmp r2, r1 + blo _0223591A + ldrh r2, [r0] + sub r1, r2, r1 + strh r1, [r0] +_0223591A: + ldrh r0, [r5, #0xc] + mov r1, #0x64 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0201B93C + add r4, r0, #0 + ldrh r0, [r5, #0xc] + mov r1, #0x64 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0201B954 + add r6, r0, #0 + ldr r0, [r5, #0x20] + mov r2, #3 + add r0, #0x80 + str r0, [r5, #0x20] + asr r1, r4, #0x1f + add r0, r4, #0 + lsl r2, r2, #0xe + mov r3, #0 + bl _ll_mul + mov r2, #6 + str r0, [sp] + add r4, r1, #0 + asr r1, r6, #0x1f + add r0, r6, #0 + lsl r2, r2, #0xc + mov r3, #0 + bl _ll_mul + add r2, r1, #0 + ldr r1, [r5, #0x1c] + mov r6, #2 + add r7, r0, #0 + ldr r3, [sp] + lsl r6, r6, #0xa + asr r1, r1, #8 + add r6, r3, r6 + ldr r3, _02235A8C ; =0x00000000 + ldr r0, [r5, #4] + adc r4, r3 + lsl r3, r4, #0x14 + lsr r4, r6, #0xc + orr r4, r3 + asr r3, r4, #0xb + lsr r3, r3, #0x14 + add r3, r4, r3 + asr r3, r3, #0xc + add r1, r1, r3 + ldr r3, [r5, #0x20] + mov r4, #2 + lsl r1, r1, #0x10 + ldr r6, _02235A8C ; =0x00000000 + lsl r4, r4, #0xa + asr r1, r1, #0x10 + asr r3, r3, #8 + add r4, r7, r4 + adc r2, r6 + lsl r6, r2, #0x14 + lsr r2, r4, #0xc + orr r2, r6 + asr r4, r2, #0xb + lsr r4, r4, #0x14 + add r4, r2, r4 + asr r2, r4, #0xc + add r2, r3, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + mov r0, #0x24 + ldrsh r1, [r5, r0] + add r1, r1, #1 + strh r1, [r5, #0x24] + ldrsh r0, [r5, r0] + cmp r0, #0x50 + ble _02235A80 + mov r0, #0 + strh r0, [r5, #0x24] + add r1, sp, #4 + ldr r0, [r5, #4] + add r1, #2 + add r2, sp, #4 + bl FUN_0200C7A0 + add r2, sp, #4 + mov r0, #2 + ldrsh r0, [r2, r0] + lsl r1, r0, #8 + str r1, [r5, #0x1c] + mov r1, #0 + ldrsh r6, [r2, r1] + lsl r1, r6, #8 + str r1, [r5, #0x20] + ldrb r1, [r5, #0xf] + sub r0, r0, r1 + bpl _022359EC + neg r0, r0 +_022359EC: + ldrb r1, [r5, #0x10] + lsl r0, r0, #8 + sub r4, r6, r1 + bpl _022359F6 + neg r4, r4 +_022359F6: + mov r1, #3 + lsl r1, r1, #8 + str r1, [r5, #0x14] + bl _s32_div_f + add r1, r0, #0 + lsl r0, r4, #8 + bl _s32_div_f + str r0, [r5, #0x18] + ldrb r0, [r5, #0x10] + cmp r0, r6 + bge _02235A16 + ldr r0, [r5, #0x18] + neg r0, r0 + str r0, [r5, #0x18] +_02235A16: + ldr r0, _02235A90 ; =0x000006EA + bl FUN_020054C8 + ldrb r0, [r5, #0xe] + add sp, #8 + add r0, r0, #1 + strb r0, [r5, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_02235A26: + ldr r1, [r5, #0x1c] + ldr r0, [r5, #0x14] + sub r0, r1, r0 + str r0, [r5, #0x1c] + ldr r1, [r5, #0x20] + ldr r0, [r5, #0x18] + add r0, r1, r0 + str r0, [r5, #0x20] + ldrb r0, [r5, #0xf] + lsl r1, r0, #8 + ldr r0, [r5, #0x1c] + cmp r0, r1 + bgt _02235A48 + str r1, [r5, #0x1c] + ldrb r0, [r5, #0xe] + add r0, r0, #1 + strb r0, [r5, #0xe] +_02235A48: + ldr r1, [r5, #0x1c] + ldr r2, [r5, #0x20] + lsl r1, r1, #8 + lsl r2, r2, #8 + ldr r0, [r5, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02235A5E: + ldr r0, [r5, #4] + mov r1, #0 + bl FUN_0200C644 + ldr r0, _02235A94 ; =0x000005E1 + bl FUN_020054C8 + ldr r1, [r5, #8] + ldrb r0, [r1] + sub r0, r0, #1 + strb r0, [r1] + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_02235A80: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02235A84: .word 0x000007F9 +_02235A88: .word 0x00008CA0 +_02235A8C: .word 0x00000000 +_02235A90: .word 0x000006EA +_02235A94: .word 0x000005E1 + + thumb_func_start MOD12_02235A98 +MOD12_02235A98: ; 0x02235A98 + push {r4} + sub sp, #0xc + ldr r3, _02235AC0 ; =0x022451D4 + add r2, sp, #0 + ldrh r4, [r3, #0x14] + add r1, sp, #0 + lsl r0, r0, #1 + strh r4, [r2] + ldrh r4, [r3, #0x16] + strh r4, [r2, #2] + ldrh r4, [r3, #0x18] + strh r4, [r2, #4] + ldrh r4, [r3, #0x1a] + ldrh r3, [r3, #0x1c] + strh r4, [r2, #6] + strh r3, [r2, #8] + ldrh r0, [r1, r0] + add sp, #0xc + pop {r4} + bx lr + .align 2, 0 +_02235AC0: .word 0x022451D4 + + thumb_func_start MOD12_02235AC4 +MOD12_02235AC4: ; 0x02235AC4 + push {r4} + sub sp, #0xc + ldr r3, _02235AEC ; =0x022451D4 + add r2, sp, #0 + ldrh r4, [r3, #0xa] + add r1, sp, #0 + lsl r0, r0, #1 + strh r4, [r2] + ldrh r4, [r3, #0xc] + strh r4, [r2, #2] + ldrh r4, [r3, #0xe] + strh r4, [r2, #4] + ldrh r4, [r3, #0x10] + ldrh r3, [r3, #0x12] + strh r4, [r2, #6] + strh r3, [r2, #8] + ldrh r0, [r1, r0] + add sp, #0xc + pop {r4} + bx lr + .align 2, 0 +_02235AEC: .word 0x022451D4 + + thumb_func_start MOD12_02235AF0 +MOD12_02235AF0: ; 0x02235AF0 + push {r4} + sub sp, #0xc + ldr r3, _02235B18 ; =0x022451D4 + add r2, sp, #0 + ldrh r4, [r3] + add r1, sp, #0 + lsl r0, r0, #1 + strh r4, [r2] + ldrh r4, [r3, #2] + strh r4, [r2, #2] + ldrh r4, [r3, #4] + strh r4, [r2, #4] + ldrh r4, [r3, #6] + ldrh r3, [r3, #8] + strh r4, [r2, #6] + strh r3, [r2, #8] + ldrh r0, [r1, r0] + add sp, #0xc + pop {r4} + bx lr + .align 2, 0 +_02235B18: .word 0x022451D4 + + thumb_func_start MOD12_02235B1C +MOD12_02235B1C: ; 0x02235B1C + push {r3, r4, r5, r6, r7, lr} + add r4, r3, #0 + add r6, r0, #0 + add r7, r1, #0 + add r5, r2, #0 + add r0, r4, #0 + mov r1, #0 + mov r2, #0xc + bl MI_CpuFill8 + strh r5, [r4, #4] + cmp r5, #0x8f + bgt _02235B52 + bge _02235B8A + cmp r5, #0x4c + bgt _02235B44 + bge _02235B8A + cmp r5, #0xd + beq _02235B8A + pop {r3, r4, r5, r6, r7, pc} +_02235B44: + cmp r5, #0x77 + bgt _02235B4C + beq _02235BC8 + pop {r3, r4, r5, r6, r7, pc} +_02235B4C: + cmp r5, #0x82 + beq _02235B8A + pop {r3, r4, r5, r6, r7, pc} +_02235B52: + ldr r1, _02235BE4 ; =0x0000010B + cmp r5, r1 + bgt _02235B72 + bge _02235BCE + cmp r5, #0xae + bgt _02235B62 + beq _02235B9C + pop {r3, r4, r5, r6, r7, pc} +_02235B62: + cmp r5, #0xda + bgt _02235BE2 + cmp r5, #0xd8 + blt _02235BE2 + beq _02235B90 + cmp r5, #0xda + beq _02235B96 + pop {r3, r4, r5, r6, r7, pc} +_02235B72: + add r0, r1, #0 + add r0, #0xd + cmp r5, r0 + bgt _02235B82 + add r1, #0xd + cmp r5, r1 + beq _02235BD4 + pop {r3, r4, r5, r6, r7, pc} +_02235B82: + add r1, #0xc8 + cmp r5, r1 + beq _02235BDA + pop {r3, r4, r5, r6, r7, pc} +_02235B8A: + mov r0, #1 + strb r0, [r4, #6] + pop {r3, r4, r5, r6, r7, pc} +_02235B90: + mov r0, #0xff + strb r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_02235B96: + mov r0, #0 + strb r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_02235B9C: + lsl r5, r7, #2 + ldr r0, [r6, r5] + mov r1, #0xb0 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + ldr r0, [r6, r5] + mov r1, #0xb1 + mov r2, #0 + bl FUN_020671BC + cmp r7, #7 + beq _02235BBC + cmp r0, #7 + bne _02235BC2 +_02235BBC: + mov r0, #1 + strb r0, [r4, #7] + pop {r3, r4, r5, r6, r7, pc} +_02235BC2: + mov r0, #0 + strb r0, [r4, #7] + pop {r3, r4, r5, r6, r7, pc} +_02235BC8: + mov r0, #1 + strh r0, [r4, #4] + pop {r3, r4, r5, r6, r7, pc} +_02235BCE: + mov r0, #0xa1 + strh r0, [r4, #4] + pop {r3, r4, r5, r6, r7, pc} +_02235BD4: + mov r0, #1 + strb r0, [r4, #7] + pop {r3, r4, r5, r6, r7, pc} +_02235BDA: + mov r0, #1 + strb r0, [r4, #6] + ldr r0, _02235BE8 ; =0x200400C0 + str r0, [r4] +_02235BE2: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02235BE4: .word 0x0000010B +_02235BE8: .word 0x200400C0 + + thumb_func_start MOD12_02235BEC +MOD12_02235BEC: ; 0x02235BEC + cmp r2, #0 + bne _02235BF4 + mov r0, #0 + bx lr +_02235BF4: + lsl r3, r1, #1 + add r3, r0, r3 + ldrh r3, [r3, #0x26] + cmp r2, r3 + bne _02235C12 + lsl r1, r1, #2 + add r0, r0, r1 + add r0, #0xe0 + ldr r0, [r0] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r2, r0 + beq _02235C12 + mov r0, #0 + bx lr +_02235C12: + mov r0, #1 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02235C18 +MOD12_02235C18: ; 0x02235C18 + push {r3, r4} + add r1, r0, r1 + ldrb r4, [r1, #0xe] + mov r3, #0 + add r2, r3, #0 +_02235C22: + add r1, r0, r2 + ldrb r1, [r1, #0xe] + cmp r1, r4 + bne _02235C2C + add r3, r3, #1 +_02235C2C: + add r2, r2, #1 + cmp r2, #4 + blt _02235C22 + sub r0, r3, #1 + pop {r3, r4} + bx lr + + thumb_func_start MOD12_02235C38 +MOD12_02235C38: ; 0x02235C38 + ldr r1, _02235C40 ; =0x022454C8 + ldrb r0, [r1, r0] + bx lr + nop +_02235C40: .word 0x022454C8 + + thumb_func_start MOD12_02235C44 +MOD12_02235C44: ; 0x02235C44 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + mov r1, #0xb + bl FUN_0206AB18 + lsl r1, r4, #2 + add r2, r4, r1 + ldr r1, _02235C5C ; =0x022454E4 + add r1, r1, r2 + ldrsb r0, [r0, r1] + pop {r4, pc} + .align 2, 0 +_02235C5C: .word 0x022454E4 + + thumb_func_start MOD12_02235C60 +MOD12_02235C60: ; 0x02235C60 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r3, #0 + mov lr, r0 + add r2, sp, #8 + add r1, sp, #4 + add r7, r3, #0 + add r0, sp, #0 + mov r6, #0x1a + b _02235C9A +_02235C74: + lsl r4, r3, #1 + mov r5, lr + add r5, r5, r4 + ldrsh r5, [r5, r6] + strb r3, [r1, r3] + strh r5, [r2, r4] + add r4, r7, #0 + b _02235C94 +_02235C84: + mov r5, lr + add r5, r5, r4 + ldrb r5, [r5, #1] + cmp r3, r5 + bne _02235C92 + strb r4, [r0, r3] + b _02235C98 +_02235C92: + add r4, r4, #1 +_02235C94: + cmp r4, #4 + blt _02235C84 +_02235C98: + add r3, r3, #1 +_02235C9A: + cmp r3, #4 + blt _02235C74 + mov r3, #0 + ldr r6, _02235D70 ; =0x022454D4 + add r1, sp, #8 + ldr r0, _02235D74 ; =0x022454CC + ldr r2, _02235D78 ; =0x022454DC + mov r7, #0x2c + b _02235CFC +_02235CAC: + add r5, r3, #0 + mul r5, r7 + mov r4, lr + add r4, r4, r5 + ldr r4, [r4, #0x58] + lsl r5, r4, #0x1a + lsr r5, r5, #0x1e + cmp r5, #3 + bhi _02235CFA + add r5, r5, r5 + add r5, pc + ldrh r5, [r5, #6] + lsl r5, r5, #0x10 + asr r5, r5, #0x10 + add pc, r5 +_02235CCA: ; jump table + .short _02235CFA - _02235CCA - 2 ; case 0 + .short _02235CD2 - _02235CCA - 2 ; case 1 + .short _02235CE0 - _02235CCA - 2 ; case 2 + .short _02235CEE - _02235CCA - 2 ; case 3 +_02235CD2: + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + lsl r4, r4, #1 + ldrsh r5, [r2, r4] + lsl r4, r3, #1 + strh r5, [r1, r4] + b _02235CFA +_02235CE0: + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + lsl r4, r4, #1 + ldrsh r5, [r0, r4] + lsl r4, r3, #1 + strh r5, [r1, r4] + b _02235CFA +_02235CEE: + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + lsl r4, r4, #1 + ldrsh r5, [r6, r4] + lsl r4, r3, #1 + strh r5, [r1, r4] +_02235CFA: + add r3, r3, #1 +_02235CFC: + cmp r3, #4 + blt _02235CAC + mov r3, #0 + b _02235D52 +_02235D04: + mov r4, #3 + add r2, sp, #8 + add r7, sp, #0 + b _02235D4C +_02235D0C: + sub r1, r4, #1 + lsl r0, r1, #1 + lsl r5, r4, #1 + ldrsh r0, [r2, r0] + ldrsh r5, [r2, r5] + cmp r0, r5 + bgt _02235D26 + cmp r0, r5 + bne _02235D4A + ldrb r1, [r7, r1] + ldrb r0, [r7, r4] + cmp r1, r0 + bhs _02235D4A +_02235D26: + sub r0, r4, #1 + lsl r1, r4, #1 + lsl r5, r0, #1 + mov ip, r5 + ldrsh r6, [r2, r1] + ldrsh r5, [r2, r5] + strh r5, [r2, r1] + mov r1, ip + strh r6, [r2, r1] + add r1, sp, #4 + ldrb r6, [r1, r4] + ldrb r5, [r1, r0] + strb r5, [r1, r4] + strb r6, [r1, r0] + ldrb r5, [r7, r4] + ldrb r1, [r7, r0] + strb r1, [r7, r4] + strb r5, [r7, r0] +_02235D4A: + sub r4, r4, #1 +_02235D4C: + cmp r4, r3 + bgt _02235D0C + add r3, r3, #1 +_02235D52: + cmp r3, #3 + blt _02235D04 + mov r3, #0 + add r2, sp, #4 + b _02235D66 +_02235D5C: + ldrb r1, [r2, r3] + mov r0, lr + add r0, r0, r3 + strb r1, [r0, #1] + add r3, r3, #1 +_02235D66: + cmp r3, #4 + blt _02235D5C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02235D70: .word 0x022454D4 +_02235D74: .word 0x022454CC +_02235D78: .word 0x022454DC + + thumb_func_start MOD12_02235D7C +MOD12_02235D7C: ; 0x02235D7C + push {r3, r4, lr} + sub sp, #0xc + ldr r1, _02235DB4 ; =0x02245500 + add r3, sp, #0 + str r1, [sp] + mov r1, #0x16 + strh r1, [r3, #4] + ldr r1, [r0] + ldr r2, _02235DB8 ; =0x00000123 + ldrb r1, [r1, r2] + strb r1, [r3, #6] + sub r1, r2, #7 + ldr r4, [r0] + add r2, #0x4e + ldrb r1, [r4, r1] + strb r1, [r3, #8] + ldr r1, [r0] + ldrb r1, [r1, r2] + strb r1, [r3, #7] + mov r1, #0xc3 + lsl r1, r1, #4 + add r0, r0, r1 + add r1, sp, #0 + bl MOD12_02240ED0 + add sp, #0xc + pop {r3, r4, pc} + nop +_02235DB4: .word 0x02245500 +_02235DB8: .word 0x00000123 + + thumb_func_start MOD12_02235DBC +MOD12_02235DBC: ; 0x02235DBC + push {r3, lr} + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + mov r3, #0 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02235DD4 +MOD12_02235DD4: ; 0x02235DD4 + push {r3, lr} + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, pc} + + thumb_func_start MOD12_02235DE8 +MOD12_02235DE8: ; 0x02235DE8 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02235DEC +MOD12_02235DEC: ; 0x02235DEC + push {r3, lr} + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + mov r3, #0 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02235E04 +MOD12_02235E04: ; 0x02235E04 + push {r3, lr} + ldr r0, _02235E20 ; =0x00001650 + mov r3, #1 + strb r3, [r1, r0] + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, pc} + nop +_02235E20: .word 0x00001650 + + thumb_func_start MOD12_02235E24 +MOD12_02235E24: ; 0x02235E24 + push {r3, lr} + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + mov r3, #0 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02235E3C +MOD12_02235E3C: ; 0x02235E3C + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r0, #0x15 + mov r1, #0x10 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + ldr r2, _02235E74 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _02235E78 ; =MOD12_02235E7C + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + nop +_02235E74: .word 0x00007530 +_02235E78: .word MOD12_02235E7C + + thumb_func_start MOD12_02235E7C +MOD12_02235E7C: ; 0x02235E7C + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + ldrb r1, [r4, #0xf] + add r5, r0, #0 + cmp r1, #0 + beq _02235E94 + cmp r1, #1 + beq _02235EB2 + cmp r1, #2 + beq _02235ECC + b _02235EDA +_02235E94: + mov r1, #0 + add r0, r4, #0 + str r1, [sp] + add r0, #0xe + str r0, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + mov r3, #0x46 + bl MOD12_022352F4 + ldrb r0, [r4, #0xf] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xf] + pop {r3, r4, r5, pc} +_02235EB2: + ldrh r0, [r4, #0xc] + add r0, r0, #1 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0xc] + cmp r0, #0x1e + bls _02235EF8 + mov r0, #0 + strh r0, [r4, #0xc] + ldrb r0, [r4, #0xf] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xf] + pop {r3, r4, r5, pc} +_02235ECC: + ldrb r0, [r4, #0xe] + cmp r0, #1 + bne _02235EF8 + add r0, r1, #1 + add sp, #8 + strb r0, [r4, #0xf] + pop {r3, r4, r5, pc} +_02235EDA: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02235EF8: + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_02235EFC +MOD12_02235EFC: ; 0x02235EFC + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02235F14 +MOD12_02235F14: ; 0x02235F14 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + mov r0, #0x15 + mov r1, #0x1c + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02235F6C ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + add r0, r6, #0 + add r0, #0xe4 + ldrb r0, [r0] + strb r0, [r4, #0x18] + add r0, r6, #0 + add r0, #0xd8 + ldrh r0, [r0] + strh r0, [r4, #0x12] + add r0, r6, #0 + add r0, #0xda + ldrh r0, [r0] + add r6, #0xdc + strh r0, [r4, #0x14] + ldrh r0, [r6] + strh r0, [r4, #0x16] + ldr r0, _02235F70 ; =MOD12_02235F74 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02235F6C: .word 0x00007530 +_02235F70: .word MOD12_02235F74 + + thumb_func_start MOD12_02235F74 +MOD12_02235F74: ; 0x02235F74 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #4 + bhi _0223601A + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02235F8E: ; jump table + .short _02235F98 - _02235F8E - 2 ; case 0 + .short _02235FBA - _02235F8E - 2 ; case 1 + .short _02235FD4 - _02235F8E - 2 ; case 2 + .short _02235FEE - _02235F8E - 2 ; case 3 + .short _0223600C - _02235F8E - 2 ; case 4 +_02235F98: + ldrb r1, [r4, #0x18] + cmp r1, #0 + beq _02235FAA + add r2, r4, #0 + ldr r0, [r4] + add r2, #0x12 + mov r3, #0 + bl MOD12_02234FB0 +_02235FAA: + ldr r0, _0223603C ; =0x000006F9 + bl FUN_020054C8 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02235FBA: + ldrb r0, [r4, #0x18] + cmp r0, #0 + beq _02235FCA + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236038 +_02235FCA: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02235FD4: + ldrh r0, [r4, #0xe] + add r0, r0, #1 + strh r0, [r4, #0xe] + ldrh r0, [r4, #0xe] + cmp r0, #0x1e + bls _02236038 + mov r0, #0 + strh r0, [r4, #0xe] + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02235FEE: + mov r1, #0 + add r0, r4, #0 + str r1, [sp] + add r0, #0x10 + str r0, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + mov r3, #0x46 + bl MOD12_022352F4 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223600C: + ldrb r1, [r4, #0x10] + cmp r1, #1 + bne _02236038 + add r0, r0, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223601A: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02236038: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223603C: .word 0x000006F9 + + thumb_func_start MOD12_02236040 +MOD12_02236040: ; 0x02236040 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236058 +MOD12_02236058: ; 0x02236058 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r0, #0x15 + mov r1, #0x1c + add r5, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + add r2, r4, #0 + mov r1, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + add r2, #0x16 + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldrb r0, [r7] + strb r0, [r4, #0x15] + add r0, r6, #0 + bl MOD12_0223483C + ldr r0, _022360A8 ; =MOD12_022360B0 + ldr r2, _022360AC ; =0x00007530 + add r1, r4, #0 + bl FUN_0200CA44 + add r0, r6, #0 + bl MOD12_02234EFC + pop {r3, r4, r5, r6, r7, pc} + nop +_022360A8: .word MOD12_022360B0 +_022360AC: .word 0x00007530 + + thumb_func_start MOD12_022360B0 +MOD12_022360B0: ; 0x022360B0 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0x15] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02068E14 + add r5, r0, #0 + ldrb r0, [r4, #0x14] + cmp r0, #3 + bls _022360D0 + b _022361DA +_022360D0: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022360DC: ; jump table + .short _022360E4 - _022360DC - 2 ; case 0 + .short _02236100 - _022360DC - 2 ; case 1 + .short _02236162 - _022360DC - 2 ; case 2 + .short _0223617C - _022360DC - 2 ; case 3 +_022360E4: + mov r0, #0x18 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x18] + ldrsh r0, [r4, r0] + cmp r0, #0xa + bgt _022360F4 + b _022361FE +_022360F4: + mov r0, #0 + strh r0, [r4, #0x18] + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_02236100: + ldrb r0, [r4, #0x15] + mov r1, #0 + lsl r5, r0, #2 + ldr r0, [r4] + ldr r0, [r0, #0xc] + ldr r0, [r0, r5] + bl FUN_02068E14 + add r6, r0, #0 + ldr r0, [r4] + mov r1, #0x25 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4] + mov r1, #6 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4] + mov r2, #1 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r1, #0 + lsl r2, r2, #8 + bl FUN_02007558 + ldr r0, [r4] + add r6, #0xac + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r1, #1 + add r2, r6, #0 + bl FUN_02007558 + mov r0, #1 + lsl r0, r0, #0x10 + str r0, [r4, #0xc] + mov r0, #0x2b + lsl r0, r0, #0xa + str r0, [r4, #0x10] + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_02236162: + ldr r0, [r4] + ldrb r2, [r4, #0x15] + ldr r1, [r0] + ldr r0, _02236200 ; =0x00000123 + ldrb r0, [r1, r0] + cmp r2, r0 + bne _02236176 + ldr r0, _02236204 ; =0x000006F8 + bl FUN_020054C8 +_02236176: + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] +_0223617C: + ldr r1, [r4, #0xc] + ldr r0, _02236208 ; =0x000005B6 + sub r0, r1, r0 + str r0, [r4, #0xc] + ldr r1, [r4, #0x10] + ldr r0, _0223620C ; =0x00000892 + sub r0, r1, r0 + str r0, [r4, #0x10] + ldr r0, [r4, #0xc] + asr r0, r0, #8 + cmp r0, #0xd8 + ble _0223619C + ldr r0, [r4, #0x10] + asr r0, r0, #8 + cmp r0, #0x70 + bgt _022361AE +_0223619C: + mov r0, #0x36 + lsl r0, r0, #0xa + str r0, [r4, #0xc] + mov r0, #7 + lsl r0, r0, #0xc + str r0, [r4, #0x10] + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] +_022361AE: + ldrb r0, [r4, #0x15] + ldr r2, [r4, #0xc] + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldrb r0, [r4, #0x15] + ldr r2, [r4, #0x10] + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + asr r2, r2, #8 + ldr r0, [r0, #0x14] + mov r1, #1 + add r2, r2, r5 + bl FUN_02007558 + pop {r4, r5, r6, pc} +_022361DA: + ldrb r0, [r4, #0x16] + cmp r0, #1 + bne _022361FE + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_022361FE: + pop {r4, r5, r6, pc} + .align 2, 0 +_02236200: .word 0x00000123 +_02236204: .word 0x000006F8 +_02236208: .word 0x000005B6 +_0223620C: .word 0x00000892 + + thumb_func_start MOD12_02236210 +MOD12_02236210: ; 0x02236210 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236228 +MOD12_02236228: ; 0x02236228 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r0, #0x15 + mov r1, #0x1c + add r5, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldrb r0, [r7] + strb r0, [r4, #0x15] + ldr r1, [r6, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02068E14 + mov r0, #0x36 + lsl r0, r0, #0xa + str r0, [r4, #0xc] + mov r0, #7 + lsl r0, r0, #0xc + str r0, [r4, #0x10] + ldr r0, _0223627C ; =MOD12_02236284 + ldr r2, _02236280 ; =0x00007530 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223627C: .word MOD12_02236284 +_02236280: .word 0x00007530 + + thumb_func_start MOD12_02236284 +MOD12_02236284: ; 0x02236284 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + ldrb r0, [r5, #0x15] + mov r1, #0 + lsl r4, r0, #2 + ldr r0, [r5] + ldr r0, [r0, #0xc] + ldr r0, [r0, r4] + bl FUN_02068E14 + add r6, r0, #0 + ldrb r0, [r5, #0x14] + cmp r0, #0 + beq _022362A8 + cmp r0, #1 + beq _0223631A + b _02236342 +_022362A8: + ldr r1, [r5, #0xc] + ldr r0, _02236364 ; =0x000005B6 + add r0, r1, r0 + str r0, [r5, #0xc] + ldr r1, [r5, #0x10] + ldr r0, _02236368 ; =0x00000892 + add r0, r1, r0 + str r0, [r5, #0x10] + ldr r0, [r5, #0xc] + asr r1, r0, #8 + mov r0, #1 + lsl r0, r0, #8 + cmp r1, r0 + bge _022362CC + ldr r0, [r5, #0x10] + asr r0, r0, #8 + cmp r0, #0xac + blt _022362EE +_022362CC: + ldr r0, [r5] + mov r1, #0x25 + add r0, r0, r4 + ldr r0, [r0, #0x14] + mov r2, #1 + bl FUN_02007558 + ldr r0, [r5] + mov r1, #6 + add r0, r0, r4 + ldr r0, [r0, #0x14] + mov r2, #1 + bl FUN_02007558 + ldrb r0, [r5, #0x14] + add r0, r0, #1 + strb r0, [r5, #0x14] +_022362EE: + ldrb r0, [r5, #0x15] + ldr r2, [r5, #0xc] + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldrb r0, [r5, #0x15] + ldr r2, [r5, #0x10] + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + asr r2, r2, #8 + ldr r0, [r0, #0x14] + mov r1, #1 + add r2, r2, r6 + bl FUN_02007558 + pop {r3, r4, r5, r6, r7, pc} +_0223631A: + ldrb r1, [r5, #0x15] + ldr r0, [r5] + ldr r2, _0223636C ; =0x00001652 + add r3, r0, r1 + ldrb r2, [r3, r2] + cmp r2, #1 + bne _0223633A + add r0, #0xc + bl MOD12_022336AC + ldrb r0, [r5, #0x15] + ldr r1, [r5] + mov r2, #0 + add r1, r1, r0 + ldr r0, _0223636C ; =0x00001652 + strb r2, [r1, r0] +_0223633A: + ldrb r0, [r5, #0x14] + add r0, r0, #1 + strb r0, [r5, #0x14] + pop {r3, r4, r5, r6, r7, pc} +_02236342: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r5] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r5, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r7, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, r6, r7, pc} + nop +_02236364: .word 0x000005B6 +_02236368: .word 0x00000892 +_0223636C: .word 0x00001652 + + thumb_func_start MOD12_02236370 +MOD12_02236370: ; 0x02236370 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236388 +MOD12_02236388: ; 0x02236388 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + mov r0, #0x15 + mov r1, #0x1c + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + ldr r2, _022363EC ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #2] + strb r0, [r4, #0xe] + add r0, r5, #0 + add r0, #0xe4 + ldrb r0, [r0] + strb r0, [r4, #0x1a] + add r0, r5, #0 + add r0, #0xd8 + ldrh r0, [r0] + strh r0, [r4, #0x14] + add r0, r5, #0 + add r0, #0xda + ldrh r0, [r0] + strh r0, [r4, #0x16] + add r0, r5, #0 + add r0, #0xdc + ldrh r0, [r0] + strh r0, [r4, #0x18] + ldrb r0, [r5, #3] + strb r0, [r4, #0x10] + ldr r0, _022363F0 ; =MOD12_022363F4 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022363EC: .word 0x00007530 +_022363F0: .word MOD12_022363F4 + + thumb_func_start MOD12_022363F4 +MOD12_022363F4: ; 0x022363F4 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #8 + bhi _02236502 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223640E: ; jump table + .short _02236420 - _0223640E - 2 ; case 0 + .short _0223645C - _0223640E - 2 ; case 1 + .short _0223646A - _0223640E - 2 ; case 2 + .short _02236472 - _0223640E - 2 ; case 3 + .short _02236496 - _0223640E - 2 ; case 4 + .short _022364AA - _0223640E - 2 ; case 5 + .short _022364B2 - _0223640E - 2 ; case 6 + .short _022364D6 - _0223640E - 2 ; case 7 + .short _022364E4 - _0223640E - 2 ; case 8 +_02236420: + ldrb r0, [r4, #0xd] + ldr r1, [r4] + lsl r0, r0, #1 + add r1, r1, r0 + ldr r0, _02236524 ; =0x00000242 + ldrsh r0, [r1, r0] + bl MOD12_022352C8 + add r3, r0, #0 + cmp r3, #0 + ble _0223644A + mov r1, #0 + add r0, r4, #0 + str r1, [sp] + add r0, #0x12 + str r0, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + bl MOD12_022352F4 + b _02236452 +_0223644A: + mov r0, #2 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236452: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223645C: + ldrb r1, [r4, #0x12] + cmp r1, #1 + bne _02236520 + add r0, r0, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223646A: + add r0, r0, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236472: + ldrb r1, [r4, #0x1a] + cmp r1, #0 + beq _0223648E + add r2, r4, #0 + ldr r0, [r4] + add r2, #0x14 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223648E: + mov r0, #5 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236496: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236520 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022364AA: + add r0, r0, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022364B2: + ldr r0, [r4] + ldrb r1, [r4, #0xe] + ldrb r2, [r4, #0x10] + add r0, #0xc + bl MOD12_02233BE4 + add r3, r4, #0 + ldrb r1, [r4, #0xe] + ldrb r2, [r4, #0x10] + ldr r0, [r4] + add r3, #0xf + bl MOD12_02233C94 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022364D6: + ldrb r1, [r4, #0xf] + cmp r1, #1 + bne _02236520 + add r0, r0, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022364E4: + ldrb r0, [r4, #0x11] + add r0, r0, #1 + strb r0, [r4, #0x11] + ldrb r0, [r4, #0x11] + cmp r0, #5 + bls _02236520 + ldr r0, [r4] + add r0, #0xc + bl MOD12_02233C74 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236502: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02236520: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02236524: .word 0x00000242 + + thumb_func_start MOD12_02236528 +MOD12_02236528: ; 0x02236528 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236540 +MOD12_02236540: ; 0x02236540 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + mov r1, #0x49 + mov r0, #0x15 + lsl r1, r1, #2 + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x49 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r1, [r5] + mov r0, #0x2c + add r2, r1, #0 + mul r2, r0 + add r1, r5, r2 + ldrh r1, [r1, #0x10] + strh r1, [r4, #0xe] + add r1, r5, #0 + add r1, #0xe4 + ldrb r2, [r1] + add r1, r0, #0 + add r1, #0xe2 + strb r2, [r4, r1] + add r1, r5, #0 + add r1, #0xd8 + ldrh r2, [r1] + add r1, r0, #0 + add r1, #0xdc + strh r2, [r4, r1] + add r1, r5, #0 + add r1, #0xda + ldrh r2, [r1] + add r1, r0, #0 + add r1, #0xde + strh r2, [r4, r1] + add r1, r5, #0 + add r1, #0xdc + ldrh r2, [r1] + add r1, r0, #0 + add r1, #0xe0 + strh r2, [r4, r1] + add r1, r5, #0 + add r1, #0xe5 + ldrb r2, [r1] + add r1, r0, #0 + add r1, #0xea + strb r2, [r4, r1] + add r1, r5, #0 + add r1, #0xde + ldrh r2, [r1] + add r1, r0, #0 + add r1, #0xe4 + strh r2, [r4, r1] + add r1, r5, #0 + add r1, #0xe0 + ldrh r2, [r1] + add r1, r0, #0 + add r1, #0xe6 + strh r2, [r4, r1] + add r1, r5, #0 + add r1, #0xe2 + ldrh r1, [r1] + add r0, #0xe8 + mov r2, #0x1e + strh r1, [r4, r0] +_022365E6: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022365E6 + ldr r0, [r5] + add r1, r4, #0 + str r0, [r3] + ldr r0, _02236600 ; =MOD12_02236604 + mov r2, #5 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02236600: .word MOD12_02236604 + + thumb_func_start MOD12_02236604 +MOD12_02236604: ; 0x02236604 + push {r4, r5, r6, r7, lr} + sub sp, #0x114 + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r6, r0, #0 + add r2, r4, #0 + mov r5, #0x2c + add r0, r1, #0 + add r2, #0x24 + mul r0, r5 + add r3, r2, r0 + ldrb r0, [r4, #0xc] + cmp r0, #0xe + bls _02236622 + b _02236A70 +_02236622: + add r2, r0, r0 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0223662E: ; jump table + .short _0223664C - _0223662E - 2 ; case 0 + .short _02236674 - _0223662E - 2 ; case 1 + .short _02236688 - _0223662E - 2 ; case 2 + .short _02236690 - _0223662E - 2 ; case 3 + .short _022366B6 - _0223662E - 2 ; case 4 + .short _022366CA - _0223662E - 2 ; case 5 + .short _022366D2 - _0223662E - 2 ; case 6 + .short _022366FA - _0223662E - 2 ; case 7 + .short _02236710 - _0223662E - 2 ; case 8 + .short _02236718 - _0223662E - 2 ; case 9 + .short _0223672C - _0223662E - 2 ; case 10 + .short _022369D6 - _0223662E - 2 ; case 11 + .short _02236A2C - _0223662E - 2 ; case 12 + .short _02236A4C - _0223662E - 2 ; case 13 + .short _02236A62 - _0223662E - 2 ; case 14 +_0223664C: + add r0, r5, #0 + add r0, #0xe2 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _0223666C + add r5, #0xdc + ldr r0, [r4] + add r2, r4, r5 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_0223666C: + mov r0, #2 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236674: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236704 + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236688: + add r0, r0, #1 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236690: + ldrb r1, [r3, #0x12] + cmp r1, #0 + beq _022366AE + mov r0, #0 + str r0, [sp] + ldrb r2, [r3, #0x13] + ldr r0, [r4] + add r3, #0xc + bl MOD12_02234FF0 + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022366AE: + mov r0, #5 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022366B6: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236704 + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022366CA: + add r0, r0, #1 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022366D2: + add r0, r5, #0 + add r0, #0xea + ldrb r1, [r4, r0] + cmp r1, #0 + beq _022366F2 + add r5, #0xdc + ldr r0, [r4] + add r2, r4, r5 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022366F2: + mov r0, #8 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022366FA: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + beq _02236706 +_02236704: + b _02236A8E +_02236706: + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236710: + add r0, r0, #1 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236718: + ldr r0, [r4] + ldrh r2, [r4, #0xe] + add r5, #0xec + ldr r0, [r0] + add r3, r4, r5 + bl MOD12_02235B1C + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223672C: + ldrb r0, [r4, #0xd] + add r5, r0, #1 + cmp r5, #4 + blt _02236736 + mov r5, #0 +_02236736: + add r0, sp, #0xbc + mov r1, #0 + mov r2, #0x58 + bl MI_CpuFill8 + add r0, sp, #0x2c + mov r1, #0 + mov r2, #0x90 + bl MI_CpuFill8 + ldr r0, [r4] + mov r2, #0 + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #5 + bl FUN_020671BC + add r6, r0, #0 + ldr r0, [r4] + mov r2, #0 + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x6f + bl FUN_020671BC + add r7, r0, #0 + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02068A80 + str r0, [sp, #0x20] + ldr r0, [r4] + mov r2, #0 + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x70 + bl FUN_020671BC + str r0, [sp, #0x1c] + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + add r2, r1, #0 + bl FUN_020671BC + str r0, [sp, #8] + ldr r0, [r4] + lsl r5, r5, #2 + ldr r0, [r0, #0xc] + mov r1, #5 + ldr r0, [r0, r5] + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x18] + ldr r0, [r4] + mov r1, #0x6f + ldr r0, [r0, #0xc] + mov r2, #0 + ldr r0, [r0, r5] + bl FUN_020671BC + str r0, [sp, #0x14] + ldr r0, [r4] + ldr r0, [r0, #0xc] + ldr r0, [r0, r5] + bl FUN_02068A80 + str r0, [sp, #0x10] + ldr r0, [r4] + mov r1, #0x70 + ldr r0, [r0, #0xc] + mov r2, #0 + ldr r0, [r0, r5] + bl FUN_020671BC + str r0, [sp, #0xc] + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0, #0xc] + add r2, r1, #0 + ldr r0, [r0, r5] + bl FUN_020671BC + str r0, [sp, #4] + mov r2, #0x47 + mov r0, #0 + add r1, sp, #0xbc + strb r0, [r1] + strb r0, [r1, #1] + lsl r2, r2, #2 + ldrh r3, [r4, r2] + mov r5, #1 + strh r3, [r1, #2] + str r5, [sp, #0xc0] + mov r3, #0xa + strh r3, [r1, #8] + add r3, r2, #3 + ldrb r3, [r4, r3] + add r2, r2, #4 + strh r3, [r1, #0xa] + ldrb r2, [r4, r2] + strh r2, [r1, #0xc] + str r0, [sp, #0xcc] + strh r0, [r1, #0x14] + strh r5, [r1, #0x16] + mov r2, #9 + str r2, [sp, #0x110] + lsl r2, r6, #0x10 + lsr r2, r2, #0x10 +_0223682A: + add r0, r0, #1 + strh r2, [r1, #0x18] + add r1, r1, #2 + cmp r0, #4 + blt _0223682A + ldr r0, [sp, #0x18] + add r1, sp, #0xbc + strh r0, [r1, #0x1a] + ldr r0, [r4] + mov r5, #0 + ldr r0, [r0, #0x30] + str r0, [sp, #0x30] + ldr r0, [r4] + ldr r0, [r0, #0x5c] + str r0, [sp, #0x34] + ldrb r0, [r4, #0xd] + ldr r1, [r4] + add r1, #0x64 + lsl r0, r0, #4 + add r0, r1, r0 + str r0, [sp, #0x38] + ldr r0, [r4] + add r1, sp, #0x2c + add r0, #0xa4 + str r0, [sp, #0x3c] + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x28] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + add r2, r1, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov ip, r0 + ldr r0, [sp, #0x1c] + add r3, r1, #0 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 +_0223687A: + mov r0, #0xff + strb r0, [r1, #0x1c] + ldr r0, [sp, #0x28] + add r6, r1, #0 + strh r0, [r2, #0x34] + ldr r0, [sp, #0x24] + add r6, #0x3c + strb r0, [r6] + add r6, r1, #0 + add r6, #0x40 + mov r0, ip + strb r0, [r6] + add r0, r1, #0 + add r0, #0x44 + strb r7, [r0] + ldr r0, [sp, #8] + add r5, r5, #1 + str r0, [r3, #0x48] + mov r0, #0 + str r0, [r3, #0x58] + add r1, r1, #1 + add r2, r2, #2 + add r3, r3, #4 + cmp r5, #4 + blt _0223687A + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, sp, #0x2c + str r0, [sp, #0x84] + mov r0, #0 + strb r0, [r2, #0x1c] + mov r0, #1 + ldr r1, [sp, #0x18] + strb r0, [r2, #0x1d] + strh r1, [r2, #0x36] + ldr r1, [sp, #0x14] + add r2, sp, #0x4c + strb r1, [r2, #0x1d] + ldr r1, [sp, #0x10] + add r2, sp, #0x6c + strb r1, [r2, #1] + ldr r1, [sp, #0xc] + strb r1, [r2, #5] + ldr r1, [sp, #4] + str r1, [sp, #0x78] + ldrb r1, [r4, #0xd] + ldr r2, [r4] + lsl r1, r1, #2 + add r1, r2, r1 + ldr r1, [r1, #0x14] + str r1, [sp, #0x4c] + ldrb r1, [r4, #0xd] + cmp r1, #0 + beq _022368EA + mov r0, #0 +_022368EA: + lsl r5, r0, #2 + ldr r0, [r4] + mov r2, #0x57 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r1, #8 + str r1, [sp, #0x94] + mov r1, #0x2d + str r1, [sp, #0x98] + mov r1, #1 + str r1, [sp, #0x9c] + mov r1, #0x1d + str r0, [sp, #0x50] + mov r0, #0 + str r1, [sp, #0xa0] + mov r1, #2 + str r0, [sp, #0x5c] + str r0, [sp, #0xa8] + mov r0, #3 + str r1, [sp, #0xa4] + str r0, [sp, #0xac] + ldr r0, [r4] + lsl r2, r2, #2 + ldr r0, [r0, #0x24] + add r3, sp, #0x2c + str r0, [sp, #0x2c] + ldr r0, [r4] + ldr r1, [r0] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, r2] + sub r2, #0x40 + str r0, [sp, #0xb0] + ldr r0, [r4] + ldrh r2, [r4, r2] + ldr r0, [r0, #0x2c] + add r1, sp, #0xbc + bl FUN_02212048 + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02068E14 + add r6, r0, #0 + mov r0, #0x46 + lsl r0, r0, #2 + ldr r1, [r4, r0] + ldr r0, _02236A94 ; =0xDFFBFF3F + cmp r1, r0 + beq _0223696A + ldrb r0, [r4, #0xd] + ldr r1, [r4] + mov r2, #0 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #6 + bl FUN_02007558 +_0223696A: + ldrb r0, [r4, #0xd] + ldr r1, [r4] + mov r2, #0 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #0x25 + bl FUN_02007558 + ldrb r0, [r4, #0xd] + ldr r1, [r4] + mov r2, #0xd8 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #0 + bl FUN_02007558 + ldrb r0, [r4, #0xd] + add r6, #0x70 + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #1 + add r2, r6, #0 + bl FUN_02007558 + ldr r0, [r4] + mov r1, #0x25 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r2, #1 + bl FUN_02007558 + ldr r0, [r4] + mov r1, #0 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r2, #0x50 + bl FUN_02007558 + ldr r0, [r4] + mov r1, #1 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r2, #0x2a + bl FUN_02007558 + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022369D6: + ldr r0, [r4] + ldr r0, [r0, #0x2c] + bl FUN_02212384 + ldr r0, [r4] + ldr r0, [r0, #0x2c] + bl FUN_022123A0 + cmp r0, #0 + bne _02236A8E + ldr r0, [r4] + ldr r0, [r0, #0x2c] + bl FUN_022123B0 + add r1, r5, #0 + add r1, #0xf2 + ldrb r0, [r4, r1] + cmp r0, #0 + beq _02236A22 + sub r0, r0, #1 + strb r0, [r4, r1] + add r0, r1, #1 + ldrb r0, [r4, r0] + add r2, r0, #1 + add r0, r1, #1 + strb r2, [r4, r0] + sub r0, r1, #6 + ldr r2, [r4, r0] + ldr r0, _02236A98 ; =0x200400C0 + cmp r2, r0 + bne _02236A1A + ldr r2, _02236A94 ; =0xDFFBFF3F + sub r0, r1, #6 + str r2, [r4, r0] +_02236A1A: + mov r0, #0xa + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236A22: + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236A2C: + add r5, #0xf0 + ldrh r0, [r4, r5] + cmp r0, #0x90 + beq _02236A38 + cmp r0, #0xa4 + bne _02236A42 +_02236A38: + ldr r0, [r4] + mov r2, #1 + add r1, r0, r1 + ldr r0, _02236A9C ; =0x00001652 + strb r2, [r1, r0] +_02236A42: + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236A4C: + add r2, r4, #0 + ldr r0, [r4] + mov r1, #1 + add r2, #0x10 + bl MOD12_0223483C + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236A62: + ldrb r1, [r4, #0x10] + cmp r1, #1 + bne _02236A8E + add r0, r0, #1 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236A70: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_02236A8E: + add sp, #0x114 + pop {r4, r5, r6, r7, pc} + nop +_02236A94: .word 0xDFFBFF3F +_02236A98: .word 0x200400C0 +_02236A9C: .word 0x00001652 + + thumb_func_start MOD12_02236AA0 +MOD12_02236AA0: ; 0x02236AA0 + push {r3, lr} + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + mov r3, #0 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236AB8 +MOD12_02236AB8: ; 0x02236AB8 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r0, #0x15 + mov r1, #0x14 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + mov r2, #0x64 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r1, [r6, #0xc] + ldr r0, _02236AF8 ; =0x00000123 + ldrb r0, [r1, r0] + add r1, r4, #0 + strb r0, [r4, #0xd] + ldr r0, _02236AFC ; =MOD12_02236B00 + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + nop +_02236AF8: .word 0x00000123 +_02236AFC: .word MOD12_02236B00 + + thumb_func_start MOD12_02236B00 +MOD12_02236B00: ; 0x02236B00 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0xa + bls _02236B10 + b _02236C9E +_02236B10: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02236B1C: ; jump table + .short _02236B32 - _02236B1C - 2 ; case 0 + .short _02236B4C - _02236B1C - 2 ; case 1 + .short _02236BAA - _02236B1C - 2 ; case 2 + .short _02236BBA - _02236B1C - 2 ; case 3 + .short _02236BF4 - _02236B1C - 2 ; case 4 + .short _02236C08 - _02236B1C - 2 ; case 5 + .short _02236C0E - _02236B1C - 2 ; case 6 + .short _02236C42 - _02236B1C - 2 ; case 7 + .short _02236C52 - _02236B1C - 2 ; case 8 + .short _02236C76 - _02236B1C - 2 ; case 9 + .short _02236C98 - _02236B1C - 2 ; case 10 +_02236B32: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + mov r2, #0 + ldr r0, [r1, r0] + mov r1, #1 + add r3, r2, #0 + bl MOD12_02231B4C + ldrb r0, [r4, #0xc] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, pc} +_02236B4C: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + mov r2, #0 + ldr r0, [r1, r0] + mov r1, #2 + add r3, r2, #0 + bl MOD12_02231B4C + mov r0, #0x23 + ldr r1, [r4] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + add r2, r0, #1 + cmp r2, #4 + bne _02236B6E + mov r1, #3 + b _02236B70 +_02236B6E: + mov r1, #2 +_02236B70: + add r0, sp, #0 + strb r2, [r0, #0xa] + add r2, sp, #4 + ldr r0, [r4] + add r2, #2 + mov r3, #0 + bl MOD12_02234FB0 + mov r0, #0x23 + ldr r1, [r4] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + add r0, r0, #1 + cmp r0, #4 + bne _02236BA0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _02236BA0 + ldr r0, _02236CEC ; =0x000006F6 + bl FUN_020054C8 + ldrb r0, [r4, #0xe] + add r0, r0, #1 + strb r0, [r4, #0xe] +_02236BA0: + ldrb r0, [r4, #0xc] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, pc} +_02236BAA: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236BCE + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236BBA: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + ldr r0, [r1, r0] + bl MOD12_02231C80 + add r1, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + bne _02236BD0 +_02236BCE: + b _02236CE4 +_02236BD0: + ldr r0, [r4] + add r1, #0x36 + ldr r2, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r2, r0] + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x10] + ldr r0, _02236CF0 ; =0x000005DD + bl FUN_020054C8 + ldrb r0, [r4, #0xc] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, pc} +_02236BF4: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + ldr r0, [r1, r0] + bl MOD12_02231D48 + cmp r0, #0 + beq _02236CE4 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236C08: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236C0E: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + mov r2, #0 + ldr r0, [r1, r0] + mov r1, #3 + add r3, r2, #0 + bl MOD12_02231B4C + mov r0, #0x23 + ldr r1, [r4] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + add r2, sp, #0 + mov r3, #0 + add r1, r0, #1 + add r0, sp, #0 + strb r1, [r0, #4] + ldr r0, [r4] + mov r1, #1 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, pc} +_02236C42: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236CE4 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236C52: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + ldr r0, [r1, r0] + bl MOD12_02231C80 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _02236CE4 + strh r0, [r4, #0x12] + ldr r0, _02236CF0 ; =0x000005DD + bl FUN_020054C8 + ldrb r0, [r4, #0xc] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, pc} +_02236C76: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + ldr r0, [r1, r0] + bl MOD12_02231D48 + cmp r0, #0 + beq _02236CE4 + ldrh r0, [r4, #0x12] + cmp r0, #3 + bne _02236C92 + mov r0, #1 + add sp, #0xc + strb r0, [r4, #0xc] + pop {r4, r5, pc} +_02236C92: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236C98: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236C9E: + ldr r0, [r4] + ldr r1, _02236CF4 ; =0x00000171 + ldr r2, [r0] + ldrb r1, [r2, r1] + cmp r1, #1 + bne _02236CB4 + mov r2, #0 + mov r1, #0x2e + add r3, r2, #0 + bl MOD12_02234FB0 +_02236CB4: + mov r0, #0xc3 + add r2, r4, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r2, #0x10 + mov r3, #4 + bl MOD12_02240FB0 + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + ldr r0, [r1, r0] + mov r1, #0 + add r2, r1, #0 + add r3, r1, #0 + bl MOD12_02231B4C + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02236CE4: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02236CE8: .word 0x0000081C +_02236CEC: .word 0x000006F6 +_02236CF0: .word 0x000005DD +_02236CF4: .word 0x00000171 + + thumb_func_start MOD12_02236CF8 +MOD12_02236CF8: ; 0x02236CF8 + push {r4, r5} + ldr r0, [sp, #8] + lsl r2, r0, #2 + ldr r5, [r3, r2] + lsl r2, r0, #1 + ldrh r4, [r5] + add r3, r1, r2 + ldr r2, _02236D18 ; =0x00000236 + add r0, r1, r0 + strh r4, [r3, r2] + ldrh r3, [r5, #2] + add r2, #8 + strb r3, [r0, r2] + pop {r4, r5} + bx lr + nop +_02236D18: .word 0x00000236 + + thumb_func_start MOD12_02236D1C +MOD12_02236D1C: ; 0x02236D1C + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236D34 +MOD12_02236D34: ; 0x02236D34 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02236D38 +MOD12_02236D38: ; 0x02236D38 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236D50 +MOD12_02236D50: ; 0x02236D50 + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #1] + strb r0, [r4, #0xe] +_02236D8E: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02236D8E + ldr r0, [r5] + ldr r2, _02236DA8 ; =0x00007530 + str r0, [r3] + ldr r0, _02236DAC ; =MOD12_02236DB0 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02236DA8: .word 0x00007530 +_02236DAC: .word MOD12_02236DB0 + + thumb_func_start MOD12_02236DB0 +MOD12_02236DB0: ; 0x02236DB0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r5, r0, #0 + add r3, r4, #0 + add r2, r1, #0 + mov r0, #0x2c + ldrb r1, [r4, #0xc] + add r3, #0x24 + mul r2, r0 + add r2, r3, r2 + cmp r1, #4 + bhi _02236E48 + add r3, r1, r1 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_02236DD6: ; jump table + .short _02236DE0 - _02236DD6 - 2 ; case 0 + .short _02236DF0 - _02236DD6 - 2 ; case 1 + .short _02236DF6 - _02236DD6 - 2 ; case 2 + .short _02236E2E - _02236DD6 - 2 ; case 3 + .short _02236E48 - _02236DD6 - 2 ; case 4 +_02236DE0: + mov r0, #0x1a + ldrsh r1, [r2, r0] + add r0, #0xee + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236DF0: + add r0, r1, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236DF6: + add r0, #0xdc + mov r3, #0x18 + ldrsh r1, [r4, r0] + ldrsh r0, [r2, r3] + cmp r1, r0 + bge _02236E28 + add r0, r3, #0 + add r0, #0xf0 + ldrsh r1, [r4, r0] + add r0, r3, #0 + add r0, #0xf0 + add r1, #0xa + strh r1, [r4, r0] + add r3, #0xf0 + ldr r0, [r4] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrsh r3, [r4, r3] + add r0, #0xc + bl MOD12_02234088 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236E28: + mov r0, #4 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236E2E: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _02236E66 + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236E48: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02236E66: + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_02236E68 +MOD12_02236E68: ; 0x02236E68 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236E80 +MOD12_02236E80: ; 0x02236E80 + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #1] + strb r0, [r4, #0xe] +_02236EBE: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02236EBE + ldr r0, [r5] + ldr r2, _02236ED8 ; =0x00007530 + str r0, [r3] + ldr r0, _02236EDC ; =MOD12_02236EE0 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02236ED8: .word 0x00007530 +_02236EDC: .word MOD12_02236EE0 + + thumb_func_start MOD12_02236EE0 +MOD12_02236EE0: ; 0x02236EE0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + ldrb r1, [r4, #0xd] + str r0, [sp, #4] + add r2, r4, #0 + mov r0, #0x2c + add r2, #0x24 + mul r0, r1 + add r3, r2, r0 + ldrb r0, [r4, #0xc] + cmp r0, #0x10 + bls _02236EFC + b _022370D4 +_02236EFC: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02236F08: ; jump table + .short _02236F2A - _02236F08 - 2 ; case 0 + .short _02236F3C - _02236F08 - 2 ; case 1 + .short _02236F62 - _02236F08 - 2 ; case 2 + .short _02236F76 - _02236F08 - 2 ; case 3 + .short _02236F7A - _02236F08 - 2 ; case 4 + .short _02236F80 - _02236F08 - 2 ; case 5 + .short _02236FB2 - _02236F08 - 2 ; case 6 + .short _02236FD0 - _02236F08 - 2 ; case 7 + .short _02236FD4 - _02236F08 - 2 ; case 8 + .short _02237000 - _02236F08 - 2 ; case 9 + .short _02237052 - _02236F08 - 2 ; case 10 + .short _0223706E - _02236F08 - 2 ; case 11 + .short _02237072 - _02236F08 - 2 ; case 12 + .short _02237078 - _02236F08 - 2 ; case 13 + .short _022370C8 - _02236F08 - 2 ; case 14 + .short _022370CE - _02236F08 - 2 ; case 15 + .short _022370D4 - _02236F08 - 2 ; case 16 +_02236F2A: + mov r0, #0x1a + ldrsh r1, [r3, r0] + add r0, #0xee + add sp, #8 + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236F3C: + ldrb r1, [r3, #0x12] + cmp r1, #0 + beq _02236F5A + mov r0, #0 + str r0, [sp] + ldrb r2, [r3, #0x13] + ldr r0, [r4] + add r3, #0xc + bl MOD12_02234FF0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236F5A: + mov r0, #3 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236F62: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236FC0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236F76: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236F7A: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236F80: + mov r5, #0x42 + lsl r5, r5, #2 + mov r0, #0x18 + ldrsh r1, [r4, r5] + ldrsh r0, [r3, r0] + cmp r1, r0 + bge _02236FAA + add r1, #0xa + strh r1, [r4, r5] + ldr r0, [r4] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrsh r3, [r4, r5] + add r0, #0xc + bl MOD12_02234088 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236FAA: + mov r0, #7 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236FB2: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + bgt _02236FC2 +_02236FC0: + b _022370F2 +_02236FC2: + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + add sp, #8 + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236FD0: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236FD4: + ldr r0, [r3, #0x28] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + cmp r0, #1 + bne _02236FF8 + ldrb r0, [r3, #3] + add sp, #8 + add r1, r4, r0 + mov r0, #0xe4 + ldrsb r1, [r1, r0] + add r0, #0x26 + strh r1, [r4, r0] + mov r0, #0 + strb r0, [r4, #0x10] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236FF8: + mov r0, #0xb + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237000: + mov r0, #0x10 + ldrsb r0, [r4, r0] + mov r6, #0 + add r5, r6, #0 + add r0, r0, #1 + strb r0, [r4, #0x10] + mov r7, #0xe7 +_0223700E: + mov r2, #0x10 + ldrsb r3, [r4, r2] + add r1, r4, r5 + mov r0, #0xe4 + mov r2, #0xa + ldrsb r0, [r1, r0] + mul r2, r3 + sub r2, r0, r2 + ldrsb r0, [r1, r7] + cmp r0, r2 + bgt _02237036 + ldr r0, [r4] + add r1, r5, #0 + add r0, #0xc + add r6, r6, #1 + bl MOD12_02234628 + ldr r0, _022370F8 ; =0x000006DF + bl FUN_020054C8 +_02237036: + add r5, r5, #1 + cmp r5, #3 + blt _0223700E + cmp r6, #0 + ble _0223704A + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223704A: + mov r0, #0xb + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237052: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _022370F2 + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + add sp, #8 + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223706E: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237072: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237078: + add r6, r4, #0 + mov r5, #0 + add r6, #0x4c +_0223707E: + ldr r2, [r4] + ldr r0, _022370FC ; =0x00000231 + add r1, r2, r5 + ldrb r1, [r1, r0] + mov r0, #0x2c + add r7, r1, #0 + mul r7, r0 + ldr r0, [r6, r7] + lsl r1, r0, #0x1a + lsl r3, r0, #0x16 + lsr r1, r1, #0x1e + lsr r3, r3, #0x1e + cmp r1, r3 + bne _022370A6 + lsl r1, r0, #0x18 + lsl r0, r0, #0x14 + lsr r1, r1, #0x1e + lsr r0, r0, #0x1e + cmp r1, r0 + beq _022370BC +_022370A6: + add r2, #0xc + add r0, r2, #0 + ldr r2, [r6, r7] + add r1, r5, #0 + lsl r2, r2, #0x18 + lsr r2, r2, #0x1e + bl MOD12_02235200 + ldr r0, _02237100 ; =0x000006E2 + bl FUN_020054C8 +_022370BC: + add r5, r5, #1 + cmp r5, #4 + blt _0223707E + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_022370C8: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_022370CE: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_022370D4: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [sp, #4] + bl FUN_0200CAB4 +_022370F2: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_022370F8: .word 0x000006DF +_022370FC: .word 0x00000231 +_02237100: .word 0x000006E2 + + thumb_func_start MOD12_02237104 +MOD12_02237104: ; 0x02237104 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_0223711C +MOD12_0223711C: ; 0x0223711C + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #1] + strb r0, [r4, #0xe] +_0223715A: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223715A + ldr r0, [r5] + ldr r2, _02237174 ; =0x00007530 + str r0, [r3] + ldr r0, _02237178 ; =MOD12_0223717C + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02237174: .word 0x00007530 +_02237178: .word MOD12_0223717C + + thumb_func_start MOD12_0223717C +MOD12_0223717C: ; 0x0223717C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r5, r0, #0 + add r2, r4, #0 + mov r0, #0x2c + add r2, #0x24 + mul r0, r1 + add r3, r2, r0 + ldrb r0, [r4, #0xc] + cmp r0, #8 + bhi _0223724C + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022371A0: ; jump table + .short _022371B2 - _022371A0 - 2 ; case 0 + .short _022371C2 - _022371A0 - 2 ; case 1 + .short _022371E4 - _022371A0 - 2 ; case 2 + .short _022371F6 - _022371A0 - 2 ; case 3 + .short _022371FA - _022371A0 - 2 ; case 4 + .short _02237200 - _022371A0 - 2 ; case 5 + .short _0223722E - _022371A0 - 2 ; case 6 + .short _02237248 - _022371A0 - 2 ; case 7 + .short _0223724C - _022371A0 - 2 ; case 8 +_022371B2: + mov r0, #0x1a + ldrsh r1, [r3, r0] + add r0, #0xee + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022371C2: + ldrb r1, [r3, #0x12] + cmp r1, #0 + beq _022371DE + mov r0, #0 + str r0, [sp] + ldrb r2, [r3, #0x13] + ldr r0, [r4] + add r3, #0xc + bl MOD12_02234FF0 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022371DE: + mov r0, #3 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022371E4: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _0223726A + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022371F6: + add r0, r0, #1 + strb r0, [r4, #0xc] +_022371FA: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237200: + mov r5, #0x42 + lsl r5, r5, #2 + mov r0, #0x18 + ldrsh r1, [r4, r5] + ldrsh r0, [r3, r0] + cmp r1, r0 + bge _02237228 + add r1, #0xa + strh r1, [r4, r5] + ldr r0, [r4] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrsh r3, [r4, r5] + add r0, #0xc + bl MOD12_02234088 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237228: + mov r0, #7 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223722E: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _0223726A + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237248: + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223724C: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0223726A: + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0223726C +MOD12_0223726C: ; 0x0223726C + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02237284 +MOD12_02237284: ; 0x02237284 + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #1] + strb r0, [r4, #0xe] +_022372C2: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022372C2 + ldr r0, [r5] + ldr r2, _022372DC ; =0x00007530 + str r0, [r3] + ldr r0, _022372E0 ; =MOD12_022372E4 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_022372DC: .word 0x00007530 +_022372E0: .word MOD12_022372E4 + + thumb_func_start MOD12_022372E4 +MOD12_022372E4: ; 0x022372E4 + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r6, r0, #0 + add r3, r4, #0 + add r2, r1, #0 + mov r0, #0x2c + ldrb r1, [r4, #0xc] + add r3, #0x24 + mul r2, r0 + add r5, r3, r2 + cmp r1, #0x19 + bls _02237302 + b _02237624 +_02237302: + add r2, r1, r1 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0223730E: ; jump table + .short _02237342 - _0223730E - 2 ; case 0 + .short _02237358 - _0223730E - 2 ; case 1 + .short _0223739C - _0223730E - 2 ; case 2 + .short _022373AC - _0223730E - 2 ; case 3 + .short _022373B0 - _0223730E - 2 ; case 4 + .short _022373D8 - _0223730E - 2 ; case 5 + .short _022373EC - _0223730E - 2 ; case 6 + .short _022373F0 - _0223730E - 2 ; case 7 + .short _02237424 - _0223730E - 2 ; case 8 + .short _02237442 - _0223730E - 2 ; case 9 + .short _02237446 - _0223730E - 2 ; case 10 + .short _0223744C - _0223730E - 2 ; case 11 + .short _022374B8 - _0223730E - 2 ; case 12 + .short _022374D0 - _0223730E - 2 ; case 13 + .short _022374EA - _0223730E - 2 ; case 14 + .short _0223750A - _0223730E - 2 ; case 15 + .short _02237532 - _0223730E - 2 ; case 16 + .short _02237548 - _0223730E - 2 ; case 17 + .short _0223754C - _0223730E - 2 ; case 18 + .short _02237578 - _0223730E - 2 ; case 19 + .short _02237586 - _0223730E - 2 ; case 20 + .short _0223758A - _0223730E - 2 ; case 21 + .short _0223759C - _0223730E - 2 ; case 22 + .short _022375E0 - _0223730E - 2 ; case 23 + .short _022375FC - _0223730E - 2 ; case 24 + .short _02237624 - _0223730E - 2 ; case 25 +_02237342: + ldrb r0, [r5, #3] + add sp, #8 + add r1, r4, r0 + mov r0, #0xe4 + ldrsb r1, [r1, r0] + add r0, #0x26 + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237358: + ldrb r1, [r5, #3] + mov r0, #0xe7 + add r3, r4, r1 + ldrsb r2, [r3, r0] + mov r0, #0xe4 + ldrsb r0, [r3, r0] + cmp r2, r0 + ble _02237394 + cmp r2, #0x32 + blt _02237370 + mov r6, #3 + b _02237372 +_02237370: + mov r6, #2 +_02237372: + ldr r0, [r4] + add r2, r6, #0 + add r0, #0xc + bl MOD12_02233BE4 + ldr r3, _0223764C ; =0x0000010E + ldrb r1, [r5, #3] + ldr r0, [r4] + add r2, r6, #0 + add r3, r4, r3 + bl MOD12_02233C94 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237394: + mov r0, #3 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_0223739C: + add r0, #0xe2 + ldrb r0, [r4, r0] + cmp r0, #1 + bne _02237432 + add r0, r1, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022373AC: + add r0, r1, #1 + strb r0, [r4, #0xc] +_022373B0: + add r0, r4, #0 + add r0, #0xf8 + ldrb r1, [r0] + cmp r1, #0 + beq _022373D0 + add r2, r4, #0 + ldr r0, [r4] + add r2, #0xec + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022373D0: + mov r0, #6 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022373D8: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237432 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022373EC: + add r0, r1, #1 + strb r0, [r4, #0xc] +_022373F0: + ldrb r0, [r5, #3] + add r2, r4, r0 + mov r0, #0xe7 + ldrsb r1, [r2, r0] + mov r0, #0xe4 + ldrsb r0, [r2, r0] + cmp r1, r0 + ble _02237416 + mov r0, #1 + str r0, [sp] + add r0, r4, #0 + add r0, #0x11 + str r0, [sp, #4] + ldr r0, [r4] + mov r2, #0 + mov r3, #0x46 + bl MOD12_022352F4 + b _0223741A +_02237416: + mov r0, #1 + strb r0, [r4, #0x11] +_0223741A: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237424: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #8 + bgt _02237434 +_02237432: + b _02237648 +_02237434: + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237442: + add r0, r1, #1 + strb r0, [r4, #0xc] +_02237446: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223744C: + ldrb r0, [r5, #3] + add r3, r4, r0 + mov r0, #0xe7 + ldrsb r1, [r3, r0] + add r0, #0x23 + ldrsh r0, [r4, r0] + cmp r0, r1 + beq _022374B0 + mov r2, #0xe4 + ldrsb r0, [r3, r2] + sub r0, r1, r0 + cmp r0, #0 + ble _02237484 + add r0, r2, #0 + add r0, #0x26 + ldrsh r1, [r4, r0] + add r0, r2, #0 + add r0, #0x26 + add r1, #0xa + strh r1, [r4, r0] + add r2, #0x26 + ldr r0, [r4] + ldrb r1, [r5, #3] + ldrsh r2, [r4, r2] + add r0, #0xc + bl MOD12_02234628 + b _022374A6 +_02237484: + add r0, r2, #0 + add r0, #0x26 + ldrsh r1, [r4, r0] + add r0, r2, #0 + add r0, #0x26 + sub r1, #0xa + strh r1, [r4, r0] + add r2, #0x26 + ldr r0, [r4] + ldrb r1, [r5, #3] + ldrsh r2, [r4, r2] + add r0, #0xc + bl MOD12_02234628 + ldr r0, _02237650 ; =0x000006DF + bl FUN_020054C8 +_022374A6: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022374B0: + mov r0, #0xe + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022374B8: + ldr r0, [r4] + ldrb r1, [r5, #3] + add r0, #0xc + bl MOD12_022345FC + cmp r0, #1 + bne _0223753C + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022374D0: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _0223753C + mov r0, #0 + strb r0, [r4, #0xf] + mov r0, #0xb + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022374EA: + add r0, #0xde + ldrsh r0, [r4, r0] + cmp r0, #0x32 + blt _02237500 + ldrb r1, [r5, #3] + ldr r0, [r4] + bl MOD12_022357B0 + mov r1, #0x11 + lsl r1, r1, #4 + str r0, [r4, r1] +_02237500: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_0223750A: + add r0, r4, #0 + add r0, #0xf9 + ldrb r1, [r0] + cmp r1, #0 + beq _0223752A + add r2, r4, #0 + ldr r0, [r4] + add r2, #0xf2 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_0223752A: + mov r0, #0x11 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237532: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + beq _0223753E +_0223753C: + b _02237648 +_0223753E: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237548: + add r0, r1, #1 + strb r0, [r4, #0xc] +_0223754C: + ldr r0, _02237654 ; =0x0000010A + ldrsh r0, [r4, r0] + cmp r0, #0x32 + blt _02237570 + add r0, r4, #0 + add r0, #0x12 + str r0, [sp] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrb r3, [r5, #3] + ldr r0, [r4] + bl MOD12_02235824 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237570: + mov r0, #0x14 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237578: + ldrb r0, [r4, #0x12] + cmp r0, #0 + bne _02237648 + add r0, r1, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237586: + add r0, r1, #1 + strb r0, [r4, #0xc] +_0223758A: + mov r0, #0x1a + ldrsh r1, [r5, r0] + add r0, #0xee + add sp, #8 + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_0223759C: + add r0, #0xdc + mov r3, #0x18 + ldrsh r1, [r4, r0] + ldrsh r0, [r5, r3] + cmp r1, r0 + bge _022375D0 + add r0, r3, #0 + add r0, #0xf0 + ldrsh r1, [r4, r0] + add r0, r3, #0 + add r0, #0xf0 + add r1, #0xa + strh r1, [r4, r0] + add r3, #0xf0 + ldr r0, [r4] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrsh r3, [r4, r3] + add r0, #0xc + bl MOD12_02234088 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022375D0: + ldr r0, [r4] + add r0, #0xc + bl MOD12_02233C74 + mov r0, #0x18 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022375E0: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _02237648 + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + add sp, #8 + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022375FC: + add r1, r0, #0 + add r1, #0xde + ldrsh r1, [r4, r1] + cmp r1, #0x32 + blt _0223761A + add r0, #0xe4 + ldr r0, [r4, r0] + bl MOD12_022357E4 + ldr r0, [r4] + ldrb r1, [r5, #3] + add r0, #0xc + mov r2, #0 + bl MOD12_02234628 +_0223761A: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237624: + ldrb r0, [r4, #0x11] + cmp r0, #1 + bne _02237648 + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_02237648: + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223764C: .word 0x0000010E +_02237650: .word 0x000006DF +_02237654: .word 0x0000010A + + thumb_func_start MOD12_02237658 +MOD12_02237658: ; 0x02237658 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02237670 +MOD12_02237670: ; 0x02237670 + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #1] + strb r0, [r4, #0xe] +_022376AE: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022376AE + ldr r0, [r5] + ldr r2, _022376C8 ; =0x00007530 + str r0, [r3] + ldr r0, _022376CC ; =MOD12_022376D0 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_022376C8: .word 0x00007530 +_022376CC: .word MOD12_022376D0 + + thumb_func_start MOD12_022376D0 +MOD12_022376D0: ; 0x022376D0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r5, r0, #0 + add r2, r4, #0 + mov r0, #0x2c + add r2, #0x24 + mul r0, r1 + add r3, r2, r0 + ldrb r0, [r4, #0xc] + cmp r0, #8 + bhi _022377A0 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022376F4: ; jump table + .short _02237706 - _022376F4 - 2 ; case 0 + .short _02237716 - _022376F4 - 2 ; case 1 + .short _02237738 - _022376F4 - 2 ; case 2 + .short _0223774A - _022376F4 - 2 ; case 3 + .short _0223774E - _022376F4 - 2 ; case 4 + .short _02237754 - _022376F4 - 2 ; case 5 + .short _02237782 - _022376F4 - 2 ; case 6 + .short _0223779C - _022376F4 - 2 ; case 7 + .short _022377A0 - _022376F4 - 2 ; case 8 +_02237706: + mov r0, #0x1a + ldrsh r1, [r3, r0] + add r0, #0xee + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237716: + ldrb r1, [r3, #0x12] + cmp r1, #0 + beq _02237732 + mov r0, #0 + str r0, [sp] + ldrb r2, [r3, #0x13] + ldr r0, [r4] + add r3, #0xc + bl MOD12_02234FF0 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237732: + mov r0, #3 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237738: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _022377BE + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223774A: + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223774E: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237754: + mov r5, #0x42 + lsl r5, r5, #2 + mov r0, #0x18 + ldrsh r1, [r4, r5] + ldrsh r0, [r3, r0] + cmp r1, r0 + bge _02237776 + add r1, #0xa + strh r1, [r4, r5] + ldr r0, [r4] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrsh r3, [r4, r5] + add r0, #0xc + bl MOD12_02234088 + b _0223777A +_02237776: + mov r0, #7 + strb r0, [r4, #0xc] +_0223777A: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237782: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _022377BE + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223779C: + add r0, r0, #1 + strb r0, [r4, #0xc] +_022377A0: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_022377BE: + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_022377C0 +MOD12_022377C0: ; 0x022377C0 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_022377D8 +MOD12_022377D8: ; 0x022377D8 + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xf7 + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r2, #0x43 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + add r3, r4, #0 + add r3, #0x10 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] +_0223780E: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223780E + ldr r0, [r6] + ldr r2, _02237828 ; =0x00007530 + str r0, [r3] + ldr r0, _0223782C ; =MOD12_02237830 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02237828: .word 0x00007530 +_0223782C: .word MOD12_02237830 + + thumb_func_start MOD12_02237830 +MOD12_02237830: ; 0x02237830 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp, #4] + ldr r0, _02237A8C ; =0x00000106 + add r4, r1, #0 + ldrb r0, [r4, r0] + mov r7, #0 + add r0, r4, r0 + add r0, #0xf9 + ldrb r1, [r0] + cmp r1, #4 + beq _0223786C + add r2, r4, #0 + mov r0, #0x2c + add r2, #0x20 + mul r0, r1 + add r5, r2, r0 + ldr r3, [r4] + ldr r6, _02237A90 ; =0x00000231 + add r2, r7, #0 +_02237858: + ldrb r0, [r3, r6] + cmp r1, r0 + bne _02237862 + add r7, r2, #0 + b _0223786E +_02237862: + add r2, r2, #1 + add r3, r3, #1 + cmp r2, #4 + blt _02237858 + b _0223786E +_0223786C: + add r5, r7, #0 +_0223786E: + ldrb r0, [r4, #0xc] + cmp r0, #0x11 + bls _02237876 + b _02237A6A +_02237876: + add r2, r0, r0 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02237882: ; jump table + .short _022378A6 - _02237882 - 2 ; case 0 + .short _022378B4 - _02237882 - 2 ; case 1 + .short _02237908 - _02237882 - 2 ; case 2 + .short _02237918 - _02237882 - 2 ; case 3 + .short _0223791C - _02237882 - 2 ; case 4 + .short _02237944 - _02237882 - 2 ; case 5 + .short _0223795A - _02237882 - 2 ; case 6 + .short _0223795E - _02237882 - 2 ; case 7 + .short _02237988 - _02237882 - 2 ; case 8 + .short _0223799C - _02237882 - 2 ; case 9 + .short _022379A0 - _02237882 - 2 ; case 10 + .short _022379C8 - _02237882 - 2 ; case 11 + .short _022379DC - _02237882 - 2 ; case 12 + .short _022379E0 - _02237882 - 2 ; case 13 + .short _022379F2 - _02237882 - 2 ; case 14 + .short _02237A24 - _02237882 - 2 ; case 15 + .short _02237A40 - _02237882 - 2 ; case 16 + .short _02237A6A - _02237882 - 2 ; case 17 +_022378A6: + mov r0, #0x1a + ldrsh r1, [r5, r0] + add r0, #0xea + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_022378B4: + ldrb r0, [r5, #9] + cmp r0, #0 + bne _022378C6 + mov r0, #0x6f + lsl r0, r0, #4 + mov r6, #4 + bl FUN_020054C8 + b _022378F0 +_022378C6: + cmp r0, #1 + bne _022378D4 + ldr r0, _02237A94 ; =0x000006EF + mov r6, #5 + bl FUN_020054C8 + b _022378F0 +_022378D4: + cmp r0, #2 + bne _022378E2 + ldr r0, _02237A98 ; =0x000006EE + mov r6, #6 + bl FUN_020054C8 + b _022378F0 +_022378E2: + mov r0, #3 + strb r0, [r4, #0xc] + ldr r0, _02237A9C ; =0x000006DF + bl FUN_020054C8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_022378F0: + ldr r3, _02237AA0 ; =0x00000107 + ldrb r1, [r5, #3] + ldr r0, [r4] + add r2, r6, #0 + add r3, r4, r3 + bl MOD12_02233C94 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237908: + ldr r1, _02237AA0 ; =0x00000107 + ldrb r1, [r4, r1] + cmp r1, #1 + bne _0223794E + add r0, r0, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237918: + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223791C: + ldrb r1, [r5, #0x12] + cmp r1, #0 + beq _0223793C + mov r0, #0 + str r0, [sp] + ldrb r2, [r5, #0x13] + add r5, #0xc + ldr r0, [r4] + add r3, r5, #0 + bl MOD12_02234FF0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223793C: + mov r0, #6 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237944: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + beq _02237950 +_0223794E: + b _02237A88 +_02237950: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223795A: + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223795E: + add r0, r4, #0 + add r0, #0xf4 + ldrb r1, [r0] + cmp r1, #0 + beq _02237980 + add r2, r4, #0 + add r3, r4, #0 + ldr r0, [r4] + add r2, #0xe8 + add r3, #0xf8 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237980: + mov r0, #9 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237988: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237A88 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223799C: + add r0, r0, #1 + strb r0, [r4, #0xc] +_022379A0: + add r0, r4, #0 + add r0, #0xf5 + ldrb r1, [r0] + cmp r1, #0 + beq _022379C0 + add r2, r4, #0 + ldr r0, [r4] + add r2, #0xee + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_022379C0: + mov r0, #0xc + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_022379C8: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237A88 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_022379DC: + add r0, r0, #1 + strb r0, [r4, #0xc] +_022379E0: + mov r0, #0x1a + ldrsh r1, [r5, r0] + add r0, #0xea + add sp, #8 + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_022379F2: + mov r3, #0x41 + lsl r3, r3, #2 + mov r2, #0x18 + ldrsh r0, [r4, r3] + ldrsh r2, [r5, r2] + cmp r0, r2 + bge _02237A12 + add r0, #0xa + strh r0, [r4, r3] + ldr r0, [r4] + ldrsh r3, [r4, r3] + add r0, #0xc + add r2, r7, #0 + bl MOD12_02234088 + b _02237A1A +_02237A12: + mov r0, #0x10 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237A1A: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237A24: + mov r0, #0xd + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xd] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _02237A88 + mov r0, #0 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xc] + add sp, #8 + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237A40: + ldr r0, _02237A8C ; =0x00000106 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldrb r0, [r4, r0] + cmp r0, #4 + bhs _02237A60 + add r0, r4, r0 + add r0, #0xf9 + ldrb r0, [r0] + cmp r0, #4 + beq _02237A60 + mov r0, #0xd + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237A60: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237A6A: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [sp, #4] + bl FUN_0200CAB4 +_02237A88: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02237A8C: .word 0x00000106 +_02237A90: .word 0x00000231 +_02237A94: .word 0x000006EF +_02237A98: .word 0x000006EE +_02237A9C: .word 0x000006DF +_02237AA0: .word 0x00000107 + + thumb_func_start MOD12_02237AA4 +MOD12_02237AA4: ; 0x02237AA4 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02237ABC +MOD12_02237ABC: ; 0x02237ABC + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #1] + strb r0, [r4, #0xe] +_02237AFA: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02237AFA + ldr r0, [r5] + ldr r2, _02237B14 ; =0x00007530 + str r0, [r3] + ldr r0, _02237B18 ; =MOD12_02237B1C + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02237B14: .word 0x00007530 +_02237B18: .word MOD12_02237B1C + + thumb_func_start MOD12_02237B1C +MOD12_02237B1C: ; 0x02237B1C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r5, r0, #0 + add r2, r4, #0 + mov r0, #0x2c + add r2, #0x24 + mul r0, r1 + add r3, r2, r0 + ldrb r0, [r4, #0xc] + cmp r0, #0xe + bls _02237B36 + b _02237C6E +_02237B36: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02237B42: ; jump table + .short _02237B60 - _02237B42 - 2 ; case 0 + .short _02237B70 - _02237B42 - 2 ; case 1 + .short _02237B92 - _02237B42 - 2 ; case 2 + .short _02237BA4 - _02237B42 - 2 ; case 3 + .short _02237BA8 - _02237B42 - 2 ; case 4 + .short _02237BCC - _02237B42 - 2 ; case 5 + .short _02237BDE - _02237B42 - 2 ; case 6 + .short _02237BE2 - _02237B42 - 2 ; case 7 + .short _02237C06 - _02237B42 - 2 ; case 8 + .short _02237C18 - _02237B42 - 2 ; case 9 + .short _02237C1C - _02237B42 - 2 ; case 10 + .short _02237C22 - _02237B42 - 2 ; case 11 + .short _02237C50 - _02237B42 - 2 ; case 12 + .short _02237C6A - _02237B42 - 2 ; case 13 + .short _02237C6E - _02237B42 - 2 ; case 14 +_02237B60: + mov r0, #0x1a + ldrsh r1, [r3, r0] + add r0, #0xee + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237B70: + ldrb r1, [r3, #0x12] + cmp r1, #0 + beq _02237B8C + mov r0, #0 + str r0, [sp] + ldrb r2, [r3, #0x13] + ldr r0, [r4] + add r3, #0xc + bl MOD12_02234FF0 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237B8C: + mov r0, #3 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237B92: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237C8C + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237BA4: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237BA8: + add r0, r4, #0 + add r0, #0xf8 + ldrb r1, [r0] + cmp r1, #0 + beq _02237BC6 + add r2, r4, #0 + ldr r0, [r4] + add r2, #0xec + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237BC6: + mov r0, #6 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237BCC: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237C8C + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237BDE: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237BE2: + add r0, r4, #0 + add r0, #0xf9 + ldrb r1, [r0] + cmp r1, #0 + beq _02237C00 + add r2, r4, #0 + ldr r0, [r4] + add r2, #0xf2 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237C00: + mov r0, #9 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237C06: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237C8C + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237C18: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237C1C: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237C22: + mov r5, #0x42 + lsl r5, r5, #2 + mov r0, #0x18 + ldrsh r1, [r4, r5] + ldrsh r0, [r3, r0] + cmp r1, r0 + bge _02237C44 + add r1, #0xa + strh r1, [r4, r5] + ldr r0, [r4] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrsh r3, [r4, r5] + add r0, #0xc + bl MOD12_02234088 + b _02237C48 +_02237C44: + mov r0, #0xd + strb r0, [r4, #0xc] +_02237C48: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237C50: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _02237C8C + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237C6A: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237C6E: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02237C8C: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_02237C90 +MOD12_02237C90: ; 0x02237C90 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02237CA8 +MOD12_02237CA8: ; 0x02237CA8 + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r1, [r7, #0xc] + ldr r0, _02237D04 ; =0x00000123 + ldrb r0, [r1, r0] + strb r0, [r4, #0xd] + ldrb r0, [r6, #1] + strb r0, [r4, #0xe] +_02237CEA: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02237CEA + ldr r0, [r6] + ldr r2, _02237D08 ; =0x00007530 + str r0, [r3] + ldr r0, _02237D0C ; =MOD12_02237D10 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02237D04: .word 0x00000123 +_02237D08: .word 0x00007530 +_02237D0C: .word MOD12_02237D10 + + thumb_func_start MOD12_02237D10 +MOD12_02237D10: ; 0x02237D10 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xd] + add r2, r4, #0 + mov r1, #0x2c + add r2, #0x24 + mul r1, r0 + add r2, r2, r1 + ldrb r1, [r4, #0xc] + cmp r1, #0 + beq _02237D34 + cmp r1, #1 + beq _02237D54 + cmp r1, #2 + beq _02237D68 + b _02237D70 +_02237D34: + mov r1, #0x18 + ldrsh r1, [r2, r1] + add r2, sp, #0 + bl MOD12_022352A0 + add r1, r0, #0 + ldr r0, [r4] + add r2, sp, #0 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237D54: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237D8E + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237D68: + add r0, r1, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237D70: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02237D8E: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_02237D94 +MOD12_02237D94: ; 0x02237D94 + push {r3, lr} + mov r1, #0xf4 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02237DA8 +MOD12_02237DA8: ; 0x02237DA8 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x15 + mov r1, #0x28 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x28 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02237DE4 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _02237DE8 ; =MOD12_02237DEC + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02237DE4: .word 0x00007530 +_02237DE8: .word MOD12_02237DEC + + thumb_func_start MOD12_02237DEC +MOD12_02237DEC: ; 0x02237DEC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #3 + bhi _02237EC2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237E0A: ; jump table + .short _02237E12 - _02237E0A - 2 ; case 0 + .short _02237E36 - _02237E0A - 2 ; case 1 + .short _02237E78 - _02237E0A - 2 ; case 2 + .short _02237EC2 - _02237E0A - 2 ; case 3 +_02237E12: + mov r1, #0 + add r0, r4, #0 + str r1, [sp] + add r0, #0x27 + str r0, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + mov r3, #0x46 + bl MOD12_022352F4 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r4, #0x20 + add sp, #8 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02237E36: + add r7, r4, #0 + mov r5, #0 + add r6, r4, #0 + add r7, #0x23 +_02237E3E: + ldr r0, [r4] + ldr r1, _02237EE8 ; =0x00000231 + add r2, r0, r5 + ldrb r1, [r2, r1] + bl MOD12_022335E4 + str r0, [r6, #0x10] + ldr r1, [r4] + add r3, r7, r5 + str r0, [sp] + add r0, r1, #0 + add r2, r1, r5 + ldr r1, _02237EE8 ; =0x00000231 + ldrb r1, [r2, r1] + add r2, r5, #0 + bl MOD12_02235470 + add r5, r5, #1 + add r6, r6, #4 + cmp r5, #4 + blt _02237E3E + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r4, #0x20 + add sp, #8 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02237E78: + mov r7, #0 + add r6, r7, #0 + add r5, r4, #0 +_02237E7E: + add r0, r4, r6 + add r0, #0x23 + ldrb r0, [r0] + cmp r0, #0 + bne _02237E94 + ldr r0, [r5, #0x10] + bl MOD12_02233644 + cmp r0, #0 + bne _02237E94 + add r7, r7, #1 +_02237E94: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _02237E7E + cmp r7, #4 + bne _02237EE4 + mov r6, #0 + add r5, r4, #0 +_02237EA4: + ldr r0, [r5, #0x10] + bl MOD12_0223361C + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _02237EA4 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r4, #0x20 + add sp, #8 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02237EC2: + add r0, r4, #0 + add r0, #0x27 + ldrb r0, [r0] + cmp r0, #1 + bne _02237EE4 + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02237EE4: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02237EE8: .word 0x00000231 + + thumb_func_start MOD12_02237EEC +MOD12_02237EEC: ; 0x02237EEC + push {r3, lr} + mov r0, #0xf8 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02237F04 +MOD12_02237F04: ; 0x02237F04 + push {r4, r5, r6, lr} + mov r0, #0x23 + add r5, r1, #0 + lsl r0, r0, #4 + add r4, r2, #0 + add r6, r5, r0 + mov r2, #0x1f +_02237F12: + ldmia r3!, {r0, r1} + stmia r6!, {r0, r1} + sub r2, r2, #1 + bne _02237F12 + add r0, r5, #0 + add r0, #0xc + bl MOD12_02234044 + add r0, r5, #0 + add r0, #0xc + bl MOD12_0223524C + add r0, r5, #0 + bl MOD12_0223513C + add r0, r5, #0 + bl MOD12_022335B0 + mov r0, #0xc3 + lsl r0, r0, #4 + mov r2, #0 + add r0, r5, r0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02237F48 +MOD12_02237F48: ; 0x02237F48 + push {r3, lr} + mov r1, #0xf4 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02237F5C +MOD12_02237F5C: ; 0x02237F5C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x15 + mov r1, #0x20 + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x20 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _02237FCC ; =0x00007530 + str r0, [r4] + ldrh r0, [r6] + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] + ldrb r0, [r5] + strb r0, [r4, #0x11] + add r0, r5, #0 + add r0, #0xd8 + ldrh r0, [r0] + strh r0, [r4, #0x14] + add r0, r5, #0 + add r0, #0xda + ldrh r0, [r0] + strh r0, [r4, #0x16] + add r0, r5, #0 + add r0, #0xdc + ldrh r0, [r0] + strh r0, [r4, #0x18] + add r0, r5, #0 + add r0, #0xe4 + ldrb r0, [r0] + strb r0, [r4, #0x1a] + add r0, r5, #0 + add r0, #0xe7 + ldrb r0, [r0] + add r5, #0xe6 + strb r0, [r4, #0x1c] + ldrb r0, [r5] + strb r0, [r4, #0x1b] + ldr r0, _02237FD0 ; =MOD12_02237FD4 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02237FCC: .word 0x00007530 +_02237FD0: .word MOD12_02237FD4 + + thumb_func_start MOD12_02237FD4 +MOD12_02237FD4: ; 0x02237FD4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _02237FEA + cmp r0, #1 + beq _0223800A + cmp r0, #2 + beq _0223801C + b _02238040 +_02237FEA: + ldrb r1, [r4, #0x1a] + cmp r1, #0 + beq _02238004 + add r2, r4, #0 + ldr r0, [r4] + add r2, #0x14 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02238004: + mov r0, #0x64 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223800A: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02238058 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223801C: + ldrb r0, [r4, #0x12] + add r0, r0, #1 + strb r0, [r4, #0x12] + ldrb r0, [r4, #0x1c] + cmp r0, #1 + bne _02238030 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02238030: + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x1b] + cmp r1, r0 + blo _02238058 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02238040: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02238058: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223805C +MOD12_0223805C: ; 0x0223805C + strb r1, [r0, #0x12] + ldr r1, _02238088 ; =0x00007530 + strb r2, [r0, #0x13] + cmp r3, r1 + beq _02238068 + strb r3, [r0, #0xc] +_02238068: + ldr r2, [sp] + ldr r1, _02238088 ; =0x00007530 + cmp r2, r1 + beq _02238072 + strb r2, [r0, #0xd] +_02238072: + ldr r2, [sp, #4] + ldr r1, _02238088 ; =0x00007530 + cmp r2, r1 + beq _0223807C + strh r2, [r0, #0xe] +_0223807C: + ldr r2, [sp, #8] + ldr r1, _02238088 ; =0x00007530 + cmp r2, r1 + beq _02238086 + strb r2, [r0, #0x10] +_02238086: + bx lr + .align 2, 0 +_02238088: .word 0x00007530 + + thumb_func_start MOD12_0223808C +MOD12_0223808C: ; 0x0223808C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x26 + add r5, r1, #0 + lsl r0, r0, #4 + add r4, r6, r0 + add r3, r5, #0 + mov r2, #0x19 +_0223809C: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223809C + add r0, r5, #0 + bl MOD12_02238688 + add r0, r5, #0 + mov r1, #0 + mov r2, #0xb0 + bl MI_CpuFill8 + mov r4, #0 + add r7, r6, #0 +_022380B8: + add r1, r5, #0 + add r0, r6, #0 + add r1, #0xc + add r2, r4, #0 + bl MOD12_02235274 + ldr r0, _022380F4 ; =0x0000023E + add r1, r6, r4 + ldrb r0, [r1, r0] + mov r1, #0xa + strb r0, [r5, #3] + ldr r0, _022380F8 ; =0x00000236 + ldrh r0, [r7, r0] + strh r0, [r5] + bl FUN_0206AB18 + strb r0, [r5, #2] + mov r0, #0x23 + lsl r0, r0, #4 + add r0, r6, r0 + add r1, r4, #0 + bl MOD12_02235C18 + strb r0, [r5, #9] + add r4, r4, #1 + add r5, #0x2c + add r7, r7, #2 + cmp r4, #4 + blt _022380B8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022380F4: .word 0x0000023E +_022380F8: .word 0x00000236 + + thumb_func_start MOD12_022380FC +MOD12_022380FC: ; 0x022380FC + push {r4, r5, r6, r7} + add r3, r1, #0 + ldr r5, _02238154 ; =0xFFFFFCFF + ldr r6, _02238158 ; =0xFFFFF3FF + add r4, r0, #0 + mov r1, #0 + add r2, r3, #0 +_0223810A: + ldr r7, [r2, #0x28] + add r1, r1, #1 + add r0, r7, #0 + lsl r7, r7, #0x1a + lsr r7, r7, #0x1e + lsl r7, r7, #0x1e + and r0, r5 + lsr r7, r7, #0x16 + orr r7, r0 + add r0, r7, #0 + lsl r7, r7, #0x18 + lsr r7, r7, #0x1e + lsl r7, r7, #0x1e + and r0, r6 + lsr r7, r7, #0x14 + orr r0, r7 + str r0, [r2, #0x28] + add r2, #0x2c + cmp r1, #4 + blt _0223810A + ldr r1, _0223815C ; =0x00000252 + mov r0, #0 + add r5, r1, #0 +_02238138: + add r7, r4, r0 + ldrsb r6, [r7, r1] + add r2, r3, r0 + add r2, #0xc0 + strb r6, [r2] + add r2, r3, r0 + ldrsb r6, [r7, r5] + add r2, #0xc3 + add r0, r0, #1 + strb r6, [r2] + cmp r0, #3 + blt _02238138 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_02238154: .word 0xFFFFFCFF +_02238158: .word 0xFFFFF3FF +_0223815C: .word 0x00000252 + + thumb_func_start MOD12_02238160 +MOD12_02238160: ; 0x02238160 + push {r4, r5, r6, r7} + mov r5, #0 + ldr r2, _02238188 ; =0x00000252 + add r3, r5, #0 +_02238168: + add r7, r1, r5 + mov r6, #0xc3 + ldrsb r7, [r7, r6] + ldr r6, _02238188 ; =0x00000252 + add r4, r0, r5 + strb r7, [r4, r6] + ldrsb r6, [r4, r2] + cmp r6, #0x32 + blt _0223817E + ldr r6, _02238188 ; =0x00000252 + strb r3, [r4, r6] +_0223817E: + add r5, r5, #1 + cmp r5, #3 + blt _02238168 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_02238188: .word 0x00000252 + + thumb_func_start MOD12_0223818C +MOD12_0223818C: ; 0x0223818C + push {r3, r4, r5, r6, r7, lr} + ldr r7, _022381D4 ; =0x00000242 + mov ip, r1 + add r5, r7, #0 + mov lr, r0 + mov r1, #0 + mov r2, ip + add r3, r0, #0 + mov r6, #0x18 + add r5, #8 +_022381A0: + ldr r0, _022381D4 ; =0x00000242 + mov r4, #0x18 + ldrsh r0, [r3, r0] + ldrsh r4, [r2, r4] + add r1, r1, #1 + add r0, r0, r4 + strh r0, [r3, r7] + ldrsh r0, [r2, r6] + add r2, #0x2c + strh r0, [r3, r5] + add r3, r3, #2 + cmp r1, #4 + blt _022381A0 + mov r1, #0x26 + lsl r1, r1, #4 + mov r0, lr + add r4, r0, r1 + mov r3, #0x19 +_022381C4: + mov r2, ip + ldmia r2!, {r0, r1} + mov ip, r2 + stmia r4!, {r0, r1} + sub r3, r3, #1 + bne _022381C4 + pop {r3, r4, r5, r6, r7, pc} + nop +_022381D4: .word 0x00000242 + + thumb_func_start MOD12_022381D8 +MOD12_022381D8: ; 0x022381D8 + push {r3, r4} + mov r2, #0x2c + mul r2, r1 + add r2, r0, r2 + mov r1, #0x18 + ldrsh r1, [r2, r1] + mov r4, #0 + strh r1, [r2, #0x1a] + strh r4, [r2, #0x1e] + strh r4, [r2, #0x20] + mov r1, #0xc3 +_022381EE: + add r3, r0, r4 + ldrsb r2, [r3, r1] + add r3, #0xc0 + add r4, r4, #1 + strb r2, [r3] + cmp r4, #3 + blt _022381EE + mov r2, #0 + add r1, r2, #0 +_02238200: + strb r1, [r0, #0x14] + strb r1, [r0, #0x12] + add r2, r2, #1 + add r0, #0x2c + cmp r2, #4 + blt _02238200 + pop {r3, r4} + bx lr + + thumb_func_start MOD12_02238210 +MOD12_02238210: ; 0x02238210 + mov r3, #0 + mov r1, #0x18 +_02238214: + ldrsh r2, [r0, r1] + add r3, r3, #1 + strh r2, [r0, #0x1c] + add r0, #0x2c + cmp r3, #4 + blt _02238214 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02238224 +MOD12_02238224: ; 0x02238224 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r7, r2, #0 + add r0, r5, #0 + add r1, r7, #0 + bl MOD12_022381D8 + mov r0, #0x2c + add r4, r7, #0 + mul r4, r0 + add r6, r5, #2 + ldrb r0, [r6, r4] + ldr r1, _02238274 ; =0x02245619 + lsl r2, r0, #3 + ldrb r1, [r1, r2] + cmp r1, #0 + bne _0223826E + mov r1, #4 + add r2, sp, #0x10 + add r3, sp, #0xc + bl FUN_02083170 + ldr r1, [sp, #0x10] + ldr r0, _02238278 ; =0x0000FFFF + cmp r1, r0 + beq _0223826E + ldr r0, _0223827C ; =0x00007530 + mov r2, #4 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldrb r1, [r6, r4] + add r0, r5, r4 + add r3, r7, #0 + bl MOD12_0223805C +_0223826E: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02238274: .word 0x02245619 +_02238278: .word 0x0000FFFF +_0223827C: .word 0x00007530 + + thumb_func_start MOD12_02238280 +MOD12_02238280: ; 0x02238280 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r2, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD12_022381D8 + add r4, r6, #0 + mov r0, #0x2c + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #2] + add r6, r5, #4 + bl FUN_02083114 + strb r0, [r6, r4] + ldrb r1, [r6, r4] + add r0, r5, r4 + strh r1, [r0, #0x18] + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_022382A8 +MOD12_022382A8: ; 0x022382A8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r1, #0 + str r0, [sp, #4] + str r2, [sp, #8] + add r0, r7, #0 + add r1, r2, #0 + str r3, [sp, #0xc] + bl MOD12_022381D8 + ldr r0, [sp, #8] + mov r1, #0x2c + add r4, r0, #0 + mul r4, r1 + add r0, r7, r4 + ldrb r0, [r0, #2] + lsl r6, r0, #3 + ldr r0, _02238364 ; =0x02245618 + ldrb r0, [r0, r6] + cmp r0, #3 + bne _022382FE + ldr r0, [sp, #0xc] + ldr r5, _02238368 ; =0x02245614 + str r0, [sp] + ldr r2, [sp, #8] + ldr r0, [sp, #4] + ldr r5, [r5, r6] + add r1, r7, #0 + add r3, r2, #0 + blx r5 + add r2, r7, #0 + mov r0, #1 + add r3, r7, r4 + strb r0, [r3, #0x14] + mov r0, #0x1e + add r2, #0x18 + mov r5, #0x20 + ldrsh r0, [r3, r0] + ldrsh r3, [r3, r5] + ldrsh r1, [r2, r4] + add r0, r0, r3 + add r0, r1, r0 + strh r0, [r2, r4] +_022382FE: + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0xc] + cmp r0, #0 + blt _02238360 +_02238308: + ldr r1, [sp, #4] + ldr r0, [sp, #0x10] + add r1, r1, r0 + ldr r0, _0223836C ; =0x00000231 + ldrb r5, [r1, r0] + mov r0, #0x2c + mul r0, r5 + add r4, r7, r0 + ldrb r0, [r4, #2] + lsl r1, r0, #3 + ldr r0, _02238368 ; =0x02245614 + add r0, r0, r1 + ldrb r0, [r0, #4] + cmp r0, #2 + bne _02238354 + add r0, r7, #0 + add r1, r5, #0 + bl MOD12_022381D8 + ldr r0, [sp, #0xc] + add r3, r5, #0 + str r0, [sp] + ldrb r5, [r4, #2] + ldr r0, [sp, #4] + ldr r2, [sp, #8] + lsl r6, r5, #3 + ldr r5, _02238368 ; =0x02245614 + add r1, r7, #0 + ldr r5, [r5, r6] + blx r5 + mov r0, #1 + strb r0, [r4, #0x14] + mov r0, #0x18 + ldrsh r1, [r4, r0] + mov r0, #0x1e + ldrsh r0, [r4, r0] + add r0, r1, r0 + strh r0, [r4, #0x18] +_02238354: + ldr r0, [sp, #0x10] + ldr r1, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, r1 + ble _02238308 +_02238360: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02238364: .word 0x02245618 +_02238368: .word 0x02245614 +_0223836C: .word 0x00000231 + + thumb_func_start MOD12_02238370 +MOD12_02238370: ; 0x02238370 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + add r6, r2, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD12_022381D8 + add r7, r5, #0 + lsl r0, r6, #2 + add r7, #0xb0 + str r0, [sp, #0xc] + ldr r0, [r7, r0] + lsl r0, r0, #8 + lsr r0, r0, #0x18 + beq _022383C6 + mov r0, #0x2c + add r4, r6, #0 + mul r4, r0 + add r1, r5, r4 + mov r0, #0x18 + ldrsh r0, [r1, r0] + add r1, r5, #0 + add r1, #0x1e + ldrsh r2, [r1, r4] + add r2, r2, r0 + strh r2, [r1, r4] + mov r1, #0xa + bl _s32_div_f + ldr r1, _022383E8 ; =0x00007530 + mov r2, #0 + str r1, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + ldr r1, [sp, #0xc] + add r0, r5, r4 + ldr r1, [r7, r1] + add r3, r6, #0 + lsl r1, r1, #8 + lsr r1, r1, #0x18 + bl MOD12_0223805C +_022383C6: + mov r0, #0x2c + add r2, r6, #0 + add r1, r5, #0 + mul r2, r0 + add r1, #0x18 + add r5, r5, r2 + mov r3, #0x1e + ldrsh r4, [r5, r3] + mov r3, #0x20 + ldrsh r3, [r5, r3] + ldrsh r0, [r1, r2] + add r3, r4, r3 + add r0, r0, r3 + strh r0, [r1, r2] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_022383E8: .word 0x00007530 + + thumb_func_start MOD12_022383EC +MOD12_022383EC: ; 0x022383EC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r2, #0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r6, #0 + str r3, [sp, #8] + bl MOD12_022381D8 + mov r0, #0x2c + add r4, r6, #0 + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #2] + lsl r7, r0, #3 + ldr r0, _02238444 ; =0x02245618 + ldrb r0, [r0, r7] + cmp r0, #4 + bne _0223843C + ldr r0, [sp, #8] + add r2, r6, #0 + add r3, r6, #0 + ldr r6, _02238448 ; =0x02245614 + str r0, [sp] + ldr r0, [sp, #4] + ldr r6, [r6, r7] + add r1, r5, #0 + blx r6 + add r3, r5, r4 + mov r0, #1 + strb r0, [r3, #0x14] + add r5, #0x18 + mov r1, #0x1e + ldrsh r2, [r5, r4] + ldrsh r1, [r3, r1] + add sp, #0xc + add r1, r2, r1 + strh r1, [r5, r4] + pop {r4, r5, r6, r7, pc} +_0223843C: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02238444: .word 0x02245618 +_02238448: .word 0x02245614 + + thumb_func_start MOD12_0223844C +MOD12_0223844C: ; 0x0223844C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r2, #0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r6, #0 + str r3, [sp, #8] + bl MOD12_022381D8 + mov r0, #0x2c + add r4, r6, #0 + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #2] + lsl r7, r0, #3 + ldr r0, _022384A4 ; =0x02245618 + ldrb r0, [r0, r7] + cmp r0, #5 + bne _0223849C + ldr r0, [sp, #8] + add r2, r6, #0 + add r3, r6, #0 + ldr r6, _022384A8 ; =0x02245614 + str r0, [sp] + ldr r0, [sp, #4] + ldr r6, [r6, r7] + add r1, r5, #0 + blx r6 + add r3, r5, r4 + mov r0, #1 + strb r0, [r3, #0x14] + add r5, #0x18 + mov r1, #0x1e + ldrsh r2, [r5, r4] + ldrsh r1, [r3, r1] + add sp, #0xc + add r1, r2, r1 + strh r1, [r5, r4] + pop {r4, r5, r6, r7, pc} +_0223849C: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_022384A4: .word 0x02245618 +_022384A8: .word 0x02245614 + + thumb_func_start MOD12_022384AC +MOD12_022384AC: ; 0x022384AC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r2, #0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r6, #0 + str r3, [sp, #8] + bl MOD12_022381D8 + mov r0, #0x2c + add r4, r6, #0 + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #2] + lsl r7, r0, #3 + ldr r0, _02238504 ; =0x02245618 + ldrb r0, [r0, r7] + cmp r0, #6 + bne _022384FC + ldr r0, [sp, #8] + add r2, r6, #0 + add r3, r6, #0 + ldr r6, _02238508 ; =0x02245614 + str r0, [sp] + ldr r0, [sp, #4] + ldr r6, [r6, r7] + add r1, r5, #0 + blx r6 + add r3, r5, r4 + mov r0, #1 + strb r0, [r3, #0x14] + add r5, #0x18 + mov r1, #0x1e + ldrsh r2, [r5, r4] + ldrsh r1, [r3, r1] + add sp, #0xc + add r1, r2, r1 + strh r1, [r5, r4] + pop {r4, r5, r6, r7, pc} +_022384FC: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02238504: .word 0x02245618 +_02238508: .word 0x02245614 + + thumb_func_start MOD12_0223850C +MOD12_0223850C: ; 0x0223850C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + str r0, [sp] + add r0, r4, #0 + add r1, r2, #0 + str r2, [sp, #4] + add r7, r3, #0 + bl MOD12_022381D8 + mov r0, #0 + strb r0, [r7, #0xc] + strb r0, [r7, #0xd] + ldr r1, [sp] + ldr r0, [sp, #4] + mov r6, #0x2c + add r1, r1, r0 + ldr r0, _02238658 ; =0x0000023E + ldrb r5, [r1, r0] + ldr r0, [sp] + ldr r3, [r0] + ldr r0, [sp, #4] + add r2, r5, #0 + add r1, r0, #0 + mul r1, r6 + add r0, r4, r1 + str r0, [sp, #0xc] + add r0, r6, #0 + add r0, #0xf3 + str r1, [sp, #0x10] + add r6, #0xf2 + ldrb r0, [r3, r0] + ldrh r1, [r4, r1] + ldrb r3, [r3, r6] + bl MOD12_02235C44 + add r6, r0, #0 + cmp r6, #0 + ble _0223857A + ldr r0, [sp, #0xc] + ldr r0, [r0, #0x28] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bne _0223857A + add r0, r4, #0 + add r0, #0xc3 + ldrsb r1, [r0, r5] + add r1, r1, r6 + strb r1, [r0, r5] + ldrsb r1, [r0, r5] + cmp r1, #0x32 + blt _022385A6 + mov r1, #0x32 + strb r1, [r0, r5] + b _022385A6 +_0223857A: + cmp r6, #0 + bge _022385A4 + ldr r0, [sp, #0xc] + ldr r0, [r0, #0x28] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bne _022385A4 + add r0, r4, #0 + add r0, #0xc3 + add r1, r0, r5 + ldrsb r0, [r0, r5] + cmp r0, #0 + ble _022385A4 + add r0, r0, r6 + mov r2, #0 + strb r0, [r1] + ldrsb r0, [r1, r2] + cmp r0, #0 + bgt _022385A6 + strb r2, [r1] + b _022385A6 +_022385A4: + mov r6, #0 +_022385A6: + add r1, r4, #0 + add r1, #0xc3 + add r0, r1, r5 + str r0, [sp, #8] + ldrsb r0, [r1, r5] + cmp r0, #0x32 + blt _022385D2 + ldr r0, [sp] + ldr r1, [r0] + ldr r0, _0223865C ; =0x0000011E + ldrb r0, [r1, r0] + cmp r5, r0 + bne _022385CA + ldr r0, [sp, #0x10] + mov r1, #0x50 + add r0, r4, r0 + strb r1, [r0, #8] + b _022385D2 +_022385CA: + ldr r0, [sp, #0x10] + mov r1, #0x32 + add r0, r4, r0 + strb r1, [r0, #8] +_022385D2: + add r0, r4, #0 + ldr r1, [sp, #0x10] + add r0, #8 + add r5, r0, r1 + ldrsb r0, [r0, r1] + mov r1, #0xa + bl _s32_div_f + strb r0, [r7, #0xa] + cmp r6, #0 + ble _0223862C + ldr r0, [sp, #0xc] + mov r1, #0xb + ldrh r0, [r0] + bl FUN_0206AB18 + bl MOD12_02235AC4 + strb r0, [r7, #0xc] + ldr r0, [sp, #8] + mov r1, #0 + ldrsb r0, [r0, r1] + mov r1, #0xa + bl _s32_div_f + cmp r0, #5 + bhi _0223863E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02238614: ; jump table + .short _0223863E - _02238614 - 2 ; case 0 + .short _0223863E - _02238614 - 2 ; case 1 + .short _0223863E - _02238614 - 2 ; case 2 + .short _0223863E - _02238614 - 2 ; case 3 + .short _02238620 - _02238614 - 2 ; case 4 + .short _02238626 - _02238614 - 2 ; case 5 +_02238620: + mov r0, #0x19 + strb r0, [r7, #0xd] + b _0223863E +_02238626: + mov r0, #0x1a + strb r0, [r7, #0xd] + b _0223863E +_0223862C: + bge _0223863E + ldr r0, [sp, #0xc] + mov r1, #0xb + ldrh r0, [r0] + bl FUN_0206AB18 + bl MOD12_02235AF0 + strb r0, [r7, #0xc] +_0223863E: + ldr r0, [sp, #4] + mov r1, #0x2c + add r2, r0, #0 + mov r0, #0 + add r4, #0x18 + mul r2, r1 + ldrsh r1, [r4, r2] + ldrsb r0, [r5, r0] + add r0, r1, r0 + strh r0, [r4, r2] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02238658: .word 0x0000023E +_0223865C: .word 0x0000011E + + thumb_func_start MOD12_02238660 +MOD12_02238660: ; 0x02238660 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r2, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD12_022381D8 + mov r0, #0x2c + add r4, r6, #0 + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #9] + bl MOD12_02235C38 + add r5, #0x18 + ldrsh r1, [r5, r4] + add r0, r1, r0 + strh r0, [r5, r4] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_02238688 +MOD12_02238688: ; 0x02238688 + push {r3, r4, r5, r6} + add r3, r0, #0 + ldr r4, _022386B8 ; =0xFFFF0000 + ldr r5, _022386BC ; =0xFF00FFFF + mov r2, #0 + add r3, #0xb0 +_02238694: + ldr r1, [r3] + add r2, r2, #1 + and r1, r4 + str r1, [r3] + ldr r6, [r0, #0x28] + and r1, r5 + lsl r6, r6, #0xc + lsr r6, r6, #0x18 + lsl r6, r6, #0x18 + lsr r6, r6, #8 + orr r1, r6 + add r0, #0x2c + stmia r3!, {r1} + cmp r2, #4 + blt _02238694 + pop {r3, r4, r5, r6} + bx lr + nop +_022386B8: .word 0xFFFF0000 +_022386BC: .word 0xFF00FFFF + + thumb_func_start MOD12_022386C0 +MOD12_022386C0: ; 0x022386C0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r0, #4 + str r3, [sp, #0xc] + mov ip, r0 + add r7, r1, #0 + mov r0, #0 + add r2, sp, #0x10 + mov r3, #0xff +_022386D2: + ldr r4, [r1, #0x28] + lsl r5, r4, #0x1a + lsr r5, r5, #0x1e + bne _022386DE + strb r3, [r2] + b _022386F2 +_022386DE: + cmp r5, #1 + bne _022386EA + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + bne _022386EA + mov ip, r0 +_022386EA: + ldr r4, [r1, #0x28] + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + strb r4, [r2] +_022386F2: + add r0, r0, #1 + add r1, #0x2c + add r2, r2, #1 + cmp r0, #4 + blt _022386D2 + ldr r0, [sp, #0xc] + mov r1, #0xff + add r6, sp, #0x10 + strb r1, [r6, r0] + mov r4, #0 +_02238706: + mov r1, #0 + add r2, r6, #0 + add r3, r7, #0 +_0223870C: + ldrb r0, [r2] + cmp r0, #0xff + beq _02238728 + cmp r4, r0 + bne _02238728 + ldr r5, [r3, #0x28] + lsl r5, r5, #0x18 + lsr r5, r5, #0x1e + cmp r0, r5 + bne _02238728 + ldrb r0, [r6, r1] + add r0, r0, #1 + strb r0, [r6, r1] + b _02238732 +_02238728: + add r1, r1, #1 + add r2, r2, #1 + add r3, #0x2c + cmp r1, #4 + blt _0223870C +_02238732: + cmp r1, #4 + beq _0223873C + add r4, r4, #1 + cmp r4, #4 + blt _02238706 +_0223873C: + mov r3, #0 + add r1, sp, #0x10 + add r2, r7, #0 + mov r4, #0xc0 +_02238744: + ldrb r5, [r1] + cmp r5, #0xff + beq _02238756 + ldr r0, [r2, #0x28] + lsl r5, r5, #0x1e + bic r0, r4 + lsr r5, r5, #0x18 + orr r0, r5 + str r0, [r2, #0x28] +_02238756: + add r3, r3, #1 + add r1, r1, #1 + add r2, #0x2c + cmp r3, #4 + blt _02238744 + ldr r0, [sp, #0xc] + mov r1, #0x2c + mul r1, r0 + add r0, r7, r1 + ldr r2, [r0, #0x28] + mov r1, #0x30 + bic r2, r1 + mov r1, #0x10 + orr r2, r1 + mov r1, #0xc0 + bic r2, r1 + mov r1, ip + str r2, [r0, #0x28] + cmp r1, #4 + beq _02238794 + mov r1, ip + str r1, [sp] + ldr r1, _022387AC ; =0x00007530 + ldr r3, [sp, #0xc] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #1 + bl MOD12_0223805C + b _022387A6 +_02238794: + ldr r1, _022387AC ; =0x00007530 + ldr r3, [sp, #0xc] + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C +_022387A6: + mov r0, #1 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022387AC: .word 0x00007530 + + thumb_func_start MOD12_022387B0 +MOD12_022387B0: ; 0x022387B0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r0, #4 + str r3, [sp, #0xc] + mov ip, r0 + add r7, r1, #0 + mov r0, #0 + add r2, sp, #0x10 + mov r3, #0xff +_022387C2: + ldr r4, [r1, #0x28] + lsl r5, r4, #0x1a + lsr r5, r5, #0x1e + bne _022387CE + strb r3, [r2] + b _022387E4 +_022387CE: + cmp r5, #2 + bne _022387DC + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + cmp r4, #3 + bne _022387DC + mov ip, r0 +_022387DC: + ldr r4, [r1, #0x28] + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + strb r4, [r2] +_022387E4: + add r0, r0, #1 + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + add r1, #0x2c + add r2, r2, #1 + cmp r0, #4 + blt _022387C2 + ldr r0, [sp, #0xc] + mov r1, #0xff + add r6, sp, #0x10 + strb r1, [r6, r0] + mov r4, #3 +_022387FC: + mov r1, #0 + add r2, r6, #0 + add r3, r7, #0 +_02238802: + ldrb r0, [r2] + cmp r0, #0xff + beq _0223881E + cmp r4, r0 + bne _0223881E + ldr r5, [r3, #0x28] + lsl r5, r5, #0x18 + lsr r5, r5, #0x1e + cmp r0, r5 + bne _0223881E + ldrb r0, [r6, r1] + sub r0, r0, #1 + strb r0, [r6, r1] + b _0223882C +_0223881E: + add r0, r1, #1 + lsl r0, r0, #0x18 + asr r1, r0, #0x18 + add r2, r2, #1 + add r3, #0x2c + cmp r1, #4 + blt _02238802 +_0223882C: + cmp r1, #4 + beq _0223883E + sub r0, r4, #1 + lsl r0, r0, #0x18 + asr r4, r0, #0x18 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bgt _022387FC +_0223883E: + mov r3, #0 + add r1, sp, #0x10 + add r2, r7, #0 + mov r4, #0xc0 +_02238846: + ldrb r5, [r1] + cmp r5, #0xff + beq _02238858 + ldr r0, [r2, #0x28] + lsl r5, r5, #0x1e + bic r0, r4 + lsr r5, r5, #0x18 + orr r0, r5 + str r0, [r2, #0x28] +_02238858: + add r0, r3, #1 + lsl r0, r0, #0x18 + asr r3, r0, #0x18 + add r1, r1, #1 + add r2, #0x2c + cmp r3, #4 + blt _02238846 + ldr r0, [sp, #0xc] + mov r1, #0x2c + mul r1, r0 + add r0, r7, r1 + ldr r2, [r0, #0x28] + mov r1, #0x30 + bic r2, r1 + mov r1, #0x20 + orr r2, r1 + mov r1, #0xc0 + bic r2, r1 + mov r1, #0xc0 + orr r1, r2 + str r1, [r0, #0x28] + mov r1, ip + cmp r1, #4 + bne _0223889C + ldr r1, _022388B8 ; =0x00007530 + ldr r3, [sp, #0xc] + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + b _022388B0 +_0223889C: + mov r1, ip + str r1, [sp] + ldr r1, _022388B8 ; =0x00007530 + ldr r3, [sp, #0xc] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #1 + bl MOD12_0223805C +_022388B0: + mov r0, #1 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_022388B8: .word 0x00007530 + + thumb_func_start MOD12_022388BC +MOD12_022388BC: ; 0x022388BC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + add r2, r4, #0 + mov r0, #0x2c + add r7, r3, #0 + mul r3, r0 + add r2, #9 + add r1, #0x1e + ldrb r6, [r2, r3] + mov r5, #0x14 + ldrsh r0, [r1, r3] + mul r5, r6 + add r0, r0, r5 + strh r0, [r1, r3] + ldrb r0, [r2, r3] + cmp r0, #0 + beq _022388EA + cmp r0, #1 + beq _022388EE + cmp r0, #2 + beq _022388F2 + b _022388F6 +_022388EA: + mov r2, #0 + b _022388F8 +_022388EE: + mov r2, #1 + b _022388F8 +_022388F2: + mov r2, #2 + b _022388F8 +_022388F6: + mov r2, #3 +_022388F8: + ldr r0, _02238910 ; =0x00007530 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r4, r3 + ldrb r1, [r0, #2] + add r3, r7, #0 + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02238910: .word 0x00007530 + + thumb_func_start MOD12_02238914 +MOD12_02238914: ; 0x02238914 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r3, [sp, #0xc] + ldr r3, [r0] + ldr r0, [sp, #0xc] + mov r6, #0x2c + add r4, r0, #0 + add r0, r6, #0 + mul r4, r6 + add r5, r1, #0 + add r7, r5, r4 + add r0, #0xf3 + add r6, #0xf2 + ldrb r0, [r3, r0] + ldrh r1, [r5, r4] + ldrb r2, [r7, #3] + ldrb r3, [r3, r6] + bl MOD12_02235C44 + cmp r0, #0 + ble _0223896C + ldr r0, [r7, #0x28] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bne _0223896C + add r1, r5, #0 + add r1, #0x1e + ldrsh r0, [r1, r4] + ldr r2, _02238974 ; =0x00007530 + ldr r3, [sp, #0xc] + add r0, #0x14 + strh r0, [r1, r4] + str r2, [sp] + ldrh r1, [r5, r4] + add r0, r7, #0 + str r1, [sp, #4] + str r2, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223896C: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02238974: .word 0x00007530 + + thumb_func_start MOD12_02238978 +MOD12_02238978: ; 0x02238978 + mov r0, #1 + bx lr + + thumb_func_start MOD12_0223897C +MOD12_0223897C: ; 0x0223897C + push {r3, r4, lr} + sub sp, #0xc + mov r0, #0x2c + add r4, r3, #0 + mul r4, r0 + add r0, r1, r4 + ldrb r2, [r0, #9] + cmp r2, #0 + bne _022389A8 + add r1, #0x1e + ldrsh r2, [r1, r4] + add r2, #0x1e + strh r2, [r1, r4] + ldr r1, _022389C0 ; =0x00007530 + mov r2, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + bl MOD12_0223805C + b _022389B8 +_022389A8: + ldr r1, _022389C0 ; =0x00007530 + mov r2, #1 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + bl MOD12_0223805C +_022389B8: + mov r0, #1 + add sp, #0xc + pop {r3, r4, pc} + nop +_022389C0: .word 0x00007530 + + thumb_func_start MOD12_022389C4 +MOD12_022389C4: ; 0x022389C4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + lsl r4, r3, #1 + add r2, r1, #0 + add r4, r0, r4 + ldr r0, _02238A10 ; =0x00000256 + mov r1, #0x2c + add r7, r3, #0 + mul r7, r1 + ldrh r1, [r2, r7] + ldrh r0, [r4, r0] + cmp r1, r0 + beq _02238A0A + add r6, r2, #0 + add r6, #0xb0 + lsl r5, r3, #2 + lsl r1, r1, #0x10 + ldr r4, [r6, r5] + ldr r0, _02238A14 ; =0xFFFF0000 + lsr r1, r1, #0x10 + and r0, r4 + orr r0, r1 + str r0, [r6, r5] + ldr r0, _02238A18 ; =0x00007530 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r2, r7 + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02238A0A: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02238A10: .word 0x00000256 +_02238A14: .word 0xFFFF0000 +_02238A18: .word 0x00007530 + + thumb_func_start MOD12_02238A1C +MOD12_02238A1C: ; 0x02238A1C + push {r4, r5, lr} + sub sp, #0xc + mov r0, #0x2c + add r4, r3, #0 + add r5, r1, #0 + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #3] + add r2, r5, #0 + add r2, #0x1e + add r1, r5, r0 + mov r0, #0xc0 + ldrsb r0, [r1, r0] + ldrsh r1, [r2, r4] + add r1, r1, r0 + strh r1, [r2, r4] + mov r1, #0xa + bl _s32_div_f + ldr r3, _02238A5C ; =0x00007530 + mov r2, #0 + str r3, [sp] + str r3, [sp, #4] + str r0, [sp, #8] + add r0, r5, r4 + ldrb r1, [r0, #2] + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + nop +_02238A5C: .word 0x00007530 + + thumb_func_start MOD12_02238A60 +MOD12_02238A60: ; 0x02238A60 + push {r3, r4, lr} + sub sp, #0xc + mov r0, #0x2c + add r4, r3, #0 + mul r4, r0 + add r0, r1, r4 + ldrb r2, [r0, #9] + cmp r2, #3 + bne _02238A8C + add r1, #0x1e + ldrsh r2, [r1, r4] + add r2, #0x96 + strh r2, [r1, r4] + ldr r1, _02238AA4 ; =0x00007530 + mov r2, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + bl MOD12_0223805C + b _02238A9C +_02238A8C: + ldr r1, _02238AA4 ; =0x00007530 + mov r2, #1 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + bl MOD12_0223805C +_02238A9C: + mov r0, #1 + add sp, #0xc + pop {r3, r4, pc} + nop +_02238AA4: .word 0x00007530 + + thumb_func_start MOD12_02238AA8 +MOD12_02238AA8: ; 0x02238AA8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov r0, #0x2c + add r7, r3, #0 + add r4, r1, #0 + mul r7, r0 + add r1, r4, r7 + ldr r0, [r1, #0x28] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + cmp r0, #1 + bne _02238AC6 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02238AC6: + mov r3, #0 + mov r0, #0xc3 +_02238ACA: + add r2, r4, r3 + ldrsb r2, [r2, r0] + cmp r2, #0 + bne _02238AD8 + add r3, r3, #1 + cmp r3, #3 + blt _02238ACA +_02238AD8: + cmp r3, #3 + bne _02238AE2 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02238AE2: + ldr r2, [r1, #0x28] + mov r0, #8 + orr r0, r2 + mov r3, #0xc3 + str r0, [r1, #0x28] + mov r2, #0 + add r5, r3, #0 +_02238AF0: + add r0, r4, r2 + ldrsb r6, [r0, r5] + cmp r6, #0 + ble _02238B00 + ldrsb r6, [r0, r3] + add r0, #0xc3 + sub r6, #0xa + strb r6, [r0] +_02238B00: + add r2, r2, #1 + cmp r2, #3 + blt _02238AF0 + ldr r3, _02238B20 ; =0x00007530 + add r0, r1, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + add r1, r4, r7 + ldrb r1, [r1, #2] + mov r2, #0 + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02238B20: .word 0x00007530 + + thumb_func_start MOD12_02238B24 +MOD12_02238B24: ; 0x02238B24 + mov r0, #0x2c + mul r0, r3 + add r2, r1, r0 + ldr r1, [r2, #0x28] + ldr r0, _02238B40 ; =0xFFF00FFF + and r1, r0 + ldrb r0, [r2, #2] + lsl r0, r0, #0x18 + lsr r0, r0, #0xc + orr r0, r1 + str r0, [r2, #0x28] + mov r0, #1 + bx lr + nop +_02238B40: .word 0xFFF00FFF + + thumb_func_start MOD12_02238B44 +MOD12_02238B44: ; 0x02238B44 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r2, r1, #0 + ldr r1, [sp, #0x20] + add r4, r0, #0 + mov ip, r3 + cmp r1, #4 + bge _02238B70 + ldr r7, _02238B90 ; =0x00000231 + mov r6, #0x2c + mov r3, #2 +_02238B5A: + add r0, r4, r1 + ldrb r0, [r0, r7] + add r1, r1, #1 + add r5, r0, #0 + mul r5, r6 + add r0, r2, r5 + ldr r5, [r0, #0x28] + orr r5, r3 + str r5, [r0, #0x28] + cmp r1, #4 + blt _02238B5A +_02238B70: + ldr r3, _02238B94 ; =0x00007530 + mov r1, #0x2c + mov r0, ip + str r3, [sp] + mul r1, r0 + str r3, [sp, #4] + add r0, r2, r1 + str r3, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02238B90: .word 0x00000231 +_02238B94: .word 0x00007530 + + thumb_func_start MOD12_02238B98 +MOD12_02238B98: ; 0x02238B98 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + ldr r1, [sp, #0x20] + cmp r1, #0 + bne _02238BAA + add sp, #0xc + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_02238BAA: + sub r1, r1, #1 + add r1, r0, r1 + ldr r0, _02238BF0 ; =0x00000231 + ldrb r4, [r1, r0] + mov r0, #0x2c + add r1, r4, #0 + mul r1, r0 + add r2, r5, r1 + mov r1, #8 + ldrsb r2, [r2, r1] + cmp r2, #0 + bne _02238BC8 + add sp, #0xc + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_02238BC8: + add r1, r3, #0 + mul r1, r0 + add r0, r5, #0 + add r0, #0x1e + ldrsh r6, [r0, r1] + add r2, r6, r2 + strh r2, [r0, r1] + ldr r0, _02238BF4 ; =0x00007530 + str r4, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r5, r1 + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_02238BF0: .word 0x00000231 +_02238BF4: .word 0x00007530 + + thumb_func_start MOD12_02238BF8 +MOD12_02238BF8: ; 0x02238BF8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + str r1, [sp, #0xc] + str r3, [sp, #0x10] + mov r3, #0 + add r0, sp, #0x18 + add r1, sp, #0x14 +_02238C08: + lsl r2, r3, #0x18 + lsr r2, r2, #0x18 + strb r2, [r0] + strb r2, [r1] + add r2, r3, #1 + lsl r2, r2, #0x18 + asr r3, r2, #0x18 + add r0, r0, #1 + add r1, r1, #1 + cmp r3, #4 + blt _02238C08 + mov r4, #0 + add r7, sp, #0x18 + add r6, sp, #0x14 +_02238C24: + ldr r0, [r5] + bl FUN_02082878 + mov r1, #4 + sub r1, r1, r4 + bl _s32_div_f + lsl r0, r1, #0x18 + lsr r2, r0, #0x18 + mov r1, #0 + add r3, r6, #0 +_02238C3A: + ldrb r0, [r3] + cmp r0, #0xff + beq _02238C52 + cmp r2, #0 + bne _02238C4C + mov r0, #0xff + strb r4, [r7, r1] + strb r0, [r6, r1] + b _02238C5E +_02238C4C: + sub r0, r2, #1 + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 +_02238C52: + add r0, r1, #1 + lsl r0, r0, #0x18 + asr r1, r0, #0x18 + add r3, r3, #1 + cmp r1, #4 + blt _02238C3A +_02238C5E: + add r0, r4, #1 + lsl r0, r0, #0x18 + asr r4, r0, #0x18 + cmp r4, #4 + blt _02238C24 + ldr r1, [sp, #0xc] + mov r3, #0 + add r2, sp, #0x18 + mov r4, #0x30 + mov r7, #0x30 + mov r5, #0xc0 +_02238C74: + ldr r0, [r1, #0x28] + bic r0, r4 + orr r0, r7 + str r0, [r1, #0x28] + ldrb r6, [r2] + bic r0, r5 + add r2, r2, #1 + lsl r6, r6, #0x1e + lsr r6, r6, #0x18 + orr r0, r6 + str r0, [r1, #0x28] + add r0, r3, #1 + lsl r0, r0, #0x18 + asr r3, r0, #0x18 + add r1, #0x2c + cmp r3, #4 + blt _02238C74 + ldr r3, _02238CB8 ; =0x00007530 + ldr r0, [sp, #0x10] + mov r1, #0x2c + mul r1, r0 + str r3, [sp] + ldr r0, [sp, #0xc] + str r3, [sp, #4] + str r3, [sp, #8] + add r0, r0, r1 + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + mov r0, #1 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_02238CB8: .word 0x00007530 + + thumb_func_start MOD12_02238CBC +MOD12_02238CBC: ; 0x02238CBC + push {r4, r5, lr} + sub sp, #0xc + ldr r0, [sp, #0x18] + add r5, r1, #0 + cmp r0, #3 + bne _02238CFE + add r4, r3, #0 + mov r0, #0x2c + add r3, r5, #0 + add r2, r5, #0 + mul r4, r0 + add r3, #0x18 + add r2, #0x1e + ldrsh r1, [r2, r4] + ldrsh r0, [r3, r4] + add r0, r1, r0 + strh r0, [r2, r4] + ldrsh r0, [r3, r4] + mov r1, #0xa + bl _s32_div_f + ldr r3, _02238D04 ; =0x00007530 + mov r2, #0 + str r3, [sp] + str r3, [sp, #4] + str r0, [sp, #8] + add r0, r5, r4 + ldrb r1, [r0, #2] + bl MOD12_0223805C + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_02238CFE: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02238D04: .word 0x00007530 + + thumb_func_start MOD12_02238D08 +MOD12_02238D08: ; 0x02238D08 + push {r4, r5, lr} + sub sp, #0xc + mov r0, #0x2c + add r4, r3, #0 + add r5, r1, #0 + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #3] + add r1, r5, r0 + mov r0, #0xc0 + ldrsb r0, [r1, r0] + mov r1, #0xa + bl _s32_div_f + ldr r1, _02238D50 ; =0x0224560C + add r2, r5, #0 + add r2, #0x1e + ldrb r0, [r1, r0] + ldrsh r1, [r2, r4] + add r1, r1, r0 + strh r1, [r2, r4] + mov r1, #0xa + bl _s32_div_f + ldr r3, _02238D54 ; =0x00007530 + mov r2, #0 + str r3, [sp] + str r3, [sp, #4] + str r0, [sp, #8] + add r0, r5, r4 + ldrb r1, [r0, #2] + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02238D50: .word 0x0224560C +_02238D54: .word 0x00007530 + + thumb_func_start MOD12_02238D58 +MOD12_02238D58: ; 0x02238D58 + push {r3, r4, lr} + sub sp, #0xc + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _02238D8A + add r4, r3, #0 + mov r0, #0x2c + add r2, r1, #0 + mul r4, r0 + add r2, #0x1e + ldrsh r0, [r2, r4] + ldr r3, _02238D90 ; =0x00007530 + add r0, #0x14 + strh r0, [r2, r4] + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + add r0, r1, r4 + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + add sp, #0xc + mov r0, #1 + pop {r3, r4, pc} +_02238D8A: + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02238D90: .word 0x00007530 + + thumb_func_start MOD12_02238D94 +MOD12_02238D94: ; 0x02238D94 + push {r3, r4, lr} + sub sp, #0xc + ldr r0, [sp, #0x18] + cmp r0, #3 + bne _02238DC6 + add r4, r3, #0 + mov r0, #0x2c + add r2, r1, #0 + mul r4, r0 + add r2, #0x1e + ldrsh r0, [r2, r4] + ldr r3, _02238DCC ; =0x00007530 + add r0, #0x14 + strh r0, [r2, r4] + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + add r0, r1, r4 + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + add sp, #0xc + mov r0, #1 + pop {r3, r4, pc} +_02238DC6: + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02238DCC: .word 0x00007530 + + thumb_func_start MOD12_02238DD0 +MOD12_02238DD0: ; 0x02238DD0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r2, r1, #0 + ldr r1, [sp, #0x20] + add r4, r0, #0 + mov ip, r3 + cmp r1, #4 + bge _02238DFC + ldr r7, _02238E1C ; =0x00000231 + mov r6, #0x2c + mov r3, #4 +_02238DE6: + add r0, r4, r1 + ldrb r0, [r0, r7] + add r1, r1, #1 + add r5, r0, #0 + mul r5, r6 + add r0, r2, r5 + ldr r5, [r0, #0x28] + orr r5, r3 + str r5, [r0, #0x28] + cmp r1, #4 + blt _02238DE6 +_02238DFC: + ldr r3, _02238E20 ; =0x00007530 + mov r1, #0x2c + mov r0, ip + str r3, [sp] + mul r1, r0 + str r3, [sp, #4] + add r0, r2, r1 + str r3, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02238E1C: .word 0x00000231 +_02238E20: .word 0x00007530 + + thumb_func_start MOD12_02238E24 +MOD12_02238E24: ; 0x02238E24 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r6, r0, #0 + ldr r0, [sp, #0x38] + add r5, r1, #0 + str r3, [sp, #0xc] + cmp r0, #0 + bne _02238E3A + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02238E3A: + sub r0, r0, #1 + add r1, r6, r0 + ldr r0, _02238EDC ; =0x00000231 + mov r3, #0x2c + ldrb r0, [r1, r0] + str r0, [sp, #0x1c] + ldr r0, [sp, #0xc] + add r4, r0, #0 + mul r4, r3 + add r0, r5, r4 + str r0, [sp, #0x18] + ldr r0, [r0, #0x28] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bne _02238E6C + ldr r0, [sp, #0x1c] + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + str r0, [sp, #0x14] + ldr r0, [r0, #0x28] + str r1, [sp, #0x10] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + beq _02238E72 +_02238E6C: + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02238E72: + add r0, r3, #0 + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x18] + ldr r7, [r6] + add r0, #0xf3 + add r3, #0xf2 + ldrb r0, [r7, r0] + ldrh r1, [r1] + ldrb r2, [r2, #3] + ldrb r3, [r7, r3] + bl MOD12_02235C44 + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x14] + add r2, r5, r2 + ldr r6, [r6] + ldr r3, _02238EE0 ; =0x0000011F + str r0, [sp, #0x20] + ldrb r0, [r6, r3] + sub r3, r3, #1 + ldrh r1, [r1] + ldrb r2, [r2, #3] + ldrb r3, [r6, r3] + bl MOD12_02235C44 + cmp r0, #0 + ble _02238ED6 + ldr r0, [sp, #0x20] + cmp r0, #0 + ble _02238ED6 + add r1, r5, #0 + add r1, #0x1e + ldrsh r0, [r1, r4] + ldr r3, [sp, #0xc] + mov r2, #0 + add r0, #0x1e + strh r0, [r1, r4] + ldr r0, [sp, #0x1c] + add r1, r5, r4 + str r0, [sp] + ldr r0, _02238EE4 ; =0x00007530 + str r0, [sp, #4] + str r0, [sp, #8] + ldrb r1, [r1, #2] + ldr r0, [sp, #0x18] + bl MOD12_0223805C + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02238ED6: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02238EDC: .word 0x00000231 +_02238EE0: .word 0x0000011F +_02238EE4: .word 0x00007530 + + thumb_func_start MOD12_02238EE8 +MOD12_02238EE8: ; 0x02238EE8 + push {r4, r5, lr} + sub sp, #0xc + add r0, r1, #0 + mov r1, #0x2c + mul r1, r3 + add r4, r0, r1 + mov r1, #0x1e + ldrsh r2, [r4, r1] + ldr r1, [sp, #0x18] + ldr r5, _02238F44 ; =0x02245608 + ldrb r5, [r5, r1] + add r2, r2, r5 + strh r2, [r4, #0x1e] + cmp r1, #3 + bhi _02238F26 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02238F12: ; jump table + .short _02238F1A - _02238F12 - 2 ; case 0 + .short _02238F1E - _02238F12 - 2 ; case 1 + .short _02238F22 - _02238F12 - 2 ; case 2 + .short _02238F26 - _02238F12 - 2 ; case 3 +_02238F1A: + mov r2, #0 + b _02238F28 +_02238F1E: + mov r2, #1 + b _02238F28 +_02238F22: + mov r2, #2 + b _02238F28 +_02238F26: + mov r2, #3 +_02238F28: + ldr r1, _02238F48 ; =0x00007530 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0x2c + mul r1, r3 + add r0, r0, r1 + ldrb r1, [r0, #2] + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + nop +_02238F44: .word 0x02245608 +_02238F48: .word 0x00007530 + + thumb_func_start MOD12_02238F4C +MOD12_02238F4C: ; 0x02238F4C + push {r3, r4, lr} + sub sp, #0xc + ldr r2, [sp, #0x18] + cmp r2, #0 + bne _02238F5C + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_02238F5C: + sub r2, r2, #1 + add r2, r0, r2 + ldr r0, _02238FA4 ; =0x00000231 + ldrb r2, [r2, r0] + mov r0, #0x2c + mul r0, r2 + add r2, r1, r0 + mov r0, #8 + ldrsb r0, [r2, r0] + cmp r0, #0x32 + bge _02238F76 + cmp r0, #0x50 + blt _02238F9E +_02238F76: + add r2, r1, #0 + mov r0, #0x2c + add r4, r3, #0 + mul r4, r0 + add r2, #0x1e + ldrsh r0, [r2, r4] + add r0, #0x1e + strh r0, [r2, r4] + ldr r0, _02238FA8 ; =0x00007530 + mov r2, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r1, r4 + ldrb r1, [r0, #2] + bl MOD12_0223805C + add sp, #0xc + mov r0, #1 + pop {r3, r4, pc} +_02238F9E: + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02238FA4: .word 0x00000231 +_02238FA8: .word 0x00007530 + + thumb_func_start MOD12_02238FAC +MOD12_02238FAC: ; 0x02238FAC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov ip, r1 + mov r0, #0x2c + add r6, r3, #0 + mul r6, r0 + mov r0, ip + mov r2, #0 + add r4, r1, #0 + add r5, r0, r6 + mov r7, #0x1c +_02238FC2: + cmp r2, r3 + beq _02238FD0 + mov r0, #0x1a + ldrsh r1, [r4, r0] + ldrsh r0, [r5, r7] + cmp r1, r0 + blt _02238FD8 +_02238FD0: + add r2, r2, #1 + add r4, #0x2c + cmp r2, #4 + blt _02238FC2 +_02238FD8: + cmp r2, #4 + beq _02238FE2 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02238FE2: + mov r1, ip + add r1, #0x1e + ldrsh r0, [r1, r6] + mov r2, #0 + add r0, #0x1e + strh r0, [r1, r6] + ldr r0, _02239008 ; =0x00007530 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, ip + add r0, r0, r6 + ldrb r1, [r0, #2] + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02239008: .word 0x00007530 + + thumb_func_start MOD12_0223900C +MOD12_0223900C: ; 0x0223900C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + str r1, [sp, #4] + mov r0, #0x15 + mov r1, #0x32 + bl FUN_02016998 + add r7, r0, #0 + ldr r1, [r6] + ldr r0, _02239060 ; =0x00000127 + ldrb r4, [r1, r0] + cmp r4, #4 + bge _02239056 + ldr r0, [sp, #4] + lsl r1, r4, #1 + add r5, r0, r1 + add r0, #8 + str r0, [sp, #4] +_02239032: + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD12_02239064 + ldr r0, [sp, #4] + add r1, r7, #0 + add r0, r0, r4 + str r0, [sp] + add r0, r6, #0 + add r2, r4, #0 + add r3, r5, #0 + bl MOD12_022390DC + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _02239032 +_02239056: + add r0, r7, #0 + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02239060: .word 0x00000127 + + thumb_func_start MOD12_02239064 +MOD12_02239064: ; 0x02239064 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + add r7, r2, #0 + str r1, [sp] + add r0, r1, #0 + mov r1, #0 + mov r2, #0x32 + bl MI_CpuFill8 + lsl r0, r7, #2 + ldr r5, [sp] + mov r4, #0 + str r0, [sp, #4] +_02239080: + ldr r1, [r6] + ldr r0, [sp, #4] + mov r2, #0 + ldr r0, [r0, r1] + add r1, r4, #0 + add r1, #0x36 + bl FUN_020671BC + strh r0, [r5] + mov r0, #0x23 + lsl r0, r0, #4 + ldrh r2, [r5] + add r0, r6, r0 + add r1, r7, #0 + bl MOD12_02235BEC + cmp r0, #1 + bne _022390BA + ldrh r0, [r5] + mov r1, #0xa + bl FUN_0206AB18 + strb r0, [r5, #0xa] + ldrh r0, [r5] + mov r1, #0xb + bl FUN_0206AB18 + strb r0, [r5, #0xb] + b _022390BE +_022390BA: + mov r0, #0 + strh r0, [r5] +_022390BE: + add r4, r4, #1 + add r5, #0xc + cmp r4, #4 + blt _02239080 + ldr r0, [r6] + add r1, r0, r7 + mov r0, #0x43 + lsl r0, r0, #2 + ldrb r1, [r1, r0] + ldr r0, [sp] + add r0, #0x30 + str r0, [sp] + strb r1, [r0] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_022390DC +MOD12_022390DC: ; 0x022390DC + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + str r0, [sp, #4] + ldr r0, [sp, #0x58] + str r1, [sp, #8] + str r0, [sp, #0x58] + mov r1, #0x23 + ldr r0, [sp, #4] + lsl r1, r1, #4 + add r0, r0, r1 + str r0, [sp, #0x1c] + mov r0, #0 + str r2, [sp, #0xc] + str r3, [sp, #0x10] + str r0, [sp, #0x20] +_022390FA: + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x20] + add r0, r1, r0 + ldrb r1, [r0, #1] + ldr r0, [sp, #0xc] + cmp r0, r1 + beq _02239112 + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #4 + blt _022390FA +_02239112: + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, _022393A4 ; =0x0224574C + str r0, [sp, #0x18] +_0223911A: + ldr r0, [sp, #0x20] + add r1, r0, #1 + ldr r0, [sp, #0x18] + ldrb r0, [r0] + cmp r1, r0 + bne _0223920C + mov r1, #0 + add r2, sp, #0x3c + add r2, #2 + add r0, r1, #0 +_0223912E: + add r1, r1, #1 + strb r0, [r2] + add r2, r2, #1 + cmp r1, #3 + blt _0223912E + ldr r0, [sp, #4] + add r3, sp, #0x3c + ldr r1, [r0] + ldr r0, _022393A8 ; =0x0000011F + ldr r4, [sp, #0x18] + ldrb r0, [r1, r0] + ldr r1, [sp, #0xc] + ldr r2, [sp, #8] + str r0, [sp] + ldrb r4, [r4, #1] + ldr r0, [sp, #0x1c] + add r3, #2 + lsl r5, r4, #2 + ldr r4, _022393AC ; =0x022456D8 + ldr r4, [r4, r5] + blx r4 + cmp r0, #1 + bne _0223920C + ldr r0, [sp, #0x18] + mov r1, #3 + ldrsb r0, [r0, r1] + cmp r0, #0 + beq _02239170 + cmp r0, #2 + beq _02239184 + cmp r0, #3 + beq _02239184 + b _0223919A +_02239170: + mov r2, #0 + add r1, sp, #0x3c + add r1, #2 + add r0, r2, #0 +_02239178: + add r2, r2, #1 + strb r0, [r1] + add r1, r1, #1 + cmp r2, #3 + blt _02239178 + b _0223919A +_02239184: + add r2, sp, #0x3c + mov r3, #0 + add r2, #2 + mov r0, #1 +_0223918C: + ldrb r1, [r2] + add r3, r3, #1 + eor r1, r0 + strb r1, [r2] + add r2, r2, #1 + cmp r3, #3 + blt _0223918C +_0223919A: + ldr r0, [sp, #4] + ldr r1, [r0] + ldr r0, [sp, #0xc] + add r1, r0, r1 + mov r0, #0x43 + lsl r0, r0, #2 + ldrb r2, [r1, r0] + ldr r0, [sp, #0x18] + lsl r1, r2, #1 + add r0, r0, r1 + mov r1, #4 + ldrsh r4, [r0, r1] + cmp r2, #0 + beq _022391BC + ldr r0, [sp, #0x18] + ldrsh r0, [r0, r1] + add r4, r4, r0 +_022391BC: + ldr r0, [sp, #0x18] + ldrb r0, [r0, #2] + cmp r0, #0xf0 + beq _022391CA + cmp r0, #0xf1 + beq _0223920E + b _0223924E +_022391CA: + ldr r0, [sp, #8] + mov r7, #0 + mov r5, #4 +_022391D0: + ldr r1, [sp, #4] + ldr r2, [r1] + ldr r1, _022393A8 ; =0x0000011F + ldrb r2, [r2, r1] + ldrb r1, [r0, #0xb] + cmp r2, r1 + bne _02239204 + mov r1, #2 + ldrsh r1, [r0, r1] + mov r3, #0 + add r2, r0, #0 + add r1, r1, r4 + strh r1, [r0, #2] + add r1, sp, #0x3c + add r1, #2 +_022391EE: + ldrb r6, [r1] + cmp r6, #1 + bne _022391FA + ldrsh r6, [r2, r5] + add r6, r6, r4 + strh r6, [r2, #4] +_022391FA: + add r3, r3, #1 + add r1, r1, #1 + add r2, r2, #2 + cmp r3, #3 + blt _022391EE +_02239204: + add r7, r7, #1 + add r0, #0xc + cmp r7, #4 + blt _022391D0 +_0223920C: + b _0223928C +_0223920E: + ldr r5, [sp, #8] + mov r7, #0 + mov r6, #4 +_02239214: + ldrb r0, [r5, #0xa] + bl FUN_02083114 + cmp r0, #0x14 + blt _02239244 + mov r0, #2 + ldrsh r0, [r5, r0] + mov r2, #0 + add r1, r5, #0 + add r0, r0, r4 + strh r0, [r5, #2] + add r0, sp, #0x3c + add r0, #2 +_0223922E: + ldrb r3, [r0] + cmp r3, #1 + bne _0223923A + ldrsh r3, [r1, r6] + add r3, r3, r4 + strh r3, [r1, #4] +_0223923A: + add r2, r2, #1 + add r0, r0, #1 + add r1, r1, #2 + cmp r2, #3 + blt _0223922E +_02239244: + add r7, r7, #1 + add r5, #0xc + cmp r7, #4 + blt _02239214 + b _0223928C +_0223924E: + ldr r0, [sp, #8] + mov r7, #0 + mov r5, #4 +_02239254: + ldr r1, [sp, #0x18] + ldrb r2, [r1, #2] + ldrb r1, [r0, #0xa] + cmp r2, r1 + bne _02239284 + mov r1, #2 + ldrsh r1, [r0, r1] + mov r3, #0 + add r2, r0, #0 + add r1, r1, r4 + strh r1, [r0, #2] + add r1, sp, #0x3c + add r1, #2 +_0223926E: + ldrb r6, [r1] + cmp r6, #1 + bne _0223927A + ldrsh r6, [r2, r5] + add r6, r6, r4 + strh r6, [r2, #4] +_0223927A: + add r3, r3, #1 + add r1, r1, #1 + add r2, r2, #2 + cmp r3, #3 + blt _0223926E +_02239284: + add r7, r7, #1 + add r0, #0xc + cmp r7, #4 + blt _02239254 +_0223928C: + ldr r0, [sp, #0x18] + add r0, #0xc + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #0xa5 + bge _0223929E + b _0223911A +_0223929E: + add r4, sp, #0x34 + mov r5, #0 + add r4, #2 +_022392A4: + ldr r0, [sp, #4] + ldr r0, [r0] + bl FUN_02082878 + strh r0, [r4] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _022392A4 + mov r5, #0 + add r4, sp, #0x30 +_022392BA: + ldr r0, [sp, #4] + ldr r0, [r0] + bl FUN_02082878 + strh r0, [r4] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #3 + blt _022392BA + ldr r0, [sp, #8] + mov r7, #0 + ldrh r0, [r0] + cmp r0, #0 + bne _022392E2 + ldr r1, [sp, #8] +_022392D8: + add r1, #0xc + ldrh r0, [r1] + add r7, r7, #1 + cmp r0, #0 + beq _022392D8 +_022392E2: + mov r2, #0xc + add r1, r7, #0 + ldr r0, [sp, #8] + mul r1, r2 + add r1, r0, r1 + mov r0, #2 + add r4, r7, #1 + ldrsh r1, [r1, r0] + cmp r4, #4 + bge _02239336 + ldr r0, [sp, #8] + mul r2, r4 + add r2, r0, r2 + add r0, sp, #0x34 + lsl r3, r4, #1 + add r0, #2 + add r3, r0, r3 +_02239304: + ldrh r0, [r2] + cmp r0, #0 + beq _0223932C + mov r0, #2 + ldrsh r0, [r2, r0] + cmp r0, r1 + bgt _02239328 + cmp r0, r1 + bne _0223932C + ldrh r5, [r3] + lsl r6, r7, #1 + str r5, [sp, #0x28] + add r5, sp, #0x34 + add r5, #2 + ldrh r6, [r5, r6] + ldr r5, [sp, #0x28] + cmp r5, r6 + bls _0223932C +_02239328: + add r7, r4, #0 + add r1, r0, #0 +_0223932C: + add r4, r4, #1 + add r2, #0xc + add r3, r3, #2 + cmp r4, #4 + blt _02239304 +_02239336: + ldr r0, [sp, #4] + ldr r5, [r0] + ldr r0, _022393B0 ; =0x00000171 + ldrb r0, [r5, r0] + cmp r0, #0 + bne _022393CA + mov r0, #0xc + add r6, r7, #0 + mul r6, r0 + ldr r0, [sp, #8] + mov r2, #0 + add r4, r0, r6 + add r3, r2, #0 + mov r0, #4 +_02239352: + ldrsh r1, [r4, r0] + cmp r1, #0 + bne _0223935A + add r2, r2, #1 +_0223935A: + add r3, r3, #1 + add r4, r4, #2 + cmp r3, #3 + blt _02239352 + cmp r2, #3 + bne _022393CA + ldr r1, _022393B4 ; =0x022456D4 + add r0, sp, #0x2c + ldrb r2, [r1] + strb r2, [r0] + ldrb r2, [r1, #1] + strb r2, [r0, #1] + ldrb r2, [r1, #2] + ldrb r1, [r1, #3] + strb r2, [r0, #2] + strb r1, [r0, #3] + add r0, r5, #0 + bl FUN_02082878 + ldr r1, [sp, #4] + mov r2, #0x12 + lsl r0, r0, #0x18 + ldr r1, [r1] + lsl r2, r2, #4 + ldrb r4, [r1, r2] + add r3, sp, #0x2c + lsr r0, r0, #0x18 + ldrb r3, [r3, r4] + cmp r0, r3 + bge _022393CA + add r2, r2, #3 + ldrb r2, [r1, r2] + ldr r1, [sp, #4] + ldr r0, [sp, #8] + add r2, r1, r2 + ldr r1, _022393B8 ; =0x0000023E + b _022393BC + .align 2, 0 +_022393A4: .word 0x0224574C +_022393A8: .word 0x0000011F +_022393AC: .word 0x022456D8 +_022393B0: .word 0x00000171 +_022393B4: .word 0x022456D4 +_022393B8: .word 0x0000023E +_022393BC: + add r0, r0, #4 + ldrb r1, [r2, r1] + add r0, r0, r6 + lsl r2, r1, #1 + ldrsh r1, [r0, r2] + sub r1, #0x64 + strh r1, [r0, r2] +_022393CA: + mov r0, #0 + str r0, [sp, #0x24] + mov r0, #0xc + add r1, r7, #0 + mul r1, r0 + ldr r0, [sp, #8] + add r3, sp, #0x30 + add r0, r0, r1 + mov r1, #4 + ldrsh r5, [r0, r1] + mov ip, r0 + mov r4, #1 + add r2, r0, #2 + add r3, #2 +_022393E6: + mov r0, #4 + ldrsh r6, [r2, r0] + cmp r6, r5 + bgt _02239400 + cmp r6, r5 + bne _02239404 + ldr r0, [sp, #0x24] + ldrh r7, [r3] + lsl r1, r0, #1 + add r0, sp, #0x30 + ldrh r0, [r0, r1] + cmp r7, r0 + bls _02239404 +_02239400: + str r4, [sp, #0x24] + add r5, r6, #0 +_02239404: + add r4, r4, #1 + add r2, r2, #2 + add r3, r3, #2 + cmp r4, #3 + blt _022393E6 + mov r0, ip + ldrh r1, [r0] + ldr r0, [sp, #0x10] + strh r1, [r0] + ldr r1, [sp, #0x58] + ldr r0, [sp, #0x24] + strb r0, [r1] + ldr r0, [sp, #0x10] + ldrh r0, [r0] + cmp r0, #0 + bne _02239428 + bl ErrorHandling +_02239428: + ldr r0, [sp, #0x58] + ldrb r0, [r0] + cmp r0, #3 + blo _02239434 + bl ErrorHandling +_02239434: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02239438 +MOD12_02239438: ; 0x02239438 + ldrb r0, [r0] + cmp r0, #4 + bne _02239442 + mov r0, #1 + bx lr +_02239442: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02239448 +MOD12_02239448: ; 0x02239448 + lsl r1, r1, #2 + add r0, r0, r1 + add r0, #0xe0 + ldr r0, [r0] + lsl r0, r0, #8 + lsr r0, r0, #0x18 + beq _0223945A + mov r0, #1 + bx lr +_0223945A: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02239460 +MOD12_02239460: ; 0x02239460 + mov r1, #0 +_02239462: + ldrb r0, [r2, #0xa] + cmp r0, #5 + bne _0223946C + mov r0, #1 + bx lr +_0223946C: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _02239462 + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239478 +MOD12_02239478: ; 0x02239478 + mov r1, #0 +_0223947A: + ldrb r0, [r2, #0xa] + cmp r0, #9 + bne _02239484 + mov r0, #1 + bx lr +_02239484: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _0223947A + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239490 +MOD12_02239490: ; 0x02239490 + mov r1, #0 +_02239492: + ldrb r0, [r2, #0xa] + cmp r0, #0xc + bne _0223949C + mov r0, #1 + bx lr +_0223949C: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _02239492 + mov r0, #0 + bx lr + + thumb_func_start MOD12_022394A8 +MOD12_022394A8: ; 0x022394A8 + mov r1, #0 +_022394AA: + ldrb r0, [r2, #0xa] + cmp r0, #0xf + bne _022394B4 + mov r0, #1 + bx lr +_022394B4: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _022394AA + mov r0, #0 + bx lr + + thumb_func_start MOD12_022394C0 +MOD12_022394C0: ; 0x022394C0 + mov r1, #0 +_022394C2: + ldrb r0, [r2, #0xa] + cmp r0, #0x11 + bne _022394CC + mov r0, #1 + bx lr +_022394CC: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _022394C2 + mov r0, #0 + bx lr + + thumb_func_start MOD12_022394D8 +MOD12_022394D8: ; 0x022394D8 + mov r1, #0 +_022394DA: + ldrb r0, [r2, #0xa] + cmp r0, #0x12 + bne _022394E4 + mov r0, #1 + bx lr +_022394E4: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _022394DA + mov r0, #0 + bx lr + + thumb_func_start MOD12_022394F0 +MOD12_022394F0: ; 0x022394F0 + mov r1, #0 +_022394F2: + ldrb r0, [r2, #0xa] + cmp r0, #0x13 + bne _022394FC + mov r0, #1 + bx lr +_022394FC: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _022394F2 + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239508 +MOD12_02239508: ; 0x02239508 + mov r1, #0 +_0223950A: + ldrb r0, [r2, #0xa] + cmp r0, #0x14 + bne _02239514 + mov r0, #1 + bx lr +_02239514: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _0223950A + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239520 +MOD12_02239520: ; 0x02239520 + mov r1, #0 +_02239522: + ldrb r0, [r2, #0xa] + cmp r0, #0x15 + bne _0223952C + mov r0, #1 + bx lr +_0223952C: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _02239522 + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239538 +MOD12_02239538: ; 0x02239538 + push {r3, r4} + lsl r1, r1, #1 + add r2, r0, r1 + mov r1, #0x12 + ldrsh r3, [r2, r1] + mov r4, #0 +_02239544: + ldrsh r2, [r0, r1] + cmp r3, r2 + bgt _02239552 + add r4, r4, #1 + add r0, r0, #2 + cmp r4, #4 + blt _02239544 +_02239552: + cmp r4, #4 + bne _0223955C + mov r0, #1 + pop {r3, r4} + bx lr +_0223955C: + mov r0, #0 + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD12_02239564 +MOD12_02239564: ; 0x02239564 + push {r3, r4} + ldrb r2, [r0] + cmp r2, #4 + bne _0223958E + lsl r1, r1, #1 + add r2, r0, r1 + mov r1, #0x12 + ldrsh r3, [r2, r1] + mov r4, #0 +_02239576: + ldrsh r2, [r0, r1] + cmp r3, r2 + bgt _02239584 + add r4, r4, #1 + add r0, r0, #2 + cmp r4, #4 + blt _02239576 +_02239584: + cmp r4, #4 + bne _0223958E + mov r0, #1 + pop {r3, r4} + bx lr +_0223958E: + mov r0, #0 + pop {r3, r4} + bx lr + + thumb_func_start MOD12_02239594 +MOD12_02239594: ; 0x02239594 + ldr r3, [sp] + mov r1, #0 +_02239598: + ldrb r0, [r2, #0xa] + cmp r0, #4 + bne _022395A8 + ldrb r0, [r2, #0xb] + cmp r3, r0 + bne _022395A8 + mov r0, #1 + bx lr +_022395A8: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _02239598 + mov r0, #0 + bx lr + + thumb_func_start MOD12_022395B4 +MOD12_022395B4: ; 0x022395B4 + ldr r3, [sp] + mov r1, #0 +_022395B8: + ldrb r0, [r2, #0xb] + cmp r3, r0 + bne _022395C2 + mov r0, #1 + bx lr +_022395C2: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _022395B8 + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD12_022395D0 +MOD12_022395D0: ; 0x022395D0 + push {r3, r4, r5, r6} + ldr r5, [sp, #0x10] + mov r4, #0 +_022395D6: + ldrb r1, [r2, #0xb] + cmp r5, r1 + beq _022395E4 + add r4, r4, #1 + add r2, #0xc + cmp r4, #4 + blt _022395D6 +_022395E4: + cmp r4, #4 + bne _022395EE + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr +_022395EE: + mov r5, #0 + add r6, r5, #0 + mov r2, #1 + mov r1, #0x22 +_022395F6: + add r4, r0, r6 + ldrsb r4, [r4, r1] + cmp r4, #0x28 + bne _02239602 + strb r2, [r3, r6] + add r5, r5, #1 +_02239602: + add r6, r6, #1 + cmp r6, #3 + blt _022395F6 + cmp r5, #0 + ble _02239612 + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_02239612: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_02239618 +MOD12_02239618: ; 0x02239618 + push {r3, r4, r5, r6} + ldr r5, [sp, #0x10] + mov r4, #0 +_0223961E: + ldrb r1, [r2, #0xb] + cmp r5, r1 + beq _0223962C + add r4, r4, #1 + add r2, #0xc + cmp r4, #4 + blt _0223961E +_0223962C: + cmp r4, #4 + bne _02239636 + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr +_02239636: + mov r5, #0 + add r6, r5, #0 + mov r2, #1 + mov r1, #0x22 +_0223963E: + add r4, r0, r6 + ldrsb r4, [r4, r1] + cmp r4, #0x1e + bne _0223964A + add r5, r5, #1 + strb r2, [r3, r6] +_0223964A: + add r6, r6, #1 + cmp r6, #3 + blt _0223963E + cmp r5, #0 + ble _0223965A + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_0223965A: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_02239660 +MOD12_02239660: ; 0x02239660 + mov r1, #0 +_02239662: + ldrb r0, [r2, #0xa] + cmp r0, #8 + bne _0223966C + mov r0, #1 + bx lr +_0223966C: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _02239662 + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239678 +MOD12_02239678: ; 0x02239678 + mov r1, #0 +_0223967A: + ldrb r0, [r2, #0xa] + cmp r0, #0xd + bne _02239684 + mov r0, #1 + bx lr +_02239684: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _0223967A + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239690 +MOD12_02239690: ; 0x02239690 + push {r3, r4, r5, r6} + mov r6, #0 + add r5, r6, #0 + mov r2, #1 + mov r1, #0x22 +_0223969A: + add r4, r0, r5 + ldrsb r4, [r4, r1] + cmp r4, #0x28 + bne _022396A6 + add r6, r6, #1 + strb r2, [r3, r5] +_022396A6: + add r5, r5, #1 + cmp r5, #3 + blt _0223969A + cmp r6, #0 + ble _022396B6 + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_022396B6: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_022396BC +MOD12_022396BC: ; 0x022396BC + push {r3, r4, r5, r6} + mov r6, #0 + add r5, r6, #0 + mov r2, #1 + mov r1, #0x22 +_022396C6: + add r4, r0, r5 + ldrsb r4, [r4, r1] + cmp r4, #0x1e + bne _022396D2 + add r6, r6, #1 + strb r2, [r3, r5] +_022396D2: + add r5, r5, #1 + cmp r5, #3 + blt _022396C6 + cmp r6, #0 + ble _022396E2 + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_022396E2: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_022396E8 +MOD12_022396E8: ; 0x022396E8 + push {r3, r4, r5, r6} + mov r6, #0 + add r5, r6, #0 + mov r2, #1 + mov r1, #0x22 +_022396F2: + add r4, r0, r5 + ldrsb r4, [r4, r1] + cmp r4, #0xa + bgt _022396FE + add r6, r6, #1 + strb r2, [r3, r5] +_022396FE: + add r5, r5, #1 + cmp r5, #3 + blt _022396F2 + cmp r6, #0 + ble _0223970E + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_0223970E: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_02239714 +MOD12_02239714: ; 0x02239714 + push {r3, r4} + mov r4, #0 + mov r1, #0x22 +_0223971A: + add r2, r0, r4 + ldrsb r2, [r2, r1] + cmp r2, #0x14 + bge _02239728 + mov r0, #0 + pop {r3, r4} + bx lr +_02239728: + add r4, r4, #1 + cmp r4, #3 + blt _0223971A + mov r1, #0 + mov r0, #1 +_02239732: + strb r0, [r3, r1] + add r1, r1, #1 + cmp r1, #3 + blt _02239732 + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD12_02239740 +MOD12_02239740: ; 0x02239740 + push {r3, r4} + mov r4, #0 + mov r1, #0x22 +_02239746: + add r2, r0, r4 + ldrsb r2, [r2, r1] + cmp r2, #0x14 + ble _02239754 + mov r0, #0 + pop {r3, r4} + bx lr +_02239754: + add r4, r4, #1 + cmp r4, #3 + blt _02239746 + mov r1, #0 + mov r0, #1 +_0223975E: + strb r0, [r3, r1] + add r1, r1, #1 + cmp r1, #3 + blt _0223975E + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223976C +MOD12_0223976C: ; 0x0223976C + push {r3, r4, r5, r6} + mov r6, #0 + add r5, r6, #0 + mov r2, #1 + mov r1, #0x22 +_02239776: + add r4, r0, r5 + ldrsb r4, [r4, r1] + cmp r4, #0x14 + bgt _02239782 + strb r2, [r3, r5] + add r6, r6, #1 +_02239782: + add r5, r5, #1 + cmp r5, #3 + blt _02239776 + cmp r6, #1 + bne _02239792 + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_02239792: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_02239798 +MOD12_02239798: ; 0x02239798 + push {r3, r4, r5, r6} + mov r6, #0 + add r5, r6, #0 + mov r2, #1 + mov r1, #0x22 +_022397A2: + add r4, r0, r5 + ldrsb r4, [r4, r1] + cmp r4, #0x28 + bne _022397AE + strb r2, [r3, r5] + add r6, r6, #1 +_022397AE: + add r5, r5, #1 + cmp r5, #3 + blt _022397A2 + cmp r6, #2 + bne _022397BE + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_022397BE: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_022397C4 +MOD12_022397C4: ; 0x022397C4 + push {r3, r4, r5, r6} + mov r6, #0 + add r5, r6, #0 + mov r2, #1 + mov r1, #0x22 +_022397CE: + add r4, r0, r5 + ldrsb r4, [r4, r1] + cmp r4, #0 + bne _022397DA + strb r2, [r3, r5] + add r6, r6, #1 +_022397DA: + add r5, r5, #1 + cmp r5, #3 + blt _022397CE + cmp r6, #1 + bne _022397EA + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_022397EA: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_022397F0 +MOD12_022397F0: ; 0x022397F0 + push {r3, r4, r5, r6} + ldr r5, [sp, #0x10] + mov r4, #0 +_022397F6: + ldrb r1, [r2, #0xb] + cmp r5, r1 + beq _02239804 + add r4, r4, #1 + add r2, #0xc + cmp r4, #4 + blt _022397F6 +_02239804: + cmp r4, #4 + bne _0223980E + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr +_0223980E: + mov r5, #0 + add r6, r5, #0 + mov r2, #1 + mov r1, #0x22 +_02239816: + add r4, r0, r6 + ldrsb r4, [r4, r1] + cmp r4, #0x28 + bne _02239822 + strb r2, [r3, r6] + add r5, r5, #1 +_02239822: + add r6, r6, #1 + cmp r6, #3 + blt _02239816 + cmp r5, #0 + ble _02239832 + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_02239832: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_02239838 +MOD12_02239838: ; 0x02239838 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #8] + cmp r0, #0 + bne _02239858 + lsl r0, r4, #4 + add r0, r5, r0 + ldr r0, [r0, #0x48] + cmp r0, #0 + beq _02239872 + bl ErrorHandling + pop {r3, r4, r5, r6, r7, pc} +_02239858: + bl FUN_02007534 + add r6, r5, #0 + add r6, #0x48 + lsl r7, r4, #4 + ldr r0, [r6, r7] + bl FUN_02016A18 + lsl r0, r4, #2 + mov r1, #0 + add r0, r5, r0 + str r1, [r0, #8] + str r1, [r6, r7] +_02239872: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02239874 +MOD12_02239874: ; 0x02239874 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_0223987A: + add r0, r5, #0 + add r1, r4, #0 + bl MOD12_02239838 + add r4, r4, #1 + cmp r4, #4 + blt _0223987A + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223988C +MOD12_0223988C: ; 0x0223988C + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + mov r2, #2 + str r2, [sp, #4] + ldr r2, _022398D4 ; =0x000080EA + mov r3, #0x43 + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _022398D4 ; =0x000080EA + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x44 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _022398D4 ; =0x000080EA + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x45 + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_022398D4: .word 0x000080EA + + thumb_func_start MOD12_022398D8 +MOD12_022398D8: ; 0x022398D8 + push {r4, lr} + ldr r1, _022398F4 ; =0x000080EA + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _022398F4 ; =0x000080EA + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _022398F4 ; =0x000080EA + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_022398F4: .word 0x000080EA + + thumb_func_start MOD12_022398F8 +MOD12_022398F8: ; 0x022398F8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x16 + mov r1, #0x18 + add r7, r2, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x18 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + ldr r2, _0223996C ; =0x02245F14 + bl FUN_0200C154 + lsl r1, r6, #0x10 + lsl r2, r7, #0x10 + mov r3, #1 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + str r0, [r4, #4] + bl FUN_0200C750 + ldr r0, [sp, #0x18] + cmp r0, #1 + bne _0223993C + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_0200C5C0 +_0223993C: + ldr r0, [r4, #4] + ldr r0, [r0] + bl FUN_0200C59C + lsl r0, r6, #8 + str r0, [r4, #8] + lsl r0, r7, #8 + str r0, [r4, #0xc] + ldr r0, _02239970 ; =0x000004F9 + ldr r2, _02239974 ; =0x0000C350 + add r1, r5, r0 + str r1, [r4] + ldrb r0, [r1] + add r0, r0, #1 + strb r0, [r1] + ldr r0, _02239978 ; =MOD12_02239980 + add r1, r4, #0 + bl FUN_0200CA44 + ldr r0, _0223997C ; =0x000006E1 + bl FUN_020054C8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223996C: .word 0x02245F14 +_02239970: .word 0x000004F9 +_02239974: .word 0x0000C350 +_02239978: .word MOD12_02239980 +_0223997C: .word 0x000006E1 + + thumb_func_start MOD12_02239980 +MOD12_02239980: ; 0x02239980 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x14] + cmp r0, #0 + bne _022399EE + ldr r0, [r4, #0x10] + bl FUN_0201B9B8 + lsl r1, r0, #3 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r5, r0, #0xc + mov r0, #6 + mov r3, #1 + ldr r1, [r4, #0x10] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [r4, #0x10] + ldr r0, [r4, #0xc] + lsl r3, r3, #8 + sub r2, r0, r3 + str r2, [r4, #0xc] + ldr r1, [r4, #8] + ldr r0, [r4, #4] + asr r6, r1, #7 + lsr r6, r6, #0x18 + add r6, r1, r6 + asr r1, r6, #8 + add r1, r1, r5 + asr r5, r2, #7 + lsr r5, r5, #0x18 + add r5, r2, r5 + lsl r1, r1, #0x10 + lsl r2, r5, #8 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0xc + bl FUN_0200C750 + ldrh r0, [r4, #0x16] + add r0, r0, #1 + strh r0, [r4, #0x16] + ldrh r0, [r4, #0x16] + cmp r0, #0x3c + bhs _022399E6 + ldr r1, [r4, #0xc] + ldr r0, _02239A0C ; =0xFFFFE000 + cmp r1, r0 + bgt _02239A08 +_022399E6: + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_022399EE: + ldr r0, [r4, #4] + bl FUN_0200C3DC + ldr r1, [r4] + ldrb r0, [r1] + sub r0, r0, #1 + strb r0, [r1] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02239A08: + pop {r4, r5, r6, pc} + nop +_02239A0C: .word 0xFFFFE000 + + thumb_func_start MOD12_02239A10 +MOD12_02239A10: ; 0x02239A10 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + ldr r0, [r5, #0x24] + add r4, r1, #0 + cmp r0, #0 + beq _02239A22 + bl ErrorHandling +_02239A22: + mov r1, #0x30 + ldr r2, [r5] + mul r1, r4 + add r1, r2, r1 + ldrh r1, [r1, #0x1a] + add r0, sp, #0x10 + bl FUN_020690AC + ldr r0, _02239A54 ; =0xFFFFFDC0 + mov r2, #5 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r5, #0x10] + add r1, sp, #0x10 + lsl r2, r2, #6 + mov r3, #0x20 + bl FUN_020073A0 + str r0, [r5, #0x24] + add sp, #0x20 + pop {r3, r4, r5, pc} + .align 2, 0 +_02239A54: .word 0xFFFFFDC0 + + thumb_func_start MOD12_02239A58 +MOD12_02239A58: ; 0x02239A58 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _02239A6A + bl FUN_02007534 + mov r0, #0 + str r0, [r4, #0x24] +_02239A6A: + pop {r4, pc} + + thumb_func_start MOD12_02239A6C +MOD12_02239A6C: ; 0x02239A6C + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + cmp r4, #0 + beq _02239A82 + cmp r6, #0 + bne _02239A82 + bl ErrorHandling +_02239A82: + cmp r4, #0 + beq _02239ACC + cmp r4, #1 + bne _02239AC8 + ldrb r4, [r6] + ldr r3, [r5] + mov r0, #1 + lsl r2, r4, #2 + str r0, [sp] + mov r0, #2 + add r2, r3, r2 + add r4, r3, r4 + mov r3, #0x42 + str r0, [sp, #4] + lsl r3, r3, #2 + add r2, #0xe8 + ldrb r3, [r4, r3] + ldr r0, [r5, #0x48] + ldr r2, [r2] + mov r1, #0 + bl FUN_0200ABB4 + ldrb r0, [r6] + ldr r1, [r5, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r5, #0x48] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r4, r5, r6, pc} +_02239AC8: + bl ErrorHandling +_02239ACC: + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02239AD0 +MOD12_02239AD0: ; 0x02239AD0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + ldr r1, [r5] + ldr r0, _02239B40 ; =0x00000171 + add r7, r2, #0 + ldrb r0, [r1, r0] + str r3, [sp, #0xc] + cmp r0, #0 + bne _02239AF2 + ldr r0, _02239B44 ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02024FF4 + add r4, r0, #0 + b _02239AF4 +_02239AF2: + mov r4, #1 +_02239AF4: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_0200A914 + add r6, r0, #0 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x28] + add r0, r5, #0 + bl MOD12_02239A6C + ldr r0, [r5, #0x48] + ldr r1, [r5, #0x4c] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + add r0, #0x34 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + str r3, [sp, #8] + add r0, r5, #0 + ldr r2, [r5, #0x4c] + add r0, #0x34 + mov r1, #1 + bl FUN_0201BD84 + add r5, #0xd0 + strb r0, [r5] + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02239B40: .word 0x00000171 +_02239B44: .word 0x00001988 + + thumb_func_start MOD12_02239B48 +MOD12_02239B48: ; 0x02239B48 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r1, #0 + add r6, r0, #0 + add r4, r2, #0 + cmp r5, #0xf + blo _02239B5A + bl ErrorHandling +_02239B5A: + str r4, [sp] + ldr r2, _02239B74 ; =0x02245F48 + lsl r3, r5, #2 + ldr r4, _02239B78 ; =0x02245F4A + ldrh r2, [r2, r3] + ldrb r3, [r4, r3] + ldr r1, [r6, #0x44] + add r0, r6, #0 + bl MOD12_02239AD0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_02239B74: .word 0x02245F48 +_02239B78: .word 0x02245F4A + + thumb_func_start MOD12_02239B7C +MOD12_02239B7C: ; 0x02239B7C + ldr r3, _02239B84 ; =0x0201BD71 + add r0, #0xd0 + ldrb r0, [r0] + bx r3 + .align 2, 0 +_02239B84: .word 0x0201BD71 + + thumb_func_start MOD12_02239B88 +MOD12_02239B88: ; 0x02239B88 + push {r3, r4, lr} + sub sp, #0xc + ldr r1, _02239BBC ; =0x02245FA4 + add r3, sp, #0 + str r1, [sp] + mov r1, #0x11 + strh r1, [r3, #4] + ldr r1, [r0] + ldr r2, _02239BC0 ; =0x00000123 + ldrb r1, [r1, r2] + strb r1, [r3, #6] + sub r1, r2, #7 + ldr r4, [r0] + add r2, #0x4e + ldrb r1, [r4, r1] + strb r1, [r3, #8] + ldr r1, [r0] + ldrb r1, [r1, r2] + strb r1, [r3, #7] + ldr r1, _02239BC4 ; =0x000004FC + add r0, r0, r1 + add r1, sp, #0 + bl MOD12_02240ED0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02239BBC: .word 0x02245FA4 +_02239BC0: .word 0x00000123 +_02239BC4: .word 0x000004FC + + thumb_func_start MOD12_02239BC8 +MOD12_02239BC8: ; 0x02239BC8 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02239BDC +MOD12_02239BDC: ; 0x02239BDC + push {r3, lr} + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02239BEC +MOD12_02239BEC: ; 0x02239BEC + bx lr + .align 2, 0 + + thumb_func_start MOD12_02239BF0 +MOD12_02239BF0: ; 0x02239BF0 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02239C04 +MOD12_02239C04: ; 0x02239C04 + push {r4, lr} + ldr r3, _02239C18 ; =0x00000F1C + mov r4, #1 + strb r4, [r1, r3] + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r4, pc} + .align 2, 0 +_02239C18: .word 0x00000F1C + + thumb_func_start MOD12_02239C1C +MOD12_02239C1C: ; 0x02239C1C + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02239C30 +MOD12_02239C30: ; 0x02239C30 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #0x10] + add r6, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + mov r5, #0 + strh r0, [r4, #0xa] + ldr r0, [sp, #0x10] + str r0, [r4, #0xc] + ldrb r0, [r7] + strb r0, [r4, #0x11] + b _02239C90 +_02239C6C: + ldr r1, [r4] + lsl r0, r5, #4 + add r1, r1, r0 + mov r0, #0xf2 + lsl r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02239C8E + bl FUN_021DD540 + ldr r1, [r4] + lsl r0, r5, #4 + add r2, r1, r0 + mov r0, #0xf2 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r2, r0] +_02239C8E: + add r5, r5, #1 +_02239C90: + cmp r5, #4 + blt _02239C6C + ldrb r0, [r7] + ldr r1, [r6, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + add r0, sp, #0x14 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + mov r0, #0x16 + str r0, [sp, #0x20] + mov r1, #0x80 + mov r0, #0x68 + str r1, [sp, #0x18] + str r0, [sp, #0x1c] + ldrb r2, [r7] + lsl r2, r2, #4 + add r3, r6, r2 + ldr r2, _02239D74 ; =0x00000F24 + str r1, [r3, r2] + ldrb r1, [r7] + lsl r1, r1, #4 + add r3, r6, r1 + add r1, r2, #4 + str r0, [r3, r1] + ldrb r1, [r7] + ldr r2, [r6] + add r0, sp, #0x14 + lsl r1, r1, #2 + add r1, r2, r1 + add r1, #0xf8 + ldr r1, [r1] + bl FUN_021DD4F4 + ldrb r1, [r7] + lsl r1, r1, #4 + add r2, r6, r1 + mov r1, #0xf2 + lsl r1, r1, #4 + str r0, [r2, r1] + ldrb r0, [r7] + lsl r0, r0, #4 + add r0, r6, r0 + ldr r0, [r0, r1] + mov r1, #0 + bl FUN_021DD594 + ldr r0, _02239D78 ; =0x04000048 + mov r2, #0x3f + ldrh r1, [r0] + mov r3, #0x1f + bic r1, r2 + add r5, r1, #0 + orr r5, r3 + mov r1, #0x20 + orr r1, r5 + strh r1, [r0] + ldrh r1, [r0, #2] + bic r1, r2 + orr r1, r3 + strh r1, [r0, #2] + mov r1, #1 + add r2, r1, #0 + add r0, #8 + sub r2, #0x11 + bl G2x_SetBlendBrightness_ + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _02239D7C ; =0xFFFF1FFF + mov r3, #0xff + and r1, r0 + lsr r0, r2, #0xd + orr r0, r1 + mov r1, #0xf6 + str r0, [r2] + lsl r1, r1, #4 + mov r0, #0 + strb r0, [r6, r1] + add r2, r1, #1 + strb r0, [r6, r2] + add r2, r1, #2 + strb r3, [r6, r2] + ldr r2, _02239D80 ; =0x02245F84 + add r1, r1, #3 + ldrsb r2, [r2, r0] + mov r3, #2 + add r2, r2, #4 + lsl r2, r2, #3 + strb r2, [r6, r1] + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x16 + str r0, [sp, #0xc] + ldr r2, [r6, #0x30] + mov r0, #0x2d + mov r1, #0x14 + bl FUN_020068C8 + ldr r0, _02239D84 ; =MOD12_02239D8C + ldr r2, _02239D88 ; =0x00007530 + add r1, r4, #0 + bl FUN_0200CA44 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02239D74: .word 0x00000F24 +_02239D78: .word 0x04000048 +_02239D7C: .word 0xFFFF1FFF +_02239D80: .word 0x02245F84 +_02239D84: .word MOD12_02239D8C +_02239D88: .word 0x00007530 + + thumb_func_start MOD12_02239D8C +MOD12_02239D8C: ; 0x02239D8C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #4 + bhi _02239E6E + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02239DA4: ; jump table + .short _02239DAE - _02239DA4 - 2 ; case 0 + .short _02239DB4 - _02239DA4 - 2 ; case 1 + .short _02239E0E - _02239DA4 - 2 ; case 2 + .short _02239E14 - _02239DA4 - 2 ; case 3 + .short _02239E54 - _02239DA4 - 2 ; case 4 +_02239DAE: + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02239DB4: + ldr r1, _02239E88 ; =0x04000048 + mov r0, #0x3f + ldrh r2, [r1] + bic r2, r0 + mov r0, #0x1e + orr r2, r0 + mov r0, #0x20 + orr r0, r2 + strh r0, [r1] + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0x11] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + add r3, r0, #0 + ldrb r0, [r4, #0x11] + mov r2, #0xf2 + lsl r2, r2, #4 + lsl r1, r0, #4 + ldr r0, [r4] + add r5, r0, r1 + add r1, r2, #4 + ldr r0, [r5, r2] + add r2, #8 + ldr r1, [r5, r1] + ldr r2, [r5, r2] + bl FUN_021DD678 + ldrb r0, [r4, #0x11] + ldr r1, [r4] + lsl r0, r0, #4 + add r1, r1, r0 + mov r0, #0xf2 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_021DD594 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02239E0E: + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02239E14: + ldr r1, _02239E88 ; =0x04000048 + mov r0, #0x3f + ldrh r2, [r1] + bic r2, r0 + mov r0, #0x1f + orr r2, r0 + mov r0, #0x20 + orr r0, r2 + strh r0, [r1] + mov r1, #0 + str r1, [sp] + ldr r0, [r4] + ldr r2, _02239E8C ; =0x00001FFF + ldr r0, [r0, #0x50] + add r3, r1, #0 + bl FUN_02003A64 + mov r3, #0 + str r3, [sp] + ldr r0, [r4] + ldr r2, _02239E90 ; =0x00003FFF + ldr r0, [r0, #0x50] + mov r1, #2 + bl FUN_02003A64 + ldr r0, _02239E94 ; =0x000006EC + bl FUN_020054C8 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02239E54: + mov r0, #0x12 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x12] + ldrsh r0, [r4, r0] + cmp r0, #0xa + ble _02239E86 + mov r0, #0 + strh r0, [r4, #0x12] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02239E6E: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02239E86: + pop {r3, r4, r5, pc} + .align 2, 0 +_02239E88: .word 0x04000048 +_02239E8C: .word 0x00001FFF +_02239E90: .word 0x00003FFF +_02239E94: .word 0x000006EC + + thumb_func_start MOD12_02239E98 +MOD12_02239E98: ; 0x02239E98 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02239EAC +MOD12_02239EAC: ; 0x02239EAC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02239EF0 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0] + strb r0, [r4, #0x11] + ldr r0, _02239EF4 ; =MOD12_02239EF8 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02239EF0: .word 0x00007530 +_02239EF4: .word MOD12_02239EF8 + + thumb_func_start MOD12_02239EF8 +MOD12_02239EF8: ; 0x02239EF8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _02239F0A + cmp r0, #1 + beq _02239F3A + b _02239F8E +_02239F0A: + ldrb r0, [r4, #0x11] + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #0 + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #0x14] + ldrb r0, [r4, #0x11] + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #1 + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #0x18] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02239F3A: + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0x11] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + mov r0, #1 + ldr r1, [r4, #0x18] + lsl r0, r0, #8 + add r2, r1, r0 + lsl r1, r0, #6 + str r2, [r4, #0x18] + cmp r2, r1 + blt _02239F64 + lsl r0, r0, #6 + str r0, [r4, #0x18] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_02239F64: + ldrb r0, [r4, #0x11] + ldr r2, [r4, #0x14] + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldrb r0, [r4, #0x11] + ldr r2, [r4, #0x18] + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_02239F8E: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_02239FA8 +MOD12_02239FA8: ; 0x02239FA8 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02239FBC +MOD12_02239FBC: ; 0x02239FBC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A004 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0, #1] + strb r0, [r4, #0x12] + mov r0, #0 + strb r0, [r4, #0x1a] + ldr r0, _0223A008 ; =MOD12_0223A0BC + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A004: .word 0x00007530 +_0223A008: .word MOD12_0223A0BC + + thumb_func_start MOD12_0223A00C +MOD12_0223A00C: ; 0x0223A00C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A054 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0, #2] + strb r0, [r4, #0x12] + mov r0, #1 + strb r0, [r4, #0x1a] + ldr r0, _0223A058 ; =MOD12_0223A0BC + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A054: .word 0x00007530 +_0223A058: .word MOD12_0223A0BC + + thumb_func_start MOD12_0223A05C +MOD12_0223A05C: ; 0x0223A05C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x1c + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _0223A0B4 ; =0x00007530 + str r0, [r4] + ldrh r0, [r5] + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] + ldrb r1, [r6, #1] + ldrb r0, [r6, #2] + add r0, r1, r0 + strb r0, [r4, #0x12] + ldrb r0, [r6, #1] + add r1, r4, #0 + strb r0, [r4, #0x14] + ldrb r0, [r6, #2] + strb r0, [r4, #0x15] + mov r0, #0 + strb r0, [r4, #0x1a] + mov r0, #1 + strb r0, [r4, #0x1b] + ldr r0, _0223A0B8 ; =MOD12_0223A0BC + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A0B4: .word 0x00007530 +_0223A0B8: .word MOD12_0223A0BC + + thumb_func_start MOD12_0223A0BC +MOD12_0223A0BC: ; 0x0223A0BC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + add r4, r0, #0 + ldrb r0, [r5, #0x10] + cmp r0, #0 + beq _0223A0D6 + cmp r0, #1 + beq _0223A0E6 + cmp r0, #2 + bne _0223A0D4 + b _0223A22E +_0223A0D4: + b _0223A248 +_0223A0D6: + ldr r0, _0223A264 ; =0x000006E5 + bl FUN_020054C8 + mov r0, #0xf + strb r0, [r5, #0x11] + ldrb r0, [r5, #0x10] + add r0, r0, #1 + strb r0, [r5, #0x10] +_0223A0E6: + ldrb r1, [r5, #0x13] + ldrb r0, [r5, #0x12] + cmp r1, r0 + blo _0223A102 + mov r0, #0 + strb r0, [r5, #0x11] + ldr r0, _0223A264 ; =0x000006E5 + bl FUN_020054C8 + ldrb r0, [r5, #0x10] + add sp, #8 + add r0, r0, #1 + strb r0, [r5, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223A102: + ldrb r0, [r5, #0x1b] + cmp r0, #1 + bne _0223A112 + ldrb r0, [r5, #0x14] + cmp r1, r0 + blo _0223A112 + mov r0, #1 + strb r0, [r5, #0x1a] +_0223A112: + ldrb r0, [r5, #0x11] + cmp r0, #0 + beq _0223A120 + sub r0, r0, #1 + add sp, #8 + strb r0, [r5, #0x11] + pop {r3, r4, r5, r6, r7, pc} +_0223A120: + mov r0, #3 + strb r0, [r5, #0x11] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02082878 + mov r1, #0x60 + bl _s32_div_f + lsl r0, r1, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02082878 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1a + sub r1, r1, r2 + mov r0, #0x1a + ror r1, r0 + add r0, r2, r1 + lsl r0, r0, #0x10 + asr r7, r0, #0x10 + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02082878 + mov r1, #1 + tst r0, r1 + beq _0223A164 + ldr r0, [sp, #4] + add r0, #0x80 + b _0223A16A +_0223A164: + ldr r0, [sp, #4] + mov r1, #0x80 + sub r0, r1, r0 +_0223A16A: + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02082878 + mov r1, #1 + tst r0, r1 + beq _0223A182 + add r0, r7, #0 + add r0, #0x60 + b _0223A186 +_0223A182: + mov r0, #0x60 + sub r0, r0, r7 +_0223A186: + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + ldrb r0, [r5, #0x13] + cmp r0, #0 + beq _0223A1F6 + mov r0, #0x16 + ldrsh r0, [r5, r0] + cmp r0, #0x80 + bge _0223A19C + cmp r6, #0x80 + blt _0223A1A4 +_0223A19C: + cmp r0, #0x80 + ble _0223A1F6 + cmp r6, #0x80 + ble _0223A1F6 +_0223A1A4: + mov r0, #0x18 + ldrsh r0, [r5, r0] + cmp r0, #0x60 + bge _0223A1B0 + cmp r4, #0x60 + blt _0223A1B8 +_0223A1B0: + cmp r0, #0x60 + ble _0223A1F6 + cmp r4, #0x60 + ble _0223A1F6 +_0223A1B8: + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02082878 + mov r1, #1 + tst r0, r1 + beq _0223A1E2 + cmp r6, #0x80 + bge _0223A1D6 + ldr r0, [sp, #4] + add r0, #0x80 + str r0, [sp, #4] + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + b _0223A1F6 +_0223A1D6: + ldr r0, [sp, #4] + mov r1, #0x80 + sub r0, r1, r0 + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + b _0223A1F6 +_0223A1E2: + cmp r4, #0x60 + bge _0223A1EE + add r7, #0x60 + lsl r0, r7, #0x10 + asr r4, r0, #0x10 + b _0223A1F6 +_0223A1EE: + mov r0, #0x60 + sub r0, r0, r7 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 +_0223A1F6: + ldrb r1, [r5, #0x13] + mov r0, #1 + tst r0, r1 + ldrb r0, [r5, #0x1a] + beq _0223A212 + str r0, [sp] + mov r3, #0x2d + ldr r0, [r5] + add r1, r6, #0 + add r2, r4, #0 + lsl r3, r3, #0xe + bl MOD12_022398F8 + b _0223A220 +_0223A212: + str r0, [sp] + ldr r0, [r5] + add r1, r6, #0 + add r2, r4, #0 + mov r3, #0 + bl MOD12_022398F8 +_0223A220: + strh r6, [r5, #0x16] + strh r4, [r5, #0x18] + ldrb r0, [r5, #0x13] + add sp, #8 + add r0, r0, #1 + strb r0, [r5, #0x13] + pop {r3, r4, r5, r6, r7, pc} +_0223A22E: + ldrb r0, [r5, #0x11] + add r0, r0, #1 + strb r0, [r5, #0x11] + ldrb r0, [r5, #0x11] + cmp r0, #0x1e + bls _0223A260 + mov r0, #0 + strb r0, [r5, #0x11] + ldrb r0, [r5, #0x10] + add sp, #8 + add r0, r0, #1 + strb r0, [r5, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223A248: + mov r2, #0 + ldr r0, [r5, #0xc] + add r1, r5, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223A260: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223A264: .word 0x000006E5 + + thumb_func_start MOD12_0223A268 +MOD12_0223A268: ; 0x0223A268 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A27C +MOD12_0223A27C: ; 0x0223A27C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A2C0 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0] + strb r0, [r4, #0x11] + ldr r0, _0223A2C4 ; =MOD12_0223A2C8 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A2C0: .word 0x00007530 +_0223A2C4: .word MOD12_0223A2C8 + + thumb_func_start MOD12_0223A2C8 +MOD12_0223A2C8: ; 0x0223A2C8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0x11] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + add r3, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223A2EC + cmp r0, #1 + beq _0223A314 + b _0223A348 +_0223A2EC: + ldrb r0, [r4, #0x11] + ldr r1, [r4] + lsl r0, r0, #4 + add r1, r1, r0 + ldr r0, _0223A384 ; =0x00000F24 + ldr r1, [r1, r0] + add r0, r0, #4 + lsl r1, r1, #8 + str r1, [r4, #0x14] + ldrb r1, [r4, #0x11] + ldr r2, [r4] + lsl r1, r1, #4 + add r1, r2, r1 + ldr r0, [r1, r0] + lsl r0, r0, #8 + str r0, [r4, #0x18] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223A314: + mov r0, #3 + ldr r1, [r4, #0x14] + lsl r0, r0, #8 + add r1, r1, r0 + mov r0, #0x4b + lsl r0, r0, #0xa + str r1, [r4, #0x14] + cmp r1, r0 + blt _0223A32C + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223A32C: + ldrb r0, [r4, #0x11] + ldr r2, [r4, #0x18] + ldr r1, [r4] + lsl r0, r0, #4 + add r1, r1, r0 + mov r0, #0xf2 + lsl r0, r0, #4 + ldr r0, [r1, r0] + ldr r1, [r4, #0x14] + asr r2, r2, #8 + asr r1, r1, #8 + bl FUN_021DD678 + pop {r3, r4, r5, pc} +_0223A348: + ldrb r0, [r4, #0x11] + ldr r1, [r4] + lsl r0, r0, #4 + add r1, r1, r0 + mov r0, #0xf2 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_021DD540 + ldrb r0, [r4, #0x11] + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r1, r1, r0 + mov r0, #0xf2 + lsl r0, r0, #4 + str r2, [r1, r0] + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_0223A384: .word 0x00000F24 + + thumb_func_start MOD12_0223A388 +MOD12_0223A388: ; 0x0223A388 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A39C +MOD12_0223A39C: ; 0x0223A39C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x18 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A3D8 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0223A3DC ; =MOD12_0223A3E0 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A3D8: .word 0x00007530 +_0223A3DC: .word MOD12_0223A3E0 + + thumb_func_start MOD12_0223A3E0 +MOD12_0223A3E0: ; 0x0223A3E0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r0, [r1, #0x10] + str r1, [sp] + cmp r0, #0 + beq _0223A3F0 + b _0223A516 +_0223A3F0: + ldr r0, [sp] + mov r1, #0x14 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223A404 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x14] + pop {r4, r5, r6, r7, pc} +_0223A404: + ldr r0, [sp] + mov r1, #0x13 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223A418 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x13] + pop {r4, r5, r6, r7, pc} +_0223A418: + ldr r0, [sp] + mov r1, #1 + strb r1, [r0, #0x13] + ldr r0, [r0] + mov r1, #2 + ldr r0, [r0, #0x30] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _0223A490 +_0223A430: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + ldr r0, _0223A534 ; =0x02245F84 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _0223A48A + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r0, [r0, #0x12] + mov r7, #0x3f + str r5, [sp, #4] + lsl r1, r0, #1 + ldr r0, _0223A538 ; =0x02245F8C + lsl r7, r7, #0xa + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r0, r0, #5 + add r6, r1, r0 + b _0223A484 +_0223A460: + mov r4, #0 + b _0223A478 +_0223A464: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_0223A478: + cmp r4, #8 + blt _0223A464 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_0223A484: + ldr r0, [sp, #4] + cmp r0, #4 + blt _0223A460 +_0223A48A: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_0223A490: + ldr r0, [sp, #8] + cmp r0, #4 + blt _0223A430 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _0223A4D2 + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _0223A4D2 + ldr r0, _0223A534 ; =0x02245F84 + sub r1, r1, #1 + ldrsb r0, [r0, r1] + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #0x3f + str r0, [sp, #4] + lsl r1, r1, #0xa + b _0223A4CC +_0223A4BC: + ldr r0, [sp, #4] + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r1 + strh r0, [r3, r2] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_0223A4CC: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _0223A4BC +_0223A4D2: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _0223A530 + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _0223A530 + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_0223A516: + add r0, r1, #0 + mov r2, #0 + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223A530: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223A534: .word 0x02245F84 +_0223A538: .word 0x02245F8C + + thumb_func_start MOD12_0223A53C +MOD12_0223A53C: ; 0x0223A53C + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A550 +MOD12_0223A550: ; 0x0223A550 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x18 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A58C ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0223A590 ; =MOD12_0223A594 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A58C: .word 0x00007530 +_0223A590: .word MOD12_0223A594 + + thumb_func_start MOD12_0223A594 +MOD12_0223A594: ; 0x0223A594 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r0, [r1, #0x10] + str r1, [sp] + cmp r0, #0 + beq _0223A5A4 + b _0223A6F2 +_0223A5A4: + ldr r0, [sp] + mov r1, #0x14 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223A5B8 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x14] + pop {r4, r5, r6, r7, pc} +_0223A5B8: + ldr r0, [sp] + mov r1, #0x13 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223A5CC + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x13] + pop {r4, r5, r6, r7, pc} +_0223A5CC: + ldr r0, [sp] + mov r1, #1 + strb r1, [r0, #0x13] + ldr r0, [r0] + mov r1, #2 + ldr r0, [r0, #0x30] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _0223A64C +_0223A5E4: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + mov r0, #4 + sub r1, r0, r1 + ldr r0, _0223A710 ; =0x02245F84 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _0223A646 + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r1, [r0, #0x12] + mov r0, #0xb + mov r7, #0x3f + sub r0, r0, r1 + lsl r1, r0, #1 + ldr r0, _0223A714 ; =0x02245F8C + str r5, [sp, #4] + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r7, r7, #0xa + lsl r0, r0, #5 + add r6, r1, r0 + b _0223A640 +_0223A61C: + mov r4, #0 + b _0223A634 +_0223A620: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_0223A634: + cmp r4, #8 + blt _0223A620 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_0223A640: + ldr r0, [sp, #4] + cmp r0, #4 + blt _0223A61C +_0223A646: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_0223A64C: + ldr r0, [sp, #8] + cmp r0, #4 + blt _0223A5E4 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _0223A6AE + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _0223A6AE + mov r0, #5 + sub r1, r0, r1 + ldr r0, _0223A710 ; =0x02245F84 + mov r7, #0x3f + ldrsb r0, [r0, r1] + lsl r7, r7, #0xa + mov r6, #0x1d + add r0, r0, #3 + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #2 + str r0, [sp, #4] + lsl r1, r1, #8 + b _0223A6A8 +_0223A682: + ldr r0, [sp, #4] + ldr r5, [sp, #4] + lsl r4, r0, #1 + ldrh r0, [r3, r4] + lsl r5, r5, #0x1d + and r0, r7 + strh r0, [r3, r4] + ldr r0, [sp, #4] + ldrh r2, [r3, r4] + lsr r0, r0, #0x1f + sub r5, r5, r0 + ror r5, r6 + add r0, r0, r5 + add r0, r0, r1 + orr r0, r2 + strh r0, [r3, r4] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_0223A6A8: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _0223A682 +_0223A6AE: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _0223A70C + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _0223A70C + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_0223A6F2: + add r0, r1, #0 + mov r2, #0 + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223A70C: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223A710: .word 0x02245F84 +_0223A714: .word 0x02245F8C + + thumb_func_start MOD12_0223A718 +MOD12_0223A718: ; 0x0223A718 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A72C +MOD12_0223A72C: ; 0x0223A72C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A770 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0] + strb r0, [r4, #0x11] + ldr r0, _0223A774 ; =MOD12_0223A778 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A770: .word 0x00007530 +_0223A774: .word MOD12_0223A778 + + thumb_func_start MOD12_0223A778 +MOD12_0223A778: ; 0x0223A778 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223A78A + cmp r0, #1 + beq _0223A7B4 + b _0223A7F8 +_0223A78A: + ldrb r1, [r4, #0x11] + ldr r0, [r4] + bl MOD12_02239A10 + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0, #0x24] + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #0x14] + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x24] + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #0x18] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223A7B4: + mov r0, #1 + ldr r1, [r4, #0x14] + lsl r0, r0, #0xa + sub r1, r1, r0 + mov r0, #0xe6 + lsl r0, r0, #8 + str r1, [r4, #0x14] + cmp r1, r0 + bgt _0223A7CE + str r0, [r4, #0x14] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223A7CE: + ldr r3, [r4, #0x14] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r3, [r4, #0x18] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_0223A7F8: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A814 +MOD12_0223A814: ; 0x0223A814 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A828 +MOD12_0223A828: ; 0x0223A828 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A86C ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0] + strb r0, [r4, #0x11] + ldr r0, _0223A870 ; =MOD12_0223A874 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A86C: .word 0x00007530 +_0223A870: .word MOD12_0223A874 + + thumb_func_start MOD12_0223A874 +MOD12_0223A874: ; 0x0223A874 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223A886 + cmp r0, #1 + beq _0223A8B4 + b _0223A8F8 +_0223A886: + ldr r0, [r4] + ldr r0, [r0, #0x24] + cmp r0, #0 + bne _0223A892 + bl ErrorHandling +_0223A892: + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0, #0x24] + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #0x14] + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x24] + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #0x18] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223A8B4: + mov r0, #1 + ldr r1, [r4, #0x14] + lsl r0, r0, #0xa + add r1, r1, r0 + mov r0, #5 + lsl r0, r0, #0xe + str r1, [r4, #0x14] + cmp r1, r0 + blt _0223A8CE + str r0, [r4, #0x14] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223A8CE: + ldr r3, [r4, #0x14] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r3, [r4, #0x18] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_0223A8F8: + ldr r0, [r4] + bl MOD12_02239A58 + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0223A918 +MOD12_0223A918: ; 0x0223A918 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A92C +MOD12_0223A92C: ; 0x0223A92C + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r6, r1, #0 + mov r0, #0x16 + mov r1, #0x58 + add r5, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x58 + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + ldr r2, _0223A988 ; =0x00007530 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r0, [r4, #0xc] + ldrb r0, [r7] + strb r0, [r4, #0x11] + str r6, [r4, #0x2c] + str r6, [r4, #0x38] + add r0, r4, #0 + ldrb r1, [r7] + add r0, #0x46 + strb r1, [r0] + str r6, [r4, #0x48] + ldrb r0, [r7] + ldr r1, [r6, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, r4, #0 + str r0, [r4, #0x24] + ldr r0, _0223A98C ; =MOD12_0223A990 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A988: .word 0x00007530 +_0223A98C: .word MOD12_0223A990 + + thumb_func_start MOD12_0223A990 +MOD12_0223A990: ; 0x0223A990 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r1, #0 + add r4, r0, #0 + ldrb r0, [r5, #0x10] + cmp r0, #0 + beq _0223A9A8 + cmp r0, #1 + beq _0223AA32 + cmp r0, #2 + beq _0223AA5C + b _0223AA8A +_0223A9A8: + ldr r0, _0223AAA8 ; =MOD12_0223AB54 + ldr r2, _0223AAAC ; =0x0000753A + add r1, #0x2c + bl FUN_0200CA44 + add r1, r5, #0 + ldr r0, _0223AAB0 ; =MOD12_0223ACFC + ldr r2, _0223AAAC ; =0x0000753A + add r1, #0x48 + bl FUN_0200CA44 + ldr r0, [r5, #0x38] + ldr r1, [r0, #0xc] + add r0, r5, #0 + add r0, #0x46 + ldrb r0, [r0] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + add r4, r0, #0 + add r0, sp, #0 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + mov r0, #0x16 + str r0, [sp, #0xc] + mov r0, #0x80 + add r4, #0x40 + str r0, [sp, #4] + str r4, [sp, #8] + ldr r1, [r5, #0x38] + add r0, sp, #0 + ldr r2, [r1] + add r1, r5, #0 + add r1, #0x46 + ldrb r1, [r1] + lsl r1, r1, #2 + add r1, r2, r1 + add r1, #0xf8 + ldr r1, [r1] + bl FUN_021DD4F4 + add r1, r5, #0 + add r1, #0x46 + ldrb r1, [r1] + ldr r2, [r5, #0x38] + lsl r1, r1, #4 + add r2, r2, r1 + mov r1, #0xf2 + lsl r1, r1, #4 + str r0, [r2, r1] + add r0, r5, #0 + add r0, #0x46 + ldrb r0, [r0] + ldr r2, [r5, #0x38] + lsl r0, r0, #4 + add r0, r2, r0 + ldr r0, [r0, r1] + mov r1, #0 + bl FUN_021DD594 + ldrb r0, [r5, #0x10] + add sp, #0x10 + add r0, r0, #1 + strb r0, [r5, #0x10] + pop {r3, r4, r5, pc} +_0223AA32: + add r0, r5, #0 + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #1 + bne _0223AAA2 + ldr r0, _0223AAB4 ; =MOD12_0223AAF8 + ldr r2, _0223AAAC ; =0x0000753A + add r1, #0x14 + bl FUN_0200CA44 + add r1, r5, #0 + ldr r0, _0223AAB8 ; =MOD12_0223ABD4 + ldr r2, _0223AAAC ; =0x0000753A + add r1, #0x38 + bl FUN_0200CA44 + ldrb r0, [r5, #0x10] + add sp, #0x10 + add r0, r0, #1 + strb r0, [r5, #0x10] + pop {r3, r4, r5, pc} +_0223AA5C: + add r0, r5, #0 + add r0, #0x29 + ldrb r0, [r0] + cmp r0, #1 + bne _0223AAA2 + add r0, r5, #0 + add r0, #0x45 + ldrb r0, [r0] + cmp r0, #1 + bne _0223AAA2 + add r0, r5, #0 + add r0, #0x55 + ldrb r0, [r0] + cmp r0, #1 + bne _0223AAA2 + ldr r0, _0223AABC ; =0x000006E5 + bl FUN_020054C8 + ldrb r0, [r5, #0x10] + add sp, #0x10 + add r0, r0, #1 + strb r0, [r5, #0x10] + pop {r3, r4, r5, pc} +_0223AA8A: + mov r2, #0 + ldr r0, [r5, #0xc] + add r1, r5, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223AAA2: + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_0223AAA8: .word MOD12_0223AB54 +_0223AAAC: .word 0x0000753A +_0223AAB0: .word MOD12_0223ACFC +_0223AAB4: .word MOD12_0223AAF8 +_0223AAB8: .word MOD12_0223ABD4 +_0223AABC: .word 0x000006E5 + + thumb_func_start MOD12_0223AAC0 +MOD12_0223AAC0: ; 0x0223AAC0 + push {r3} + sub sp, #0xc + add r2, sp, #0 + mov r1, #0 + str r1, [r2] + str r1, [r2, #4] + str r1, [r2, #8] + ldr r1, [r0, #0x20] + ldr r2, [sp] + ldr r1, [r1] + ldr r1, [r1, #4] + add r1, r2, r1 + str r1, [r0, #0x28] + ldr r1, [r0, #0x20] + ldr r2, [sp, #4] + ldr r1, [r1] + ldr r1, [r1, #8] + add r1, r2, r1 + str r1, [r0, #0x2c] + ldr r1, [r0, #0x20] + ldr r2, [sp, #8] + ldr r1, [r1] + ldr r1, [r1, #0xc] + add r1, r2, r1 + str r1, [r0, #0x30] + add sp, #0xc + pop {r3} + bx lr + + thumb_func_start MOD12_0223AAF8 +MOD12_0223AAF8: ; 0x0223AAF8 + push {r4, lr} + add r4, r1, #0 + ldrb r2, [r4, #0x14] + cmp r2, #0 + beq _0223AB08 + cmp r2, #1 + beq _0223AB2C + b _0223AB44 +_0223AB08: + mov r0, #0 + str r0, [r4] + ldr r0, [r4, #0x10] + str r0, [r4, #8] + mov r0, #0x16 + bl MOD08_02228218 + str r0, [r4, #0xc] + bl MOD08_02228524 + ldr r0, [r4, #0xc] + ldr r1, _0223AB50 ; =MOD12_0223AAC0 + bl MOD08_02228574 + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] + pop {r4, pc} +_0223AB2C: + ldr r0, [r4, #0xc] + bl MOD08_022285B4 + cmp r0, #0 + bne _0223AB4C + ldr r0, [r4, #0xc] + bl MOD08_02228618 + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] + pop {r4, pc} +_0223AB44: + mov r1, #1 + strb r1, [r4, #0x15] + bl FUN_0200CAB4 +_0223AB4C: + pop {r4, pc} + nop +_0223AB50: .word MOD12_0223AAC0 + + thumb_func_start MOD12_0223AB54 +MOD12_0223AB54: ; 0x0223AB54 + push {r3, r4, r5, lr} + sub sp, #0x28 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #8] + cmp r0, #0 + beq _0223AB6C + cmp r0, #1 + beq _0223AB86 + cmp r0, #2 + beq _0223ABB6 + b _0223ABC0 +_0223AB6C: + ldrb r0, [r4, #0xa] + add r0, r0, #1 + strb r0, [r4, #0xa] + ldrb r0, [r4, #0xa] + cmp r0, #1 + blo _0223ABD0 + mov r0, #0 + strb r0, [r4, #0xa] + ldrb r0, [r4, #8] + add sp, #0x28 + add r0, r0, #1 + strb r0, [r4, #8] + pop {r3, r4, r5, pc} +_0223AB86: + mov r0, #0xe + str r0, [sp] + mov r0, #0x16 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r4] + ldr r0, [r0, #0x28] + str r0, [sp, #0x1c] + ldr r0, [r4] + ldr r0, [r0, #0x50] + str r0, [sp, #0x20] + mov r0, #1 + str r0, [sp, #0x14] + add r0, sp, #0 + bl MOD08_02229918 + str r0, [r4, #4] + ldrb r0, [r4, #8] + add sp, #0x28 + add r0, r0, #1 + strb r0, [r4, #8] + pop {r3, r4, r5, pc} +_0223ABB6: + ldr r0, [r4, #4] + bl MOD08_022299E8 + cmp r0, #1 + beq _0223ABD0 +_0223ABC0: + ldr r0, [r4, #4] + bl MOD08_02229A2C + mov r0, #1 + strb r0, [r4, #9] + add r0, r5, #0 + bl FUN_0200CAB4 +_0223ABD0: + add sp, #0x28 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0223ABD4 +MOD12_0223ABD4: ; 0x0223ABD4 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xe] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + add r6, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _0223ABFA + cmp r0, #1 + beq _0223AC4A + b _0223ACE8 +_0223ABFA: + mov r1, #0 + str r1, [r4, #4] + str r1, [r4, #8] + ldrb r0, [r4, #0xe] + mov r3, #0xf2 + ldr r2, [r4] + lsl r0, r0, #4 + add r0, r2, r0 + lsl r3, r3, #4 + ldr r0, [r0, r3] + add r2, r1, #0 + add r3, #0xe0 + bl FUN_021DD60C + ldrb r1, [r4, #0xe] + ldr r2, [r4] + mov r0, #0x80 + lsl r1, r1, #4 + add r2, r2, r1 + ldr r1, _0223ACF8 ; =0x00000F24 + str r0, [r2, r1] + ldrb r2, [r4, #0xe] + ldr r3, [r4] + mov r0, #0x68 + lsl r2, r2, #4 + add r3, r3, r2 + add r2, r1, #4 + str r0, [r3, r2] + ldrb r0, [r4, #0xe] + ldr r2, [r4] + lsl r0, r0, #4 + add r2, r2, r0 + sub r0, r1, #4 + ldr r0, [r2, r0] + mov r1, #1 + bl FUN_021DD594 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223AC4A: + mov r0, #2 + ldr r1, [r4, #4] + lsl r0, r0, #8 + add r1, r1, r0 + str r1, [r4, #4] + ldr r1, [r4, #8] + add r1, r1, r0 + str r1, [r4, #8] + ldr r2, [r4, #4] + lsl r1, r0, #3 + cmp r2, r1 + blt _0223AC68 + lsl r0, r0, #3 + str r0, [r4, #4] + str r0, [r4, #8] +_0223AC68: + ldrb r0, [r4, #0xe] + mov r3, #0xf2 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + lsl r3, r3, #4 + ldr r0, [r0, r3] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + add r3, #0xe0 + bl FUN_021DD60C + ldrb r0, [r4, #0xe] + mov r2, #0xf2 + lsl r2, r2, #4 + lsl r1, r0, #4 + ldr r0, [r4] + add r3, r0, r1 + add r1, r2, #4 + ldr r0, [r3, r2] + add r2, #8 + ldr r1, [r3, r1] + ldr r2, [r3, r2] + add r3, r6, #0 + bl FUN_021DD678 + mov r0, #1 + ldr r1, [r4, #4] + lsl r0, r0, #0xc + cmp r1, r0 + blt _0223ACF2 + ldr r0, [r4] + mov r2, #0 + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xe] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #5 + bl FUN_020671BC + add r2, r0, #0 + mov r0, #0x7f + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r3, #0x16 + str r3, [sp, #8] + ldr r3, [r4] + lsl r2, r2, #0x10 + ldr r5, [r3] + ldrb r3, [r4, #0xe] + add r0, #0xdd + lsr r2, r2, #0x10 + lsl r3, r3, #2 + add r3, r5, r3 + ldr r0, [r3, r0] + add r3, r1, #0 + bl FUN_02069FB0 + ldrb r0, [r4, #0xc] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, pc} +_0223ACE8: + mov r0, #1 + strb r0, [r4, #0xd] + add r0, r5, #0 + bl FUN_0200CAB4 +_0223ACF2: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_0223ACF8: .word 0x00000F24 + + thumb_func_start MOD12_0223ACFC +MOD12_0223ACFC: ; 0x0223ACFC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #4 + bls _0223AD0A + b _0223AE32 +_0223AD0A: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223AD16: ; jump table + .short _0223AD20 - _0223AD16 - 2 ; case 0 + .short _0223AD46 - _0223AD16 - 2 ; case 1 + .short _0223AD68 - _0223AD16 - 2 ; case 2 + .short _0223ADD6 - _0223AD16 - 2 ; case 3 + .short _0223ADEE - _0223AD16 - 2 ; case 4 +_0223AD20: + ldr r0, [r4] + ldr r0, [r0, #0x24] + cmp r0, #0 + bne _0223AD2C + bl ErrorHandling +_0223AD2C: + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xf] + cmp r0, #1 + bhi _0223AD3A + b _0223AE42 +_0223AD3A: + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223AD46: + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0, #0x24] + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #4] + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x24] + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #8] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223AD68: + ldrb r1, [r4, #0xe] + mov r0, #1 + tst r0, r1 + ldr r0, [r4] + beq _0223AD9A + ldr r3, [r4, #4] + ldr r0, [r0, #0x24] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r3, [r4, #8] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + b _0223ADC2 +_0223AD9A: + ldr r3, [r4, #4] + ldr r0, [r0, #0x24] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r3, [r4, #8] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + asr r2, r2, #8 + ldr r0, [r0, #0x24] + mov r1, #1 + sub r2, r2, #3 + bl FUN_02007558 +_0223ADC2: + ldrb r0, [r4, #0xe] + add r0, r0, #1 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xe] + cmp r0, #3 + blo _0223AE42 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223ADD6: + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xf] + cmp r0, #7 + blo _0223AE42 + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223ADEE: + mov r0, #1 + ldr r1, [r4, #4] + lsl r0, r0, #0xa + add r1, r1, r0 + mov r0, #5 + lsl r0, r0, #0xe + str r1, [r4, #4] + cmp r1, r0 + blt _0223AE08 + str r0, [r4, #4] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223AE08: + ldr r3, [r4, #4] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r3, [r4, #8] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_0223AE32: + ldr r0, [r4] + bl MOD12_02239A58 + mov r0, #1 + strb r0, [r4, #0xd] + add r0, r5, #0 + bl FUN_0200CAB4 +_0223AE42: + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0223AE44 +MOD12_0223AE44: ; 0x0223AE44 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223AE58 +MOD12_0223AE58: ; 0x0223AE58 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x16 + mov r1, #0x1c + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x1c + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _0223AEB8 ; =0x00007530 + str r0, [r4] + ldrh r0, [r6] + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] + ldrb r0, [r5] + strb r0, [r4, #0x11] + ldrb r0, [r5, #3] + strb r0, [r4, #0x13] + ldrb r0, [r5, #4] + strb r0, [r4, #0x14] + ldrb r0, [r5, #5] + strb r0, [r4, #0x15] + ldrb r0, [r5, #6] + strb r0, [r4, #0x16] + ldrb r0, [r5, #7] + strb r0, [r4, #0x17] + ldrb r0, [r5, #9] + strb r0, [r4, #0x19] + ldrb r0, [r5, #8] + strb r0, [r4, #0x18] + ldr r0, _0223AEBC ; =MOD12_0223AEC0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223AEB8: .word 0x00007530 +_0223AEBC: .word MOD12_0223AEC0 + + thumb_func_start MOD12_0223AEC0 +MOD12_0223AEC0: ; 0x0223AEC0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223AED6 + cmp r0, #1 + beq _0223AF0E + cmp r0, #2 + beq _0223AF20 + b _0223AF58 +_0223AED6: + ldrb r0, [r4, #0x17] + cmp r0, #0 + beq _0223AF08 + ldr r0, [r4] + mov r1, #1 + add r0, #0x34 + add r2, r1, #0 + mov r3, #0xe + bl FUN_0200D0BC + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + add r2, r4, #0 + ldrb r1, [r4, #0x17] + ldr r0, [r4] + add r2, #0x13 + bl MOD12_02239B48 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223AF08: + mov r0, #0x64 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223AF0E: + ldr r0, [r4] + bl MOD12_02239B7C + cmp r0, #0 + bne _0223AF70 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223AF20: + ldrb r0, [r4, #0x12] + add r0, r0, #1 + strb r0, [r4, #0x12] + ldrb r0, [r4, #0x19] + cmp r0, #1 + bne _0223AF34 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223AF34: + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x18] + cmp r1, r0 + blo _0223AF70 + ldr r0, [r4] + mov r1, #1 + add r0, #0x34 + bl FUN_0200D0E0 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223AF58: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0223AF70: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223AF74 +MOD12_0223AF74: ; 0x0223AF74 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223AF88 +MOD12_0223AF88: ; 0x0223AF88 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x16 + mov r1, #0x18 + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x18 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _0223AFD8 ; =0x00007530 + str r0, [r4] + ldrh r0, [r5] + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] + mov r0, #0xa + ldrsb r0, [r6, r0] + strb r0, [r4, #0x11] + mov r0, #0xb + ldrsb r0, [r6, r0] + strb r0, [r4, #0x12] + mov r0, #0xc + ldrsb r0, [r6, r0] + strb r0, [r4, #0x13] + ldr r0, _0223AFDC ; =MOD12_0223AFE0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223AFD8: .word 0x00007530 +_0223AFDC: .word MOD12_0223AFE0 + + thumb_func_start MOD12_0223AFE0 +MOD12_0223AFE0: ; 0x0223AFE0 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223AFF4 + cmp r0, #1 + beq _0223B06C + b _0223B0A8 +_0223AFF4: + ldr r0, [r4] + ldr r1, [r0] + ldr r0, _0223B0C4 ; =0x00000171 + ldrb r0, [r1, r0] + cmp r0, #1 + bne _0223B04E + ldr r0, _0223B0C8 ; =0x04000048 + ldr r1, _0223B0CC ; =0xFFFFC0FF + ldrh r2, [r0] + and r2, r1 + mov r1, #0x1f + lsl r1, r1, #8 + orr r1, r2 + strh r1, [r0] + ldrh r2, [r0, #2] + mov r1, #0x3f + bic r2, r1 + mov r1, #0x1f + orr r2, r1 + mov r1, #0x20 + orr r2, r1 + strh r2, [r0, #2] + lsl r3, r1, #0x15 + ldr r2, [r3] + ldr r0, _0223B0D0 ; =0xFFFF1FFF + and r2, r0 + lsl r0, r1, #9 + orr r0, r2 + str r0, [r3] + ldr r1, [r4] + ldr r0, _0223B0D4 ; =0x00000F64 + mov r2, #0xf0 + strb r2, [r1, r0] + ldr r2, [r4] + mov r3, #0 + add r1, r0, #1 + strb r3, [r2, r1] + add r1, r0, #2 + ldr r2, [r4] + mov r3, #0xff + strb r3, [r2, r1] + ldr r1, [r4] + mov r2, #0x10 + add r0, r0, #3 + strb r2, [r1, r0] +_0223B04E: + mov r0, #1 + str r0, [sp] + mov r1, #0x12 + mov r2, #0x11 + ldrb r0, [r4, #0x13] + ldrsb r1, [r4, r1] + ldrsb r2, [r4, r2] + mov r3, #0x3d + bl FUN_0200A208 + ldrb r0, [r4, #0x10] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223B06C: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _0223B0C0 + mov r1, #0 + str r1, [sp] + mov r0, #0xd0 + str r0, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + ldr r0, [r0, #0x50] + add r3, r1, #0 + bl FUN_02003914 + mov r2, #0 + str r2, [sp] + mov r0, #0xe0 + str r0, [sp, #4] + ldr r0, [r4] + mov r1, #2 + ldr r0, [r0, #0x50] + add r3, r2, #0 + bl FUN_02003914 + ldrb r0, [r4, #0x10] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223B0A8: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0223B0C0: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223B0C4: .word 0x00000171 +_0223B0C8: .word 0x04000048 +_0223B0CC: .word 0xFFFFC0FF +_0223B0D0: .word 0xFFFF1FFF +_0223B0D4: .word 0x00000F64 + + thumb_func_start MOD12_0223B0D8 +MOD12_0223B0D8: ; 0x0223B0D8 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223B0EC +MOD12_0223B0EC: ; 0x0223B0EC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223B128 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0223B12C ; =MOD12_0223B130 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223B128: .word 0x00007530 +_0223B12C: .word MOD12_0223B130 + + thumb_func_start MOD12_0223B130 +MOD12_0223B130: ; 0x0223B130 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r1, #0x18] + str r1, [sp] + add r1, r0, #1 + ldr r0, [sp] + cmp r1, #0x1e + str r1, [r0, #0x18] + bne _0223B14C + mov r1, #0x1e + strb r1, [r0, #0x13] + mov r1, #1 + strb r1, [r0, #0x15] +_0223B14C: + ldr r0, [sp] + ldr r0, [r0] + ldr r1, [r0] + ldr r0, _0223B344 ; =0x00000171 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223B186 + ldr r0, [sp] + ldr r0, [r0, #0x18] + cmp r0, #0x1e + bge _0223B186 + ldr r0, _0223B348 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + bne _0223B174 + ldr r0, _0223B34C ; =0x021C48F8 + ldrh r0, [r0, #0x20] + cmp r0, #0 + beq _0223B186 +_0223B174: + ldr r0, [sp] + mov r1, #0x1e + str r1, [r0, #0x18] + ldr r1, [sp] + mov r0, #0 + strb r0, [r1, #0x13] + mov r2, #1 + strb r2, [r1, #0x15] + b _0223B194 +_0223B186: + ldr r0, [sp] + ldr r0, [r0, #0x18] + cmp r0, #0x1e + ble _0223B192 + mov r0, #0 + b _0223B194 +_0223B192: + mov r0, #1 +_0223B194: + ldr r1, [sp] + ldrb r1, [r1, #0x10] + cmp r1, #0 + beq _0223B19E + b _0223B316 +_0223B19E: + ldr r1, [sp] + mov r2, #0x14 + ldrsb r1, [r1, r2] + cmp r1, #0 + ble _0223B1B2 + ldr r0, [sp] + sub r1, r1, #1 + strb r1, [r0, #0x14] + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223B1B2: + ldr r1, [sp] + mov r2, #0x13 + ldrsb r1, [r1, r2] + cmp r1, #0 + ble _0223B1C6 + ldr r0, [sp] + sub r1, r1, #1 + strb r1, [r0, #0x13] + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223B1C6: + ldr r1, [sp] + strb r0, [r1, #0x13] + add r0, r1, #0 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _0223B1DE + ldr r0, _0223B350 ; =0x000006ED + bl FUN_020054C8 + ldr r0, [sp] + mov r1, #0 + strb r1, [r0, #0x15] +_0223B1DE: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _0223B252 +_0223B1F2: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + ldr r0, _0223B354 ; =0x02245F84 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _0223B24C + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r0, [r0, #0x12] + mov r7, #0x3f + str r5, [sp, #4] + lsl r1, r0, #1 + ldr r0, _0223B358 ; =0x02245F8C + lsl r7, r7, #0xa + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r0, r0, #5 + add r6, r1, r0 + b _0223B246 +_0223B222: + mov r4, #0 + b _0223B23A +_0223B226: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_0223B23A: + cmp r4, #8 + blt _0223B226 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_0223B246: + ldr r0, [sp, #4] + cmp r0, #4 + blt _0223B222 +_0223B24C: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_0223B252: + ldr r0, [sp, #8] + cmp r0, #4 + blt _0223B1F2 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _0223B294 + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _0223B294 + ldr r0, _0223B354 ; =0x02245F84 + sub r1, r1, #1 + ldrsb r0, [r0, r1] + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #0x3f + str r0, [sp, #4] + lsl r1, r1, #0xa + b _0223B28E +_0223B27E: + ldr r0, [sp, #4] + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r1 + strh r0, [r3, r2] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_0223B28E: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _0223B27E +_0223B294: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldr r0, [sp] + mov r1, #0xc + ldrb r0, [r0, #0x12] + lsl r0, r0, #5 + bl _u32_div_f + ldr r1, [sp] + mov r2, #0x11 + ldrsb r2, [r1, r2] + ldr r1, _0223B354 ; =0x02245F84 + ldrsb r1, [r1, r2] + add r1, r1, #4 + lsl r1, r1, #3 + sub r2, r1, r0 + ldr r0, [sp] + ldr r1, _0223B35C ; =0x00000F63 + ldr r0, [r0] + strb r2, [r0, r1] + ldr r0, [sp] + ldr r0, [r0] + ldrb r0, [r0, r1] + cmp r0, #0 + bne _0223B2DE + ldr r2, _0223B360 ; =0x04000050 + mov r0, #0 + strh r0, [r2] + sub r2, #0x50 + ldr r1, [r2] + ldr r0, _0223B364 ; =0xFFFF1FFF + and r0, r1 + str r0, [r2] +_0223B2DE: + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _0223B340 + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _0223B340 + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_0223B316: + ldr r3, _0223B360 ; =0x04000050 + mov r2, #0 + strh r2, [r3] + sub r3, #0x50 + ldr r1, [r3] + ldr r0, _0223B364 ; =0xFFFF1FFF + and r0, r1 + str r0, [r3] + ldr r0, [sp] + ldr r1, [sp] + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223B340: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223B344: .word 0x00000171 +_0223B348: .word 0x021C48B8 +_0223B34C: .word 0x021C48F8 +_0223B350: .word 0x000006ED +_0223B354: .word 0x02245F84 +_0223B358: .word 0x02245F8C +_0223B35C: .word 0x00000F63 +_0223B360: .word 0x04000050 +_0223B364: .word 0xFFFF1FFF + + thumb_func_start MOD12_0223B368 +MOD12_0223B368: ; 0x0223B368 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223B37C +MOD12_0223B37C: ; 0x0223B37C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x14 + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrh r0, [r0, #0x10] + bl FUN_020054C8 + ldr r0, _0223B3C0 ; =MOD12_0223B3C8 + ldr r2, _0223B3C4 ; =0x00007530 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223B3C0: .word MOD12_0223B3C8 +_0223B3C4: .word 0x00007530 + + thumb_func_start MOD12_0223B3C8 +MOD12_0223B3C8: ; 0x0223B3C8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r1, [r4] + ldr r0, _0223B3F4 ; =0x000004F9 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223B3F0 + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0223B3F0: + pop {r3, r4, r5, pc} + nop +_0223B3F4: .word 0x000004F9 + + thumb_func_start MOD12_0223B3F8 +MOD12_0223B3F8: ; 0x0223B3F8 + push {r4, lr} + mov r0, #0x17 + mov r1, #0xf4 + bl FUN_02016998 + mov r1, #0 + mov r2, #0xf4 + add r4, r0, #0 + bl MI_CpuFill8 + mov r1, #0 + add r0, r4, #0 + mvn r1, r1 + add r0, #0x96 + strb r1, [r0] + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223B41C +MOD12_0223B41C: ; 0x0223B41C + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r6, _0223B470 ; =0x022460DC + add r5, r0, #0 + add r7, r4, #0 +_0223B426: + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + add r2, r6, #0 + add r3, r7, #0 + bl FUN_02016C18 + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + mov r2, #0 + bl FUN_02018768 + add r1, r4, #4 + lsl r1, r1, #0x18 + mov r2, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + add r3, r2, #0 + bl FUN_020179E0 + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r4, r4, #1 + add r6, #0x1c + cmp r4, #4 + blo _0223B426 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223B470: .word 0x022460DC + + thumb_func_start MOD12_0223B474 +MOD12_0223B474: ; 0x0223B474 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_0223B47C: + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, r6, #0 + bl FUN_0201797C + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl FUN_020178A0 + add r4, r4, #1 + cmp r4, #4 + blo _0223B47C + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_0223B49C +MOD12_0223B49C: ; 0x0223B49C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + bl MOD12_0223B3F8 + add r4, r0, #0 + str r5, [r4] + str r6, [r4, #4] + mov r0, #6 + mov r1, #0x17 + bl FUN_02011744 + str r0, [r4, #0x18] + add r0, r4, #0 + bl MOD12_0223B4F8 + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_0223B4C0 +MOD12_0223B4C0: ; 0x0223B4C0 + push {r4, lr} + add r4, r0, #0 + bl MOD12_0223B710 + add r0, r4, #0 + mov r1, #1 + bl MOD12_0223BE50 + ldr r0, [r4, #0x18] + bl FUN_020117BC + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223B4E0 +MOD12_0223B4E0: ; 0x0223B4E0 + push {r4, lr} + add r4, r0, #0 + bl MOD12_0223B940 + add r0, r4, #0 + bl MOD12_0223BA0C + add r0, r4, #0 + mov r1, #0 + bl MOD12_0223BE10 + pop {r4, pc} + + thumb_func_start MOD12_0223B4F8 +MOD12_0223B4F8: ; 0x0223B4F8 + push {r3, r4, r5, lr} + sub sp, #0x10 + mov r1, #6 + add r4, r0, #0 + mov r0, #0x17 + lsl r1, r1, #0xc + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xd0 + str r0, [r1] + mov r1, #6 + mov r0, #0x17 + lsl r1, r1, #0xc + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xd4 + str r0, [r1] + mov r1, #0x1b + mov r0, #0x17 + lsl r1, r1, #8 + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xd8 + str r0, [r1] + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #0xa + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xdc + str r0, [r1] + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #0xa + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xe0 + str r0, [r1] + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #0xa + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xe4 + str r0, [r1] + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #0xa + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xe8 + str r0, [r1] + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #8 + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xec + str r0, [r1] + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #8 + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xf0 + str r0, [r1] + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #9 + mov r2, #1 + add r3, sp, #0xc + bl FUN_02006BB0 + add r5, r0, #0 + ldr r0, [sp, #0xc] + add r1, r4, #0 + add r1, #0xd0 + mov r2, #6 + ldr r0, [r0, #0x14] + ldr r1, [r1] + lsl r2, r2, #0xc + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #0x11 + mov r2, #1 + add r3, sp, #0xc + bl FUN_02006BB0 + add r5, r0, #0 + ldr r0, [sp, #0xc] + add r1, r4, #0 + add r1, #0xd4 + mov r2, #6 + ldr r0, [r0, #0x14] + ldr r1, [r1] + lsl r2, r2, #0xc + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #0xf + mov r2, #1 + add r3, sp, #0xc + bl FUN_02006BB0 + add r5, r0, #0 + ldr r0, [sp, #0xc] + add r1, r4, #0 + add r1, #0xd8 + mov r2, #0x1b + ldr r0, [r0, #0x14] + ldr r1, [r1] + lsl r2, r2, #8 + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #7 + mov r2, #1 + add r3, sp, #8 + bl FUN_02006BDC + add r1, r4, #0 + add r5, r0, #0 + ldr r0, [sp, #8] + add r1, #0xdc + mov r2, #2 + ldr r1, [r1] + add r0, #0xc + lsl r2, r2, #0xa + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #8 + mov r2, #1 + add r3, sp, #8 + bl FUN_02006BDC + add r1, r4, #0 + add r5, r0, #0 + ldr r0, [sp, #8] + add r1, #0xe0 + mov r2, #2 + ldr r1, [r1] + add r0, #0xc + lsl r2, r2, #0xa + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #0x10 + mov r2, #1 + add r3, sp, #8 + bl FUN_02006BDC + add r1, r4, #0 + add r5, r0, #0 + ldr r0, [sp, #8] + add r1, #0xe4 + mov r2, #2 + ldr r1, [r1] + add r0, #0xc + lsl r2, r2, #0xa + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #0x1b + mov r2, #1 + add r3, sp, #8 + bl FUN_02006BDC + add r1, r4, #0 + add r5, r0, #0 + ldr r0, [sp, #8] + add r1, #0xe8 + mov r2, #2 + ldr r1, [r1] + add r0, #0xc + lsl r2, r2, #0xa + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0 + str r0, [sp] + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + mov r3, #2 + str r0, [sp, #4] + mov r0, #0x2d + mov r1, #0x1e + mov r2, #0x17 + lsl r3, r3, #8 + bl FUN_0200317C + ldr r0, [r4, #4] + mov r2, #0x17 + ldr r1, [r0] + ldr r0, _0223B70C ; =0x0000011F + mov r3, #0x20 + ldrb r0, [r1, r0] + mov r1, #0x25 + lsl r0, r0, #0x14 + lsr r0, r0, #0x10 + str r0, [sp] + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + add r0, #0x40 + str r0, [sp, #4] + mov r0, #0x2d + bl FUN_0200317C + mov r0, #0 + mov r1, #0x20 + add r4, #0xf0 + str r0, [sp] + ldr r0, [r4] + mov r2, #0x17 + str r0, [sp, #4] + mov r0, #0x2d + lsl r3, r1, #4 + bl FUN_0200317C + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223B70C: .word 0x0000011F + + thumb_func_start MOD12_0223B710 +MOD12_0223B710: ; 0x0223B710 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 +_0223B718: + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_02016A18 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #3 + blt _0223B718 + mov r6, #0 + add r4, r5, #0 +_0223B72E: + add r0, r4, #0 + add r0, #0xdc + ldr r0, [r0] + bl FUN_02016A18 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _0223B72E + mov r4, #0 +_0223B742: + add r0, r5, #0 + add r0, #0xec + ldr r0, [r0] + bl FUN_02016A18 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _0223B742 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_0223B758 +MOD12_0223B758: ; 0x0223B758 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + str r3, [r7, #8] + ldr r0, [r7, #4] + str r2, [sp, #8] + ldr r0, [r0, #0x60] + str r1, [sp, #4] + str r0, [sp, #0xc] + mov r0, #0x96 + ldrsb r2, [r7, r0] + sub r0, #0x97 + cmp r2, r0 + bne _0223B77C + mov r0, #1 + str r0, [sp, #8] + mov r6, #0 + b _0223B784 +_0223B77C: + mov r0, #0x24 + ldr r1, _0223B868 ; =0x02246094 + mul r0, r2 + add r6, r1, r0 +_0223B784: + ldr r0, [sp, #4] + mov r1, #0x24 + ldr r2, _0223B868 ; =0x02246094 + mul r1, r0 + add r0, r2, r1 + str r0, [sp, #0x10] + mov r4, #0 + add r5, r0, #0 +_0223B794: + ldrh r1, [r5, #0xc] + add r0, r4, #4 + lsl r0, r0, #0x18 + lsl r1, r1, #0x18 + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + bl FUN_020178BC + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _0223B794 + ldr r0, [sp, #0x10] + mov r2, #8 + ldrh r1, [r0] + add r0, r7, #0 + add r0, #0x94 + strh r1, [r0] + ldr r0, _0223B86C ; =MOD12_0223C19C + add r1, r7, #0 + bl FUN_0200CA98 + ldr r0, [sp, #0x10] + ldrh r1, [r0, #2] + ldr r0, _0223B870 ; =0x0000FFFF + cmp r1, r0 + beq _0223B7F2 + ldr r0, [sp, #8] + cmp r0, #1 + beq _0223B7D6 + ldrh r0, [r6, #2] + cmp r1, r0 + beq _0223B7F2 +_0223B7D6: + mov r0, #2 + lsl r0, r0, #8 + str r0, [sp] + ldr r0, [r7, #4] + lsl r1, r1, #2 + add r1, r7, r1 + add r0, #0x90 + add r1, #0xec + ldr r0, [r0] + ldr r1, [r1] + mov r2, #1 + mov r3, #0 + bl FUN_02003054 +_0223B7F2: + ldr r4, [sp, #0x10] + mov r5, #0 +_0223B7F6: + ldrh r2, [r4, #4] + ldr r0, _0223B870 ; =0x0000FFFF + cmp r2, r0 + beq _0223B82E + ldr r0, [sp, #8] + cmp r0, #1 + beq _0223B80A + ldrh r0, [r6, #4] + cmp r2, r0 + beq _0223B82E +_0223B80A: + lsl r2, r2, #2 + add r2, r7, r2 + add r1, r5, #4 + add r2, #0xdc + lsl r1, r1, #0x18 + mov r3, #2 + ldr r0, [sp, #0xc] + ldr r2, [r2] + lsr r1, r1, #0x18 + lsl r3, r3, #0xa + bl FUN_02017DFC + add r1, r5, #4 + lsl r1, r1, #0x18 + ldr r0, [sp, #0xc] + lsr r1, r1, #0x18 + bl FUN_0201AC68 +_0223B82E: + add r5, r5, #1 + add r4, r4, #2 + add r6, r6, #2 + cmp r5, #4 + blt _0223B7F6 + add r1, r7, #0 + ldr r0, [sp, #4] + add r1, #0x96 + strb r0, [r1] + add r0, r7, #0 + mov r1, #0 + bl MOD12_0223BE50 + ldr r0, [sp, #0x10] + ldr r3, [r0, #0x1c] + cmp r3, #0 + beq _0223B858 + ldr r1, [sp, #4] + ldr r2, [sp, #8] + add r0, r7, #0 + blx r3 +_0223B858: + ldr r0, _0223B874 ; =MOD12_0223C14C + add r1, r7, #0 + mov r2, #0xa + bl FUN_0200CA98 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0223B868: .word 0x02246094 +_0223B86C: .word MOD12_0223C19C +_0223B870: .word 0x0000FFFF +_0223B874: .word MOD12_0223C14C + + thumb_func_start MOD12_0223B878 +MOD12_0223B878: ; 0x0223B878 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x96 + ldrsb r1, [r5, r0] + sub r0, #0x97 + cmp r1, r0 + bne _0223B88A + bl ErrorHandling +_0223B88A: + mov r0, #0x96 + ldrsb r1, [r5, r0] + ldr r3, _0223B910 ; =0x02246094 + mov r0, #0x24 + add r2, r1, #0 + mul r2, r0 + add r4, r3, r2 + ldr r1, [r4, #0x14] + cmp r1, #0 + bne _0223B8A2 + sub r0, #0x25 + pop {r4, r5, r6, pc} +_0223B8A2: + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _0223B8AC + bl ErrorHandling +_0223B8AC: + ldr r0, [r4, #0x14] + bl FUN_02020988 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0223B8F0 + ldr r2, [r4, #0x18] + ldr r1, _0223B914 ; =0x02246070 + cmp r2, r1 + bne _0223B8F0 + ldr r1, _0223B918 ; =0x021C48B8 + mov r2, #0x11 + ldr r1, [r1, #0x48] + add r3, r1, #0 + tst r3, r2 + beq _0223B8D2 + mov r0, #3 + b _0223B8F0 +_0223B8D2: + mov r3, #0x82 + add r6, r1, #0 + tst r6, r3 + beq _0223B8DE + mov r0, #1 + b _0223B8F0 +_0223B8DE: + lsl r2, r2, #6 + tst r2, r1 + beq _0223B8E8 + mov r0, #0 + b _0223B8F0 +_0223B8E8: + lsl r2, r3, #4 + tst r1, r2 + beq _0223B8F0 + mov r0, #2 +_0223B8F0: + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0223B8FE + ldr r1, [r4, #0x18] + lsl r0, r0, #2 + ldr r1, [r1, r0] +_0223B8FE: + ldr r2, [r4, #0x20] + cmp r2, #0 + beq _0223B90A + add r0, r5, #0 + blx r2 + add r1, r0, #0 +_0223B90A: + add r0, r1, #0 + pop {r4, r5, r6, pc} + nop +_0223B910: .word 0x02246094 +_0223B914: .word 0x02246070 +_0223B918: .word 0x021C48B8 + + thumb_func_start MOD12_0223B91C +MOD12_0223B91C: ; 0x0223B91C + ldr r0, [r0, #0xc] + cmp r0, #0 + bne _0223B926 + mov r0, #1 + bx lr +_0223B926: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223B92C +MOD12_0223B92C: ; 0x0223B92C + mov r1, #0x96 + ldrsb r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223B934 +MOD12_0223B934: ; 0x0223B934 + ldr r3, _0223B93C ; =MOD12_0223BE10 + mov r1, #1 + bx r3 + nop +_0223B93C: .word MOD12_0223BE10 + + thumb_func_start MOD12_0223B940 +MOD12_0223B940: ; 0x0223B940 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #1 + mov r1, #0x1a + mov r2, #0xbf + mov r3, #0x17 + bl FUN_0200A86C + add r4, r0, #0 + ldr r0, [r5, #4] + mov r2, #0x12 + lsl r2, r2, #4 + ldr r3, [r0] + add r1, r2, #1 + ldrb r0, [r3, r2] + ldrb r1, [r3, r1] + ldr r3, [r5] + add r2, #0x51 + ldrb r2, [r3, r2] + bl FUN_02083228 + add r6, r0, #0 + ldr r0, [r5, #4] + ldr r1, _0223B9F4 ; =0x0000011F + ldr r2, [r0] + ldrb r0, [r2, r1] + add r1, r1, #2 + ldrb r1, [r2, r1] + bl FUN_020832A4 + add r7, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl FUN_0200A914 + add r6, r0, #0 + add r0, r4, #0 + add r1, r7, #0 + bl FUN_0200A914 + add r7, r0, #0 + ldr r0, _0223B9F8 ; =0x00010200 + add r1, r5, #0 + str r0, [sp] + mov r3, #0 + ldr r0, _0223B9FC ; =0x000080EB + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x7f + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + add r0, r5, #0 + add r1, #0x1c + add r2, r6, #0 + bl MOD12_0223BCD8 + ldr r0, _0223B9F8 ; =0x00010200 + mov r3, #0 + str r0, [sp] + ldr r0, _0223B9FC ; =0x000080EB + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x9f + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + add r0, r5, #0 + add r5, #0x30 + add r1, r5, #0 + add r2, r7, #0 + bl MOD12_0223BCD8 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_0200A8B8 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223B9F4: .word 0x0000011F +_0223B9F8: .word 0x00010200 +_0223B9FC: .word 0x000080EB + + thumb_func_start MOD12_0223BA00 +MOD12_0223BA00: ; 0x0223BA00 + ldr r3, _0223BA08 ; =MOD12_0223BE10 + mov r1, #1 + bx r3 + nop +_0223BA08: .word MOD12_0223BE10 + + thumb_func_start MOD12_0223BA0C +MOD12_0223BA0C: ; 0x0223BA0C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + ldr r2, [r0, #4] + str r0, [sp, #0x18] + add r0, r2, #0 + add r0, #0x84 + ldr r5, [r0] + ldr r1, [r2] + ldr r0, _0223BB14 ; =0x00000123 + ldrb r0, [r1, r0] + add r1, r2, r0 + mov r0, #0xaa + lsl r0, r0, #4 + ldrb r0, [r1, r0] + cmp r0, #1 + bne _0223BA36 + add r0, r5, #0 + mov r1, #0 + bl FUN_0200A914 + b _0223BA3E +_0223BA36: + add r0, r5, #0 + mov r1, #1 + bl FUN_0200A914 +_0223BA3E: + add r4, r0, #0 + add r0, r5, #0 + mov r1, #2 + bl FUN_0200A914 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #3 + bl FUN_0200A914 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #4 + bl FUN_0200A914 + add r5, r0, #0 + ldr r0, _0223BB18 ; =0x0001010B + add r2, r4, #0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0223BB1C ; =0x000080EB + mov r3, #2 + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x18 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r1, r0, #0 + add r1, #0x44 + bl MOD12_0223BCD8 + ldr r0, _0223BB18 ; =0x0001010B + add r2, r6, #0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0223BB1C ; =0x000080EB + mov r3, #2 + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x78 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r1, r0, #0 + add r1, #0x58 + bl MOD12_0223BCD8 + ldr r0, _0223BB18 ; =0x0001010B + add r2, r7, #0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0223BB1C ; =0x000080EB + mov r3, #2 + str r0, [sp, #8] + mov r0, #0x30 + str r0, [sp, #0xc] + mov r0, #0x40 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r1, r0, #0 + add r1, #0x6c + bl MOD12_0223BCD8 + ldr r0, _0223BB18 ; =0x0001010B + add r2, r5, #0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0223BB1C ; =0x000080EB + mov r3, #2 + str r0, [sp, #8] + mov r0, #0xd0 + str r0, [sp, #0xc] + mov r0, #0x40 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r1, r0, #0 + add r1, #0x80 + str r1, [sp, #0x18] + bl MOD12_0223BCD8 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r5, #0 + bl FUN_02021A20 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223BB14: .word 0x00000123 +_0223BB18: .word 0x0001010B +_0223BB1C: .word 0x000080EB + + thumb_func_start MOD12_0223BB20 +MOD12_0223BB20: ; 0x0223BB20 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r4, r0, #0 + add r0, r6, #1 + cmp r0, #4 + bhi _0223BB42 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223BB38: ; jump table + .short _0223BB42 - _0223BB38 - 2 ; case 0 + .short _0223BB46 - _0223BB38 - 2 ; case 1 + .short _0223BB4A - _0223BB38 - 2 ; case 2 + .short _0223BB4E - _0223BB38 - 2 ; case 3 + .short _0223BB52 - _0223BB38 - 2 ; case 4 +_0223BB42: + add r0, r6, #0 + pop {r4, r5, r6, pc} +_0223BB46: + mov r5, #2 + b _0223BB54 +_0223BB4A: + mov r5, #3 + b _0223BB54 +_0223BB4E: + mov r5, #4 + b _0223BB54 +_0223BB52: + mov r5, #5 +_0223BB54: + ldr r0, _0223BBB0 ; =MOD12_0223BEB4 + add r1, r4, #0 + bl MOD12_0223BE64 + add r0, r4, #0 + mov r1, #2 + add r0, #0xb8 + str r1, [r0] + add r0, r4, #0 + add r0, #0xbc + str r1, [r0] + add r0, r4, #0 + add r0, #0xc0 + str r1, [r0] + add r0, r4, #0 + mov r1, #0x12 + add r0, #0xca + strh r1, [r0] + add r0, r4, #0 + mov r1, #0x2d + add r0, #0xc8 + strh r1, [r0] + mov r0, #0xc + ldr r1, _0223BBB4 ; =0x0224614C + mul r0, r6 + add r2, r1, r0 + add r1, r4, #0 + add r1, #0xa0 + str r2, [r1] + ldr r1, _0223BBB8 ; =0x0224617C + add r2, r1, r0 + add r1, r4, #0 + add r1, #0xa4 + str r2, [r1] + ldr r1, _0223BBBC ; =0x022461AC + add r1, r1, r0 + add r0, r4, #0 + add r0, #0xa8 + str r1, [r0] + add r0, r4, #0 + add r0, #0xc4 + str r6, [r0] + add r4, #0xcc + strb r5, [r4] + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223BBB0: .word MOD12_0223BEB4 +_0223BBB4: .word 0x0224614C +_0223BBB8: .word 0x0224617C +_0223BBBC: .word 0x022461AC + + thumb_func_start MOD12_0223BBC0 +MOD12_0223BBC0: ; 0x0223BBC0 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x17 + mov r1, #0x20 + add r5, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x20 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + beq _0223BBEC + lsl r0, r5, #2 + add r0, r6, r0 + add r0, #0xd0 + ldr r0, [r0] + str r0, [r4, #0xc] +_0223BBEC: + ldr r0, [sp, #0x1c] + lsl r0, r0, #5 + strh r0, [r4, #0x1c] + ldr r0, [sp, #0x18] + ldrh r1, [r0] + strh r1, [r4, #0x10] + ldrh r1, [r0, #2] + strh r1, [r4, #0x12] + ldrh r1, [r0, #4] + strh r1, [r4, #0x14] + ldrh r1, [r0, #6] + strh r1, [r4, #0x16] + ldrh r1, [r0, #8] + strh r1, [r4, #0x18] + ldrh r0, [r0, #0xa] + strh r0, [r4, #0x1a] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + bl FUN_020187B0 + str r0, [r4, #4] + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223BC1C +MOD12_0223BC1C: ; 0x0223BC1C + push {r4, lr} + sub sp, #8 + ldr r4, [sp, #0x10] + str r4, [sp] + ldr r4, [sp, #0x14] + str r4, [sp, #4] + bl MOD12_0223BBC0 + add r4, r0, #0 + ldr r0, _0223BC40 ; =MOD12_0223C1DC + add r1, r4, #0 + mov r2, #0x14 + bl FUN_0200CA98 + str r0, [r4] + add r0, r4, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 +_0223BC40: .word MOD12_0223C1DC + + thumb_func_start MOD12_0223BC44 +MOD12_0223BC44: ; 0x0223BC44 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _0223BC62 + ldr r0, [r4, #8] + cmp r0, #0 + beq _0223BC58 + bl FUN_02016A18 +_0223BC58: + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} +_0223BC62: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223BC68 +MOD12_0223BC68: ; 0x0223BC68 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldrh r1, [r5, #0x16] + ldrh r0, [r5, #0x1c] + mov r6, #0 + mul r0, r1 + str r0, [sp] + ldrh r0, [r5, #0x12] + lsl r7, r0, #0xa + ldrh r0, [r5, #0x1a] + cmp r0, #0 + ble _0223BCD4 + add r4, r6, #0 +_0223BC82: + ldr r2, [r5, #0xc] + cmp r2, #0 + beq _0223BCB0 + ldrh r0, [r5, #0x14] + ldrh r3, [r5, #0x1c] + lsl r1, r0, #5 + add r0, r3, #0 + ldr r3, [sp] + mul r0, r6 + add r0, r3, r0 + add r0, r1, r0 + ldrh r1, [r5, #0x10] + add r0, r2, r0 + ldr r3, [r5, #4] + lsl r2, r1, #5 + add r1, r7, r4 + add r1, r2, r1 + ldrh r2, [r5, #0x18] + add r1, r3, r1 + lsl r2, r2, #5 + bl MIi_CpuCopy16 + b _0223BCC6 +_0223BCB0: + ldrh r1, [r5, #0x10] + ldr r3, [r5, #4] + mov r0, #0 + lsl r2, r1, #5 + add r1, r7, r4 + add r1, r2, r1 + ldrh r2, [r5, #0x18] + add r1, r3, r1 + lsl r2, r2, #5 + bl MIi_CpuClear16 +_0223BCC6: + mov r0, #1 + lsl r0, r0, #0xa + add r4, r4, r0 + ldrh r0, [r5, #0x1a] + add r6, r6, #1 + cmp r6, r0 + blt _0223BC82 +_0223BCD4: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223BCD8 +MOD12_0223BCD8: ; 0x0223BCD8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x78 + add r5, r1, #0 + str r0, [sp, #0x18] + ldr r0, [r5] + str r2, [sp, #0x1c] + str r3, [sp, #0x20] + ldr r4, [sp, #0x9c] + cmp r0, #0 + beq _0223BCF0 + bl ErrorHandling +_0223BCF0: + ldr r0, [sp, #0x18] + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, [r1, #0x60] + str r0, [sp, #0x28] + ldr r0, [r1, #0x5c] + ldr r1, [sp, #0x1c] + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + bl FUN_02002E14 + add r7, r0, #0 + asr r1, r7, #2 + lsr r1, r1, #0x1d + add r1, r7, r1 + asr r6, r1, #3 + mov r1, #8 + bl FX_ModS32 + cmp r0, #0 + beq _0223BD1C + add r6, r6, #1 +_0223BD1C: + add r0, sp, #0x38 + bl FUN_0201901C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + lsl r2, r6, #0x18 + ldr r0, [sp, #0x28] + add r1, sp, #0x38 + lsr r2, r2, #0x18 + mov r3, #2 + bl FUN_020190EC + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x90] + ldr r1, [sp, #0x20] + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldr r2, [sp, #0x1c] + add r0, sp, #0x38 + str r3, [sp, #0x14] + bl FUN_0201BE3C + add r0, sp, #0x38 + mov r1, #2 + mov r2, #0x17 + bl FUN_02011898 + mov r1, #1 + mov r2, #2 + add r3, sp, #0x2c + bl FUN_0201D568 + ldr r0, [sp, #0xa4] + cmp r0, #1 + bne _0223BD74 + lsr r0, r7, #0x1f + add r0, r7, r0 + asr r0, r0, #1 + sub r4, r4, r0 +_0223BD74: + ldr r0, [sp, #0x18] + ldr r0, [r0, #0x18] + str r0, [sp, #0x48] + add r0, sp, #0x38 + str r0, [sp, #0x4c] + ldr r0, [sp, #0x24] + bl FUN_0200CA40 + str r0, [sp, #0x50] + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x98] + bl FUN_0200C334 + mov r1, #0 + str r0, [sp, #0x54] + ldr r0, [sp, #0x30] + str r1, [sp, #0x58] + str r0, [sp, #0x5c] + ldr r0, [sp, #0xa0] + str r4, [sp, #0x60] + add r0, #0xf8 + str r0, [sp, #0x64] + mov r0, #0x64 + str r0, [sp, #0x6c] + mov r0, #2 + str r0, [sp, #0x70] + mov r0, #0x17 + str r0, [sp, #0x74] + add r0, sp, #0x48 + str r1, [sp, #0x68] + bl FUN_020117E8 + ldr r1, [sp, #0x94] + add r6, r0, #0 + bl FUN_02011AC0 + ldr r2, [sp, #0xa0] + add r0, r6, #0 + add r1, r4, #0 + add r2, #0xf8 + bl FUN_020118C4 + add r0, sp, #0x38 + bl FUN_02019178 + str r6, [r5] + add r3, sp, #0x2c + ldmia r3!, {r0, r1} + add r2, r5, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + strh r7, [r5, #0x10] + add sp, #0x78 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223BDE4 +MOD12_0223BDE4: ; 0x0223BDE4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 + add r4, #0x20 + add r7, r6, #0 +_0223BDF0: + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _0223BE02 + bl FUN_02011870 + add r0, r4, #0 + bl FUN_0201D5E8 + str r7, [r5, #0x1c] +_0223BE02: + add r6, r6, #1 + add r5, #0x14 + add r4, #0x14 + cmp r6, #6 + blt _0223BDF0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223BE10 +MOD12_0223BE10: ; 0x0223BE10 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + cmp r7, #1 + bne _0223BE2C + mov r1, #0x96 + ldrsb r1, [r0, r1] + cmp r1, #0 + bne _0223BE26 + mov r4, #0 + mov r6, #1 + b _0223BE30 +_0223BE26: + mov r4, #2 + mov r6, #5 + b _0223BE30 +_0223BE2C: + mov r4, #0 + mov r6, #5 +_0223BE30: + cmp r4, r6 + bgt _0223BE4E + mov r1, #0x14 + mul r1, r4 + add r5, r0, r1 +_0223BE3A: + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _0223BE46 + add r1, r7, #0 + bl FUN_020119D0 +_0223BE46: + add r4, r4, #1 + add r5, #0x14 + cmp r4, r6 + ble _0223BE3A +_0223BE4E: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0223BE50 +MOD12_0223BE50: ; 0x0223BE50 + push {r3, lr} + cmp r1, #1 + bne _0223BE5C + bl MOD12_0223BDE4 + pop {r3, pc} +_0223BE5C: + mov r1, #0 + bl MOD12_0223BE10 + pop {r3, pc} + + thumb_func_start MOD12_0223BE64 +MOD12_0223BE64: ; 0x0223BE64 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0223BE74 + bl ErrorHandling +_0223BE74: + add r0, r4, #0 + add r0, #0x98 + mov r1, #0 + mov r2, #0x38 + bl MI_CpuFill8 + ldr r2, _0223BE90 ; =0x00000514 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0xc] + pop {r3, r4, r5, pc} + nop +_0223BE90: .word 0x00000514 + + thumb_func_start MOD12_0223BE94 +MOD12_0223BE94: ; 0x0223BE94 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0223BEB0 + bl FUN_0200CAB4 + mov r1, #0 + str r1, [r4, #0xc] + add r4, #0x98 + add r0, r4, #0 + mov r2, #0x38 + bl MI_CpuFill8 +_0223BEB0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223BEB4 +MOD12_0223BEB4: ; 0x0223BEB4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + mov r0, #0x98 + ldrsh r0, [r4, r0] + cmp r0, #8 + bls _0223BEC4 + b _0223C140 +_0223BEC4: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223BED0: ; jump table + .short _0223BEE2 - _0223BED0 - 2 ; case 0 + .short _0223BF6A - _0223BED0 - 2 ; case 1 + .short _0223BF84 - _0223BED0 - 2 ; case 2 + .short _0223BFAA - _0223BED0 - 2 ; case 3 + .short _0223C034 - _0223BED0 - 2 ; case 4 + .short _0223C050 - _0223BED0 - 2 ; case 5 + .short _0223C076 - _0223BED0 - 2 ; case 6 + .short _0223C100 - _0223BED0 - 2 ; case 7 + .short _0223C11A - _0223BED0 - 2 ; case 8 +_0223BEE2: + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + add r2, r4, #0 + str r0, [sp] + add r0, r4, #0 + add r0, #0xca + ldrh r0, [r0] + add r3, r4, #0 + add r2, #0xc8 + str r0, [sp, #4] + add r3, #0xb8 + ldrh r2, [r2] + ldr r3, [r3] + add r0, r4, #0 + mov r1, #4 + bl MOD12_0223BC1C + add r1, r4, #0 + add r1, #0x9c + str r0, [r1] + add r0, r4, #0 + add r0, #0xcc + ldrb r1, [r0] + mov r0, #0x14 + add r2, sp, #8 + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + add r1, sp, #0xc + bl FUN_020119A4 + add r0, r4, #0 + add r0, #0xcc + ldrb r1, [r0] + mov r0, #0x14 + ldr r2, [sp, #8] + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + ldr r1, [sp, #0xc] + add r2, #0x10 + bl FUN_020118C4 + mov r6, #0 + add r5, r4, #0 + add r7, r6, #0 +_0223BF40: + add r0, r5, #0 + add r0, #0xac + ldr r0, [r0] + cmp r0, #0 + beq _0223BF54 + ldr r0, [r0] + add r1, r7, #0 + mov r2, #0x10 + bl FUN_0200C7FC +_0223BF54: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _0223BF40 + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r4, #0x98 + add sp, #0x10 + add r0, r0, #1 + strh r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0223BF6A: + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + bl MOD12_0223BC44 + cmp r0, #0 + beq _0223C042 + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x98 + strh r1, [r0] +_0223BF84: + mov r1, #0x9a + ldrsh r0, [r4, r1] + add r2, r0, #1 + add r0, r4, #0 + add r0, #0x9a + strh r2, [r0] + ldrsh r0, [r4, r1] + cmp r0, #2 + ble _0223C042 + add r0, r4, #0 + mov r1, #0 + add r0, #0x9a + strh r1, [r0] + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x98 + strh r1, [r0] +_0223BFAA: + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + add r2, r4, #0 + str r0, [sp] + add r0, r4, #0 + add r0, #0xca + ldrh r0, [r0] + add r3, r4, #0 + add r2, #0xc8 + str r0, [sp, #4] + add r3, #0xbc + ldrh r2, [r2] + ldr r3, [r3] + add r0, r4, #0 + mov r1, #4 + bl MOD12_0223BC1C + add r1, r4, #0 + add r1, #0x9c + str r0, [r1] + add r0, r4, #0 + add r0, #0xcc + ldrb r1, [r0] + mov r0, #0x14 + add r2, sp, #8 + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + add r1, sp, #0xc + bl FUN_020119A4 + add r0, r4, #0 + add r0, #0xcc + ldrb r1, [r0] + mov r0, #0x14 + ldr r2, [sp, #8] + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + ldr r1, [sp, #0xc] + sub r2, r2, #4 + bl FUN_020118C4 + mov r6, #0 + add r5, r4, #0 + add r7, r6, #0 +_0223C008: + add r0, r5, #0 + add r0, #0xac + ldr r0, [r0] + cmp r0, #0 + beq _0223C01E + mov r2, #3 + ldr r0, [r0] + add r1, r7, #0 + mvn r2, r2 + bl FUN_0200C7FC +_0223C01E: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _0223C008 + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r4, #0x98 + add sp, #0x10 + add r0, r0, #1 + strh r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0223C034: + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + bl MOD12_0223BC44 + cmp r0, #0 + bne _0223C044 +_0223C042: + b _0223C146 +_0223C044: + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x98 + strh r1, [r0] +_0223C050: + mov r1, #0x9a + ldrsh r0, [r4, r1] + add r2, r0, #1 + add r0, r4, #0 + add r0, #0x9a + strh r2, [r0] + ldrsh r0, [r4, r1] + cmp r0, #2 + ble _0223C146 + add r0, r4, #0 + mov r1, #0 + add r0, #0x9a + strh r1, [r0] + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x98 + strh r1, [r0] +_0223C076: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + add r2, r4, #0 + str r0, [sp] + add r0, r4, #0 + add r0, #0xca + ldrh r0, [r0] + add r3, r4, #0 + add r2, #0xc8 + str r0, [sp, #4] + add r3, #0xc0 + ldrh r2, [r2] + ldr r3, [r3] + add r0, r4, #0 + mov r1, #4 + bl MOD12_0223BC1C + add r1, r4, #0 + add r1, #0x9c + str r0, [r1] + add r0, r4, #0 + add r0, #0xcc + ldrb r1, [r0] + mov r0, #0x14 + add r2, sp, #8 + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + add r1, sp, #0xc + bl FUN_020119A4 + add r0, r4, #0 + add r0, #0xcc + ldrb r1, [r0] + mov r0, #0x14 + ldr r2, [sp, #8] + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + ldr r1, [sp, #0xc] + sub r2, #0xc + bl FUN_020118C4 + mov r6, #0 + add r5, r4, #0 + add r7, r6, #0 +_0223C0D4: + add r0, r5, #0 + add r0, #0xac + ldr r0, [r0] + cmp r0, #0 + beq _0223C0EA + mov r2, #0xb + ldr r0, [r0] + add r1, r7, #0 + mvn r2, r2 + bl FUN_0200C7FC +_0223C0EA: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _0223C0D4 + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r4, #0x98 + add sp, #0x10 + add r0, r0, #1 + strh r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0223C100: + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + bl MOD12_0223BC44 + cmp r0, #0 + beq _0223C146 + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x98 + strh r1, [r0] +_0223C11A: + mov r1, #0x9a + ldrsh r0, [r4, r1] + add r2, r0, #1 + add r0, r4, #0 + add r0, #0x9a + strh r2, [r0] + ldrsh r0, [r4, r1] + cmp r0, #2 + ble _0223C146 + add r0, r4, #0 + mov r1, #0 + add r0, #0x9a + strh r1, [r0] + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x98 + strh r1, [r0] +_0223C140: + add r0, r4, #0 + bl MOD12_0223BE94 +_0223C146: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223C14C +MOD12_0223C14C: ; 0x0223C14C + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + mov r0, #0x96 + ldrsb r1, [r1, r0] + mov r0, #0x24 + mov r4, #0 + ldr r2, _0223C194 ; =0x02246094 + mul r0, r1 + ldr r6, _0223C198 ; =0x0000FFFF + add r5, r2, r0 + add r7, r4, #0 +_0223C162: + ldrh r0, [r5, #4] + cmp r0, r6 + bne _0223C176 + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, r7, #0 + bl FUN_0201797C + b _0223C182 +_0223C176: + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r1, #1 + bl FUN_0201797C +_0223C182: + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _0223C162 + ldr r0, [sp] + bl FUN_0200CAB4 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223C194: .word 0x02246094 +_0223C198: .word 0x0000FFFF + + thumb_func_start MOD12_0223C19C +MOD12_0223C19C: ; 0x0223C19C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x94 + ldrh r2, [r0] + ldr r0, _0223C1D8 ; =0x0000FFFF + cmp r2, r0 + beq _0223C1CE + mov r0, #0 + lsl r2, r2, #2 + str r0, [sp] + ldr r0, [r4, #4] + add r2, r4, r2 + add r2, #0xd0 + mov r3, #6 + ldr r0, [r0, #0x60] + ldr r2, [r2] + mov r1, #4 + lsl r3, r3, #0xc + bl FUN_02017E14 + ldr r0, _0223C1D8 ; =0x0000FFFF + add r4, #0x94 + strh r0, [r4] +_0223C1CE: + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_0223C1D8: .word 0x0000FFFF + + thumb_func_start MOD12_0223C1DC +MOD12_0223C1DC: ; 0x0223C1DC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl MOD12_0223BC68 + mov r0, #0 + str r0, [r4] + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0223C1F4 +MOD12_0223C1F4: ; 0x0223C1F4 + push {r3, lr} + sub sp, #8 + str r2, [sp] + str r1, [sp, #4] + ldr r0, [r0, #4] + mov r1, #1 + add r0, #0x90 + ldr r0, [r0] + mov r2, #0 + mov r3, #0x40 + bl FUN_020039E8 + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD12_0223C210 +MOD12_0223C210: ; 0x0223C210 + mov r1, #6 + mul r1, r0 + ldr r0, _0223C21C ; =0x022461F4 + ldrsh r0, [r0, r1] + bx lr + nop +_0223C21C: .word 0x022461F4 + + thumb_func_start MOD12_0223C220 +MOD12_0223C220: ; 0x0223C220 + mov r1, #6 + mul r1, r0 + ldr r0, _0223C230 ; =0x022461F4 + add r1, r0, r1 + mov r0, #2 + ldrsh r0, [r1, r0] + bx lr + nop +_0223C230: .word 0x022461F4 + + thumb_func_start MOD12_0223C234 +MOD12_0223C234: ; 0x0223C234 + mov r1, #6 + mul r1, r0 + ldr r0, _0223C244 ; =0x022461F4 + add r1, r0, r1 + mov r0, #4 + ldrsh r0, [r1, r0] + bx lr + nop +_0223C244: .word 0x022461F4 + + thumb_func_start MOD12_0223C248 +MOD12_0223C248: ; 0x0223C248 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r4, #0 + b _0223C264 +_0223C252: + lsl r0, r4, #4 + add r0, r5, r0 + add r0, #0xac + ldr r0, [r0] + cmp r0, #0 + beq _0223C262 + bl ErrorHandling +_0223C262: + add r4, r4, #1 +_0223C264: + cmp r4, #4 + blt _0223C252 + add r0, sp, #0 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + mov r0, #0x17 + str r0, [sp, #0xc] + mov r4, #0 + ldr r7, _0223C2F8 ; =0x022461F4 + b _0223C2F0 +_0223C27C: + ldr r0, _0223C2FC ; =0x00000AD5 + add r1, r5, r4 + ldrb r6, [r1, r0] + ldr r1, [r5] + lsl r0, r6, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + add r2, r0, #0 + mov r0, #6 + mul r0, r4 + ldrsh r1, [r7, r0] + add r0, r7, r0 + mov r3, #2 + ldrsh r3, [r0, r3] + str r1, [sp, #4] + add r2, r2, r3 + str r2, [sp, #8] + lsl r2, r6, #4 + add r2, r5, r2 + str r1, [r2, #0x1c] + ldr r1, [sp, #8] + str r1, [r2, #0x20] + mov r1, #4 + ldrsh r0, [r0, r1] + lsl r1, r6, #2 + str r0, [r2, #0x24] + ldr r2, [r5] + add r0, sp, #0 + add r1, r2, r1 + add r1, #0xf8 + ldr r1, [r1] + bl FUN_021DD4F4 + lsl r1, r6, #4 + add r2, r5, r1 + str r0, [r2, #0x18] + ldr r1, [r2, #0x1c] + ldr r2, [r2, #0x20] + bl FUN_021DD620 + cmp r4, #0 + ble _0223C2EE + lsl r0, r6, #4 + add r0, r5, r0 + ldr r0, [r0, #0x18] + mov r1, #0 + bl FUN_021DD59C + lsl r0, r6, #4 + add r0, r5, r0 + mov r1, #0x63 + ldr r0, [r0, #0x18] + mvn r1, r1 + bl FUN_021DD6CC +_0223C2EE: + add r4, r4, #1 +_0223C2F0: + cmp r4, #4 + blt _0223C27C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223C2F8: .word 0x022461F4 +_0223C2FC: .word 0x00000AD5 + + thumb_func_start MOD12_0223C300 +MOD12_0223C300: ; 0x0223C300 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_0223C308: + ldr r0, [r5, #4] + bl FUN_021DD540 + add r0, r5, #0 + add r0, #0x98 + add r4, r4, #1 + add r5, #0x10 + str r6, [r0] + cmp r4, #4 + blt _0223C308 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_0223C320 +MOD12_0223C320: ; 0x0223C320 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223C324 +MOD12_0223C324: ; 0x0223C324 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223C328 +MOD12_0223C328: ; 0x0223C328 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #8 + cmp r1, r0 + ble _0223C338 + add r1, r0, #0 +_0223C338: + asr r0, r1, #2 + lsr r0, r0, #0x1d + add r0, r1, r0 + lsr r2, r1, #0x1f + lsl r1, r1, #0x1d + asr r4, r0, #3 + sub r1, r1, r2 + mov r0, #0x1d + ror r1, r0 + add r0, r2, r1 + str r0, [sp, #4] + ldr r0, [sp] + mov r1, #3 + ldr r0, [r0, #0x60] + bl FUN_0201886C + add r2, r0, #0 + mov r1, #0 + cmp r4, #0 + ble _0223C394 + ldr r0, _0223C420 ; =0x00002014 + add r3, r2, #0 + mov r7, #0x1d +_0223C366: + lsr r6, r1, #0x1f + lsl r5, r1, #0x1d + sub r5, r5, r6 + ror r5, r7 + add r5, r6, r5 + bne _0223C37A + mov r5, #0x13 + lsl r5, r5, #6 + strh r0, [r3, r5] + b _0223C38C +_0223C37A: + mov r5, #1 + tst r5, r1 + beq _0223C384 + ldr r6, _0223C424 ; =0x00002034 + b _0223C386 +_0223C384: + ldr r6, _0223C428 ; =0x00002054 +_0223C386: + mov r5, #0x13 + lsl r5, r5, #6 + strh r6, [r3, r5] +_0223C38C: + add r1, r1, #1 + add r3, r3, #2 + cmp r1, r4 + blt _0223C366 +_0223C394: + cmp r1, #0x20 + bge _0223C3D4 + lsr r4, r1, #0x1f + lsl r3, r1, #0x1d + sub r3, r3, r4 + mov r0, #0x1d + ror r3, r0 + add r0, r4, r3 + bne _0223C3B8 + ldr r3, _0223C42C ; =0x0000200C + ldr r0, [sp, #4] + add r4, r0, r3 + lsl r0, r1, #1 + add r3, r2, r0 + mov r0, #0x13 + lsl r0, r0, #6 + strh r4, [r3, r0] + b _0223C3D2 +_0223C3B8: + mov r0, #1 + tst r0, r1 + beq _0223C3C2 + ldr r3, _0223C430 ; =0x0000202C + b _0223C3C4 +_0223C3C2: + ldr r3, _0223C434 ; =0x0000204C +_0223C3C4: + ldr r0, [sp, #4] + add r4, r0, r3 + lsl r0, r1, #1 + add r3, r2, r0 + mov r0, #0x13 + lsl r0, r0, #6 + strh r4, [r3, r0] +_0223C3D2: + add r1, r1, #1 +_0223C3D4: + cmp r1, #0x20 + bge _0223C410 + lsl r0, r1, #1 + add r2, r2, r0 + mov r4, #0x13 + ldr r0, _0223C42C ; =0x0000200C + mov r7, #1 + lsl r4, r4, #6 + mov r5, #0x1d +_0223C3E6: + lsr r6, r1, #0x1f + lsl r3, r1, #0x1d + sub r3, r3, r6 + ror r3, r5 + add r3, r6, r3 + bne _0223C3F6 + strh r0, [r2, r4] + b _0223C408 +_0223C3F6: + add r3, r1, #0 + tst r3, r7 + beq _0223C400 + ldr r6, _0223C430 ; =0x0000202C + b _0223C402 +_0223C400: + ldr r6, _0223C434 ; =0x0000204C +_0223C402: + mov r3, #0x13 + lsl r3, r3, #6 + strh r6, [r2, r3] +_0223C408: + add r1, r1, #1 + add r2, r2, #2 + cmp r1, #0x20 + blt _0223C3E6 +_0223C410: + ldr r0, [sp] + mov r1, #3 + ldr r0, [r0, #0x60] + bl FUN_0201AC68 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223C420: .word 0x00002014 +_0223C424: .word 0x00002034 +_0223C428: .word 0x00002054 +_0223C42C: .word 0x0000200C +_0223C430: .word 0x0000202C +_0223C434: .word 0x0000204C + + thumb_func_start MOD12_0223C438 +MOD12_0223C438: ; 0x0223C438 + push {r4, lr} + add r4, r0, #0 + lsl r0, r1, #8 + add r1, r2, #0 + bl _s32_div_f + add r1, r0, #0 + add r0, r4, #0 + bl MOD12_0223C328 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223C450 +MOD12_0223C450: ; 0x0223C450 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223C4D8 ; =0x000080EB + mov r3, #0x3a + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0223C4DC ; =0x000080EC + add r1, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x3b + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0223C4E0 ; =0x000080ED + add r1, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x3c + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0223C4E4 ; =0x000080EE + add r1, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x3d + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223C4D8 ; =0x000080EB + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x3e + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223C4D8 ; =0x000080EB + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x3f + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_0223C4D8: .word 0x000080EB +_0223C4DC: .word 0x000080EC +_0223C4E0: .word 0x000080ED +_0223C4E4: .word 0x000080EE + + thumb_func_start MOD12_0223C4E8 +MOD12_0223C4E8: ; 0x0223C4E8 + push {r4, lr} + ldr r1, _0223C51C ; =0x000080EB + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223C520 ; =0x000080EC + add r0, r4, #0 + bl FUN_0200C358 + ldr r1, _0223C524 ; =0x000080ED + add r0, r4, #0 + bl FUN_0200C358 + ldr r1, _0223C528 ; =0x000080EE + add r0, r4, #0 + bl FUN_0200C358 + ldr r1, _0223C51C ; =0x000080EB + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223C51C ; =0x000080EB + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223C51C: .word 0x000080EB +_0223C520: .word 0x000080EC +_0223C524: .word 0x000080ED +_0223C528: .word 0x000080EE + + thumb_func_start MOD12_0223C52C +MOD12_0223C52C: ; 0x0223C52C + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + ldr r4, _0223C62C ; =0x022462E0 + add r7, r2, #0 + add r6, r3, #0 + add r5, r0, #0 + mov ip, r1 + add r3, sp, #0 + mov r2, #6 +_0223C53E: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223C53E + ldr r0, [r4] + cmp r6, #2 + str r0, [r3] + bne _0223C556 + ldr r0, [sp, #8] + add r0, #0xa + str r0, [sp, #8] + b _0223C586 +_0223C556: + ldr r0, [sp, #0x54] + cmp r0, #3 + bhi _0223C586 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223C568: ; jump table + .short _0223C586 - _0223C568 - 2 ; case 0 + .short _0223C570 - _0223C568 - 2 ; case 1 + .short _0223C578 - _0223C568 - 2 ; case 2 + .short _0223C580 - _0223C568 - 2 ; case 3 +_0223C570: + ldr r0, [sp, #8] + add r0, r0, #3 + str r0, [sp, #8] + b _0223C586 +_0223C578: + ldr r0, [sp, #8] + add r0, r0, #2 + str r0, [sp, #8] + b _0223C586 +_0223C580: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_0223C586: + ldr r0, [sp, #0x48] + cmp r0, #4 + bhi _0223C5C0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223C598: ; jump table + .short _0223C5C0 - _0223C598 - 2 ; case 0 + .short _0223C5B6 - _0223C598 - 2 ; case 1 + .short _0223C5C0 - _0223C598 - 2 ; case 2 + .short _0223C5A2 - _0223C598 - 2 ; case 3 + .short _0223C5AC - _0223C598 - 2 ; case 4 +_0223C5A2: + ldr r0, _0223C630 ; =0x000080EC + str r0, [sp, #0x14] + mov r0, #2 + str r0, [sp, #0xc] + b _0223C5C8 +_0223C5AC: + ldr r0, _0223C634 ; =0x000080EE + str r0, [sp, #0x14] + mov r0, #6 + str r0, [sp, #0xc] + b _0223C5C8 +_0223C5B6: + ldr r0, _0223C638 ; =0x000080ED + str r0, [sp, #0x14] + mov r0, #7 + str r0, [sp, #0xc] + b _0223C5C8 +_0223C5C0: + ldr r0, _0223C63C ; =0x000080EB + str r0, [sp, #0x14] + mov r0, #2 + str r0, [sp, #0xc] +_0223C5C8: + mov r0, ip + add r1, r7, #0 + add r2, sp, #0 + bl FUN_0200C154 + add r4, r0, #0 + add r1, r6, #0 + bl FUN_0200C5C0 + ldr r0, [r4] + bl FUN_0200C59C + ldr r1, [sp, #0x4c] + ldr r2, [sp, #0x50] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + mov r3, #1 + add r0, r4, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + add r0, r4, #0 + mov r1, #1 + bl FUN_0200C5E0 + mov r0, #0 + add r2, r5, #0 +_0223C602: + add r1, r2, #0 + add r1, #0xd8 + ldr r1, [r1] + cmp r1, #0 + bne _0223C618 + lsl r1, r0, #2 + add r1, r5, r1 + add r1, #0xd8 + add sp, #0x34 + str r4, [r1] + pop {r4, r5, r6, r7, pc} +_0223C618: + add r0, r0, #1 + add r2, r2, #4 + cmp r0, #0x44 + blt _0223C602 + bl ErrorHandling + mov r0, #0 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_0223C62C: .word 0x022462E0 +_0223C630: .word 0x000080EC +_0223C634: .word 0x000080EE +_0223C638: .word 0x000080ED +_0223C63C: .word 0x000080EB + + thumb_func_start MOD12_0223C640 +MOD12_0223C640: ; 0x0223C640 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_0223C648: + add r0, r5, #0 + add r0, #0xd8 + ldr r0, [r0] + cmp r0, #0 + beq _0223C65C + bl FUN_0200C3DC + add r0, r5, #0 + add r0, #0xd8 + str r6, [r0] +_0223C65C: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x44 + blt _0223C648 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_0223C668 +MOD12_0223C668: ; 0x0223C668 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223C6B0 ; =0x000080EF + mov r3, #0x37 + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223C6B4 ; =0x000080EC + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x38 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223C6B4 ; =0x000080EC + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x39 + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_0223C6B0: .word 0x000080EF +_0223C6B4: .word 0x000080EC + + thumb_func_start MOD12_0223C6B8 +MOD12_0223C6B8: ; 0x0223C6B8 + push {r4, lr} + ldr r1, _0223C6D4 ; =0x000080EF + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223C6D8 ; =0x000080EC + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223C6D8 ; =0x000080EC + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223C6D4: .word 0x000080EF +_0223C6D8: .word 0x000080EC + + thumb_func_start MOD12_0223C6DC +MOD12_0223C6DC: ; 0x0223C6DC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + mov r4, #0 +_0223C6E6: + ldr r2, _0223C708 ; =0x02246314 + add r0, r6, #0 + add r1, r7, #0 + bl FUN_0200C154 + ldr r1, _0223C70C ; =0x000009DC + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_0200C644 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _0223C6E6 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223C708: .word 0x02246314 +_0223C70C: .word 0x000009DC + + thumb_func_start MOD12_0223C710 +MOD12_0223C710: ; 0x0223C710 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r7, _0223C730 ; =0x000009DC + add r5, r0, #0 + add r6, r4, #0 +_0223C71A: + ldr r0, _0223C730 ; =0x000009DC + ldr r0, [r5, r0] + bl FUN_0200C3DC + str r6, [r5, r7] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _0223C71A + pop {r3, r4, r5, r6, r7, pc} + nop +_0223C730: .word 0x000009DC + + thumb_func_start MOD12_0223C734 +MOD12_0223C734: ; 0x0223C734 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r5, r0, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #5 + bl FUN_0200A914 + str r0, [sp, #0x38] + add r0, r5, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #6 + bl FUN_0200A914 + str r0, [sp, #0x34] + add r0, r5, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #7 + bl FUN_0200A914 + str r0, [sp, #0x30] + mov r0, #0 + ldr r1, _0223C868 ; =0x000009E8 + str r0, [sp, #0x3c] + add r0, r5, r1 + str r0, [sp, #0x2c] + add r0, r1, #0 + add r0, #0x3c + add r1, #0x78 + add r4, r5, #0 + add r7, r5, r0 + add r6, r5, r1 +_0223C778: + ldr r0, [sp, #0x2c] + add r3, r5, #0 + str r0, [sp] + ldr r0, [sp, #0x38] + add r3, #0x94 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, _0223C86C ; =0x000B0C00 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, _0223C870 ; =0x000080E9 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + str r0, [sp, #0x1c] + mov r0, #1 + str r0, [sp, #0x20] + str r0, [sp, #0x24] + mov r0, #0xc + str r0, [sp, #0x28] + ldr r1, [r5, #0x60] + ldr r2, [r5, #0x5c] + ldr r3, [r3] + mov r0, #0x17 + bl MOD12_02231380 + ldr r0, _0223C868 ; =0x000009E8 + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_020119D0 + add r3, r5, #0 + ldr r0, [sp, #0x34] + str r7, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, _0223C86C ; =0x000B0C00 + add r3, #0x94 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, _0223C870 ; =0x000080E9 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + str r0, [sp, #0x1c] + mov r0, #1 + str r0, [sp, #0x20] + str r0, [sp, #0x24] + mov r0, #0xc + str r0, [sp, #0x28] + ldr r1, [r5, #0x60] + ldr r2, [r5, #0x5c] + ldr r3, [r3] + mov r0, #0x17 + bl MOD12_02231380 + ldr r0, _0223C874 ; =0x00000A24 + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_020119D0 + add r3, r5, #0 + ldr r0, [sp, #0x30] + str r6, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, _0223C86C ; =0x000B0C00 + add r3, #0x94 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, _0223C870 ; =0x000080E9 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + str r0, [sp, #0x1c] + mov r0, #1 + str r0, [sp, #0x20] + str r0, [sp, #0x24] + mov r0, #0xc + str r0, [sp, #0x28] + ldr r1, [r5, #0x60] + ldr r2, [r5, #0x5c] + ldr r3, [r3] + mov r0, #0x17 + bl MOD12_02231380 + mov r0, #0xa6 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020119D0 + ldr r0, [sp, #0x2c] + add r4, #0x14 + add r0, #0x14 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x3c] + add r7, #0x14 + add r0, r0, #1 + add r6, #0x14 + str r0, [sp, #0x3c] + cmp r0, #3 + blt _0223C778 + ldr r0, [sp, #0x38] + bl FUN_02021A20 + ldr r0, [sp, #0x34] + bl FUN_02021A20 + ldr r0, [sp, #0x30] + bl FUN_02021A20 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223C868: .word 0x000009E8 +_0223C86C: .word 0x000B0C00 +_0223C870: .word 0x000080E9 +_0223C874: .word 0x00000A24 + + thumb_func_start MOD12_0223C878 +MOD12_0223C878: ; 0x0223C878 + push {r3, r4, r5, r6, r7, lr} + ldr r1, _0223C89C ; =0x000009E8 + mov r7, #0 + add r6, r0, r1 +_0223C880: + mov r4, #0 + add r5, r6, #0 +_0223C884: + add r0, r5, #0 + bl MOD12_0223147C + add r4, r4, #1 + add r5, #0x14 + cmp r4, #3 + blt _0223C884 + add r7, r7, #1 + add r6, #0x3c + cmp r7, #3 + blt _0223C880 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223C89C: .word 0x000009E8 + + thumb_func_start MOD12_0223C8A0 +MOD12_0223C8A0: ; 0x0223C8A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r4, [sp, #0x2c] + add r5, r0, #0 + str r3, [sp] + cmp r4, #0 + bne _0223C8B2 + str r4, [sp, #4] + b _0223C8B6 +_0223C8B2: + sub r0, r4, #1 + str r0, [sp, #4] +_0223C8B6: + mov r0, #0x9a + lsl r0, r0, #4 + add r2, r5, r0 + ldr r0, [sp, #4] + mov r1, #0x14 + mul r1, r0 + add r6, r2, r1 + ldr r0, [r6, #8] + cmp r0, #0 + beq _0223C8CE + bl FUN_0200CAB4 +_0223C8CE: + add r0, r6, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + ldr r1, _0223C980 ; =0x022461E4 + lsl r2, r4, #2 + ldrsh r0, [r1, r2] + add r1, r1, r2 + str r0, [sp, #0xc] + mov r0, #2 + ldrsh r0, [r1, r0] + str r0, [sp, #8] + ldr r0, [sp, #4] + lsl r0, r0, #2 + add r1, r5, r0 + ldr r0, _0223C984 ; =0x000009DC + ldr r0, [r1, r0] + ldr r1, [sp] + str r0, [r6] + bl FUN_0200C5C0 + ldr r1, [sp, #0xc] + ldr r2, [sp, #8] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + mov r3, #1 + ldr r0, [r6] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + ldr r0, [r6] + ldr r0, [r0] + bl FUN_0200C59C + ldr r0, [r6] + mov r1, #1 + bl FUN_0200C644 + ldr r0, [sp, #4] + mov r1, #0x14 + add r7, r0, #0 + mov r4, #0 + mul r7, r1 + b _0223C940 +_0223C92C: + mov r0, #0x3c + mul r0, r4 + add r0, r5, r0 + add r1, r0, r7 + ldr r0, _0223C988 ; =0x000009E8 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020119D0 + add r4, r4, #1 +_0223C940: + cmp r4, #3 + blt _0223C92C + ldr r0, _0223C988 ; =0x000009E8 + mov r1, #0x3c + add r2, r5, r0 + ldr r0, [sp] + mov r3, #1 + mul r1, r0 + add r2, r2, r1 + ldr r0, [sp, #4] + mov r1, #0x14 + mul r1, r0 + add r0, r2, r1 + ldr r1, [sp, #0xc] + ldr r2, [sp, #8] + str r0, [r6, #4] + bl MOD12_02231490 + ldr r0, [r6, #4] + mov r1, #1 + ldr r0, [r0] + bl FUN_020119D0 + ldr r0, _0223C98C ; =MOD12_0223C994 + ldr r2, _0223C990 ; =0x00009D08 + add r1, r6, #0 + bl FUN_0200CA44 + str r0, [r6, #8] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223C980: .word 0x022461E4 +_0223C984: .word 0x000009DC +_0223C988: .word 0x000009E8 +_0223C98C: .word MOD12_0223C994 +_0223C990: .word 0x00009D08 + + thumb_func_start MOD12_0223C994 +MOD12_0223C994: ; 0x0223C994 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223C9A8 + cmp r0, #1 + beq _0223C9E6 + b _0223C9FA +_0223C9A8: + ldr r0, [r4, #4] + add r1, sp, #4 + ldr r0, [r0] + add r2, sp, #0 + bl FUN_020119A4 + ldr r0, [sp] + ldr r1, [sp, #4] + sub r2, r0, #4 + str r2, [sp] + ldr r0, [r4, #4] + ldr r0, [r0] + bl FUN_020118C4 + mov r1, #0 + ldr r0, [r4] + sub r2, r1, #4 + bl FUN_0200C82C + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #4 + ble _0223CA16 + mov r0, #0 + str r0, [r4, #0xc] + ldrb r0, [r4, #0x10] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223C9E6: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #0xe + ble _0223CA16 + ldrb r0, [r4, #0x10] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223C9FA: + ldr r0, [r4, #4] + mov r1, #0 + ldr r0, [r0] + bl FUN_020119D0 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200C644 + mov r0, #0 + str r0, [r4, #8] + add r0, r5, #0 + bl FUN_0200CAB4 +_0223CA16: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223CA1C +MOD12_0223CA1C: ; 0x0223CA1C + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r7, _0223CA40 ; =0x000009A8 + add r5, r0, #0 + add r6, r4, #0 +_0223CA26: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0223CA34 + bl FUN_0200CAB4 + ldr r0, _0223CA40 ; =0x000009A8 + str r6, [r5, r0] +_0223CA34: + add r4, r4, #1 + add r5, #0x14 + cmp r4, #3 + blt _0223CA26 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223CA40: .word 0x000009A8 + + thumb_func_start MOD12_0223CA44 +MOD12_0223CA44: ; 0x0223CA44 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223CA8C ; =0x000080F0 + mov r3, #0x40 + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223CA90 ; =0x000080ED + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x41 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223CA90 ; =0x000080ED + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x42 + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_0223CA8C: .word 0x000080F0 +_0223CA90: .word 0x000080ED + + thumb_func_start MOD12_0223CA94 +MOD12_0223CA94: ; 0x0223CA94 + push {r4, lr} + ldr r1, _0223CAB0 ; =0x000080F0 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223CAB4 ; =0x000080ED + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223CAB4 ; =0x000080ED + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223CAB0: .word 0x000080F0 +_0223CAB4: .word 0x000080ED + + thumb_func_start MOD12_0223CAB8 +MOD12_0223CAB8: ; 0x0223CAB8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + ldr r2, _0223CAD8 ; =0x02246244 + bl FUN_0200C154 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0200C59C + mov r0, #0x7a + lsl r0, r0, #2 + str r4, [r5, r0] + pop {r3, r4, r5, pc} + nop +_0223CAD8: .word 0x02246244 + + thumb_func_start MOD12_0223CADC +MOD12_0223CADC: ; 0x0223CADC + push {r4, lr} + add r4, r0, #0 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0223CAF6 + bl FUN_0200C3DC + mov r0, #0x7a + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_0223CAF6: + pop {r4, pc} + + thumb_func_start MOD12_0223CAF8 +MOD12_0223CAF8: ; 0x0223CAF8 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0223CB10 ; =MOD12_0223CB28 + ldr r2, _0223CB14 ; =0x00009CAE + add r1, r4, #0 + bl FUN_0200CA44 + mov r1, #2 + lsl r1, r1, #8 + str r0, [r4, r1] + pop {r4, pc} + nop +_0223CB10: .word MOD12_0223CB28 +_0223CB14: .word 0x00009CAE + + thumb_func_start MOD12_0223CB18 +MOD12_0223CB18: ; 0x0223CB18 + mov r1, #2 + lsl r1, r1, #8 + ldr r3, _0223CB24 ; =0x0200CAB5 + ldr r0, [r0, r1] + bx r3 + nop +_0223CB24: .word 0x0200CAB5 + + thumb_func_start MOD12_0223CB28 +MOD12_0223CB28: ; 0x0223CB28 + push {r3, lr} + ldr r2, [r1] + ldr r0, _0223CB50 ; =0x00000123 + mov r3, #1 + ldrb r2, [r2, r0] + add r0, #0xd9 + ldr r0, [r1, r0] + lsl r2, r2, #4 + add r2, r1, r2 + ldr r1, [r2, #0x1c] + ldr r2, [r2, #0x20] + lsl r1, r1, #0x10 + sub r2, #0x28 + lsl r2, r2, #0x10 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + pop {r3, pc} + .align 2, 0 +_0223CB50: .word 0x00000123 + + thumb_func_start MOD12_0223CB54 +MOD12_0223CB54: ; 0x0223CB54 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223CB9C ; =0x000080F2 + mov r3, #0x5a + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223CBA0 ; =0x000080EF + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x59 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223CBA0 ; =0x000080EF + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x58 + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_0223CB9C: .word 0x000080F2 +_0223CBA0: .word 0x000080EF + + thumb_func_start MOD12_0223CBA4 +MOD12_0223CBA4: ; 0x0223CBA4 + push {r4, lr} + ldr r1, _0223CBC0 ; =0x000080F2 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223CBC4 ; =0x000080EF + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223CBC4 ; =0x000080EF + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223CBC0: .word 0x000080F2 +_0223CBC4: .word 0x000080EF + + thumb_func_start MOD12_0223CBC8 +MOD12_0223CBC8: ; 0x0223CBC8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp] + mov r0, #0 + str r1, [sp, #4] + str r0, [sp, #0xc] + ldr r4, [sp] + mov r1, #2 + add r0, r4, #0 + lsl r1, r1, #8 + ldr r6, [sp, #0xc] + str r2, [sp, #8] + add r7, r0, #4 + add r5, r0, r1 +_0223CBE4: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + ldr r2, _0223CC60 ; =0x022462AC + bl FUN_0200C154 + mov r1, #0x81 + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + ldr r0, [r0] + bl FUN_0200C59C + mov r0, #0x81 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200C840 + ldr r1, [sp, #0xc] + ldr r0, _0223CC64 ; =0x00000213 + strb r1, [r4, r0] + sub r0, r0, #7 + str r7, [r4, r0] + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, r6] + bl FUN_02068E14 + mov r1, #0x85 + lsl r1, r1, #2 + strb r0, [r4, r1] + mov r1, #1 + add r0, r5, #0 + add r2, r1, #0 + bl MOD12_0223CD38 + ldr r0, _0223CC68 ; =MOD12_0223CCBC + ldr r2, _0223CC6C ; =0x0000A08C + add r1, r5, #0 + bl FUN_0200CA44 + mov r1, #2 + lsl r1, r1, #8 + str r0, [r4, r1] + ldr r0, [sp, #0xc] + add r4, #0x18 + add r0, r0, #1 + add r7, #0x10 + add r6, r6, #4 + add r5, #0x18 + str r0, [sp, #0xc] + cmp r0, #4 + blt _0223CBE4 + ldr r0, [sp] + mov r1, #0 + bl MOD12_0223CC9C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223CC60: .word 0x022462AC +_0223CC64: .word 0x00000213 +_0223CC68: .word MOD12_0223CCBC +_0223CC6C: .word 0x0000A08C + + thumb_func_start MOD12_0223CC70 +MOD12_0223CC70: ; 0x0223CC70 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + mov r7, #0x81 + add r5, r0, #0 + add r6, r4, #0 + lsl r7, r7, #2 +_0223CC7C: + mov r0, #0x81 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0200C3DC + mov r0, #2 + lsl r0, r0, #8 + ldr r0, [r5, r0] + bl FUN_0200CAB4 + str r6, [r5, r7] + add r4, r4, #1 + add r5, #0x18 + cmp r4, #4 + blt _0223CC7C + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0223CC9C +MOD12_0223CC9C: ; 0x0223CC9C + push {r3, r4, r5, r6, r7, lr} + mov r7, #0x81 + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 + lsl r7, r7, #2 +_0223CCA8: + ldr r0, [r5, r7] + add r1, r6, #0 + bl FUN_0200C644 + add r4, r4, #1 + add r5, #0x18 + cmp r4, #4 + blt _0223CCA8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223CCBC +MOD12_0223CCBC: ; 0x0223CCBC + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + ldr r0, [r5, #0xc] + ldr r6, [r0, #4] + ldr r4, [r0, #8] + ldr r0, [r0, #0xc] + bl MOD12_0223D06C + mov r1, #0x14 + ldrsb r2, [r5, r1] + mov r1, #0x28 + sub r2, r1, r2 + add r1, r2, #0 + mul r1, r0 + asr r2, r1, #7 + lsr r2, r2, #0x18 + add r2, r1, r2 + asr r1, r2, #8 + add r4, r4, r1 + mov r1, #0x64 + mul r1, r0 + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r0, r0, #8 + bl _fflt + ldr r1, _0223CD34 ; =0x42C80000 + bl _fdiv + add r7, r0, #0 + ldrb r0, [r5, #0x12] + cmp r0, #0 + bne _0223CD16 + add r1, sp, #0 + mov r3, #1 + ldr r0, [r5, #4] + add r1, #2 + add r2, sp, #0 + lsl r3, r3, #0x14 + bl FUN_0200C7F0 + add r1, sp, #0 + mov r0, #0 + ldrsh r4, [r1, r0] +_0223CD16: + lsl r1, r6, #0x10 + lsl r2, r4, #0x10 + mov r3, #1 + ldr r0, [r5, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + ldr r0, [r5, #4] + add r1, r7, #0 + add r2, r7, #0 + bl FUN_0200C884 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223CD34: .word 0x42C80000 + + thumb_func_start MOD12_0223CD38 +MOD12_0223CD38: ; 0x0223CD38 + strb r1, [r0, #0x11] + strb r2, [r0, #0x12] + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223CD40 +MOD12_0223CD40: ; 0x0223CD40 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223CD88 ; =0x000080F3 + mov r3, #0x5d + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223CD8C ; =0x000080F0 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x5c + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223CD8C ; =0x000080F0 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x5b + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_0223CD88: .word 0x000080F3 +_0223CD8C: .word 0x000080F0 + + thumb_func_start MOD12_0223CD90 +MOD12_0223CD90: ; 0x0223CD90 + push {r4, lr} + ldr r1, _0223CDAC ; =0x000080F3 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223CDB0 ; =0x000080F0 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223CDB0 ; =0x000080F0 + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223CDAC: .word 0x000080F3 +_0223CDB0: .word 0x000080F0 + + thumb_func_start MOD12_0223CDB4 +MOD12_0223CDB4: ; 0x0223CDB4 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223CDB8 +MOD12_0223CDB8: ; 0x0223CDB8 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223CDBC +MOD12_0223CDBC: ; 0x0223CDBC + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223CE04 ; =0x000080F4 + mov r3, #0x60 + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223CE08 ; =0x000080F1 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x5f + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223CE08 ; =0x000080F1 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x5e + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_0223CE04: .word 0x000080F4 +_0223CE08: .word 0x000080F1 + + thumb_func_start MOD12_0223CE0C +MOD12_0223CE0C: ; 0x0223CE0C + push {r4, lr} + ldr r1, _0223CE28 ; =0x000080F4 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223CE2C ; =0x000080F1 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223CE2C ; =0x000080F1 + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223CE28: .word 0x000080F4 +_0223CE2C: .word 0x000080F1 + + thumb_func_start MOD12_0223CE30 +MOD12_0223CE30: ; 0x0223CE30 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0xad + lsl r0, r0, #2 + add r7, r1, #0 + add r1, r5, r0 + sub r0, #0xf4 + mul r0, r7 + add r4, r1, r0 + str r2, [sp] + mov r1, #0 +_0223CE48: + ldr r0, [r4] + cmp r0, #0 + beq _0223CE56 + add r1, r1, #1 + add r4, #0x1c + cmp r1, #0x10 + blt _0223CE48 +_0223CE56: + cmp r1, #0x10 + bne _0223CE60 + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223CE60: + ldr r0, [r5, #0x6c] + ldr r1, [r5, #0x70] + ldr r2, _0223CF2C ; =0x02246348 + bl FUN_0200C154 + add r6, r0, #0 + bne _0223CE74 + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223CE74: + lsl r1, r7, #4 + add r2, r5, r1 + ldr r1, [r2, #0x1c] + ldr r7, [r2, #0x20] + str r1, [sp, #4] + ldr r1, [sp] + bl FUN_0200C5C0 + ldr r1, [sp, #4] + lsl r2, r7, #0x10 + lsl r1, r1, #0x10 + mov r3, #1 + add r0, r6, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + ldr r0, [r6] + mov r1, #1 + bl FUN_020200BC + ldr r0, [r6] + bl FUN_0200C59C + ldr r0, [r5] + bl FUN_02082878 + ldr r2, _0223CF30 ; =0x04000280 + mov r1, #0 + strh r1, [r2] + str r0, [r2, #0x10] + mov r0, #5 + lsl r0, r0, #8 + add r2, #0x18 + str r0, [r2] + str r1, [r2, #4] + add r0, r4, #0 + mov r2, #0x1c + bl MI_CpuFill8 + ldr r0, [sp, #4] + str r6, [r4, #4] + lsl r0, r0, #8 + str r0, [r4, #8] + lsl r0, r7, #8 + ldr r2, _0223CF30 ; =0x04000280 + str r0, [r4, #0xc] + lsr r0, r2, #0xb +_0223CED6: + ldrh r1, [r2] + tst r1, r0 + bne _0223CED6 + ldr r0, _0223CF34 ; =0x040002A8 + ldr r1, [r0] + mov r0, #1 + str r1, [r4, #0x10] + tst r0, r1 + beq _0223CEEC + neg r0, r1 + str r0, [r4, #0x10] +_0223CEEC: + ldr r0, [r5] + bl FUN_02082878 + ldr r2, _0223CF38 ; =0x04000290 + mov r1, #0xf + str r0, [r2] + lsl r1, r1, #8 + add r2, #8 + mov r0, #0 + str r1, [r2] + str r0, [r2, #4] + ldr r2, _0223CF30 ; =0x04000280 + lsr r0, r2, #0xb +_0223CF06: + ldrh r1, [r2] + tst r1, r0 + bne _0223CF06 + ldr r0, _0223CF34 ; =0x040002A8 + ldr r2, _0223CF3C ; =0x00009C40 + ldr r1, [r0] + lsr r0, r0, #0x10 + add r0, r1, r0 + neg r0, r0 + str r0, [r4, #0x14] + ldr r0, _0223CF40 ; =MOD12_0223CF44 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4] + mov r0, #1 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223CF2C: .word 0x02246348 +_0223CF30: .word 0x04000280 +_0223CF34: .word 0x040002A8 +_0223CF38: .word 0x04000290 +_0223CF3C: .word 0x00009C40 +_0223CF40: .word MOD12_0223CF44 + + thumb_func_start MOD12_0223CF44 +MOD12_0223CF44: ; 0x0223CF44 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r1, [r4, #8] + ldr r0, [r4, #0x10] + add r0, r1, r0 + str r0, [r4, #8] + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [r4, #0xc] + mov r0, #2 + ldr r1, [r4, #0x14] + lsl r0, r0, #8 + add r0, r1, r0 + str r0, [r4, #0x14] + ldrh r0, [r4, #0x18] + add r0, r0, #1 + strh r0, [r4, #0x18] + ldrh r0, [r4, #0x18] + cmp r0, #0xa + bhi _0223CF8A + mov r0, #0x11 + ldr r1, [r4, #8] + lsl r0, r0, #0xc + cmp r1, r0 + bgt _0223CF8A + ldr r0, _0223CFF0 ; =0xFFFEF000 + cmp r1, r0 + blt _0223CF8A + mov r0, #0xd + ldr r2, [r4, #0xc] + lsl r0, r0, #0xc + cmp r2, r0 + ble _0223CF9E +_0223CF8A: + ldr r0, [r4, #4] + bl FUN_0200C3DC + add r0, r5, #0 + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #4] + str r0, [r4] + pop {r3, r4, r5, pc} +_0223CF9E: + ldr r0, _0223CFF4 ; =0x04000280 + mov r3, #0 + strh r3, [r0] + str r1, [r0, #0x10] + add r1, r0, #0 + lsr r2, r0, #0x12 + add r1, #0x18 + str r2, [r1] + str r3, [r1, #4] + lsr r1, r0, #0xb +_0223CFB2: + ldrh r2, [r0] + tst r2, r1 + bne _0223CFB2 + ldr r3, _0223CFF8 ; =0x040002A0 + ldr r2, [r4, #0xc] + add r0, r3, #0 + ldr r1, [r3] + sub r0, #0x10 + str r2, [r0] + lsr r2, r3, #0x12 + sub r3, #8 + mov r0, #0 + str r2, [r3] + str r0, [r3, #4] + ldr r3, _0223CFF4 ; =0x04000280 + lsr r0, r3, #0xb +_0223CFD2: + ldrh r2, [r3] + tst r2, r0 + bne _0223CFD2 + ldr r2, _0223CFF8 ; =0x040002A0 + lsl r1, r1, #0x10 + ldr r2, [r2] + mov r3, #1 + lsl r2, r2, #0x10 + ldr r0, [r4, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223CFF0: .word 0xFFFEF000 +_0223CFF4: .word 0x04000280 +_0223CFF8: .word 0x040002A0 + + thumb_func_start MOD12_0223CFFC +MOD12_0223CFFC: ; 0x0223CFFC + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + cmp r2, #2 + beq _0223D058 + add r0, r1, #0 + lsl r0, r0, #1 + add r1, r7, r0 + ldr r0, _0223D05C ; =0x00000ADA + ldrsh r0, [r1, r0] + cmp r0, #0 + beq _0223D058 + ldr r1, _0223D060 ; =0x04000280 + mov r6, #0 + strh r6, [r1] + str r0, [r1, #0x10] + mov r0, #2 + add r1, #0x18 + str r0, [r1] + str r6, [r1, #4] + cmp r3, #0 + beq _0223D02A + mov r6, #1 +_0223D02A: + ldr r2, _0223D060 ; =0x04000280 + lsr r0, r2, #0xb +_0223D02E: + ldrh r1, [r2] + tst r1, r0 + bne _0223D02E + ldr r0, _0223D064 ; =0x040002A0 + ldr r5, [r0] + cmp r5, #0x10 + ble _0223D03E + mov r5, #0x10 +_0223D03E: + mov r4, #0 + cmp r5, #0 + ble _0223D058 +_0223D044: + ldr r1, [sp] + add r0, r7, #0 + add r2, r6, #0 + bl MOD12_0223CE30 + cmp r0, #0 + beq _0223D058 + add r4, r4, #1 + cmp r4, r5 + blt _0223D044 +_0223D058: + pop {r3, r4, r5, r6, r7, pc} + nop +_0223D05C: .word 0x00000ADA +_0223D060: .word 0x04000280 +_0223D064: .word 0x040002A0 + + thumb_func_start MOD12_0223D068 +MOD12_0223D068: ; 0x0223D068 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223D06C +MOD12_0223D06C: ; 0x0223D06C + ldr r1, _0223D098 ; =0xFFFFFD80 + cmp r0, r1 + bne _0223D076 + mov r0, #0xc0 + bx lr +_0223D076: + add r1, #0x80 + cmp r0, r1 + bne _0223D082 + mov r0, #1 + lsl r0, r0, #8 + bx lr +_0223D082: + mov r1, #0xa + lsl r1, r1, #6 + add r0, r0, r1 + lsl r1, r0, #6 + asr r0, r1, #6 + lsr r0, r0, #0x19 + add r0, r1, r0 + asr r0, r0, #7 + add r0, #0xc0 + bx lr + nop +_0223D098: .word 0xFFFFFD80 + + thumb_func_start MOD12_0223D09C +MOD12_0223D09C: ; 0x0223D09C + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0xc] + bl MOD12_0223D06C + mov r1, #1 + lsl r1, r1, #8 + cmp r0, r1 + bne _0223D0B2 + lsl r1, r1, #4 + b _0223D0BC +_0223D0B2: + lsl r1, r0, #0xc + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r1, r0, #8 +_0223D0BC: + mov r3, #1 + ldr r0, [r4] + add r2, r1, #0 + lsl r3, r3, #0xc + bl FUN_021DD60C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223D0CC +MOD12_0223D0CC: ; 0x0223D0CC + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #4 +_0223D0D4: + ldr r0, [r5, #0x48] + add r1, r4, #0 + bl MOD12_0223D09C + add r6, r6, #1 + add r4, #0x10 + add r5, r5, #4 + cmp r6, #4 + blt _0223D0D4 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_0223D0E8 +MOD12_0223D0E8: ; 0x0223D0E8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + ldrb r0, [r2, #2] + str r2, [sp, #0x10] + cmp r0, r1 + bne _0223D0FC + mov r0, #0 + str r0, [sp, #0x14] + b _0223D100 +_0223D0FC: + mov r0, #1 + str r0, [sp, #0x14] +_0223D100: + ldr r0, [sp, #0x10] + mov r4, #0 + ldrb r0, [r0, #6] + lsl r6, r0, #3 + ldr r0, [sp, #0x10] + ldrb r1, [r0, #7] + ldr r0, _0223D1C0 ; =0x022461DC + ldrb r7, [r0, r1] + b _0223D156 +_0223D112: + lsl r0, r4, #2 + add r0, r5, r0 + add r0, #0xec + ldr r0, [r0] + cmp r0, #0 + beq _0223D154 + add r1, sp, #0x18 + mov r3, #1 + add r1, #2 + add r2, sp, #0x18 + lsl r3, r3, #0x14 + bl FUN_0200C7F0 + add r1, sp, #0x18 + mov r0, #2 + ldrsh r0, [r1, r0] + cmp r0, r6 + bne _0223D154 + mov r0, #0 + ldrsh r0, [r1, r0] + cmp r0, r7 + bne _0223D154 + lsl r0, r4, #2 + add r0, r5, r0 + add r0, #0xec + ldr r0, [r0] + bl FUN_0200C5CC + cmp r0, #2 + beq _0223D154 + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223D154: + add r4, r4, #1 +_0223D156: + cmp r4, #0x44 + blt _0223D112 + ldr r0, [sp, #0x10] + ldr r3, [sp, #0x14] + ldrb r0, [r0, #3] + str r0, [sp] + str r6, [sp, #4] + ldr r0, [sp, #0x10] + str r7, [sp, #8] + ldrb r0, [r0, #7] + str r0, [sp, #0xc] + add r0, r5, #0 + ldr r1, [r5, #0x6c] + ldr r2, [r5, #0x70] + add r0, #0x14 + bl MOD12_0223C52C + ldr r0, [sp, #0x10] + ldrb r0, [r0, #7] + cmp r0, #0 + bne _0223D1BA + ldr r0, [sp, #0x14] + cmp r0, #1 + bne _0223D1BA + ldr r0, [r5] + ldr r1, _0223D1C4 ; =0x00000123 + ldr r2, _0223D1C8 ; =0x00000AD5 + ldrb r0, [r0, r1] + add r6, #0x80 + add r0, r5, r0 + ldrb r3, [r0, r2] + ldr r0, _0223D1C0 ; =0x022461DC + ldrb r3, [r0, r3] + ldr r0, [sp, #0x10] + ldrb r0, [r0, #3] + str r0, [sp] + str r6, [sp, #4] + str r3, [sp, #8] + ldr r0, [r5] + mov r3, #2 + ldrb r0, [r0, r1] + add r0, r5, r0 + ldrb r0, [r0, r2] + str r0, [sp, #0xc] + add r0, r5, #0 + ldr r1, [r5, #0x6c] + ldr r2, [r5, #0x70] + add r0, #0x14 + bl MOD12_0223C52C +_0223D1BA: + mov r0, #1 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223D1C0: .word 0x022461DC +_0223D1C4: .word 0x00000123 +_0223D1C8: .word 0x00000AD5 + + thumb_func_start MOD12_0223D1CC +MOD12_0223D1CC: ; 0x0223D1CC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + ldrb r1, [r4, #5] + add r5, r0, #0 + ldrb r0, [r4, #2] + cmp r1, #3 + bhi _0223D200 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223D1E8: ; jump table + .short _0223D1F0 - _0223D1E8 - 2 ; case 0 + .short _0223D1F4 - _0223D1E8 - 2 ; case 1 + .short _0223D1F8 - _0223D1E8 - 2 ; case 2 + .short _0223D1FC - _0223D1E8 - 2 ; case 3 +_0223D1F0: + mov r2, #2 + b _0223D202 +_0223D1F4: + mov r2, #2 + b _0223D202 +_0223D1F8: + mov r2, #1 + b _0223D202 +_0223D1FC: + mov r2, #1 + b _0223D202 +_0223D200: + mov r2, #0 +_0223D202: + ldr r1, _0223D498 ; =0x00000ADA + lsl r0, r0, #1 + add r1, r5, r1 + add r3, r1, r0 + str r3, [sp, #8] + ldrsh r3, [r1, r0] + add r2, r3, r2 + strh r2, [r1, r0] + ldrb r0, [r4, #7] + cmp r0, #0 + bne _0223D262 + ldr r0, _0223D49C ; =0x00001BA0 + mov r2, #0 + add r3, r5, r0 + add r6, r5, #0 + sub r7, r0, #2 +_0223D222: + ldrb r0, [r3] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bne _0223D250 + mov r0, #0xa + mul r0, r2 + ldrh r1, [r4] + ldr r2, _0223D4A0 ; =0x00001B98 + add r0, r5, r0 + strh r1, [r0, r2] + ldrh r3, [r4, #2] + add r1, r2, #2 + strh r3, [r0, r1] + ldrh r3, [r4, #4] + add r1, r2, #4 + strh r3, [r0, r1] + add r1, r2, #6 + ldrh r3, [r4, #6] + add r2, #8 + strh r3, [r0, r1] + ldrh r1, [r4, #8] + strh r1, [r0, r2] + b _0223D262 +_0223D250: + ldrb r1, [r4, #6] + ldrb r0, [r6, r7] + cmp r1, r0 + beq _0223D262 + add r2, r2, #1 + add r3, #0xa + add r6, #0xa + cmp r2, #8 + blt _0223D222 +_0223D262: + ldrb r0, [r4, #4] + cmp r0, #0 + bne _0223D280 + ldr r0, _0223D4A4 ; =0x00000AB9 + ldrb r2, [r4, #2] + add r3, r5, r0 + add r0, r0, #4 + ldrb r1, [r3, r2] + add r1, r1, #1 + strb r1, [r3, r2] + ldrb r1, [r4, #2] + add r2, r5, r0 + ldrb r0, [r2, r1] + add r0, r0, #1 + b _0223D290 +_0223D280: + ldrb r1, [r4, #2] + mov r0, #0 + add r2, r5, r1 + ldr r1, _0223D4A4 ; =0x00000AB9 + strb r0, [r2, r1] + ldrb r2, [r4, #2] + add r1, r1, #4 + add r2, r5, r2 +_0223D290: + strb r0, [r2, r1] + ldrb r0, [r4, #4] + cmp r0, #2 + beq _0223D2A6 + ldr r0, _0223D4A8 ; =0x00000AC8 + ldrb r1, [r4, #2] + add r2, r5, r0 + ldrb r0, [r2, r1] + add r0, r0, #1 + strb r0, [r2, r1] + b _0223D2BC +_0223D2A6: + ldr r0, _0223D4AC ; =0x00000AC1 + ldrb r2, [r4, #2] + add r3, r5, r0 + add r0, r0, #7 + ldrb r1, [r3, r2] + add r1, r1, #1 + strb r1, [r3, r2] + ldrb r1, [r4, #2] + mov r2, #0 + add r1, r5, r1 + strb r2, [r1, r0] +_0223D2BC: + ldrb r0, [r4, #7] + cmp r0, #0 + beq _0223D2EE + ldrb r0, [r4, #4] + cmp r0, #0 + beq _0223D2D2 + cmp r0, #1 + beq _0223D2DC + cmp r0, #2 + beq _0223D2E6 + b _0223D2EE +_0223D2D2: + ldr r0, _0223D4B0 ; =0x00000AC5 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + b _0223D2EE +_0223D2DC: + ldr r0, _0223D4B4 ; =0x00000AC6 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + b _0223D2EE +_0223D2E6: + ldr r0, _0223D4B8 ; =0x00000AC7 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] +_0223D2EE: + ldrb r0, [r4, #2] + str r0, [sp] + ldrb r0, [r4, #7] + str r0, [sp, #4] + add r0, r5, #0 + ldrb r3, [r4, #4] + ldr r1, [r5, #0x6c] + ldr r2, [r5, #0x70] + add r0, #0x14 + bl MOD12_0223C8A0 + ldr r2, [r5] + ldr r1, _0223D4BC ; =0x00000123 + add r0, r5, #0 + ldrb r1, [r2, r1] + add r2, r4, #0 + bl MOD12_0223D0E8 + ldrb r0, [r4, #8] + mov r1, #0 + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + str r0, [sp] + ldr r0, [sp, #8] + ldrsh r0, [r0, r1] + str r0, [sp, #4] + ldrb r1, [r4, #2] + ldrb r2, [r4, #7] + ldrb r3, [r4, #3] + add r0, r5, #0 + bl MOD12_0223D4E8 + ldrb r1, [r4, #2] + ldrb r2, [r4, #4] + ldrb r3, [r4, #7] + add r0, r5, #0 + bl MOD12_0223CFFC + add r0, r5, #0 + add r1, r4, #0 + bl MOD12_0223E788 + ldr r1, [r5] + ldr r0, _0223D4BC ; =0x00000123 + ldrb r2, [r4, #2] + ldrb r0, [r1, r0] + cmp r2, r0 + bne _0223D36E + ldrb r0, [r4, #4] + cmp r0, #0 + bne _0223D360 + ldrb r1, [r4, #6] + add r0, r5, #0 + mov r2, #1 + bl MOD12_0223E9C4 + b _0223D36E +_0223D360: + cmp r0, #1 + bne _0223D36E + ldrb r1, [r4, #6] + add r0, r5, #0 + mov r2, #0 + bl MOD12_0223E9C4 +_0223D36E: + ldrb r1, [r4, #7] + cmp r1, #0 + bne _0223D3AC + ldrb r0, [r4, #8] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223D3AC + ldrb r1, [r4, #2] + ldr r0, _0223D4C0 ; =0x00000AFE + add r2, r5, r1 + add r1, r0, #0 + sub r1, #0x41 + ldrb r3, [r5, r0] + ldrb r1, [r2, r1] + cmp r3, r1 + bne _0223D39A + add r0, r5, #0 + mov r1, #1 + bl MOD12_0223EA48 + b _0223D3F2 +_0223D39A: + sub r0, #0x3d + ldrb r0, [r2, r0] + cmp r0, #0 + bne _0223D3F2 + add r0, r5, #0 + mov r1, #0 + bl MOD12_0223EA48 + b _0223D3F2 +_0223D3AC: + cmp r1, #0 + beq _0223D3F2 + ldrb r0, [r4, #8] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223D3F2 + ldr r3, _0223D4B0 ; =0x00000AC5 + add r0, r3, #2 + ldrb r1, [r5, r0] + add r0, r3, #0 + ldrb r2, [r5, r3] + add r0, #0x39 + add r3, r3, #1 + ldrb r6, [r5, r0] + ldrb r3, [r5, r3] + lsl r0, r6, #1 + add r3, r2, r3 + add r0, r6, r0 + add r3, r1, r3 + cmp r0, r3 + bne _0223D3F2 + cmp r2, r0 + bne _0223D3E6 + add r0, r5, #0 + mov r1, #1 + bl MOD12_0223EA48 + b _0223D3F2 +_0223D3E6: + cmp r1, #0 + bne _0223D3F2 + add r0, r5, #0 + mov r1, #0 + bl MOD12_0223EA48 +_0223D3F2: + ldrb r0, [r4, #8] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223D404 + ldr r0, _0223D4C4 ; =0x000006F5 + bl FUN_020054C8 + b _0223D40A +_0223D404: + ldr r0, _0223D4C8 ; =0x000006F4 + bl FUN_020054C8 +_0223D40A: + ldr r0, _0223D4CC ; =0x00000ACC + ldrb r0, [r5, r0] + cmp r0, #0 + beq _0223D426 + beq _0223D492 + ldrb r0, [r4, #7] + cmp r0, #0 + beq _0223D426 + ldr r1, [r5] + ldr r0, _0223D4BC ; =0x00000123 + ldrb r2, [r4, #2] + ldrb r0, [r1, r0] + cmp r2, r0 + bne _0223D492 +_0223D426: + ldrb r0, [r4, #4] + cmp r0, #0 + beq _0223D438 + cmp r0, #1 + beq _0223D46E + cmp r0, #2 + beq _0223D478 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223D438: + ldrb r0, [r4, #2] + add r1, r5, r0 + ldr r0, _0223D4D0 ; =0x00000ABD + ldrb r1, [r1, r0] + add r0, #0x41 + ldrb r0, [r5, r0] + cmp r0, r1 + bne _0223D454 + mov r0, #0x6f + lsl r0, r0, #4 + bl FUN_020054C8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223D454: + sub r0, r0, #1 + cmp r0, r1 + bne _0223D464 + ldr r0, _0223D4D4 ; =0x000006EF + bl FUN_020054C8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223D464: + ldr r0, _0223D4D8 ; =0x000006EE + bl FUN_020054C8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223D46E: + ldr r0, _0223D4DC ; =0x000006F1 + bl FUN_020054C8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223D478: + ldrb r0, [r4, #8] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223D48C + ldr r0, _0223D4E0 ; =0x000006F2 + bl FUN_020054C8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223D48C: + ldr r0, _0223D4E4 ; =0x000005F6 + bl FUN_020054C8 +_0223D492: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_0223D498: .word 0x00000ADA +_0223D49C: .word 0x00001BA0 +_0223D4A0: .word 0x00001B98 +_0223D4A4: .word 0x00000AB9 +_0223D4A8: .word 0x00000AC8 +_0223D4AC: .word 0x00000AC1 +_0223D4B0: .word 0x00000AC5 +_0223D4B4: .word 0x00000AC6 +_0223D4B8: .word 0x00000AC7 +_0223D4BC: .word 0x00000123 +_0223D4C0: .word 0x00000AFE +_0223D4C4: .word 0x000006F5 +_0223D4C8: .word 0x000006F4 +_0223D4CC: .word 0x00000ACC +_0223D4D0: .word 0x00000ABD +_0223D4D4: .word 0x000006EF +_0223D4D8: .word 0x000006EE +_0223D4DC: .word 0x000006F1 +_0223D4E0: .word 0x000006F2 +_0223D4E4: .word 0x000005F6 + + thumb_func_start MOD12_0223D4E8 +MOD12_0223D4E8: ; 0x0223D4E8 + push {r4, r5, r6, lr} + ldr r4, _0223D558 ; =0x00000F3C + add r5, r0, r4 + mov r0, #0x4c + add r4, r1, #0 + mul r4, r0 + add r1, r5, r4 + add r4, r1, #0 + add r4, #0x20 + ldrb r4, [r4] + sub r0, #0x4d + add r6, r4, #0 + cmp r4, #0x20 + bge _0223D514 +_0223D504: + ldrb r5, [r1, r6] + cmp r5, #0 + bne _0223D50E + add r0, r6, #0 + b _0223D514 +_0223D50E: + add r6, r6, #1 + cmp r6, #0x20 + blt _0223D504 +_0223D514: + mov r5, #0 + mvn r5, r5 + cmp r0, r5 + bne _0223D532 + mov r6, #0 + cmp r4, #0 + ble _0223D532 +_0223D522: + ldrb r5, [r1, r6] + cmp r5, #0 + bne _0223D52C + add r0, r6, #0 + b _0223D532 +_0223D52C: + add r6, r6, #1 + cmp r6, r4 + blt _0223D522 +_0223D532: + mov r4, #0 + mvn r4, r4 + cmp r0, r4 + bne _0223D540 + bl ErrorHandling + pop {r4, r5, r6, pc} +_0223D540: + strb r3, [r1, r0] + add r0, r1, #0 + add r0, #0x21 + strb r2, [r0] + add r0, r1, #0 + ldr r2, [sp, #0x10] + add r0, #0x22 + strb r2, [r0] + ldr r0, [sp, #0x14] + add r1, #0x23 + strb r0, [r1] + pop {r4, r5, r6, pc} + .align 2, 0 +_0223D558: .word 0x00000F3C + + thumb_func_start MOD12_0223D55C +MOD12_0223D55C: ; 0x0223D55C + push {r4, lr} + add r4, r0, #0 + ldr r0, _0223D570 ; =MOD12_0223D5B0 + ldr r2, _0223D574 ; =0x00009862 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #8] + pop {r4, pc} + nop +_0223D570: .word MOD12_0223D5B0 +_0223D574: .word 0x00009862 + + thumb_func_start MOD12_0223D578 +MOD12_0223D578: ; 0x0223D578 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #8] + pop {r4, pc} + + thumb_func_start MOD12_0223D588 +MOD12_0223D588: ; 0x0223D588 + ldr r1, _0223D5AC ; =0x00000F3C + mov r2, #0 + add r1, r0, r1 +_0223D58E: + add r0, r1, #0 + add r0, #0x20 + ldrb r0, [r0] + ldrb r0, [r1, r0] + cmp r0, #0 + beq _0223D59E + mov r0, #0 + bx lr +_0223D59E: + add r2, r2, #1 + add r1, #0x4c + cmp r2, #4 + blt _0223D58E + mov r0, #1 + bx lr + nop +_0223D5AC: .word 0x00000F3C + + thumb_func_start MOD12_0223D5B0 +MOD12_0223D5B0: ; 0x0223D5B0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r1, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x18] + ldr r1, _0223D76C ; =0x00000F3C + ldr r0, [sp, #0x10] + ldr r6, [sp, #0x10] + add r4, r0, r1 + mov r1, #0x85 + lsl r1, r1, #2 + add r0, r0, r1 + ldr r5, [sp, #0x10] + str r0, [sp, #0x14] + add r6, #0x18 +_0223D5CE: + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + mov r7, #0 + ldrb r0, [r4, r0] + str r0, [sp, #0x1c] + cmp r0, #0 + bne _0223D5E0 + b _0223D750 +_0223D5E0: + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x18] + mov r2, #4 + bl MOD12_0223DCE8 + ldr r1, [sp, #0x10] + ldr r0, _0223D770 ; =0x00000AE8 + ldr r0, [r1, r0] + ldr r1, _0223D774 ; =0x00002710 + bl _u32_div_f + ldr r1, [sp, #0x1c] + cmp r1, #4 + bls _0223D5FE + b _0223D708 +_0223D5FE: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223D60A: ; jump table + .short _0223D708 - _0223D60A - 2 ; case 0 + .short _0223D614 - _0223D60A - 2 ; case 1 + .short _0223D67E - _0223D60A - 2 ; case 2 + .short _0223D6AC - _0223D60A - 2 ; case 3 + .short _0223D6DA - _0223D60A - 2 ; case 4 +_0223D614: + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x18] + add r2, r2, r1 + ldr r1, _0223D778 ; =0x00000AB4 + ldrb r1, [r2, r1] + cmp r1, #1 + bne _0223D650 + add r1, r4, #0 + add r1, #0x22 + ldrb r1, [r1] + add r3, r4, #0 + sub r0, r0, #1 + str r1, [sp] + add r1, r4, #0 + add r1, #0x23 + ldrb r1, [r1] + add r3, #0x21 + add r2, r6, #0 + str r1, [sp, #4] + ldr r1, [sp, #0x14] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r4, #0 + ldrb r3, [r3] + ldr r1, [r5, #0x5c] + add r0, #0x24 + bl MOD12_0223D77C + add r7, r0, #0 + b _0223D70C +_0223D650: + add r1, r4, #0 + add r1, #0x22 + ldrb r1, [r1] + add r3, r4, #0 + sub r0, r0, #1 + str r1, [sp] + add r1, r4, #0 + add r1, #0x23 + ldrb r1, [r1] + add r3, #0x21 + add r2, r6, #0 + str r1, [sp, #4] + add r1, r7, #0 + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r4, #0 + ldrb r3, [r3] + ldr r1, [r5, #0x5c] + add r0, #0x24 + bl MOD12_0223D890 + add r7, r0, #0 + b _0223D70C +_0223D67E: + add r1, r4, #0 + add r1, #0x22 + ldrb r1, [r1] + add r3, r4, #0 + sub r0, r0, #1 + str r1, [sp] + add r1, r4, #0 + add r1, #0x23 + ldrb r1, [r1] + add r3, #0x21 + add r2, r6, #0 + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r4, #0 + ldrb r3, [r3] + ldr r1, [r5, #0x5c] + add r0, #0x24 + bl MOD12_0223D890 + add r7, r0, #0 + b _0223D70C +_0223D6AC: + add r1, r4, #0 + add r1, #0x22 + ldrb r1, [r1] + add r3, r4, #0 + sub r0, r0, #1 + str r1, [sp] + add r1, r4, #0 + add r1, #0x23 + ldrb r1, [r1] + add r3, #0x21 + add r2, r6, #0 + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r4, #0 + ldrb r3, [r3] + ldr r1, [r5, #0x5c] + add r0, #0x24 + bl MOD12_0223DA10 + add r7, r0, #0 + b _0223D70C +_0223D6DA: + add r1, r4, #0 + add r1, #0x22 + ldrb r1, [r1] + add r3, r4, #0 + sub r0, r0, #1 + str r1, [sp] + add r1, r4, #0 + add r1, #0x23 + ldrb r1, [r1] + add r3, #0x21 + add r2, r6, #0 + str r1, [sp, #4] + add r1, r7, #0 + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r4, #0 + ldrb r3, [r3] + ldr r1, [r5, #0x5c] + add r0, #0x24 + bl MOD12_0223DA10 + add r7, r0, #0 + b _0223D70C +_0223D708: + bl ErrorHandling +_0223D70C: + cmp r7, #1 + bne _0223D750 + add r0, r4, #0 + add r0, #0x20 + ldrb r1, [r0] + mov r0, #0 + strb r0, [r4, r1] + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x20 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x20 + blo _0223D73A + add r1, r4, #0 + add r1, #0x20 + mov r0, #0 + strb r0, [r1] +_0223D73A: + add r0, r4, #0 + add r0, #0x24 + mov r1, #0 + mov r2, #0x28 + bl MI_CpuFill8 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x18] + mov r2, #3 + bl MOD12_0223DCE8 +_0223D750: + ldr r0, [sp, #0x14] + add r4, #0x4c + add r0, #0x18 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r6, #0x10 + add r0, r0, #1 + add r5, r5, #4 + str r0, [sp, #0x18] + cmp r0, #4 + bge _0223D768 + b _0223D5CE +_0223D768: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223D76C: .word 0x00000F3C +_0223D770: .word 0x00000AE8 +_0223D774: .word 0x00002710 +_0223D778: .word 0x00000AB4 + + thumb_func_start MOD12_0223D77C +MOD12_0223D77C: ; 0x0223D77C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0 + str r0, [sp, #4] + ldrb r0, [r5, #0x10] + add r4, r2, #0 + add r6, r3, #0 + cmp r0, #0 + beq _0223D796 + cmp r0, #1 + beq _0223D7E4 + b _0223D818 +_0223D796: + ldr r0, [r4, #4] + ldr r1, [sp, #0x2c] + lsl r0, r0, #8 + str r0, [r5] + ldr r0, [r4, #8] + lsr r1, r1, #1 + lsl r0, r0, #8 + str r0, [r5, #4] + ldr r0, [r5] + str r0, [r5, #8] + ldr r0, [r5, #4] + str r0, [r5, #0xc] + mov r0, #5 + lsl r0, r0, #8 + bl _u32_div_f + ldr r1, [sp, #0x20] + cmp r1, #1 + bne _0223D7CE + ldr r1, _0223D888 ; =0xFFFFF600 + strh r1, [r5, #0x14] + mov r1, #0xc8 + mul r1, r0 + add r0, r1, #0 + mov r1, #0x64 + bl _s32_div_f + b _0223D7D2 +_0223D7CE: + ldr r1, _0223D88C ; =0xFFFFFB00 + strh r1, [r5, #0x14] +_0223D7D2: + strh r0, [r5, #0x16] + ldr r0, [sp, #0x28] + mov r1, #1 + mov r2, #0 + bl MOD12_0223CD38 + ldrb r0, [r5, #0x10] + add r0, r0, #1 + strb r0, [r5, #0x10] +_0223D7E4: + mov r0, #0x14 + ldrsh r1, [r5, r0] + ldr r2, [r5, #0xc] + add r1, r2, r1 + str r1, [r5, #0xc] + ldrsh r1, [r5, r0] + mov r0, #0x16 + ldrsh r0, [r5, r0] + add r0, r1, r0 + strh r0, [r5, #0x14] + ldr r1, [r5, #4] + ldr r0, [r5, #0xc] + cmp r0, r1 + blt _0223D81E + str r1, [r5, #0xc] + mov r1, #1 + ldr r0, [sp, #0x28] + add r2, r1, #0 + bl MOD12_0223CD38 + mov r0, #1 + str r0, [sp, #4] + ldrb r0, [r5, #0x10] + add r0, r0, #1 + strb r0, [r5, #0x10] + b _0223D81E +_0223D818: + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223D81E: + cmp r6, #0 + bne _0223D826 + mov r6, #0x64 + b _0223D828 +_0223D826: + mov r6, #0x28 +_0223D828: + ldr r0, [sp, #0x24] + lsl r1, r0, #9 + mov r0, #0x19 + lsl r0, r0, #0xa + cmp r1, r0 + ble _0223D836 + add r1, r0, #0 +_0223D836: + asr r0, r1, #8 + add r6, r6, r0 + ldr r0, [r5] + ldr r1, [r5, #8] + str r0, [sp] + sub r1, r1, r0 + ldr r7, [r5, #4] + ldr r0, [r5, #0xc] + sub r5, r0, r7 + add r0, r1, #0 + mul r0, r6 + mov r1, #0x64 + bl _s32_div_f + str r0, [sp, #8] + add r0, r5, #0 + mul r0, r6 + mov r1, #0x64 + bl _s32_div_f + ldr r2, [sp] + ldr r1, [sp, #8] + add r2, r2, r1 + asr r1, r2, #7 + lsr r1, r1, #0x18 + add r1, r2, r1 + asr r1, r1, #8 + str r1, [r4, #4] + add r1, r7, r0 + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r2, r0, #8 + str r2, [r4, #8] + ldr r0, [r4] + ldr r1, [r4, #4] + bl FUN_021DD620 + ldr r0, [sp, #4] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223D888: .word 0xFFFFF600 +_0223D88C: .word 0xFFFFFB00 + + thumb_func_start MOD12_0223D890 +MOD12_0223D890: ; 0x0223D890 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0 + str r0, [sp, #0xc] + ldrb r0, [r4, #0x10] + add r6, r2, #0 + str r3, [sp] + ldr r5, [sp, #0x30] + cmp r0, #0 + beq _0223D8B0 + cmp r0, #1 + beq _0223D908 + cmp r0, #2 + beq _0223D95A + b _0223D99E +_0223D8B0: + ldr r0, [r6, #4] + ldr r1, [sp, #0x34] + lsl r0, r0, #8 + str r0, [r4] + ldr r0, [r6, #8] + lsl r0, r0, #8 + str r0, [r4, #4] + ldr r0, [r4] + str r0, [r4, #8] + ldr r0, [r4, #4] + str r0, [r4, #0xc] + mov r0, #0x1e + mul r0, r1 + mov r1, #0x64 + bl _u32_div_f + add r7, r0, #0 + mov r0, #1 + lsl r0, r0, #0xc + add r1, r7, #0 + bl _s32_div_f + ldr r1, [sp, #0x34] + str r0, [r4, #0x14] + mov r0, #1 + lsl r0, r0, #0xc + sub r1, r1, r7 + bl _s32_div_f + str r0, [r4, #0x18] + cmp r5, #0 + bne _0223D902 + ldr r1, [r4, #0x14] + mov r0, #0 + mvn r0, r0 + add r2, r1, #0 + mul r2, r0 + str r2, [r4, #0x14] + ldr r1, [r4, #0x18] + mul r0, r1 + str r0, [r4, #0x18] +_0223D902: + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223D908: + ldr r0, [sp, #0x28] + cmp r0, #1 + bne _0223D924 + ldr r1, [r4, #0x14] + mov r0, #0xc8 + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r1, [r4, #0xc] + add r0, r1, r0 + str r0, [r4, #0xc] + mov r0, #0x20 + b _0223D92E +_0223D924: + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [r4, #0xc] + mov r0, #0x10 +_0223D92E: + lsl r0, r0, #8 + str r0, [sp, #8] + ldr r7, [r4, #4] + ldr r0, [r4, #0xc] + sub r0, r0, r7 + bl abs + ldr r1, [sp, #8] + cmp r0, r1 + blt _0223D9A4 + cmp r5, #1 + bne _0223D94C + add r0, r1, #0 + add r0, r7, r0 + b _0223D950 +_0223D94C: + add r0, r1, #0 + sub r0, r7, r0 +_0223D950: + str r0, [r4, #0xc] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + b _0223D9A4 +_0223D95A: + ldr r0, [sp, #0x28] + cmp r0, #1 + bne _0223D970 + ldr r1, [r4, #0x18] + mov r0, #0xc8 + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r1, [r4, #0xc] + b _0223D974 +_0223D970: + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x18] +_0223D974: + sub r0, r1, r0 + str r0, [r4, #0xc] + cmp r5, #1 + bne _0223D984 + ldr r1, [r4, #4] + ldr r0, [r4, #0xc] + cmp r0, r1 + ble _0223D990 +_0223D984: + cmp r5, #0 + bne _0223D9A4 + ldr r1, [r4, #4] + ldr r0, [r4, #0xc] + cmp r0, r1 + blt _0223D9A4 +_0223D990: + str r1, [r4, #0xc] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + mov r0, #1 + str r0, [sp, #0xc] + b _0223D9A4 +_0223D99E: + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223D9A4: + ldr r0, [sp] + cmp r0, #0 + bne _0223D9AE + mov r5, #0x64 + b _0223D9B0 +_0223D9AE: + mov r5, #0x28 +_0223D9B0: + ldr r0, [sp, #0x2c] + lsl r1, r0, #9 + mov r0, #0x19 + lsl r0, r0, #0xa + cmp r1, r0 + ble _0223D9BE + add r1, r0, #0 +_0223D9BE: + asr r0, r1, #8 + add r5, r5, r0 + ldr r0, [r4] + ldr r1, [r4, #8] + str r0, [sp, #4] + sub r1, r1, r0 + ldr r7, [r4, #4] + ldr r0, [r4, #0xc] + sub r4, r0, r7 + add r0, r1, #0 + mul r0, r5 + mov r1, #0x64 + bl _s32_div_f + str r0, [sp, #0x10] + add r0, r4, #0 + mul r0, r5 + mov r1, #0x64 + bl _s32_div_f + ldr r2, [sp, #4] + ldr r1, [sp, #0x10] + add r2, r2, r1 + asr r1, r2, #7 + lsr r1, r1, #0x18 + add r1, r2, r1 + asr r1, r1, #8 + str r1, [r6, #4] + add r1, r7, r0 + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r2, r0, #8 + str r2, [r6, #8] + ldr r0, [r6] + ldr r1, [r6, #4] + bl FUN_021DD620 + ldr r0, [sp, #0xc] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0223DA10 +MOD12_0223DA10: ; 0x0223DA10 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + mov r0, #0 + str r0, [sp, #0x10] + ldrb r0, [r5, #0x10] + add r4, r2, #0 + str r3, [sp] + ldr r6, [sp, #0x38] + cmp r0, #0 + beq _0223DA30 + cmp r0, #1 + beq _0223DAB0 + cmp r0, #2 + beq _0223DB22 + b _0223DB84 +_0223DA30: + ldr r0, [r4, #4] + ldr r1, [sp, #0x3c] + lsl r0, r0, #8 + str r0, [r5] + ldr r0, [r4, #8] + lsl r0, r0, #8 + str r0, [r5, #4] + ldr r0, [r5] + str r0, [r5, #8] + ldr r0, [r5, #4] + str r0, [r5, #0xc] + mov r0, #0x1e + mul r0, r1 + mov r1, #0x64 + bl _u32_div_f + ldr r1, [sp, #0x3c] + str r0, [sp, #0x14] + sub r7, r1, r0 + ldr r0, _0223DC04 ; =0x00038E00 + ldr r1, [sp, #0x14] + bl _s32_div_f + str r0, [r5, #0x18] + ldr r0, _0223DC08 ; =0xFFFC7200 + add r1, r7, #0 + bl _s32_div_f + str r0, [r5, #0x1c] + mov r0, #1 + ldr r1, [sp, #0x14] + lsl r0, r0, #0xc + bl _s32_div_f + str r0, [r5, #0x20] + mov r0, #1 + lsl r0, r0, #0xc + add r1, r7, #0 + bl _s32_div_f + neg r0, r0 + str r0, [r5, #0x24] + cmp r6, #1 + bne _0223DAAA + ldr r1, [r5, #0x18] + mov r0, #0 + mvn r0, r0 + add r2, r1, #0 + mul r2, r0 + str r2, [r5, #0x18] + ldr r1, [r5, #0x1c] + add r2, r1, #0 + mul r2, r0 + str r2, [r5, #0x1c] + ldr r1, [r5, #0x20] + add r2, r1, #0 + mul r2, r0 + str r2, [r5, #0x20] + ldr r1, [r5, #0x24] + mul r0, r1 + str r0, [r5, #0x24] +_0223DAAA: + ldrb r0, [r5, #0x10] + add r0, r0, #1 + strb r0, [r5, #0x10] +_0223DAB0: + ldr r0, [sp, #0x30] + cmp r0, #1 + bne _0223DADC + ldr r1, [r5, #0x20] + mov r0, #0xc8 + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r1, [r5, #8] + add r0, r1, r0 + str r0, [r5, #8] + mov r0, #0x20 + str r0, [sp, #0xc] + ldr r1, [r5, #0x18] + mov r0, #0xc8 + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r1, [r5, #0x14] + b _0223DAEC +_0223DADC: + ldr r1, [r5, #8] + ldr r0, [r5, #0x20] + add r0, r1, r0 + str r0, [r5, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + ldr r1, [r5, #0x14] + ldr r0, [r5, #0x18] +_0223DAEC: + add r0, r1, r0 + str r0, [r5, #0x14] + ldr r0, [sp, #0xc] + ldr r7, [r5] + lsl r0, r0, #8 + str r0, [sp, #8] + ldr r0, [r5, #8] + sub r0, r0, r7 + bl abs + ldr r1, [sp, #8] + cmp r0, r1 + blt _0223DB8A + cmp r6, #1 + bne _0223DB10 + add r0, r1, #0 + sub r0, r7, r0 + b _0223DB14 +_0223DB10: + add r0, r1, #0 + add r0, r7, r0 +_0223DB14: + str r0, [r5, #8] + ldr r0, [r5, #4] + str r0, [r5, #0xc] + ldrb r0, [r5, #0x10] + add r0, r0, #1 + strb r0, [r5, #0x10] + b _0223DB8A +_0223DB22: + ldr r0, [sp, #0x30] + cmp r0, #1 + bne _0223DB4A + ldr r1, [r5, #0x24] + mov r0, #0xc8 + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r1, [r5, #8] + add r0, r1, r0 + str r0, [r5, #8] + ldr r1, [r5, #0x1c] + mov r0, #0xc8 + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r1, [r5, #0x14] + b _0223DB56 +_0223DB4A: + ldr r1, [r5, #8] + ldr r0, [r5, #0x24] + add r0, r1, r0 + str r0, [r5, #8] + ldr r1, [r5, #0x14] + ldr r0, [r5, #0x1c] +_0223DB56: + add r0, r1, r0 + str r0, [r5, #0x14] + cmp r6, #1 + bne _0223DB66 + ldr r1, [r5] + ldr r0, [r5, #8] + cmp r0, r1 + bge _0223DB72 +_0223DB66: + cmp r6, #0 + bne _0223DB8A + ldr r1, [r5] + ldr r0, [r5, #8] + cmp r0, r1 + bgt _0223DB8A +_0223DB72: + str r1, [r5, #8] + mov r0, #0 + str r0, [r5, #0x14] + ldrb r0, [r5, #0x10] + add r0, r0, #1 + strb r0, [r5, #0x10] + mov r0, #1 + str r0, [sp, #0x10] + b _0223DB8A +_0223DB84: + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223DB8A: + ldr r1, [r5, #0x14] + ldr r0, [r4] + lsl r1, r1, #8 + lsr r1, r1, #0x10 + bl FUN_021DD604 + ldr r0, [sp] + cmp r0, #0 + bne _0223DBA0 + mov r6, #0x64 + b _0223DBA2 +_0223DBA0: + mov r6, #0x28 +_0223DBA2: + ldr r0, [sp, #0x34] + lsl r1, r0, #9 + mov r0, #0x19 + lsl r0, r0, #0xa + cmp r1, r0 + ble _0223DBB0 + add r1, r0, #0 +_0223DBB0: + asr r0, r1, #8 + add r6, r6, r0 + ldr r0, [r5] + ldr r1, [r5, #8] + str r0, [sp, #4] + sub r1, r1, r0 + ldr r7, [r5, #4] + ldr r0, [r5, #0xc] + sub r5, r0, r7 + add r0, r1, #0 + mul r0, r6 + mov r1, #0x64 + bl _s32_div_f + str r0, [sp, #0x18] + add r0, r5, #0 + mul r0, r6 + mov r1, #0x64 + bl _s32_div_f + ldr r2, [sp, #4] + ldr r1, [sp, #0x18] + add r2, r2, r1 + asr r1, r2, #7 + lsr r1, r1, #0x18 + add r1, r2, r1 + asr r1, r1, #8 + str r1, [r4, #4] + add r1, r7, r0 + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r2, r0, #8 + str r2, [r4, #8] + ldr r0, [r4] + ldr r1, [r4, #4] + bl FUN_021DD620 + ldr r0, [sp, #0x10] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_0223DC04: .word 0x00038E00 +_0223DC08: .word 0xFFFC7200 + + thumb_func_start MOD12_0223DC0C +MOD12_0223DC0C: ; 0x0223DC0C + ldr r1, _0223DC24 ; =0x00001BA0 + mov r2, #0 + add r3, r0, r1 + mov r0, #4 +_0223DC14: + ldrb r1, [r3] + add r2, r2, #1 + bic r1, r0 + strb r1, [r3] + add r3, #0xa + cmp r2, #8 + blt _0223DC14 + bx lr + .align 2, 0 +_0223DC24: .word 0x00001BA0 + + thumb_func_start MOD12_0223DC28 +MOD12_0223DC28: ; 0x0223DC28 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _0223DCAC ; =0x00001070 + add r6, r1, #0 + add r7, r5, r0 + mov r0, #0x28 + mul r0, r6 + str r0, [sp, #4] + ldr r0, [r7, r0] + str r2, [sp] + cmp r0, #0 + beq _0223DC46 + bl ErrorHandling +_0223DC46: + ldr r0, _0223DCB0 ; =0x0000106C + mov r2, #0x28 + add r4, r6, #0 + add r0, r5, r0 + mul r4, r2 + str r0, [sp, #8] + add r0, r0, r4 + mov r1, #0 + bl MI_CpuFill8 + ldr r0, [sp, #8] + ldr r2, _0223DCB4 ; =0x00001086 + str r5, [r0, r4] + add r3, r5, r4 + ldr r0, [sp] + strb r6, [r3, r2] + sub r1, r2, #1 + strb r0, [r3, r1] + lsl r0, r6, #2 + add r0, r5, r0 + add r1, r2, #0 + ldr r0, [r0, #0x5c] + sub r1, #0x12 + str r0, [r3, r1] + add r0, r5, #0 + add r0, #0x18 + lsl r1, r6, #4 + add r1, r0, r1 + add r0, r2, #0 + sub r0, #0xe + str r1, [r3, r0] + add r2, #0xa + add r0, r5, r2 + ldrb r2, [r0, r4] + mov r1, #4 + orr r1, r2 + strb r1, [r0, r4] + ldrb r2, [r0, r4] + mov r1, #8 + orr r1, r2 + strb r1, [r0, r4] + ldr r1, [sp, #8] + ldr r0, _0223DCB8 ; =MOD12_0223DE10 + ldr r2, _0223DCBC ; =0x00009858 + add r1, r1, r4 + bl FUN_0200CA44 + ldr r1, [sp, #4] + str r0, [r7, r1] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223DCAC: .word 0x00001070 +_0223DCB0: .word 0x0000106C +_0223DCB4: .word 0x00001086 +_0223DCB8: .word MOD12_0223DE10 +_0223DCBC: .word 0x00009858 + + thumb_func_start MOD12_0223DCC0 +MOD12_0223DCC0: ; 0x0223DCC0 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r7, _0223DCE4 ; =0x00001070 + add r5, r0, #0 + add r6, r4, #0 +_0223DCCA: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0223DCD8 + bl FUN_0200CAB4 + ldr r0, _0223DCE4 ; =0x00001070 + str r6, [r5, r0] +_0223DCD8: + add r4, r4, #1 + add r5, #0x28 + cmp r4, #4 + blt _0223DCCA + pop {r3, r4, r5, r6, r7, pc} + nop +_0223DCE4: .word 0x00001070 + + thumb_func_start MOD12_0223DCE8 +MOD12_0223DCE8: ; 0x0223DCE8 + push {r3, r4, r5, lr} + mov r3, #0x28 + mul r3, r1 + ldr r1, _0223DDAC ; =0x00001070 + add r4, r0, r3 + ldr r5, [r4, r1] + cmp r5, #0 + beq _0223DDA8 + cmp r2, #5 + bhi _0223DDA4 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0223DD08: ; jump table + .short _0223DD14 - _0223DD08 - 2 ; case 0 + .short _0223DD2A - _0223DD08 - 2 ; case 1 + .short _0223DD38 - _0223DD08 - 2 ; case 2 + .short _0223DD46 - _0223DD08 - 2 ; case 3 + .short _0223DD64 - _0223DD08 - 2 ; case 4 + .short _0223DD92 - _0223DD08 - 2 ; case 5 +_0223DD14: + add r1, #0x20 + add r2, r0, r1 + ldrb r1, [r2, r3] + mov r0, #0x20 + bic r1, r0 + strb r1, [r2, r3] + ldrb r1, [r2, r3] + mov r0, #0x10 + bic r1, r0 + strb r1, [r2, r3] + pop {r3, r4, r5, pc} +_0223DD2A: + add r1, #0x20 + add r2, r0, r1 + ldrb r1, [r2, r3] + mov r0, #0x20 + orr r0, r1 + strb r0, [r2, r3] + pop {r3, r4, r5, pc} +_0223DD38: + add r1, #0x20 + add r2, r0, r1 + ldrb r1, [r2, r3] + mov r0, #0x10 + orr r0, r1 + strb r0, [r2, r3] + pop {r3, r4, r5, pc} +_0223DD46: + add r1, #0x20 + add r0, r0, r1 + ldrb r2, [r0, r3] + mov r1, #2 + bic r2, r1 + strb r2, [r0, r3] + ldrb r2, [r0, r3] + mov r1, #1 + bic r2, r1 + strb r2, [r0, r3] + ldrb r2, [r0, r3] + mov r1, #4 + orr r1, r2 + strb r1, [r0, r3] + pop {r3, r4, r5, pc} +_0223DD64: + add r2, r1, #0 + add r2, #0x20 + ldrb r2, [r4, r2] + lsl r2, r2, #0x1e + lsr r2, r2, #0x1f + bne _0223DDA8 + add r2, r1, #0 + add r2, #0x20 + add r5, r0, r2 + ldrb r2, [r5, r3] + mov r0, #2 + orr r0, r2 + strb r0, [r5, r3] + ldrb r0, [r5, r3] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bne _0223DDA8 + add r0, r1, #0 + add r0, #0x10 + ldr r0, [r4, r0] + add r1, #0x1c + str r0, [r4, r1] + pop {r3, r4, r5, pc} +_0223DD92: + add r1, #0x20 + add r2, r0, r1 + ldrb r1, [r2, r3] + mov r0, #1 + bic r1, r0 + mov r0, #1 + orr r0, r1 + strb r0, [r2, r3] + pop {r3, r4, r5, pc} +_0223DDA4: + bl ErrorHandling +_0223DDA8: + pop {r3, r4, r5, pc} + nop +_0223DDAC: .word 0x00001070 + + thumb_func_start MOD12_0223DDB0 +MOD12_0223DDB0: ; 0x0223DDB0 + mov r2, #0x28 + mul r2, r1 + ldr r1, _0223DDE0 ; =0x00001070 + add r2, r0, r2 + ldr r0, [r2, r1] + cmp r0, #0 + bne _0223DDC2 + mov r0, #1 + bx lr +_0223DDC2: + add r0, r1, #0 + add r0, #0x20 + ldrb r0, [r2, r0] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1f + cmp r0, #1 + beq _0223DDD8 + add r1, #0x15 + ldrb r0, [r2, r1] + cmp r0, #0 + bne _0223DDDC +_0223DDD8: + mov r0, #1 + bx lr +_0223DDDC: + mov r0, #0 + bx lr + .align 2, 0 +_0223DDE0: .word 0x00001070 + + thumb_func_start MOD12_0223DDE4 +MOD12_0223DDE4: ; 0x0223DDE4 + mov r2, #0x28 + mul r2, r1 + add r2, r0, r2 + ldr r0, _0223DE0C ; =0x00001070 + ldr r1, [r2, r0] + cmp r1, #0 + bne _0223DDF6 + mov r0, #1 + bx lr +_0223DDF6: + add r0, #0x20 + ldrb r0, [r2, r0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223DE06 + mov r0, #1 + bx lr +_0223DE06: + mov r0, #0 + bx lr + nop +_0223DE0C: .word 0x00001070 + + thumb_func_start MOD12_0223DE10 +MOD12_0223DE10: ; 0x0223DE10 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD12_0223DE24 + add r0, r4, #0 + bl MOD12_0223DF18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223DE24 +MOD12_0223DE24: ; 0x0223DE24 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r0, #0x24 + ldrb r0, [r0] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1f + cmp r0, #1 + beq _0223DF00 + ldrb r0, [r4, #0x19] + cmp r0, #0 + beq _0223DF00 + ldr r5, [r4] + ldr r1, _0223DF04 ; =0x00001138 + ldr r2, _0223DF08 ; =0x00002710 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r3, #0 + bl _ll_mul + ldr r2, _0223DF0C ; =0x00000AE8 + mov r3, #0 + ldr r7, [r5, r2] + add r2, r7, #0 + bl _ull_mod + add r5, r0, #0 + add r6, r1, #0 + lsr r7, r7, #1 + lsr r0, r5, #0x13 + lsl r1, r6, #0xd + orr r1, r0 + lsl r0, r5, #0xd + add r2, r7, #0 + mov r3, #0 + bl _ll_udiv + add r2, r1, #0 + mov r1, #1 + sub r3, r5, r7 + ldr r3, _0223DF10 ; =0x00000000 + sbc r6, r3 + blo _0223DE80 + lsl r3, r1, #0xe + mov r1, #0 + sub r0, r3, r0 +_0223DE80: + add r2, r4, #0 + add r2, #0x24 + ldrb r2, [r2] + ldr r3, _0223DF14 ; =0xFFFD8000 + mov r5, #0x40 + add r0, r0, r3 + str r0, [r4, #0x10] + add r0, r4, #0 + add r0, #0x24 + ldrb r0, [r0] + lsl r2, r2, #0x19 + lsr r2, r2, #0x1f + bic r0, r5 + lsl r5, r1, #0x18 + lsr r5, r5, #0x18 + lsl r5, r5, #0x1f + lsr r5, r5, #0x19 + orr r5, r0 + add r0, r4, #0 + add r0, #0x24 + strb r5, [r0] + add r0, r4, #0 + add r0, #0x24 + ldrb r0, [r0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223DEEA + ldr r0, [r4, #0x10] + cmp r0, r3 + beq _0223DEC6 + cmp r2, #0 + bne _0223DEEA + cmp r1, #1 + bne _0223DEEA +_0223DEC6: + ldr r0, _0223DF14 ; =0xFFFD8000 + str r0, [r4, #0x10] + add r0, r4, #0 + add r0, #0x24 + ldrb r1, [r0] + mov r0, #0x10 + bic r1, r0 + add r0, r4, #0 + add r0, #0x24 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x24 + ldrb r1, [r0] + mov r0, #0x20 + orr r1, r0 + add r0, r4, #0 + add r0, #0x24 + strb r1, [r0] +_0223DEEA: + ldr r1, [r4, #0x10] + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r1, r0, #8 + ldr r0, [r4, #0xc] + str r1, [r0, #0xc] + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + bl MOD12_0223D09C +_0223DF00: + pop {r3, r4, r5, r6, r7, pc} + nop +_0223DF04: .word 0x00001138 +_0223DF08: .word 0x00002710 +_0223DF0C: .word 0x00000AE8 +_0223DF10: .word 0x00000000 +_0223DF14: .word 0xFFFD8000 + + thumb_func_start MOD12_0223DF18 +MOD12_0223DF18: ; 0x0223DF18 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r2, [r4] + ldr r1, _0223E058 ; =0x00001138 + mov r3, #0 + ldr r0, [r2, r1] + add r1, r1, #4 + ldr r1, [r2, r1] + ldr r2, _0223E05C ; =0x00002710 + ldr r5, [r4, #0x14] + bl _ll_mul + ldr r3, [r4] + ldr r2, _0223E060 ; =0x00000AE8 + ldr r2, [r3, r2] + mov r3, #0 + lsl r2, r2, #1 + bl _ull_mod + mov r2, #0x5a + lsl r2, r2, #2 + mov r3, #0 + bl _ll_mul + ldr r3, [r4] + ldr r2, _0223E060 ; =0x00000AE8 + ldr r2, [r3, r2] + mov r3, #0 + lsl r2, r2, #1 + bl _ll_udiv + lsr r2, r0, #0x18 + lsl r1, r1, #8 + orr r1, r2 + lsl r0, r0, #8 + add r2, r4, #0 + str r0, [r4, #0x14] + add r2, #0x24 + ldrb r2, [r2] + lsl r3, r2, #0x1e + lsr r3, r3, #0x1f + bne _0223E054 + lsl r2, r2, #0x1c + lsr r2, r2, #0x1f + cmp r2, #1 + bne _0223DF86 + add r2, r4, #0 + add r2, #0x24 + ldrb r2, [r2] + mov r3, #8 + add r5, r0, #0 + bic r2, r3 + add r3, r4, #0 + add r3, #0x24 + strb r2, [r3] +_0223DF86: + add r2, r4, #0 + add r2, #0x24 + ldrb r2, [r2] + lsl r2, r2, #0x1d + lsr r2, r2, #0x1f + cmp r2, #1 + bne _0223DFCE + mov r2, #0 + sub r3, r0, r5 + mov ip, r1 + mov r3, ip + sbc r3, r2 + bhs _0223DFA4 + add r7, r5, r0 + b _0223DFA6 +_0223DFA4: + add r7, r0, #0 +_0223DFA6: + ldr r6, [r4, #0x20] + mov r2, #0 + add r3, r2, #0 + add r2, r6, #0 + eor r3, r1 + eor r2, r0 + orr r2, r3 + beq _0223DFBE + cmp r5, r6 + bhi _0223E054 + cmp r6, r7 + bhi _0223E054 +_0223DFBE: + add r2, r4, #0 + add r2, #0x24 + ldrb r3, [r2] + mov r2, #4 + bic r3, r2 + add r2, r4, #0 + add r2, #0x24 + strb r3, [r2] +_0223DFCE: + add r2, r4, #0 + add r2, #0x24 + ldrb r2, [r2] + lsl r2, r2, #0x1f + lsr r2, r2, #0x1f + cmp r2, #1 + bne _0223E014 + mov r3, #0 + mov r2, #0 + eor r3, r1 + eor r2, r0 + orr r2, r3 + beq _0223DFF0 + mov r2, #0 + sub r0, r0, r5 + sbc r1, r2 + bhs _0223E014 +_0223DFF0: + add r1, r4, #0 + add r1, #0x24 + ldrb r2, [r1] + mov r1, #1 + mov r0, #0 + bic r2, r1 + add r1, r4, #0 + add r1, #0x24 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x24 + ldrb r2, [r1] + mov r1, #2 + orr r2, r1 + add r1, r4, #0 + add r1, #0x24 + strb r2, [r1] + str r0, [r4, #0x20] +_0223E014: + ldrb r0, [r4, #0x19] + cmp r0, #0 + bne _0223E01C + b _0223E01C +_0223E01C: + ldr r0, [r4, #0x14] + mov r5, #3 + lsl r0, r0, #8 + lsr r0, r0, #0x10 + bl FUN_0201B954 + add r1, r5, #0 + mul r1, r0 + ldrb r2, [r4, #0x19] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + mov r1, #6 + add r3, r2, #0 + mul r3, r1 + ldr r1, _0223E064 ; =0x022461F4 + asr r0, r0, #0xc + ldrsh r1, [r1, r3] + add r0, r0, r1 + sub r1, r0, r5 + ldr r0, [r4, #0xc] + str r1, [r0, #4] + ldr r2, [r4, #0xc] + ldr r0, [r2] + ldr r1, [r2, #4] + ldr r2, [r2, #8] + bl FUN_021DD620 +_0223E054: + pop {r3, r4, r5, r6, r7, pc} + nop +_0223E058: .word 0x00001138 +_0223E05C: .word 0x00002710 +_0223E060: .word 0x00000AE8 +_0223E064: .word 0x022461F4 + + thumb_func_start MOD12_0223E068 +MOD12_0223E068: ; 0x0223E068 + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r1, #0 + add r4, r0, #0 + add r5, r2, #0 + cmp r6, #0 + beq _0223E07E + cmp r5, #0 + bne _0223E07E + bl ErrorHandling +_0223E07E: + cmp r6, #6 + bls _0223E084 + b _0223E1E4 +_0223E084: + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223E090: ; jump table + .short _0223E1E8 - _0223E090 - 2 ; case 0 + .short _0223E09E - _0223E090 - 2 ; case 1 + .short _0223E0BA - _0223E090 - 2 ; case 2 + .short _0223E0DE - _0223E090 - 2 ; case 3 + .short _0223E0F4 - _0223E090 - 2 ; case 4 + .short _0223E138 - _0223E090 - 2 ; case 5 + .short _0223E16A - _0223E090 - 2 ; case 6 +_0223E09E: + ldrb r0, [r5] + ldr r1, [r4, #0x14] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r4, #0x9c + add r2, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200ACF8 + add sp, #8 + pop {r4, r5, r6, pc} +_0223E0BA: + mov r2, #0x12 + lsl r2, r2, #4 + ldr r3, [r4] + add r1, r2, #1 + ldrb r0, [r3, r2] + add r2, #0x51 + ldrb r1, [r3, r1] + ldrb r2, [r3, r2] + bl FUN_02083228 + add r4, #0x9c + add r2, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200B278 + add sp, #8 + pop {r4, r5, r6, pc} +_0223E0DE: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + add r4, #0x9c + ldrb r2, [r5, #4] + ldr r0, [r4] + bl FUN_0200AD38 + add sp, #8 + pop {r4, r5, r6, pc} +_0223E0F4: + ldrb r6, [r5] + ldr r3, [r4] + mov r0, #1 + lsl r2, r6, #2 + str r0, [sp] + mov r0, #2 + add r2, r3, r2 + add r6, r3, r6 + mov r3, #0x42 + str r0, [sp, #4] + add r0, r4, #0 + lsl r3, r3, #2 + add r0, #0x9c + add r2, #0xe8 + ldrb r3, [r6, r3] + ldr r0, [r0] + ldr r2, [r2] + mov r1, #0 + bl FUN_0200ABB4 + ldrb r0, [r5] + ldr r1, [r4, #0x14] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r4, #0x9c + add r2, r0, #0 + ldr r0, [r4] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r4, r5, r6, pc} +_0223E138: + ldrb r0, [r5] + ldr r1, [r4, #0x14] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + mov r1, #0 + bl FUN_0200ACF8 + mov r0, #0 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + add r4, #0x9c + ldrb r2, [r5, #4] + ldr r0, [r4] + add r3, r1, #0 + bl FUN_0200AD38 + add sp, #8 + pop {r4, r5, r6, pc} +_0223E16A: + mov r2, #0x12 + lsl r2, r2, #4 + ldr r3, [r4] + add r1, r2, #1 + ldrb r0, [r3, r2] + add r2, #0x51 + ldrb r1, [r3, r1] + ldrb r2, [r3, r2] + bl FUN_02083228 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + mov r1, #0 + bl FUN_0200B278 + mov r0, #0 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + add r0, r4, #0 + add r0, #0x9c + ldrb r2, [r5, #4] + ldr r0, [r0] + add r3, r1, #0 + bl FUN_0200AD38 + ldrb r6, [r5] + ldr r3, [r4] + mov r0, #1 + lsl r2, r6, #2 + str r0, [sp] + mov r1, #2 + add r2, r3, r2 + add r6, r3, r6 + mov r3, #0x42 + add r0, r4, #0 + str r1, [sp, #4] + lsl r3, r3, #2 + add r0, #0x9c + add r2, #0xe8 + ldrb r3, [r6, r3] + ldr r0, [r0] + ldr r2, [r2] + bl FUN_0200ABB4 + ldrb r0, [r5] + ldr r1, [r4, #0x14] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r4, #0x9c + add r2, r0, #0 + ldr r0, [r4] + mov r1, #3 + bl FUN_0200ACF8 + add sp, #8 + pop {r4, r5, r6, pc} +_0223E1E4: + bl ErrorHandling +_0223E1E8: + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_0223E1EC +MOD12_0223E1EC: ; 0x0223E1EC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + ldr r1, [r5] + ldr r0, _0223E268 ; =0x00000171 + add r7, r2, #0 + ldrb r0, [r1, r0] + str r3, [sp, #0xc] + cmp r0, #0 + bne _0223E20E + ldr r0, _0223E26C ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02024FF4 + add r4, r0, #0 + b _0223E210 +_0223E20E: + mov r4, #1 +_0223E210: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_0200A914 + add r6, r0, #0 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x28] + add r0, r5, #0 + bl MOD12_0223E068 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x9c + add r1, #0xa0 + ldr r0, [r0] + ldr r1, [r1] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + add r0, #0x78 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + add r2, r5, #0 + add r0, r5, #0 + str r3, [sp, #8] + add r2, #0xa0 + ldr r2, [r2] + add r0, #0x78 + mov r1, #1 + bl FUN_0201BD84 + ldr r1, _0223E270 ; =0x00000AB8 + strb r0, [r5, r1] + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223E268: .word 0x00000171 +_0223E26C: .word 0x00001988 +_0223E270: .word 0x00000AB8 + + thumb_func_start MOD12_0223E274 +MOD12_0223E274: ; 0x0223E274 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + cmp r4, #8 + blo _0223E286 + bl ErrorHandling +_0223E286: + lsl r3, r4, #2 + ldr r2, _0223E2A0 ; =0x02246224 + add r0, r5, #0 + ldr r4, _0223E2A4 ; =0x02246226 + ldrh r2, [r2, r3] + str r6, [sp] + add r5, #0x98 + ldrb r3, [r4, r3] + ldr r1, [r5] + bl MOD12_0223E1EC + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0223E2A0: .word 0x02246224 +_0223E2A4: .word 0x02246226 + + thumb_func_start MOD12_0223E2A8 +MOD12_0223E2A8: ; 0x0223E2A8 + ldr r1, _0223E2B0 ; =0x00000AB8 + ldr r3, _0223E2B4 ; =0x0201BD71 + ldrb r0, [r0, r1] + bx r3 + .align 2, 0 +_0223E2B0: .word 0x00000AB8 +_0223E2B4: .word 0x0201BD71 + + thumb_func_start MOD12_0223E2B8 +MOD12_0223E2B8: ; 0x0223E2B8 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223E300 ; =0x000080F1 + mov r3, #0x4c + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223E304 ; =0x000080EE + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x4d + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223E304 ; =0x000080EE + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x4e + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_0223E300: .word 0x000080F1 +_0223E304: .word 0x000080EE + + thumb_func_start MOD12_0223E308 +MOD12_0223E308: ; 0x0223E308 + push {r4, lr} + ldr r1, _0223E324 ; =0x000080F1 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223E328 ; =0x000080EE + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223E328 ; =0x000080EE + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223E324: .word 0x000080F1 +_0223E328: .word 0x000080EE + + thumb_func_start MOD12_0223E32C +MOD12_0223E32C: ; 0x0223E32C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + beq _0223E33E + bl ErrorHandling +_0223E33E: + mov r0, #0x17 + mov r1, #0x10 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x10 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x21 + lsl r0, r0, #4 + str r4, [r5, r0] + str r5, [r4, #8] + ldr r0, [r5, #0x6c] + ldr r1, [r5, #0x70] + ldr r2, _0223E380 ; =0x02246278 + bl FUN_0200C154 + str r0, [r4, #4] + ldr r0, [r0] + bl FUN_0200C59C + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_0200C644 + ldr r0, _0223E384 ; =MOD12_0223E3BC + ldr r2, _0223E388 ; =0x00009C4F + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4] + pop {r3, r4, r5, pc} + .align 2, 0 +_0223E380: .word 0x02246278 +_0223E384: .word MOD12_0223E3BC +_0223E388: .word 0x00009C4F + + thumb_func_start MOD12_0223E38C +MOD12_0223E38C: ; 0x0223E38C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r0, [r0] + bl FUN_0200CAB4 + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r0, [r0, #4] + bl FUN_0200C3DC + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0x21 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + pop {r4, pc} + + thumb_func_start MOD12_0223E3BC +MOD12_0223E3BC: ; 0x0223E3BC + ldrb r0, [r1, #0xc] + cmp r0, #0 + beq _0223E3CA + cmp r0, #1 + beq _0223E3CE + cmp r0, #2 + b _0223E3CE +_0223E3CA: + add r0, r0, #1 + strb r0, [r1, #0xc] +_0223E3CE: + ldr r0, [r1, #4] + ldr r3, _0223E3D8 ; =0x0200C59D + ldr r0, [r0] + bx r3 + nop +_0223E3D8: .word 0x0200C59D + + thumb_func_start MOD12_0223E3DC +MOD12_0223E3DC: ; 0x0223E3DC + push {r4, r5, r6, lr} + add r5, r0, #0 + lsl r0, r1, #8 + add r1, r2, #0 + bl _u32_div_f + ldr r1, _0223E434 ; =0x00002710 + add r4, r0, #0 + mul r0, r1 + lsl r1, r1, #4 + mov r6, #0x90 + bl _u32_div_f + mov r0, #0xb4 + mul r0, r1 + ldr r1, _0223E438 ; =0x00027100 + bl _u32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0201B93C + mov r1, #0xa + mul r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + sub r2, r6, r0 + lsl r1, r4, #0x10 + lsl r2, r2, #0x10 + mov r3, #1 + ldr r0, [r5, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_0200C644 + pop {r4, r5, r6, pc} + nop +_0223E434: .word 0x00002710 +_0223E438: .word 0x00027100 + + thumb_func_start MOD12_0223E43C +MOD12_0223E43C: ; 0x0223E43C + ldr r3, _0223E444 ; =0x0200C645 + ldr r0, [r0, #4] + mov r1, #0 + bx r3 + .align 2, 0 +_0223E444: .word 0x0200C645 + + thumb_func_start MOD12_0223E448 +MOD12_0223E448: ; 0x0223E448 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_0200C644 + mov r3, #1 + ldr r0, [r4, #4] + mov r1, #0 + mov r2, #0x90 + lsl r3, r3, #0x14 + bl FUN_0200C750 + pop {r4, pc} + + thumb_func_start MOD12_0223E464 +MOD12_0223E464: ; 0x0223E464 + push {r3, r4} + ldr r2, _0223E484 ; =0x022461E0 + add r1, sp, #0 + ldrb r3, [r2] + add r4, sp, #0 + strb r3, [r1] + ldrb r3, [r2, #1] + strb r3, [r1, #1] + ldrb r3, [r2, #2] + ldrb r2, [r2, #3] + strb r3, [r1, #2] + strb r2, [r1, #3] + ldrb r0, [r4, r0] + pop {r3, r4} + bx lr + nop +_0223E484: .word 0x022461E0 + + thumb_func_start MOD12_0223E488 +MOD12_0223E488: ; 0x0223E488 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + add r7, r2, #0 + cmp r4, #8 + blo _0223E49A + bl ErrorHandling +_0223E49A: + ldr r0, _0223E51C ; =0x00001BF1 + ldrb r0, [r5, r0] + cmp r0, #1 + beq _0223E516 + add r0, r5, #0 + mov r1, #1 + add r0, #0x88 + add r2, r1, #0 + mov r3, #0xe + bl FUN_0200D0BC + ldr r0, [r5, #0x74] + mov r1, #1 + bl FUN_0201AC68 + add r0, r5, #0 + add r0, #0x98 + ldr r1, _0223E520 ; =0x02246224 + lsl r4, r4, #2 + ldrh r1, [r1, r4] + ldr r0, [r0] + bl FUN_0200A914 + ldr r1, _0223E524 ; =0x02246226 + add r6, r0, #0 + ldrb r1, [r1, r4] + add r0, r5, #0 + add r2, r7, #0 + bl MOD12_0223E068 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x9c + add r1, #0xa0 + ldr r0, [r0] + ldr r1, [r1] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + add r0, #0x88 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + add r2, r5, #0 + add r0, r5, #0 + str r3, [sp, #8] + add r2, #0xa0 + ldr r2, [r2] + add r0, #0x88 + mov r1, #1 + bl FUN_0201BD84 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, _0223E51C ; =0x00001BF1 + mov r1, #1 + strb r1, [r5, r0] +_0223E516: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_0223E51C: .word 0x00001BF1 +_0223E520: .word 0x02246224 +_0223E524: .word 0x02246226 + + thumb_func_start MOD12_0223E528 +MOD12_0223E528: ; 0x0223E528 + push {r4, lr} + add r4, r0, #0 + add r0, #0x88 + mov r1, #1 + bl FUN_0200D0E0 + ldr r0, [r4, #0x74] + mov r1, #1 + bl FUN_0201AC68 + ldr r0, _0223E544 ; =0x00001BF1 + mov r1, #0 + strb r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_0223E544: .word 0x00001BF1 + + thumb_func_start MOD12_0223E548 +MOD12_0223E548: ; 0x0223E548 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _0223E584 ; =0x00000AEC + ldrb r1, [r1, #4] + ldr r3, [r5, r0] + add r6, r2, #0 + mul r1, r3 + mul r6, r1 + add r1, r0, #4 + add r0, #8 + ldr r1, [r5, r1] + ldr r0, [r5, r0] + mov r4, #0 + add r0, r1, r0 + mul r0, r2 + add r0, r1, r0 + ldr r1, _0223E588 ; =0x00002710 + bl _u32_div_f + add r1, r4, #0 + add r3, r6, r0 + ldr r0, _0223E58C ; =0x00001138 + adc r4, r1 + ldr r2, [r5, r0] + add r0, r0, #4 + ldr r1, [r5, r0] + sub r0, r3, r2 + sbc r4, r1 + add r1, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223E584: .word 0x00000AEC +_0223E588: .word 0x00002710 +_0223E58C: .word 0x00001138 + + thumb_func_start MOD12_0223E590 +MOD12_0223E590: ; 0x0223E590 + ldr r3, _0223E594 ; =MOD12_0223E548 + bx r3 + .align 2, 0 +_0223E594: .word MOD12_0223E548 + + thumb_func_start MOD12_0223E598 +MOD12_0223E598: ; 0x0223E598 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + mov r0, #0 + strb r0, [r7] + mov r0, #0x17 + mov r1, #0x2c + bl FUN_02016998 + mov r1, #0 + mov r2, #0x2c + add r4, r0, #0 + bl MI_CpuFill8 + add r1, r6, #0 + add r1, #0x18 + lsl r0, r5, #4 + str r6, [r4] + add r0, r1, r0 + str r0, [r4, #4] + mov r0, #0x85 + lsl r0, r0, #2 + add r1, r6, r0 + mov r0, #0x18 + mul r0, r5 + add r0, r1, r0 + str r0, [r4, #8] + ldr r0, _0223E5F4 ; =0x00000AB4 + str r7, [r4, #0xc] + add r1, r6, r5 + ldrb r0, [r1, r0] + ldr r2, _0223E5F8 ; =0x00009C40 + cmp r0, #1 + bne _0223E5E8 + ldr r0, _0223E5FC ; =MOD12_0223E604 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_0223E5E8: + ldr r0, _0223E600 ; =MOD12_0223E6A4 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223E5F4: .word 0x00000AB4 +_0223E5F8: .word 0x00009C40 +_0223E5FC: .word MOD12_0223E604 +_0223E600: .word MOD12_0223E6A4 + + thumb_func_start MOD12_0223E604 +MOD12_0223E604: ; 0x0223E604 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223E616 + cmp r0, #1 + beq _0223E636 + b _0223E686 +_0223E616: + ldr r0, [r4, #8] + mov r1, #1 + mov r2, #0 + bl MOD12_0223CD38 + ldr r0, [r4, #4] + ldr r0, [r0, #8] + lsl r0, r0, #8 + str r0, [r4, #0x1c] + str r0, [r4, #0x18] + mov r0, #5 + lsl r0, r0, #8 + str r0, [r4, #0x14] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223E636: + ldr r1, [r4, #0x18] + ldr r0, [r4, #0x14] + sub r0, r1, r0 + str r0, [r4, #0x18] + mov r0, #2 + ldr r1, [r4, #0x14] + lsl r0, r0, #8 + sub r0, r1, r0 + str r0, [r4, #0x14] + ldr r1, [r4, #0x1c] + ldr r0, [r4, #0x18] + cmp r0, r1 + blt _0223E66A + str r1, [r4, #0x18] + ldrb r0, [r4, #0x11] + add r0, r0, #1 + strb r0, [r4, #0x11] + ldrb r0, [r4, #0x11] + cmp r0, #1 + bls _0223E666 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + b _0223E66A +_0223E666: + mov r0, #0 + strb r0, [r4, #0x10] +_0223E66A: + ldr r1, [r4, #0x18] + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r1, r0, #8 + ldr r0, [r4, #4] + str r1, [r0, #8] + ldr r2, [r4, #4] + ldr r0, [r2] + ldr r1, [r2, #4] + ldr r2, [r2, #8] + bl FUN_021DD620 + pop {r3, r4, r5, pc} +_0223E686: + ldr r0, [r4, #0xc] + mov r1, #1 + strb r1, [r0] + ldr r0, [r4, #8] + add r2, r1, #0 + bl MOD12_0223CD38 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223E6A4 +MOD12_0223E6A4: ; 0x0223E6A4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223E6B6 + cmp r0, #1 + beq _0223E6C6 + b _0223E720 +_0223E6B6: + ldr r0, [r4, #4] + ldr r0, [r0, #4] + lsl r0, r0, #8 + str r0, [r4, #0x28] + str r0, [r4, #0x24] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223E6C6: + ldr r0, [r4, #0x20] + bl FUN_0201B9B8 + lsl r1, r0, #2 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + mov r1, #0x32 + ldr r2, [r4, #0x20] + lsl r1, r1, #0xc + add r1, r2, r1 + str r1, [r4, #0x20] + asr r2, r1, #0xc + mov r1, #0x5a + lsl r1, r1, #2 + asr r0, r0, #0xc + cmp r2, r1 + blt _0223E702 + ldrb r1, [r4, #0x11] + add r1, r1, #1 + strb r1, [r4, #0x11] + ldrb r1, [r4, #0x11] + cmp r1, #5 + bls _0223E702 + ldr r0, [r4, #0x28] + str r0, [r4, #0x24] + ldrb r1, [r4, #0x10] + mov r0, #0 + add r1, r1, #1 + strb r1, [r4, #0x10] +_0223E702: + ldr r2, [r4, #0x24] + asr r1, r2, #7 + lsr r1, r1, #0x18 + add r1, r2, r1 + asr r1, r1, #8 + add r1, r1, r0 + ldr r0, [r4, #4] + str r1, [r0, #4] + ldr r2, [r4, #4] + ldr r0, [r2] + ldr r1, [r2, #4] + ldr r2, [r2, #8] + bl FUN_021DD620 + pop {r3, r4, r5, pc} +_0223E720: + ldr r0, [r4, #0xc] + mov r1, #1 + strb r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0223E734 +MOD12_0223E734: ; 0x0223E734 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223E738 +MOD12_0223E738: ; 0x0223E738 + push {r3, lr} + ldr r0, _0223E74C ; =0x04000050 + mov r3, #0 + mov r1, #1 + mov r2, #0x3e + str r3, [sp] + bl G2x_SetBlendAlpha_ + pop {r3, pc} + nop +_0223E74C: .word 0x04000050 + + thumb_func_start MOD12_0223E750 +MOD12_0223E750: ; 0x0223E750 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r0, #0xa4 + add r5, r1, #0 + ldr r0, [r0] + mov r1, #0 + bl FUN_020031FC + ldr r3, _0223E77C ; =0x0224620C + lsl r5, r5, #2 + ldrh r1, [r3, r5] + add r3, r3, r5 + ldr r2, _0223E780 ; =0x00001FE3 + str r1, [sp] + ldrh r3, [r3, #2] + ldr r1, _0223E784 ; =0x0000110C + lsl r3, r3, #0x18 + ldr r1, [r4, r1] + lsr r3, r3, #0x18 + bl FUN_02003A30 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223E77C: .word 0x0224620C +_0223E780: .word 0x00001FE3 +_0223E784: .word 0x0000110C + + thumb_func_start MOD12_0223E788 +MOD12_0223E788: ; 0x0223E788 + push {r3, lr} + ldrb r2, [r1, #7] + cmp r2, #0 + bne _0223E7D0 + ldrb r2, [r1, #4] + cmp r2, #0 + beq _0223E79E + cmp r2, #1 + beq _0223E79E + cmp r2, #2 + b _0223E7CA +_0223E79E: + ldrb r2, [r1, #3] + cmp r2, #4 + bhi _0223E7CC + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0223E7B0: ; jump table + .short _0223E7CC - _0223E7B0 - 2 ; case 0 + .short _0223E7BA - _0223E7B0 - 2 ; case 1 + .short _0223E7BE - _0223E7B0 - 2 ; case 2 + .short _0223E7C2 - _0223E7B0 - 2 ; case 3 + .short _0223E7C6 - _0223E7B0 - 2 ; case 4 +_0223E7BA: + mov r1, #1 + b _0223E7CC +_0223E7BE: + mov r1, #2 + b _0223E7CC +_0223E7C2: + mov r1, #3 + b _0223E7CC +_0223E7C6: + mov r1, #4 + b _0223E7CC +_0223E7CA: + mov r1, #5 +_0223E7CC: + bl MOD12_0223E750 +_0223E7D0: + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223E7D4 +MOD12_0223E7D4: ; 0x0223E7D4 + push {r3, r4, r5, r6, r7, lr} + str r1, [sp] + ldr r1, _0223E844 ; =0x00000AE8 + mov ip, r0 + ldr r0, [r0, r1] + ldr r1, _0223E848 ; =0x00001BA0 + lsr r7, r0, #1 + mov r0, ip + add r3, r0, r1 + ldr r1, _0223E84C ; =0x04000280 + mov r6, #0 + mov r4, ip + lsr r0, r1, #0xb +_0223E7EE: + ldrb r2, [r3] + lsl r2, r2, #0x1d + lsr r2, r2, #0x1f + cmp r2, #1 + bne _0223E836 + ldr r2, _0223E850 ; =0x00001B9E + mov r5, #0 + ldrb r2, [r4, r2] + add r2, #0x10 + strh r5, [r1] + ldr r5, _0223E854 ; =0x04000290 + mul r2, r7 + str r2, [r5] + ldr r5, _0223E858 ; =0x00002710 + ldr r2, _0223E85C ; =0x04000298 + str r5, [r2] + mov r5, #0 + str r5, [r2, #4] +_0223E812: + ldrh r2, [r1] + tst r2, r0 + bne _0223E812 + ldr r2, _0223E860 ; =0x040002A0 + ldr r5, [r2] + ldr r2, [sp] + cmp r5, r2 + bne _0223E836 + ldr r2, _0223E864 ; =0x00001B98 + mov r1, ip + add r2, r1, r2 + mov r1, #0xa + mul r1, r6 + mov r0, ip + add r1, r2, r1 + bl MOD12_0223E788 + pop {r3, r4, r5, r6, r7, pc} +_0223E836: + add r6, r6, #1 + add r3, #0xa + add r4, #0xa + cmp r6, #8 + blt _0223E7EE + pop {r3, r4, r5, r6, r7, pc} + nop +_0223E844: .word 0x00000AE8 +_0223E848: .word 0x00001BA0 +_0223E84C: .word 0x04000280 +_0223E850: .word 0x00001B9E +_0223E854: .word 0x04000290 +_0223E858: .word 0x00002710 +_0223E85C: .word 0x04000298 +_0223E860: .word 0x040002A0 +_0223E864: .word 0x00001B98 + + thumb_func_start MOD12_0223E868 +MOD12_0223E868: ; 0x0223E868 + push {r3, r4, r5, lr} + add r4, r0, #0 + mov r0, #0x82 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0223E87A + bl ErrorHandling +_0223E87A: + mov r0, #0x81 + lsl r0, r0, #2 + add r5, r4, r0 + ldr r0, _0223E890 ; =MOD12_0223E8EC + ldr r2, _0223E894 ; =0x00009C40 + add r1, r5, #0 + str r4, [r5] + bl FUN_0200CA44 + str r0, [r5, #4] + pop {r3, r4, r5, pc} + .align 2, 0 +_0223E890: .word MOD12_0223E8EC +_0223E894: .word 0x00009C40 + + thumb_func_start MOD12_0223E898 +MOD12_0223E898: ; 0x0223E898 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x82 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0223E8B2 + bl FUN_0200CAB4 + mov r0, #0x82 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_0223E8B2: + pop {r4, pc} + + thumb_func_start MOD12_0223E8B4 +MOD12_0223E8B4: ; 0x0223E8B4 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x81 + lsl r1, r1, #2 + add r4, r0, r1 + ldr r0, [r4, #4] + cmp r0, #0 + bne _0223E8C8 + bl ErrorHandling +_0223E8C8: + cmp r5, #0 + bne _0223E8D0 + mov r0, #0x40 + b _0223E8D2 +_0223E8D0: + mov r0, #0x30 +_0223E8D2: + strb r0, [r4, #0xa] + mov r0, #1 + strb r0, [r4, #0xb] + mov r0, #0xa + lsl r0, r0, #8 + strh r0, [r4, #8] + ldr r0, _0223E8E8 ; =0x000006F8 + bl FUN_020054C8 + pop {r3, r4, r5, pc} + nop +_0223E8E8: .word 0x000006F8 + + thumb_func_start MOD12_0223E8EC +MOD12_0223E8EC: ; 0x0223E8EC + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0223E946 + ldr r0, [r4] + mov r1, #0 + add r0, #0xa4 + ldr r0, [r0] + bl FUN_020031FC + ldrb r1, [r4, #0xa] + lsl r3, r1, #1 + ldr r1, _0223E94C ; =0x00007FFF + add r0, r0, r3 + str r1, [sp] + ldr r2, [r4] + ldr r1, _0223E950 ; =0x0000110C + ldr r1, [r2, r1] + mov r2, #0x10 + add r1, r1, r3 + ldrh r3, [r4, #8] + asr r3, r3, #8 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02003974 + ldrh r1, [r4, #8] + cmp r1, #0 + bne _0223E932 + mov r0, #0 + add sp, #4 + strb r0, [r4, #0xb] + pop {r3, r4, pc} +_0223E932: + mov r0, #1 + lsl r0, r0, #8 + cmp r1, r0 + bls _0223E942 + sub r0, r1, r0 + add sp, #4 + strh r0, [r4, #8] + pop {r3, r4, pc} +_0223E942: + mov r0, #0 + strh r0, [r4, #8] +_0223E946: + add sp, #4 + pop {r3, r4, pc} + nop +_0223E94C: .word 0x00007FFF +_0223E950: .word 0x0000110C + + thumb_func_start MOD12_0223E954 +MOD12_0223E954: ; 0x0223E954 + push {r3, r4, r5, lr} + ldr r5, _0223E97C ; =0x00001120 + add r4, r0, #0 + str r2, [r4, r5] + add r0, r5, #4 + str r3, [r4, r0] + add r0, r5, #0 + ldr r2, [sp, #0x10] + add r0, #8 + str r2, [r4, r0] + ldr r0, [sp, #0x14] + add r5, #0xc + str r0, [r4, r5] + ldr r0, [r4, #0xc] + ldr r2, _0223E980 ; =MOD12_0223E984 + add r3, r4, #0 + bl FUN_020133AC + pop {r3, r4, r5, pc} + nop +_0223E97C: .word 0x00001120 +_0223E980: .word MOD12_0223E984 + + thumb_func_start MOD12_0223E984 +MOD12_0223E984: ; 0x0223E984 + push {r4, lr} + add r4, r0, #0 + bl FUN_0201341C + ldr r1, _0223E9C0 ; =0x00001120 + add r1, r0, r1 + ldr r0, [r4, #0x20] + ldr r2, [r1] + ldr r0, [r0] + ldr r0, [r0, #4] + add r0, r2, r0 + str r0, [r4, #0x28] + ldr r0, [r4, #0x20] + ldr r2, [r1, #4] + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r2, r0 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x20] + ldr r2, [r1, #8] + ldr r0, [r0] + ldr r0, [r0, #0xc] + add r0, r2, r0 + str r0, [r4, #0x30] + ldr r1, [r1, #0xc] + add r0, r4, #0 + bl FUN_02013450 + pop {r4, pc} + nop +_0223E9C0: .word 0x00001120 + + thumb_func_start MOD12_0223E9C4 +MOD12_0223E9C4: ; 0x0223E9C4 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r1, #0 + add r4, r0, #0 + add r6, r2, #0 + cmp r5, #0x21 + blo _0223E9D6 + bl ErrorHandling +_0223E9D6: + ldr r0, _0223EA3C ; =0x0224637C + lsl r1, r5, #2 + ldr r5, [r0, r1] + cmp r6, #0 + ldr r0, _0223EA40 ; =0xFFFFEB80 + ldr r3, _0223EA44 ; =0xFFFFBADC + bne _0223EA10 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl MOD12_0223E954 + ldr r0, _0223EA40 ; =0xFFFFEB80 + ldr r3, _0223EA44 ; =0xFFFFBADC + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #1 + add r2, r5, #0 + bl MOD12_0223E954 + add sp, #8 + pop {r4, r5, r6, pc} +_0223EA10: + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #2 + add r2, r5, #0 + bl MOD12_0223E954 + ldr r0, _0223EA40 ; =0xFFFFEB80 + ldr r3, _0223EA44 ; =0xFFFFBADC + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #3 + add r2, r5, #0 + bl MOD12_0223E954 + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223EA3C: .word 0x0224637C +_0223EA40: .word 0xFFFFEB80 +_0223EA44: .word 0xFFFFBADC + + thumb_func_start MOD12_0223EA48 +MOD12_0223EA48: ; 0x0223EA48 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + cmp r1, #0 + ldr r1, _0223EBFC ; =0xFFFFEB80 + ldr r3, _0223EC00 ; =0xFFFFE764 + bne _0223EAD6 + str r1, [sp] + mov r1, #1 + lsl r1, r1, #0xc + str r1, [sp, #4] + ldr r2, _0223EC04 ; =0xFFFFCD38 + mov r1, #5 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC04 ; =0xFFFFCD38 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #6 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC04 ; =0xFFFFCD38 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #7 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC08 ; =0x00005014 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #5 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC08 ; =0x00005014 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #6 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC08 ; =0x00005014 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #7 + bl MOD12_0223E954 + b _0223EBAC +_0223EAD6: + str r1, [sp] + mov r1, #1 + lsl r1, r1, #0xc + str r1, [sp, #4] + ldr r2, _0223EC0C ; =0xFFFFBD98 + mov r1, #8 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC0C ; =0xFFFFBD98 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #9 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC0C ; =0xFFFFBD98 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #0xa + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC0C ; =0xFFFFBD98 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #0xb + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC0C ; =0xFFFFBD98 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #0xc + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC10 ; =0x00004074 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #8 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC10 ; =0x00004074 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #9 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC10 ; =0x00004074 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #0xa + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC10 ; =0x00004074 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #0xb + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC10 ; =0x00004074 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #0xc + bl MOD12_0223E954 +_0223EBAC: + mov r0, #0 + str r0, [sp] + ldr r0, _0223EC14 ; =0x00007FFF + ldr r1, _0223EC18 ; =0x00001FE3 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #8 + mov r3, #0x10 + bl MOD12_0223EC4C + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r2, _0223EC14 ; =0x00007FFF + add r0, r4, #0 + str r2, [sp, #8] + add r0, #0xa4 + mov r1, #4 + ldr r0, [r0] + lsr r2, r2, #1 + sub r3, r1, #5 + bl FUN_02003210 + ldr r0, _0223EC1C ; =0x04000050 + mov r1, #0x3f + mov r2, #0x10 + bl G2x_SetBlendBrightness_ + mov r2, #0xfa + ldr r0, _0223EC20 ; =MOD12_0223EC28 + add r1, r4, #0 + lsl r2, r2, #2 + bl FUN_0200CA44 + ldr r0, _0223EC24 ; =0x000006E5 + bl FUN_020054C8 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0223EBFC: .word 0xFFFFEB80 +_0223EC00: .word 0xFFFFE764 +_0223EC04: .word 0xFFFFCD38 +_0223EC08: .word 0x00005014 +_0223EC0C: .word 0xFFFFBD98 +_0223EC10: .word 0x00004074 +_0223EC14: .word 0x00007FFF +_0223EC18: .word 0x00001FE3 +_0223EC1C: .word 0x04000050 +_0223EC20: .word MOD12_0223EC28 +_0223EC24: .word 0x000006E5 + + thumb_func_start MOD12_0223EC28 +MOD12_0223EC28: ; 0x0223EC28 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r3, #0 + ldr r0, _0223EC48 ; =0x04000050 + mov r1, #1 + mov r2, #0x3e + str r3, [sp] + bl G2x_SetBlendAlpha_ + add r0, r4, #0 + bl FUN_0200CAB4 + add sp, #4 + pop {r3, r4, pc} + nop +_0223EC48: .word 0x04000050 + + thumb_func_start MOD12_0223EC4C +MOD12_0223EC4C: ; 0x0223EC4C + push {r3, r4, r5, lr} + ldr r4, _0223EC78 ; =0x0000110C + ldr r5, [sp, #0x10] + add r4, r0, r4 + lsl r0, r3, #8 + strh r0, [r4, #8] + lsl r0, r5, #8 + strh r0, [r4, #0xa] + add r0, sp, #0 + ldrh r0, [r0, #0x14] + strh r0, [r4, #0xe] + sub r0, r5, r3 + strh r1, [r4, #6] + lsl r0, r0, #8 + add r1, r2, #0 + bl _u32_div_f + strh r0, [r4, #0xc] + mov r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} + nop +_0223EC78: .word 0x0000110C + + thumb_func_start MOD12_0223EC7C +MOD12_0223EC7C: ; 0x0223EC7C + ldr r2, _0223EC84 ; =0x0000111D + strb r1, [r0, r2] + bx lr + nop +_0223EC84: .word 0x0000111D + + thumb_func_start MOD12_0223EC88 +MOD12_0223EC88: ; 0x0223EC88 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r1, [sp] + cmp r2, #0 + bne _0223EC98 + ldr r7, _0223ECC4 ; =0x00007FFF + ldr r6, _0223ECC8 ; =0x0000254A + b _0223EC9C +_0223EC98: + ldr r7, _0223ECC8 ; =0x0000254A + ldr r6, _0223ECC4 ; =0x00007FFF +_0223EC9C: + mov r4, #0 +_0223EC9E: + ldr r0, [sp] + cmp r4, r0 + ldr r0, [r5, #0x18] + bne _0223ECAE + add r1, r7, #0 + bl FUN_021DD6B8 + b _0223ECB4 +_0223ECAE: + add r1, r6, #0 + bl FUN_021DD6B8 +_0223ECB4: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #4 + blt _0223EC9E + ldr r0, _0223ECCC ; =0x000006EC + bl FUN_020054C8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223ECC4: .word 0x00007FFF +_0223ECC8: .word 0x0000254A +_0223ECCC: .word 0x000006EC + + thumb_func_start MOD12_0223ECD0 +MOD12_0223ECD0: ; 0x0223ECD0 + push {r4, r5, r6, lr} + ldr r6, _0223ECEC ; =0x00007FFF + add r5, r0, #0 + mov r4, #0 +_0223ECD8: + ldr r0, [r5, #0x18] + add r1, r6, #0 + bl FUN_021DD6B8 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #4 + blt _0223ECD8 + pop {r4, r5, r6, pc} + nop +_0223ECEC: .word 0x00007FFF + + thumb_func_start MOD12_0223ECF0 +MOD12_0223ECF0: ; 0x0223ECF0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r0, [sp, #0xc] + mov r4, #0 + add r5, sp, #0x18 + add r3, sp, #0x14 + ldr r2, _0223ED9C ; =0x00000ADA + b _0223ED0E +_0223ED00: + ldr r1, [sp, #0xc] + lsl r0, r4, #1 + add r1, r1, r0 + ldrsh r1, [r1, r2] + strb r4, [r3, r4] + add r4, r4, #1 + strh r1, [r5, r0] +_0223ED0E: + cmp r4, #4 + blt _0223ED00 + mov r4, #0 + add r7, sp, #0x18 + b _0223ED42 +_0223ED18: + mov r6, #3 + b _0223ED3C +_0223ED1C: + sub r3, r6, #1 + lsl r5, r3, #1 + lsl r1, r6, #1 + ldrsh r2, [r7, r5] + ldrsh r0, [r7, r1] + cmp r2, r0 + bge _0223ED3A + strh r2, [r7, r1] + strh r0, [r7, r5] + add r0, sp, #0x14 + add r1, sp, #0x14 + ldrb r0, [r0, r6] + ldrb r2, [r1, r3] + strb r2, [r1, r6] + strb r0, [r1, r3] +_0223ED3A: + sub r6, r6, #1 +_0223ED3C: + cmp r6, r4 + bgt _0223ED1C + add r4, r4, #1 +_0223ED42: + cmp r4, #3 + blt _0223ED18 + ldr r3, _0223EDA0 ; =0x02246400 + add r0, sp, #0x10 + ldrb r1, [r3] + mov r4, #1 + add r2, sp, #0x10 + strb r1, [r0] + add r1, sp, #0x18 + b _0223ED6E +_0223ED56: + ldrb r0, [r3, r4] + sub r6, r4, #1 + lsl r5, r6, #1 + strb r0, [r2, r4] + lsl r0, r4, #1 + ldrsh r0, [r1, r0] + ldrsh r5, [r1, r5] + cmp r0, r5 + bne _0223ED6C + ldrb r0, [r2, r6] + strb r0, [r2, r4] +_0223ED6C: + add r4, r4, #1 +_0223ED6E: + cmp r4, #4 + blt _0223ED56 + mov r4, #0 + add r5, sp, #0x10 + mov r6, #0x1e + add r7, r4, #0 + b _0223ED94 +_0223ED7C: + ldrb r0, [r5, r4] + add r1, sp, #0x14 + ldrb r1, [r1, r4] + str r0, [sp] + str r6, [sp, #4] + ldr r0, [sp, #0xc] + ldr r2, _0223EDA4 ; =0x00007FFF + ldr r3, _0223EDA8 ; =0x0000254A + str r7, [sp, #8] + bl MOD12_0223EDAC + add r4, r4, #1 +_0223ED94: + cmp r4, #4 + blt _0223ED7C + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223ED9C: .word 0x00000ADA +_0223EDA0: .word 0x02246400 +_0223EDA4: .word 0x00007FFF +_0223EDA8: .word 0x0000254A + + thumb_func_start MOD12_0223EDAC +MOD12_0223EDAC: ; 0x0223EDAC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + str r1, [sp] + mov r0, #0x17 + mov r1, #0x14 + add r6, r2, #0 + str r3, [sp, #4] + ldr r5, [sp, #0x28] + bl FUN_02016998 + mov r1, #0 + mov r2, #0x14 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r1, [sp, #0x24] + lsl r0, r0, #4 + add r0, r7, r0 + ldr r0, [r0, #0x18] + str r0, [r4] + strh r6, [r4, #8] + ldr r0, [sp, #4] + strh r0, [r4, #0xa] + ldr r0, [sp, #0x20] + strb r0, [r4, #0x10] + lsl r0, r0, #8 + bl _s32_div_f + strh r0, [r4, #0xc] + str r5, [r4, #4] + cmp r5, #0 + beq _0223EDF4 + mov r0, #0 + strb r0, [r5] +_0223EDF4: + ldr r0, [r4] + add r1, r6, #0 + bl FUN_021DD6B8 + ldr r0, _0223EE0C ; =MOD12_0223EE14 + ldr r2, _0223EE10 ; =0x00009C40 + add r1, r4, #0 + bl FUN_0200CA44 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223EE0C: .word MOD12_0223EE14 +_0223EE10: .word 0x00009C40 + + thumb_func_start MOD12_0223EE14 +MOD12_0223EE14: ; 0x0223EE14 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r1, #0 + add r6, r0, #0 + ldrh r1, [r5, #0xe] + ldrh r0, [r5, #0xc] + add r0, r1, r0 + strh r0, [r5, #0xe] + ldrh r0, [r5, #0xe] + asr r4, r0, #8 + ldrb r0, [r5, #0x10] + cmp r4, r0 + ble _0223EE30 + add r4, r0, #0 +_0223EE30: + ldrh r0, [r5, #0xa] + lsl r3, r4, #0x18 + add r1, sp, #4 + str r0, [sp] + add r0, r5, #0 + add r0, #8 + mov r2, #1 + lsr r3, r3, #0x18 + bl FUN_02003974 + add r1, sp, #4 + ldrh r1, [r1] + ldr r0, [r5] + bl FUN_021DD6B8 + ldrb r0, [r5, #0x10] + cmp r4, r0 + blt _0223EE6A + ldr r1, [r5, #4] + cmp r1, #0 + beq _0223EE5E + mov r0, #1 + strb r0, [r1] +_0223EE5E: + add r0, r5, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_0223EE6A: + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_0223EE70 +MOD12_0223EE70: ; 0x0223EE70 + cmp r0, #0x32 + beq _0223EE78 + cmp r0, #0x33 + bne _0223EE7C +_0223EE78: + mov r0, #0 + bx lr +_0223EE7C: + mov r0, #1 + bx lr + + thumb_func_start MOD12_0223EE80 +MOD12_0223EE80: ; 0x0223EE80 + push {r3, r4, lr} + sub sp, #0xc + ldr r1, _0223EEB4 ; =0x02246424 + add r3, sp, #0 + str r1, [sp] + mov r1, #0xd + strh r1, [r3, #4] + ldr r1, [r0] + ldr r2, _0223EEB8 ; =0x00000123 + ldrb r1, [r1, r2] + strb r1, [r3, #6] + sub r1, r2, #7 + ldr r4, [r0] + add r2, #0x4e + ldrb r1, [r4, r1] + strb r1, [r3, #8] + ldr r1, [r0] + ldrb r1, [r1, r2] + strb r1, [r3, #7] + ldr r1, _0223EEBC ; =0x00001158 + add r0, r0, r1 + add r1, sp, #0 + bl MOD12_02240ED0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0223EEB4: .word 0x02246424 +_0223EEB8: .word 0x00000123 +_0223EEBC: .word 0x00001158 + + thumb_func_start MOD12_0223EEC0 +MOD12_0223EEC0: ; 0x0223EEC0 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223EED4 +MOD12_0223EED4: ; 0x0223EED4 + push {r3, lr} + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223EEE4 +MOD12_0223EEE4: ; 0x0223EEE4 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223EEE8 +MOD12_0223EEE8: ; 0x0223EEE8 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223EEFC +MOD12_0223EEFC: ; 0x0223EEFC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x17 + mov r1, #0x18 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223EF38 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0223EF3C ; =MOD12_0223EF40 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223EF38: .word 0x00007530 +_0223EF3C: .word MOD12_0223EF40 + + thumb_func_start MOD12_0223EF40 +MOD12_0223EF40: ; 0x0223EF40 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r0, [r1, #0x10] + str r1, [sp] + cmp r0, #0 + beq _0223EF50 + b _0223F076 +_0223EF50: + ldr r0, [sp] + mov r1, #0x14 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223EF64 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x14] + pop {r4, r5, r6, r7, pc} +_0223EF64: + ldr r0, [sp] + mov r1, #0x13 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223EF78 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x13] + pop {r4, r5, r6, r7, pc} +_0223EF78: + ldr r0, [sp] + mov r1, #1 + strb r1, [r0, #0x13] + ldr r0, [r0] + mov r1, #2 + ldr r0, [r0, #0x74] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _0223EFF0 +_0223EF90: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + ldr r0, _0223F094 ; =0x02246404 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _0223EFEA + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r0, [r0, #0x12] + mov r7, #0x3f + str r5, [sp, #4] + lsl r1, r0, #1 + ldr r0, _0223F098 ; =0x0224640C + lsl r7, r7, #0xa + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r0, r0, #5 + add r6, r1, r0 + b _0223EFE4 +_0223EFC0: + mov r4, #0 + b _0223EFD8 +_0223EFC4: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_0223EFD8: + cmp r4, #8 + blt _0223EFC4 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_0223EFE4: + ldr r0, [sp, #4] + cmp r0, #4 + blt _0223EFC0 +_0223EFEA: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_0223EFF0: + ldr r0, [sp, #8] + cmp r0, #4 + blt _0223EF90 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _0223F032 + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _0223F032 + ldr r0, _0223F094 ; =0x02246404 + sub r1, r1, #1 + ldrsb r0, [r0, r1] + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #0x3f + str r0, [sp, #4] + lsl r1, r1, #0xa + b _0223F02C +_0223F01C: + ldr r0, [sp, #4] + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r1 + strh r0, [r3, r2] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_0223F02C: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _0223F01C +_0223F032: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x74] + bl FUN_0201AC68 + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _0223F090 + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _0223F090 + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_0223F076: + add r0, r1, #0 + mov r2, #0 + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223F090: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223F094: .word 0x02246404 +_0223F098: .word 0x0224640C + + thumb_func_start MOD12_0223F09C +MOD12_0223F09C: ; 0x0223F09C + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223F0B0 +MOD12_0223F0B0: ; 0x0223F0B0 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r6, r1, #0 + mov r0, #0x17 + mov r1, #0x18 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + ldr r2, _0223F0F8 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0223F0FC ; =MOD12_0223F108 + str r7, [r4, #0xc] + bl FUN_0200CA44 + ldr r0, _0223F100 ; =0x00001134 + mov r1, #0 + strb r1, [r6, r0] + ldr r0, _0223F104 ; =0x0000046F + bl FUN_0200521C + pop {r3, r4, r5, r6, r7, pc} + nop +_0223F0F8: .word 0x00007530 +_0223F0FC: .word MOD12_0223F108 +_0223F100: .word 0x00001134 +_0223F104: .word 0x0000046F + + thumb_func_start MOD12_0223F108 +MOD12_0223F108: ; 0x0223F108 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r0, [r1, #0x10] + str r1, [sp] + cmp r0, #0 + beq _0223F118 + b _0223F266 +_0223F118: + ldr r0, [sp] + mov r1, #0x14 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223F12C + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x14] + pop {r4, r5, r6, r7, pc} +_0223F12C: + ldr r0, [sp] + mov r1, #0x13 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223F140 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x13] + pop {r4, r5, r6, r7, pc} +_0223F140: + ldr r0, [sp] + mov r1, #1 + strb r1, [r0, #0x13] + ldr r0, [r0] + mov r1, #2 + ldr r0, [r0, #0x74] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _0223F1C0 +_0223F158: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + mov r0, #4 + sub r1, r0, r1 + ldr r0, _0223F284 ; =0x02246404 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _0223F1BA + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r1, [r0, #0x12] + mov r0, #0xb + mov r7, #0x3f + sub r0, r0, r1 + lsl r1, r0, #1 + ldr r0, _0223F288 ; =0x0224640C + str r5, [sp, #4] + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r7, r7, #0xa + lsl r0, r0, #5 + add r6, r1, r0 + b _0223F1B4 +_0223F190: + mov r4, #0 + b _0223F1A8 +_0223F194: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_0223F1A8: + cmp r4, #8 + blt _0223F194 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_0223F1B4: + ldr r0, [sp, #4] + cmp r0, #4 + blt _0223F190 +_0223F1BA: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_0223F1C0: + ldr r0, [sp, #8] + cmp r0, #4 + blt _0223F158 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _0223F222 + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _0223F222 + mov r0, #5 + sub r1, r0, r1 + ldr r0, _0223F284 ; =0x02246404 + mov r7, #0x3f + ldrsb r0, [r0, r1] + lsl r7, r7, #0xa + mov r6, #0x1d + add r0, r0, #3 + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #2 + str r0, [sp, #4] + lsl r1, r1, #8 + b _0223F21C +_0223F1F6: + ldr r0, [sp, #4] + ldr r5, [sp, #4] + lsl r4, r0, #1 + ldrh r0, [r3, r4] + lsl r5, r5, #0x1d + and r0, r7 + strh r0, [r3, r4] + ldr r0, [sp, #4] + ldrh r2, [r3, r4] + lsr r0, r0, #0x1f + sub r5, r5, r0 + ror r5, r6 + add r0, r0, r5 + add r0, r0, r1 + orr r0, r2 + strh r0, [r3, r4] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_0223F21C: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _0223F1F6 +_0223F222: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x74] + bl FUN_0201AC68 + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _0223F280 + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _0223F280 + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_0223F266: + add r0, r1, #0 + mov r2, #0 + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223F280: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223F284: .word 0x02246404 +_0223F288: .word 0x0224640C + + thumb_func_start MOD12_0223F28C +MOD12_0223F28C: ; 0x0223F28C + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223F2A0 +MOD12_0223F2A0: ; 0x0223F2A0 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x17 + mov r1, #0x14 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223F2DC ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0223F2E0 ; =MOD12_0223F2E4 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223F2DC: .word 0x00007530 +_0223F2E0: .word MOD12_0223F2E4 + + thumb_func_start MOD12_0223F2E4 +MOD12_0223F2E4: ; 0x0223F2E4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #5 + bhi _0223F388 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223F2FC: ; jump table + .short _0223F308 - _0223F2FC - 2 ; case 0 + .short _0223F318 - _0223F2FC - 2 ; case 1 + .short _0223F328 - _0223F2FC - 2 ; case 2 + .short _0223F34A - _0223F2FC - 2 ; case 3 + .short _0223F364 - _0223F2FC - 2 ; case 4 + .short _0223F37C - _0223F2FC - 2 ; case 5 +_0223F308: + ldr r0, _0223F3A4 ; =0x0000046F + mov r1, #0x1e + bl FUN_02005350 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223F318: + bl FUN_02005404 + cmp r0, #0 + bne _0223F3A0 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223F328: + ldr r0, _0223F3A8 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + bl MOD12_0223E738 + ldr r0, [r4] + mov r1, #1 + add r0, #0x14 + bl MOD12_0223CC9C + ldr r0, _0223F3AC ; =0x000006EC + bl FUN_020054C8 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223F34A: + mov r0, #0x12 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x12] + ldrsh r0, [r4, r0] + cmp r0, #0x1e + ble _0223F3A0 + mov r0, #0 + strh r0, [r4, #0x12] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223F364: + ldr r0, [r4] + ldr r1, _0223F3B0 ; =0x00000123 + ldr r2, [r0] + ldrb r1, [r2, r1] + add r2, r4, #0 + add r2, #0x11 + bl MOD12_0223E598 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223F37C: + ldrb r1, [r4, #0x11] + cmp r1, #1 + bne _0223F3A0 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223F388: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0223F3A0: + pop {r3, r4, r5, pc} + nop +_0223F3A4: .word 0x0000046F +_0223F3A8: .word 0x04000050 +_0223F3AC: .word 0x000006EC +_0223F3B0: .word 0x00000123 + + thumb_func_start MOD12_0223F3B4 +MOD12_0223F3B4: ; 0x0223F3B4 + push {r3, lr} + mov r1, #4 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223F3C8 +MOD12_0223F3C8: ; 0x0223F3C8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + add r2, r3, #0 + ldr r0, _0223F3F8 ; =0x00001BF0 + mov r1, #1 + strb r1, [r5, r0] + ldr r3, _0223F3FC ; =0x00000172 + mov r1, #0 +_0223F3DC: + ldr r6, [r5] + ldrb r0, [r2, r1] + add r6, r6, r1 + add r1, r1, #1 + strb r0, [r6, r3] + cmp r1, #4 + blt _0223F3DC + mov r2, #0 + add r0, r7, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223F3F8: .word 0x00001BF0 +_0223F3FC: .word 0x00000172 + + thumb_func_start MOD12_0223F400 +MOD12_0223F400: ; 0x0223F400 + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223F414 +MOD12_0223F414: ; 0x0223F414 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r1, #0 + mov r1, #0x57 + add r7, r0, #0 + mov r0, #0x17 + lsl r1, r1, #2 + add r5, r2, #0 + str r3, [sp, #4] + bl FUN_02016998 + mov r2, #0x57 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + add r3, r4, #0 + add r3, #0x18 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + mov r2, #7 + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + ldr r5, [sp, #4] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] +_0223F452: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223F452 + ldr r0, [r5] + ldr r2, _0223F510 ; =0x00007530 + str r0, [r3] + ldr r0, _0223F514 ; =MOD12_0223F5CC + add r1, r4, #0 + str r6, [r4, #0x54] + bl FUN_0200CA44 + mov r7, #0 + add r5, r4, #0 +_0223F46E: + ldr r1, [r6] + ldr r0, _0223F518 ; =0x00000127 + ldrb r0, [r1, r0] + cmp r7, r0 + bge _0223F482 + add r0, r6, #0 + mov r1, #0 + bl MOD12_0223F524 + b _0223F48A +_0223F482: + add r0, r6, #0 + mov r1, #1 + bl MOD12_0223F524 +_0223F48A: + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r5, r1] + add r7, r7, #1 + add r5, r5, #4 + cmp r7, #4 + blt _0223F46E + ldr r1, [r4] + ldr r2, _0223F51C ; =0x00000123 + ldr r3, [r1] + mov r0, #0 + ldrb r3, [r3, r2] +_0223F4A2: + add r2, r4, r0 + ldrb r2, [r2, #0x1a] + cmp r3, r2 + bne _0223F4B0 + ldr r2, _0223F520 ; =0x00000ACC + strb r0, [r1, r2] + b _0223F4B6 +_0223F4B0: + add r0, r0, #1 + cmp r0, #4 + blt _0223F4A2 +_0223F4B6: + add r0, r6, #0 + bl MOD12_0223FDA0 + ldr r1, [r6] + ldr r0, _0223F518 ; =0x00000127 + ldrb r5, [r1, r0] + cmp r5, #4 + bge _0223F50C + ldr r0, [sp, #4] + lsl r1, r5, #2 + add r7, r0, r1 + add r1, r4, #0 + mov r0, #0x3c + add r1, #0x5c + mul r0, r5 + add r0, r1, r0 + str r0, [sp, #8] +_0223F4D8: + mov r2, #0 +_0223F4DA: + add r0, r4, r2 + ldrb r0, [r0, #0x1a] + cmp r5, r0 + beq _0223F4E8 + add r2, r2, #1 + cmp r2, #4 + blt _0223F4DA +_0223F4E8: + ldr r0, [r6] + add r1, r0, r5 + mov r0, #0x43 + lsl r0, r0, #2 + ldrb r0, [r1, r0] + add r1, r5, #0 + str r0, [sp] + ldr r0, [sp, #8] + ldr r3, [r7, #0x14] + bl MOD12_02240774 + ldr r0, [sp, #8] + add r5, r5, #1 + add r0, #0x3c + add r7, r7, #4 + str r0, [sp, #8] + cmp r5, #4 + blt _0223F4D8 +_0223F50C: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223F510: .word 0x00007530 +_0223F514: .word MOD12_0223F5CC +_0223F518: .word 0x00000127 +_0223F51C: .word 0x00000123 +_0223F520: .word 0x00000ACC + + thumb_func_start MOD12_0223F524 +MOD12_0223F524: ; 0x0223F524 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x17 + mov r1, #0x14 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x14 + add r4, r0, #0 + bl MI_CpuFill8 + str r5, [r4, #4] + ldr r0, _0223F550 ; =MOD12_0223F588 + ldr r2, _0223F554 ; =0x00007594 + add r1, r4, #0 + strb r6, [r4, #0x12] + bl FUN_0200CA44 + str r0, [r4] + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223F550: .word MOD12_0223F588 +_0223F554: .word 0x00007594 + + thumb_func_start MOD12_0223F558 +MOD12_0223F558: ; 0x0223F558 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223F56C +MOD12_0223F56C: ; 0x0223F56C + ldrh r2, [r1] + strh r2, [r0, #8] + ldrh r2, [r1, #2] + strh r2, [r0, #0xa] + ldrh r2, [r1, #4] + strh r2, [r0, #0xc] + ldrh r2, [r1, #6] + strh r2, [r0, #0xe] + ldrh r1, [r1, #8] + strh r1, [r0, #0x10] + mov r1, #1 + strb r1, [r0, #0x13] + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223F588 +MOD12_0223F588: ; 0x0223F588 + push {r4, lr} + add r4, r1, #0 + ldrb r0, [r4, #0x13] + cmp r0, #0 + beq _0223F5C4 + ldr r0, [r4, #4] + ldr r1, _0223F5C8 ; =0x00000171 + ldr r2, [r0] + ldrb r1, [r2, r1] + cmp r1, #0 + beq _0223F5A4 + ldrb r1, [r4, #0x12] + cmp r1, #1 + bne _0223F5B2 +_0223F5A4: + add r1, r4, #0 + add r1, #8 + bl MOD12_0223D1CC + mov r0, #0 + strb r0, [r4, #0x13] + pop {r4, pc} +_0223F5B2: + add r1, r4, #0 + mov r0, #0x19 + add r1, #8 + bl FUN_020311D0 + cmp r0, #1 + bne _0223F5C4 + mov r0, #0 + strb r0, [r4, #0x13] +_0223F5C4: + pop {r4, pc} + nop +_0223F5C8: .word 0x00000171 + + thumb_func_start MOD12_0223F5CC +MOD12_0223F5CC: ; 0x0223F5CC + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r4, r1, #0 + str r0, [sp, #0x18] + ldr r0, [r4] + ldr r1, _0223F920 ; =0x00000123 + ldr r2, [r0] + ldrb r2, [r2, r1] + ldrb r1, [r4, #0x18] + cmp r2, r1 + beq _0223F5E6 + mov r7, #1 + b _0223F5E8 +_0223F5E6: + mov r7, #0 +_0223F5E8: + ldr r1, _0223F924 ; =0x00001138 + ldr r2, [r0, r1] + add r1, #8 + ldr r1, [r0, r1] + sub r1, r2, r1 + ldr r2, [r4, #0x24] + str r1, [sp, #0x20] + lsr r3, r2, #1 + cmp r1, r3 + blo _0223F602 + mov r1, #1 + str r1, [sp, #0x1c] + b _0223F606 +_0223F602: + mov r1, #0 + str r1, [sp, #0x1c] +_0223F606: + ldrb r1, [r4, #0x10] + cmp r1, #3 + bls _0223F60E + b _0223FA38 +_0223F60E: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223F61A: ; jump table + .short _0223F622 - _0223F61A - 2 ; case 0 + .short _0223F68A - _0223F61A - 2 ; case 1 + .short _0223F6F4 - _0223F61A - 2 ; case 2 + .short _0223F9C8 - _0223F61A - 2 ; case 3 +_0223F622: + add r0, #0x14 + mov r1, #0 + bl MOD12_0223D068 + ldr r0, [r4] + bl MOD12_0223DC0C + add r3, r4, #0 + ldrb r2, [r4, #0x18] + mov r1, #0x3c + add r3, #0x5c + mul r1, r2 + add r1, r3, r1 + ldr r0, [r4] + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x20] + bl MOD12_022407D4 + mov r0, #0x21 + ldr r1, [r4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl MOD12_0223E448 + ldr r0, [r4] + mov r1, #0 + bl MOD12_0223E750 + ldr r0, [r4] + bl MOD12_0223E868 + add r0, r4, #0 + add r0, #0x41 + ldrb r1, [r0] + add r0, sp, #0x2c + cmp r7, #0 + strb r1, [r0, #4] + ldr r0, [r4] + add r2, sp, #0x2c + bne _0223F67A + mov r1, #4 + bl MOD12_0223E488 + b _0223F680 +_0223F67A: + mov r1, #5 + bl MOD12_0223E488 +_0223F680: + ldrb r0, [r4, #0x10] + add sp, #0x44 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0223F68A: + ldrb r2, [r4, #0x19] + add r1, r4, #0 + add r1, #0x3c + bl MOD12_0223E590 + mov r3, #0 + mov r2, #0 + sub r0, r2, r0 + sbc r3, r1 + bge _0223F6A0 + b _0223FA66 +_0223F6A0: + ldr r0, [r4] + bl MOD12_0223E528 + ldr r5, [r4] + add r1, r4, #0 + ldrb r2, [r4, #0x19] + add r0, r5, #0 + add r1, #0x3c + bl MOD12_0223E590 + ldr r2, _0223F924 ; =0x00001138 + add r6, r0, #0 + add r0, r1, #0 + add r1, r2, #4 + ldr r3, [r5, r2] + ldr r1, [r5, r1] + add r3, r3, r6 + adc r1, r0 + add r0, r2, #0 + add r0, #8 + add r2, #0xc + str r3, [r5, r0] + str r1, [r5, r2] + cmp r7, #0 + bne _0223F6E0 + ldr r0, [r4] + add r1, r7, #0 + bl MOD12_0223E8B4 + ldrb r0, [r4, #0x11] + add r0, r0, #1 + strb r0, [r4, #0x11] +_0223F6E0: + ldrb r1, [r4, #0x18] + ldr r0, [r4] + mov r2, #0 + bl MOD12_0223EC88 + ldrb r0, [r4, #0x10] + add sp, #0x44 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0223F6F4: + ldr r1, [sp, #0x20] + add r0, #0x14 + bl MOD12_0223C438 + mov r0, #0x21 + ldr r3, [r4] + ldr r1, _0223F924 ; =0x00001138 + lsl r0, r0, #4 + ldr r2, [r3, r1] + add r1, #8 + ldr r1, [r3, r1] + ldr r0, [r3, r0] + sub r1, r2, r1 + ldr r2, [r4, #0x24] + bl MOD12_0223E3DC + ldr r5, [r4, #0x24] + ldr r0, [sp, #0x20] + cmp r0, r5 + blo _0223F7DC + ldrb r0, [r4, #0x16] + ldr r1, _0223F924 ; =0x00001138 + add r0, r0, #1 + strb r0, [r4, #0x16] + ldr r5, [r4] + add r0, r5, r1 + ldmia r0!, {r2, r3} + add r1, #8 + add r0, r5, r1 + stmia r0!, {r2, r3} + mov r0, #0 + strb r0, [r4, #0x11] + strb r0, [r4, #0x12] + ldr r0, [r4] + bl MOD12_0223FDA0 + mov r0, #0 + strb r0, [r4, #0x17] + ldr r0, [r4] + ldr r1, [r0] + ldr r0, _0223F928 ; =0x00000127 + ldrb r6, [r1, r0] + cmp r6, #4 + bge _0223F764 + add r1, r4, #0 + mov r0, #0x3c + add r1, #0x5c + mul r0, r6 + add r5, r1, r0 +_0223F756: + add r0, r5, #0 + bl MOD12_0224079C + add r6, r6, #1 + add r5, #0x3c + cmp r6, #4 + blt _0223F756 +_0223F764: + ldr r0, [r4] + add r0, #0x14 + bl MOD12_0223C640 + ldr r0, [r4] + bl MOD12_0223DC0C + add r3, r4, #0 + ldrb r2, [r4, #0x18] + mov r1, #0x3c + add r3, #0x5c + mul r1, r2 + add r1, r3, r1 + ldr r0, [r4] + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x20] + bl MOD12_022407D4 + ldr r0, [r4] + mov r1, #0 + bl MOD12_0223E750 + add r0, r4, #0 + add r0, #0x40 + ldrb r1, [r4, #0x16] + ldrb r0, [r0] + cmp r1, r0 + ldr r0, [r4] + blo _0223F7B6 + bl MOD12_0223ECD0 + ldr r0, [r4] + mov r1, #2 + add r0, #0x14 + bl MOD12_0223D068 + ldrb r0, [r4, #0x10] + add sp, #0x44 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0223F7B6: + ldrb r1, [r4, #0x18] + mov r2, #0 + bl MOD12_0223EC88 + cmp r7, #0 + bne _0223F7C8 + ldrb r0, [r4, #0x11] + cmp r0, #0 + beq _0223F7CA +_0223F7C8: + b _0223FA66 +_0223F7CA: + ldr r0, [r4] + add r1, r7, #0 + bl MOD12_0223E8B4 + ldrb r0, [r4, #0x11] + add sp, #0x44 + add r0, r0, #1 + strb r0, [r4, #0x11] + pop {r4, r5, r6, r7, pc} +_0223F7DC: + ldr r1, [r4] + ldr r0, _0223F92C ; =0x00000ACC + ldrb r6, [r1, r0] + ldr r0, [sp, #0x20] + lsr r1, r5, #1 + cmp r0, r1 + blo _0223F7EE + mov r0, #1 + b _0223F7F0 +_0223F7EE: + mov r0, #0 +_0223F7F0: + cmp r7, #0 + bne _0223F88C + cmp r0, #0 + bne _0223F828 + add r0, r4, #0 + add r0, #0x41 + ldrb r1, [r4, #0x17] + ldrb r0, [r0] + cmp r1, r0 + bhs _0223F828 + ldr r0, [r4, #0x20] + ldr r1, _0223F930 ; =0x00002710 + lsr r0, r0, #2 + bl _u32_div_f + lsr r1, r5, #1 + sub r1, r1, r0 + ldr r0, [sp, #0x20] + cmp r0, r1 + bhs _0223F828 + add r0, r4, #0 + mov r2, #0 + add r0, #0x54 + add r1, sp, #0x34 + add r3, r2, #0 + bl MOD12_0223FA74 + b _0223F836 +_0223F828: + add r0, r4, #0 + mov r2, #1 + add r0, #0x54 + add r1, sp, #0x34 + add r3, r2, #0 + bl MOD12_0223FA74 +_0223F836: + mov r0, #0 + ldr r1, [sp, #0x34] + mvn r0, r0 + cmp r1, r0 + bne _0223F842 + b _0223F94E +_0223F842: + add r0, r4, #0 + add r0, #0x44 + str r0, [sp] + add r0, sp, #0x38 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r6, [sp, #0xc] + ldrb r0, [r4, #0x17] + str r0, [sp, #0x10] + add r0, r4, #0 + add r0, #0x41 + ldrb r0, [r0] + str r0, [sp, #0x14] + ldr r0, [r4] + ldr r3, [r4, #0x20] + ldr r2, [r0] + ldr r0, _0223F920 ; =0x00000123 + ldrb r0, [r2, r0] + ldr r2, [sp, #0x20] + bl MOD12_0223FCAC + ldr r0, [r4] + ldr r1, [r0] + ldr r0, _0223F920 ; =0x00000123 + ldrb r1, [r1, r0] + add r0, #0x29 + lsl r1, r1, #2 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, sp, #0x38 + bl MOD12_0223F56C + ldrb r0, [r4, #0x17] + add r0, r0, #1 + strb r0, [r4, #0x17] + b _0223F94E +_0223F88C: + cmp r0, #1 + bne _0223F8D2 + add r0, r4, #0 + add r0, #0x41 + ldrb r1, [r4, #0x17] + ldrb r0, [r0] + cmp r1, r0 + bhs _0223F8D2 + ldr r0, [r4, #0x20] + ldr r1, _0223F930 ; =0x00002710 + lsr r0, r0, #2 + bl _u32_div_f + sub r1, r5, r0 + ldr r0, [sp, #0x20] + cmp r0, r1 + bhs _0223F8D2 + add r0, r4, #0 + mov r2, #0 + add r0, #0x54 + add r1, sp, #0x34 + add r3, r2, #0 + bl MOD12_0223FA74 + ldrb r0, [r4, #0x11] + cmp r0, #0 + bne _0223F8E0 + ldr r0, [r4] + add r1, r7, #0 + bl MOD12_0223E8B4 + ldrb r0, [r4, #0x11] + add r0, r0, #1 + strb r0, [r4, #0x11] + b _0223F8E0 +_0223F8D2: + add r0, r4, #0 + mov r2, #1 + add r0, #0x54 + add r1, sp, #0x34 + add r3, r2, #0 + bl MOD12_0223FA74 +_0223F8E0: + mov r0, #0 + ldr r1, [sp, #0x34] + mvn r0, r0 + cmp r1, r0 + beq _0223F94E + add r2, r4, #0 + ldr r0, [r4] + add r2, #0x44 + str r2, [sp] + add r2, sp, #0x38 + str r2, [sp, #4] + ldr r2, _0223F934 ; =0x00001B98 + add r2, r0, r2 + str r2, [sp, #8] + str r6, [sp, #0xc] + ldrb r2, [r4, #0x17] + str r2, [sp, #0x10] + add r2, r4, #0 + add r2, #0x41 + ldrb r2, [r2] + str r2, [sp, #0x14] + ldr r2, [r0] + ldr r0, _0223F920 ; =0x00000123 + ldr r3, [r4, #0x20] + ldrb r0, [r2, r0] + ldr r2, [sp, #0x20] + bl MOD12_0223FCAC + ldr r0, [r4] + ldr r1, [r0] + ldr r0, _0223F920 ; =0x00000123 + b _0223F938 + .align 2, 0 +_0223F920: .word 0x00000123 +_0223F924: .word 0x00001138 +_0223F928: .word 0x00000127 +_0223F92C: .word 0x00000ACC +_0223F930: .word 0x00002710 +_0223F934: .word 0x00001B98 +_0223F938: + ldrb r1, [r1, r0] + add r0, #0x29 + lsl r1, r1, #2 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, sp, #0x38 + bl MOD12_0223F56C + ldrb r0, [r4, #0x17] + add r0, r0, #1 + strb r0, [r4, #0x17] +_0223F94E: + ldr r0, [r4] + ldr r1, [r0] + ldr r0, _0223FA6C ; =0x00000127 + ldrb r7, [r1, r0] + cmp r7, #4 + bge _0223F99A + lsl r0, r7, #2 + add r5, r4, r0 + add r1, r4, #0 + mov r0, #0x3c + add r1, #0x5c + mul r0, r7 + add r6, r1, r0 + add r0, r4, #0 + str r0, [sp, #0x28] + add r0, #0x3c + str r0, [sp, #0x28] +_0223F970: + ldr r0, [r4, #0x24] + ldr r3, [sp, #0x20] + str r0, [sp] + ldr r0, [r4, #0x20] + add r2, r6, #0 + str r0, [sp, #4] + ldr r0, [sp, #0x28] + str r0, [sp, #8] + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r5, r0] + str r0, [sp, #0xc] + ldr r0, [sp, #0x1c] + ldr r1, [r4] + bl MOD12_02240B08 + add r7, r7, #1 + add r5, r5, #4 + add r6, #0x3c + cmp r7, #4 + blt _0223F970 +_0223F99A: + ldr r0, [sp, #0x1c] + cmp r0, #1 + bne _0223F9B6 + ldrb r0, [r4, #0x12] + cmp r0, #0 + bne _0223F9B6 + ldrb r1, [r4, #0x18] + ldr r0, [r4] + mov r2, #1 + bl MOD12_0223EC88 + ldrb r0, [r4, #0x12] + add r0, r0, #1 + strb r0, [r4, #0x12] +_0223F9B6: + ldr r0, [sp, #0x1c] + cmp r0, #1 + bne _0223FA66 + ldr r0, [r4] + ldr r1, [sp, #0x20] + bl MOD12_0223E7D4 + add sp, #0x44 + pop {r4, r5, r6, r7, pc} +_0223F9C8: + add r0, r4, #0 + add r0, #0x54 + add r1, sp, #0x34 + mov r2, #1 + mov r3, #0 + bl MOD12_0223FA74 + cmp r0, #1 + bne _0223FA66 + ldr r0, [r4] + add r0, #0x14 + bl MOD12_0223C640 + ldr r0, [r4] + ldr r2, [r4, #0x24] + add r0, #0x14 + mov r1, #0 + bl MOD12_0223C438 + mov r0, #0x21 + ldr r1, [r4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl MOD12_0223E43C + ldr r0, [r4] + mov r1, #2 + add r0, #0x14 + bl MOD12_0223D068 + ldr r0, [r4] + mov r1, #0 + bl MOD12_0223E750 + ldr r0, [r4] + bl MOD12_0223E898 + ldr r1, [r4] + ldr r0, _0223FA70 ; =0x00001130 + ldr r0, [r1, r0] + bl MOD12_0223B92C + cmp r0, #0 + beq _0223FA2E + ldr r1, [r4] + ldr r0, _0223FA70 ; =0x00001130 + mov r2, #6 + ldr r0, [r1, r0] + mov r1, #0 + bl MOD12_0223C1F4 +_0223FA2E: + ldrb r0, [r4, #0x10] + add sp, #0x44 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0223FA38: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + mov r7, #0x53 + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #2 +_0223FA4C: + ldr r0, [r5, r7] + bl MOD12_0223F558 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _0223FA4C + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [sp, #0x18] + bl FUN_0200CAB4 +_0223FA66: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_0223FA6C: .word 0x00000127 +_0223FA70: .word 0x00001130 + + thumb_func_start MOD12_0223FA74 +MOD12_0223FA74: ; 0x0223FA74 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r5, r0, #0 + add r7, r1, #0 + sub r0, r4, #1 + add r6, r2, #0 + str r3, [sp] + str r0, [r7] + cmp r6, #0 + bne _0223FAA6 + ldrb r0, [r5, #5] + cmp r0, #0 + beq _0223FAA6 + sub r0, r0, #1 + strb r0, [r5, #5] + ldrb r0, [r5, #5] + cmp r0, #0 + bne _0223FAA6 + ldr r1, [r5] + ldr r0, _0223FB74 ; =0x00001130 + add r2, r4, #0 + ldr r0, [r1, r0] + add r1, r4, #0 + bl MOD12_0223C1F4 +_0223FAA6: + ldrb r0, [r5, #4] + cmp r0, #0 + beq _0223FAB6 + cmp r0, #1 + beq _0223FADC + cmp r0, #2 + beq _0223FB1E + b _0223FB44 +_0223FAB6: + cmp r6, #0 + bne _0223FAD8 + ldr r0, [sp] + cmp r0, #0 + bne _0223FAD8 + mov r1, #0 + strb r1, [r5, #5] + ldr r2, [r5] + ldr r0, _0223FB74 ; =0x00001130 + ldr r0, [r2, r0] + add r2, r1, #0 + bl MOD12_0223C1F4 + ldrb r0, [r5, #4] + add r0, r0, #1 + strb r0, [r5, #4] + b _0223FB44 +_0223FAD8: + mov r4, #1 + b _0223FB44 +_0223FADC: + cmp r6, #1 + beq _0223FAE6 + ldrb r0, [r5, #5] + cmp r0, #0 + beq _0223FAEA +_0223FAE6: + mov r4, #1 + b _0223FB44 +_0223FAEA: + ldr r1, [r5] + ldr r0, _0223FB74 ; =0x00001130 + ldr r0, [r1, r0] + bl MOD12_0223B878 + mov r1, #0 + mvn r1, r1 + str r0, [r7] + cmp r0, r1 + beq _0223FB1A + ldr r1, [r5] + ldr r0, _0223FB78 ; =0x00000AE8 + ldr r0, [r1, r0] + ldr r1, _0223FB7C ; =0x00002710 + bl _u32_div_f + strb r0, [r5, #5] + ldrb r0, [r5, #5] + sub r0, r0, #2 + strb r0, [r5, #5] + ldrb r0, [r5, #4] + add r0, r0, #1 + strb r0, [r5, #4] + b _0223FB44 +_0223FB1A: + mov r4, #1 + b _0223FB44 +_0223FB1E: + ldr r1, [r5] + ldr r0, _0223FB74 ; =0x00001130 + ldr r0, [r1, r0] + bl MOD12_0223B91C + cmp r0, #1 + bne _0223FB44 + ldrb r0, [r5, #5] + cmp r0, #0 + beq _0223FB40 + ldr r1, [r5] + ldr r0, _0223FB74 ; =0x00001130 + mov r2, #6 + ldr r0, [r1, r0] + mov r1, #0 + bl MOD12_0223C1F4 +_0223FB40: + mov r0, #1 + strb r0, [r5, #4] +_0223FB44: + ldr r0, [sp] + cmp r0, #1 + bne _0223FB6E + cmp r4, #1 + bne _0223FB6E + ldr r1, [r5] + ldr r0, _0223FB74 ; =0x00001130 + ldr r0, [r1, r0] + bl MOD12_0223B92C + cmp r0, #0 + beq _0223FB6E + ldr r1, [r5] + ldr r0, _0223FB74 ; =0x00001130 + mov r2, #6 + ldr r0, [r1, r0] + mov r1, #0 + bl MOD12_0223C1F4 + mov r0, #0 + strb r0, [r5, #4] +_0223FB6E: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223FB74: .word 0x00001130 +_0223FB78: .word 0x00000AE8 +_0223FB7C: .word 0x00002710 + + thumb_func_start MOD12_0223FB80 +MOD12_0223FB80: ; 0x0223FB80 + push {r3, lr} + cmp r0, #3 + bhi _0223FBAA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223FB92: ; jump table + .short _0223FB9A - _0223FB92 - 2 ; case 0 + .short _0223FB9E - _0223FB92 - 2 ; case 1 + .short _0223FBA2 - _0223FB92 - 2 ; case 2 + .short _0223FBA6 - _0223FB92 - 2 ; case 3 +_0223FB9A: + mov r0, #1 + pop {r3, pc} +_0223FB9E: + mov r0, #2 + pop {r3, pc} +_0223FBA2: + mov r0, #3 + pop {r3, pc} +_0223FBA6: + mov r0, #4 + pop {r3, pc} +_0223FBAA: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223FBB4 +MOD12_0223FBB4: ; 0x0223FBB4 + push {r3, lr} + cmp r0, #4 + bhi _0223FBE0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223FBC6: ; jump table + .short _0223FBE0 - _0223FBC6 - 2 ; case 0 + .short _0223FBD0 - _0223FBC6 - 2 ; case 1 + .short _0223FBD4 - _0223FBC6 - 2 ; case 2 + .short _0223FBD8 - _0223FBC6 - 2 ; case 3 + .short _0223FBDC - _0223FBC6 - 2 ; case 4 +_0223FBD0: + mov r0, #0 + pop {r3, pc} +_0223FBD4: + mov r0, #1 + pop {r3, pc} +_0223FBD8: + mov r0, #2 + pop {r3, pc} +_0223FBDC: + mov r0, #3 + pop {r3, pc} +_0223FBE0: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD12_0223FBE8 +MOD12_0223FBE8: ; 0x0223FBE8 + push {r3, r4} + ldrb r4, [r1] + cmp r0, r4 + bgt _0223FBFA + mov r0, #0 + strb r0, [r2] + strb r0, [r3] + pop {r3, r4} + bx lr +_0223FBFA: + ldrb r4, [r1, #1] + cmp r0, r4 + bgt _0223FC0C + mov r0, #0 + strb r0, [r2] + mov r0, #1 + strb r0, [r3] + pop {r3, r4} + bx lr +_0223FC0C: + ldrb r4, [r1, #2] + cmp r0, r4 + bgt _0223FC1E + mov r0, #1 + strb r0, [r2] + mov r0, #2 + strb r0, [r3] + pop {r3, r4} + bx lr +_0223FC1E: + ldrb r1, [r1, #3] + cmp r0, r1 + bgt _0223FC30 + mov r0, #1 + strb r0, [r2] + mov r0, #3 + strb r0, [r3] + pop {r3, r4} + bx lr +_0223FC30: + mov r0, #2 + strb r0, [r2] + mov r0, #4 + strb r0, [r3] + pop {r3, r4} + bx lr + + thumb_func_start MOD12_0223FC3C +MOD12_0223FC3C: ; 0x0223FC3C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r2, #0 + add r6, r0, #0 + mov r0, #0 + ldr r2, _0223FCA4 ; =0x00002710 + str r3, [sp] + mul r6, r2 + lsr r1, r1, #1 + add r5, r0, #0 + add r4, r0, #0 + cmp r6, #0 + bls _0223FC62 + bls _0223FC60 +_0223FC58: + add r4, r4, r1 + add r5, r5, #1 + cmp r4, r6 + blo _0223FC58 +_0223FC60: + sub r0, r4, r1 +_0223FC62: + ldr r1, _0223FCA8 ; =0x00001388 + add r0, r0, r1 + lsl r1, r1, #1 + bl _u32_div_f + ldr r1, _0223FCA8 ; =0x00001388 + str r0, [sp, #4] + add r0, r4, r1 + lsl r1, r1, #1 + bl _u32_div_f + add r4, r0, #0 + ldr r1, _0223FCA4 ; =0x00002710 + add r0, r6, #0 + bl _u32_div_f + ldr r1, [sp, #4] + sub r1, r0, r1 + bpl _0223FC8A + neg r1, r1 +_0223FC8A: + sub r0, r0, r4 + bpl _0223FC90 + neg r0, r0 +_0223FC90: + cmp r1, r0 + bhi _0223FC98 + sub r5, r5, #1 + b _0223FC9A +_0223FC98: + add r1, r0, #0 +_0223FC9A: + ldr r0, [sp] + str r1, [r7] + str r5, [r0] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223FCA4: .word 0x00002710 +_0223FCA8: .word 0x00001388 + + thumb_func_start MOD12_0223FCAC +MOD12_0223FCAC: ; 0x0223FCAC + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp] + str r2, [sp, #4] + str r3, [sp, #8] + add r0, r1, #0 + ldr r5, [sp, #0x34] + ldr r6, [sp, #0x38] + mov r7, #0 + bl MOD12_0223FB80 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, sp, #0x18 + add r3, sp, #0x14 + bl MOD12_0223FC3C + cmp r6, #0 + beq _0223FD00 + ldr r0, [sp, #0x14] + add r4, r7, #0 + sub r0, #0x10 + add r1, r6, #0 + add r2, r6, #0 +_0223FCDE: + ldrb r3, [r1, #8] + lsl r3, r3, #0x1d + lsr r3, r3, #0x1f + cmp r3, #1 + bne _0223FCEE + ldrb r3, [r2, #6] + cmp r0, r3 + beq _0223FCF8 +_0223FCEE: + add r4, r4, #1 + add r1, #0xa + add r2, #0xa + cmp r4, #8 + blo _0223FCDE +_0223FCF8: + cmp r4, #8 + bne _0223FD00 + mov r0, #0xff + str r0, [sp, #0x18] +_0223FD00: + add r2, sp, #0x10 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x30] + add r2, #1 + add r3, sp, #0x10 + bl MOD12_0223FBE8 + cmp r6, #0 + beq _0223FD40 + cmp r4, #8 + beq _0223FD40 + add r0, sp, #0x10 + ldrb r0, [r0, #1] + cmp r0, #0 + beq _0223FD22 + cmp r0, #1 + bne _0223FD40 +_0223FD22: + mov r0, #0xa + mul r0, r4 + add r0, r6, r0 + ldrb r1, [r0, #3] + ldr r0, [sp, #0xc] + cmp r0, r1 + beq _0223FD40 + mov r0, #0xff + str r0, [sp, #0x18] + mov r1, #4 + add r0, sp, #0x10 + strb r1, [r0] + mov r1, #2 + strb r1, [r0, #1] + mov r7, #1 +_0223FD40: + ldr r0, [sp] + strb r0, [r5, #2] + ldr r0, [sp, #4] + strh r0, [r5] + ldr r0, [sp, #0xc] + strb r0, [r5, #3] + add r0, sp, #0x10 + ldrb r1, [r0, #1] + strb r1, [r5, #4] + ldrb r0, [r0] + ldr r1, [sp, #0x40] + strb r0, [r5, #5] + ldr r0, [sp, #0x14] + strb r0, [r5, #6] + ldr r0, [sp, #0x3c] + strb r0, [r5, #7] + ldr r0, [sp, #0x44] + sub r0, r0, #1 + cmp r1, r0 + blt _0223FD6C + mov r1, #1 + b _0223FD6E +_0223FD6C: + mov r1, #0 +_0223FD6E: + ldrb r2, [r5, #8] + mov r0, #1 + bic r2, r0 + lsl r0, r1, #0x18 + lsr r1, r0, #0x18 + mov r0, #1 + and r0, r1 + orr r0, r2 + strb r0, [r5, #8] + ldrb r1, [r5, #8] + mov r0, #2 + bic r1, r0 + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1f + lsr r0, r0, #0x1e + orr r0, r1 + strb r0, [r5, #8] + ldrb r1, [r5, #8] + mov r0, #4 + orr r0, r1 + strb r0, [r5, #8] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223FDA0 +MOD12_0223FDA0: ; 0x0223FDA0 + push {r4, r5} + ldr r1, _0223FDC8 ; =0x00000ABD + mov r5, #0 + add r3, r5, #0 + add r2, r1, #4 +_0223FDAA: + add r4, r0, r5 + strb r3, [r4, r1] + add r5, r5, #1 + strb r3, [r4, r2] + cmp r5, #4 + blt _0223FDAA + ldr r1, _0223FDCC ; =0x00000AC5 + strb r3, [r0, r1] + add r2, r1, #1 + strb r3, [r0, r2] + add r1, r1, #2 + strb r3, [r0, r1] + pop {r4, r5} + bx lr + nop +_0223FDC8: .word 0x00000ABD +_0223FDCC: .word 0x00000AC5 + + thumb_func_start MOD12_0223FDD0 +MOD12_0223FDD0: ; 0x0223FDD0 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223FDD4 +MOD12_0223FDD4: ; 0x0223FDD4 + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223FDE8 +MOD12_0223FDE8: ; 0x0223FDE8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0x17 + str r1, [sp] + add r1, r0, #0 + add r1, #0xed + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r2, #0x41 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + add r3, r4, #0 + str r0, [r4] + ldrh r0, [r5] + add r3, #0xc8 + mov r2, #7 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] +_0223FE24: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223FE24 + ldr r0, [r6] + ldr r2, _0223FE3C ; =0x00007530 + str r0, [r3] + ldr r0, _0223FE40 ; =MOD12_0223FE44 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223FE3C: .word 0x00007530 +_0223FE40: .word MOD12_0223FE44 + + thumb_func_start MOD12_0223FE44 +MOD12_0223FE44: ; 0x0223FE44 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #5 + bls _0223FE54 + b _02240002 +_0223FE54: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223FE60: ; jump table + .short _0223FE6C - _0223FE60 - 2 ; case 0 + .short _0223FEBC - _0223FE60 - 2 ; case 1 + .short _0223FEEA - _0223FE60 - 2 ; case 2 + .short _0223FF9C - _0223FE60 - 2 ; case 3 + .short _0223FFBE - _0223FE60 - 2 ; case 4 + .short _0223FFE2 - _0223FE60 - 2 ; case 5 +_0223FE6C: + ldr r0, [r4] + mov r1, #0 + bl MOD12_0223EC7C + mov r1, #0 + str r1, [sp] + mov r0, #6 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r4] + mov r1, #1 + add r0, #0xa4 + ldr r0, [r0] + ldr r2, _02240020 ; =0x00001FE3 + sub r3, r1, #3 + bl FUN_02003210 + add r6, r4, #0 + mov r5, #0 + mov r7, #0x10 + add r6, #0x11 +_0223FE96: + str r7, [sp] + mov r0, #4 + str r0, [sp, #4] + add r0, r6, r5 + str r0, [sp, #8] + ldr r0, [r4] + ldr r2, _02240024 ; =0x00007FFF + ldr r3, _02240028 ; =0x0000254A + add r1, r5, #0 + bl MOD12_0223EDAC + add r5, r5, #1 + cmp r5, #4 + blt _0223FE96 + ldrb r0, [r4, #0x10] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223FEBC: + ldr r0, [r4] + add r0, #0xa4 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + bne _0223FEDE + mov r1, #0 +_0223FECC: + add r0, r4, r1 + ldrb r0, [r0, #0x11] + cmp r0, #0 + beq _0223FEDA + add r1, r1, #1 + cmp r1, #4 + blt _0223FECC +_0223FEDA: + cmp r1, #4 + beq _0223FEE0 +_0223FEDE: + b _0224001A +_0223FEE0: + ldrb r0, [r4, #0x10] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223FEEA: + add r0, r4, #0 + str r0, [sp, #0xc] + add r0, #0x18 + mov r6, #0 + str r0, [sp, #0xc] +_0223FEF4: + add r0, r4, r6 + add r0, #0xca + ldrb r1, [r0] + mov r2, #0x2c + add r7, r1, #0 + mul r7, r2 + ldr r2, [r4] + lsl r0, r1, #2 + ldr r2, [r2, #0x14] + add r5, r4, r7 + ldr r2, [r2, r0] + str r2, [r5, #0x18] + ldr r2, [r4] + add r0, r2, r0 + ldr r0, [r0, #0x5c] + str r0, [r5, #0x1c] + ldr r2, [r4] + lsl r0, r1, #4 + add r2, #0x18 + add r0, r2, r0 + str r0, [r5, #0x20] + ldr r1, [r4] + ldr r0, _0224002C ; =0x00000AF4 + ldr r0, [r1, r0] + ldr r1, _02240030 ; =0x00002710 + bl _u32_div_f + mov r1, #0x28 + mul r1, r0 + add r0, r1, #0 + mov r1, #0x64 + bl _u32_div_f + strh r0, [r5, #0x26] + add r0, r5, #0 + add r0, #0x24 + strb r6, [r0] + cmp r6, #0 + bne _0223FF48 + add r5, #0x25 + mov r0, #3 + b _0223FF4C +_0223FF48: + sub r0, r6, #1 + add r5, #0x25 +_0223FF4C: + ldr r1, [sp, #0xc] + strb r0, [r5] + ldr r0, _02240034 ; =MOD12_02240044 + ldr r2, _02240038 ; =0x00009CA4 + add r1, r1, r7 + bl FUN_0200CA44 + add r6, r6, #1 + cmp r6, #4 + blt _0223FEF4 + add r0, r4, #0 + add r0, #0xf1 + ldrb r1, [r0] + add r0, sp, #0x10 + strb r1, [r0, #4] + ldr r0, [r4] + add r1, r4, #0 + add r1, #0xcb + ldrb r3, [r1] + ldr r2, [r0] + ldr r1, _0224003C ; =0x00000123 + ldrb r1, [r2, r1] + cmp r3, r1 + add r2, sp, #0x10 + bne _0223FF86 + mov r1, #4 + bl MOD12_0223E488 + b _0223FF8C +_0223FF86: + mov r1, #5 + bl MOD12_0223E488 +_0223FF8C: + ldr r0, _02240040 ; =0x000006F7 + bl FUN_020054C8 + ldrb r0, [r4, #0x10] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223FF9C: + mov r2, #0 +_0223FF9E: + add r0, r1, #0 + add r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0223FFB0 + add r2, r2, #1 + add r1, #0x2c + cmp r2, #4 + blt _0223FF9E +_0223FFB0: + cmp r2, #4 + bne _0224001A + ldrb r0, [r4, #0x10] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223FFBE: + mov r0, #6 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #1 + add r0, #0xa4 + ldr r0, [r0] + ldr r2, _02240020 ; =0x00001FE3 + sub r3, r1, #3 + bl FUN_02003210 + ldrb r0, [r4, #0x10] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223FFE2: + ldr r0, [r4] + add r0, #0xa4 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + bne _0224001A + ldr r0, [r4] + mov r1, #1 + bl MOD12_0223EC7C + ldrb r0, [r4, #0x10] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_02240002: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0224001A: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02240020: .word 0x00001FE3 +_02240024: .word 0x00007FFF +_02240028: .word 0x0000254A +_0224002C: .word 0x00000AF4 +_02240030: .word 0x00002710 +_02240034: .word MOD12_02240044 +_02240038: .word 0x00009CA4 +_0224003C: .word 0x00000123 +_02240040: .word 0x000006F7 + + thumb_func_start MOD12_02240044 +MOD12_02240044: ; 0x02240044 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r1, #0x2a + ldrb r1, [r1] + cmp r1, #0 + beq _02240058 + cmp r1, #1 + beq _02240114 + b _0224025E +_02240058: + ldr r0, [r5, #8] + ldr r0, [r0, #4] + lsl r0, r0, #8 + str r0, [r5, #0x10] + ldr r0, [r5, #8] + ldr r0, [r0, #8] + lsl r0, r0, #8 + str r0, [r5, #0x14] + ldr r0, [r5, #8] + ldr r0, [r0, #0xc] + lsl r0, r0, #8 + str r0, [r5, #0x18] + ldrb r0, [r5, #0xc] + bl MOD12_0223C210 + lsl r4, r0, #8 + ldrb r0, [r5, #0xc] + bl MOD12_0223C220 + lsl r0, r0, #8 + str r0, [sp, #8] + ldrb r0, [r5, #0xc] + bl MOD12_0223C234 + lsl r0, r0, #8 + str r0, [sp, #4] + ldrb r0, [r5, #0xd] + cmp r0, #0 + beq _02240096 + cmp r0, #3 + bne _022400C8 +_02240096: + cmp r0, #0 + bne _0224009E + ldr r0, _0224026C ; =0xFFFFB000 + b _022400A2 +_0224009E: + mov r0, #0x59 + lsl r0, r0, #0xa +_022400A2: + ldrh r1, [r5, #0xe] + sub r0, r0, r4 + lsr r1, r1, #1 + bl _s32_div_f + str r0, [r5, #0x1c] + ldrh r1, [r5, #0xe] + mov r0, #0 + lsr r1, r1, #1 + bl _s32_div_f + str r0, [r5, #0x20] + ldrh r1, [r5, #0xe] + mov r0, #0 + lsr r1, r1, #1 + bl _s32_div_f + str r0, [r5, #0x24] + b _02240104 +_022400C8: + bl MOD12_0223C210 + lsl r6, r0, #8 + ldrb r0, [r5, #0xd] + bl MOD12_0223C220 + lsl r0, r0, #8 + str r0, [sp] + ldrb r0, [r5, #0xd] + bl MOD12_0223C234 + lsl r7, r0, #8 + ldrh r1, [r5, #0xe] + sub r0, r6, r4 + bl _s32_div_f + str r0, [r5, #0x1c] + ldr r1, [sp] + ldr r0, [sp, #8] + sub r0, r1, r0 + ldrh r1, [r5, #0xe] + bl _s32_div_f + str r0, [r5, #0x20] + ldr r0, [sp, #4] + ldrh r1, [r5, #0xe] + sub r0, r7, r0 + bl _s32_div_f + str r0, [r5, #0x24] +_02240104: + add r0, r5, #0 + add r0, #0x2a + ldrb r0, [r0] + add r5, #0x2a + add sp, #0xc + add r0, r0, #1 + strb r0, [r5] + pop {r4, r5, r6, r7, pc} +_02240114: + ldr r1, [r5, #0x10] + ldr r0, [r5, #0x1c] + add r0, r1, r0 + str r0, [r5, #0x10] + ldr r1, [r5, #0x14] + ldr r0, [r5, #0x20] + add r0, r1, r0 + str r0, [r5, #0x14] + ldr r1, [r5, #0x18] + ldr r0, [r5, #0x24] + add r0, r1, r0 + str r0, [r5, #0x18] + ldrh r0, [r5, #0x28] + add r0, r0, #1 + strh r0, [r5, #0x28] + ldrb r0, [r5, #0xd] + cmp r0, #0 + beq _0224013C + cmp r0, #3 + bne _022401DC +_0224013C: + ldrh r1, [r5, #0xe] + ldrh r2, [r5, #0x28] + lsr r1, r1, #1 + cmp r2, r1 + bne _022401DC + cmp r0, #0 + bne _02240164 + ldr r0, _02240270 ; =0xFFFF9C00 + mov r1, #1 + str r0, [r5, #0x10] + ldr r0, [r5, #8] + ldr r0, [r0] + bl FUN_021DD59C + ldr r0, [r5, #8] + mov r1, #0x64 + ldr r0, [r0] + bl FUN_021DD6CC + b _02240184 +_02240164: + bl MOD12_0223C210 + add r0, #0x50 + lsl r0, r0, #8 + str r0, [r5, #0x10] + ldr r0, [r5, #8] + mov r1, #0 + ldr r0, [r0] + bl FUN_021DD59C + ldr r0, [r5, #8] + mov r1, #0x63 + ldr r0, [r0] + mvn r1, r1 + bl FUN_021DD6CC +_02240184: + ldr r0, [r5] + mov r1, #2 + bl FUN_02068E14 + add r4, r0, #0 + ldrb r0, [r5, #0xd] + bl MOD12_0223C220 + add r0, r4, r0 + lsl r0, r0, #8 + str r0, [r5, #0x14] + ldrb r0, [r5, #0xd] + bl MOD12_0223C234 + lsl r0, r0, #8 + str r0, [r5, #0x18] + ldrb r0, [r5, #0xd] + bl MOD12_0223C210 + ldrh r2, [r5, #0xe] + ldrh r1, [r5, #0x28] + lsl r0, r0, #8 + ldr r7, [r5, #0x14] + sub r1, r2, r1 + sub r4, r1, #1 + ldr r1, [r5, #0x10] + ldr r6, [r5, #0x18] + sub r0, r0, r1 + add r1, r4, #0 + bl _s32_div_f + str r0, [r5, #0x1c] + ldr r0, [r5, #0x14] + add r1, r4, #0 + sub r0, r7, r0 + bl _s32_div_f + str r0, [r5, #0x20] + ldr r0, [r5, #0x18] + add r1, r4, #0 + sub r0, r6, r0 + bl _s32_div_f + str r0, [r5, #0x24] +_022401DC: + ldrh r1, [r5, #0x28] + ldrh r0, [r5, #0xe] + cmp r1, r0 + blo _0224021C + ldr r0, [r5] + mov r1, #2 + bl FUN_02068E14 + add r4, r0, #0 + ldrb r0, [r5, #0xd] + bl MOD12_0223C210 + lsl r0, r0, #8 + str r0, [r5, #0x10] + ldrb r0, [r5, #0xd] + bl MOD12_0223C220 + add r0, r4, r0 + lsl r0, r0, #8 + str r0, [r5, #0x14] + ldrb r0, [r5, #0xd] + bl MOD12_0223C234 + lsl r0, r0, #8 + str r0, [r5, #0x18] + add r0, r5, #0 + add r0, #0x2a + ldrb r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x2a + strb r1, [r0] +_0224021C: + ldr r1, [r5, #0x10] + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r1, r0, #8 + ldr r0, [r5, #8] + str r1, [r0, #4] + ldr r1, [r5, #0x14] + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r1, r0, #8 + ldr r0, [r5, #8] + str r1, [r0, #8] + ldr r1, [r5, #0x18] + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r1, r0, #8 + ldr r0, [r5, #8] + str r1, [r0, #0xc] + ldr r2, [r5, #8] + ldr r0, [r2] + ldr r1, [r2, #4] + ldr r2, [r2, #8] + bl FUN_021DD620 + ldr r0, [r5, #4] + ldr r1, [r5, #8] + bl MOD12_0223D09C + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0224025E: + mov r1, #1 + add r5, #0x2b + strb r1, [r5] + bl FUN_0200CAB4 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224026C: .word 0xFFFFB000 +_02240270: .word 0xFFFF9C00 + + thumb_func_start MOD12_02240274 +MOD12_02240274: ; 0x02240274 + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02240288 +MOD12_02240288: ; 0x02240288 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x17 + mov r1, #0x50 + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x50 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + add r3, r4, #0 + str r0, [r4] + ldrh r0, [r5] + add r3, #0x10 + mov r2, #7 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] +_022402C0: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022402C0 + ldr r0, [r6] + ldr r2, _022402D8 ; =0x00007530 + str r0, [r3] + ldr r0, _022402DC ; =MOD12_022402E0 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022402D8: .word 0x00007530 +_022402DC: .word MOD12_022402E0 + + thumb_func_start MOD12_022402E0 +MOD12_022402E0: ; 0x022402E0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x4c + ldrb r0, [r0] + cmp r0, #0 + bne _02240330 + mov r4, #0 +_022402F2: + add r1, r5, r4 + ldrb r1, [r1, #0x12] + ldr r0, [r5] + add r2, r4, #0 + bl MOD12_0223DC28 + add r4, r4, #1 + cmp r4, #4 + blt _022402F2 + ldr r1, [r5] + ldr r0, _0224034C ; =0x00001130 + mov r3, #0 + ldr r0, [r1, r0] + mov r1, #1 + add r2, r1, #0 + bl MOD12_0223B758 + ldr r1, [r5] + ldr r0, _0224034C ; =0x00001130 + mov r2, #6 + ldr r0, [r1, r0] + mov r1, #0 + bl MOD12_0223C1F4 + add r0, r5, #0 + add r0, #0x4c + ldrb r0, [r0] + add r5, #0x4c + add r0, r0, #1 + strb r0, [r5] + pop {r3, r4, r5, pc} +_02240330: + mov r2, #0 + ldr r0, [r5, #0xc] + add r1, r5, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_0224034C: .word 0x00001130 + + thumb_func_start MOD12_02240350 +MOD12_02240350: ; 0x02240350 + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02240364 +MOD12_02240364: ; 0x02240364 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x17 + mov r1, #0x50 + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x50 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + add r3, r4, #0 + str r0, [r4] + ldrh r0, [r5] + add r3, #0x10 + mov r2, #7 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] +_0224039C: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0224039C + ldr r0, [r6] + ldr r2, _022403B4 ; =0x00007530 + str r0, [r3] + ldr r0, _022403B8 ; =MOD12_022403BC + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022403B4: .word 0x00007530 +_022403B8: .word MOD12_022403BC + + thumb_func_start MOD12_022403BC +MOD12_022403BC: ; 0x022403BC + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x4c + ldrb r0, [r0] + cmp r0, #0 + beq _022403D2 + cmp r0, #1 + beq _0224040A + b _0224044E +_022403D2: + ldr r0, [r5] + bl MOD12_0223D588 + cmp r0, #0 + beq _02240484 + mov r4, #0 + mov r6, #2 + mov r7, #5 +_022403E2: + ldr r0, [r5] + add r1, r4, #0 + add r2, r6, #0 + bl MOD12_0223DCE8 + ldr r0, [r5] + add r1, r4, #0 + add r2, r7, #0 + bl MOD12_0223DCE8 + add r4, r4, #1 + cmp r4, #4 + blt _022403E2 + add r0, r5, #0 + add r0, #0x4c + ldrb r0, [r0] + add r5, #0x4c + add r0, r0, #1 + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_0224040A: + mov r7, #0 + add r6, r7, #0 + add r4, r7, #0 +_02240410: + ldr r0, [r5] + add r1, r4, #0 + bl MOD12_0223DDB0 + cmp r0, #1 + bne _0224041E + add r7, r7, #1 +_0224041E: + ldr r0, [r5] + add r1, r4, #0 + bl MOD12_0223DDE4 + cmp r0, #1 + bne _0224042C + add r6, r6, #1 +_0224042C: + add r4, r4, #1 + cmp r4, #4 + blt _02240410 + cmp r7, #4 + blt _02240484 + cmp r6, #4 + blt _02240484 + ldr r0, [r5] + bl MOD12_0223DCC0 + add r0, r5, #0 + add r0, #0x4c + ldrb r0, [r0] + add r5, #0x4c + add r0, r0, #1 + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_0224044E: + ldr r1, [r5] + ldr r0, _02240488 ; =0x00001130 + mov r2, #1 + ldr r0, [r1, r0] + mov r1, #0 + add r3, r1, #0 + bl MOD12_0223B758 + ldr r1, [r5] + ldr r0, _02240488 ; =0x00001130 + ldr r0, [r1, r0] + mov r1, #0 + add r2, r1, #0 + bl MOD12_0223C1F4 + mov r2, #0 + ldr r0, [r5, #0xc] + add r1, r5, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_02240484: + pop {r3, r4, r5, r6, r7, pc} + nop +_02240488: .word 0x00001130 + + thumb_func_start MOD12_0224048C +MOD12_0224048C: ; 0x0224048C + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_022404A0 +MOD12_022404A0: ; 0x022404A0 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x17 + mov r1, #0x20 + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x20 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _02240504 ; =0x00007530 + str r0, [r4] + ldrh r0, [r6] + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] + ldrb r0, [r5] + strb r0, [r4, #0x11] + ldrh r0, [r5, #0x30] + strh r0, [r4, #0x14] + ldrh r0, [r5, #0x32] + strh r0, [r4, #0x16] + ldrh r0, [r5, #0x34] + strh r0, [r4, #0x18] + add r0, r5, #0 + add r0, #0x36 + ldrb r0, [r0] + strb r0, [r4, #0x1a] + add r0, r5, #0 + add r0, #0x38 + ldrb r0, [r0] + add r5, #0x37 + strb r0, [r4, #0x1c] + ldrb r0, [r5] + strb r0, [r4, #0x1b] + ldr r0, _02240508 ; =MOD12_0224050C + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02240504: .word 0x00007530 +_02240508: .word MOD12_0224050C + + thumb_func_start MOD12_0224050C +MOD12_0224050C: ; 0x0224050C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _02240522 + cmp r0, #1 + beq _0224055A + cmp r0, #2 + beq _0224056C + b _022405A4 +_02240522: + ldrb r0, [r4, #0x1a] + cmp r0, #0 + beq _02240554 + ldr r0, [r4] + mov r1, #1 + add r0, #0x78 + add r2, r1, #0 + mov r3, #0xe + bl FUN_0200D0BC + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x74] + bl FUN_0201AC68 + add r2, r4, #0 + ldrb r1, [r4, #0x1a] + ldr r0, [r4] + add r2, #0x14 + bl MOD12_0223E274 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02240554: + mov r0, #0x64 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0224055A: + ldr r0, [r4] + bl MOD12_0223E2A8 + cmp r0, #0 + bne _022405BC + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0224056C: + ldrb r0, [r4, #0x12] + add r0, r0, #1 + strb r0, [r4, #0x12] + ldrb r0, [r4, #0x1c] + cmp r0, #1 + bne _02240580 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02240580: + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x1b] + cmp r1, r0 + blo _022405BC + ldr r0, [r4] + mov r1, #1 + add r0, #0x78 + bl FUN_0200D0E0 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x74] + bl FUN_0201AC68 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_022405A4: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_022405BC: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_022405C0 +MOD12_022405C0: ; 0x022405C0 + push {r3, lr} + mov r1, #0x30 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_022405D4 +MOD12_022405D4: ; 0x022405D4 + push {r4, r5, r6, lr} + add r4, r0, #0 + mov r0, #0xad + lsl r0, r0, #4 + add r6, r1, r0 + mov r5, #6 +_022405E0: + ldmia r3!, {r0, r1} + stmia r6!, {r0, r1} + sub r5, r5, #1 + bne _022405E0 + add r1, r2, #0 + mov r2, #0 + add r0, r4, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_022405F8 +MOD12_022405F8: ; 0x022405F8 + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0224060C +MOD12_0224060C: ; 0x0224060C + push {r3, r4, r5, r6, r7, lr} + add r4, r3, #0 + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + bl FUN_0200541C + ldrh r0, [r4, #0x24] + bl FUN_0200521C + ldr r0, _02240640 ; =0x00001134 + mov r1, #1 + strb r1, [r5, r0] + add r1, r0, #4 + add r0, #0xc + add r1, r5, r1 + ldmia r1!, {r2, r3} + add r0, r5, r0 + stmia r0!, {r2, r3} + mov r2, #0 + add r0, r6, #0 + add r1, r7, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02240640: .word 0x00001134 + + thumb_func_start MOD12_02240644 +MOD12_02240644: ; 0x02240644 + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02240658 +MOD12_02240658: ; 0x02240658 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x17 + mov r1, #0x54 + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x54 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + add r3, r4, #0 + str r0, [r4] + ldrh r0, [r5] + add r3, #0x10 + mov r2, #7 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] +_02240690: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02240690 + ldr r0, [r6] + ldr r2, _022406A8 ; =0x00007530 + str r0, [r3] + ldr r0, _022406AC ; =MOD12_022406B0 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022406A8: .word 0x00007530 +_022406AC: .word MOD12_022406B0 + + thumb_func_start MOD12_022406B0 +MOD12_022406B0: ; 0x022406B0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x50 + ldrb r0, [r0] + cmp r0, #4 + bhi _0224074E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022406CC: ; jump table + .short _022406D6 - _022406CC - 2 ; case 0 + .short _022406EC - _022406CC - 2 ; case 1 + .short _02240704 - _022406CC - 2 ; case 2 + .short _02240718 - _022406CC - 2 ; case 3 + .short _02240734 - _022406CC - 2 ; case 4 +_022406D6: + ldr r1, [r4] + ldr r0, _02240768 ; =0x00001134 + mov r2, #0 + strb r2, [r1, r0] + add r0, r4, #0 + add r0, #0x50 + ldrb r0, [r0] + add r4, #0x50 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_022406EC: + ldrh r0, [r4, #0x34] + bl FUN_02005410 + cmp r0, #0 + bne _02240766 + add r0, r4, #0 + add r0, #0x50 + ldrb r0, [r0] + add r4, #0x50 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02240704: + ldr r0, [r4] + bl MOD12_0223ECF0 + add r0, r4, #0 + add r0, #0x50 + ldrb r0, [r0] + add r4, #0x50 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02240718: + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] + cmp r0, #0x3c + bls _02240766 + mov r0, #0 + str r0, [r4, #0x4c] + add r0, r4, #0 + add r0, #0x50 + ldrb r0, [r0] + add r4, #0x50 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02240734: + ldr r0, _0224076C ; =0x0000046F + bl FUN_0200521C + ldr r0, _02240770 ; =0x000006E5 + bl FUN_020054C8 + add r0, r4, #0 + add r0, #0x50 + ldrb r0, [r0] + add r4, #0x50 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_0224074E: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02240766: + pop {r3, r4, r5, pc} + .align 2, 0 +_02240768: .word 0x00001134 +_0224076C: .word 0x0000046F +_02240770: .word 0x000006E5 + + thumb_func_start MOD12_02240774 +MOD12_02240774: ; 0x02240774 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r2, #0 + add r5, r0, #0 + mov r1, #0 + mov r2, #0x3c + add r7, r3, #0 + bl MI_CpuFill8 + add r0, r5, #0 + add r0, #0x37 + strb r4, [r0] + add r0, r5, #0 + add r0, #0x38 + strb r6, [r0] + str r7, [r5, #0x30] + ldr r0, [sp, #0x18] + add r5, #0x39 + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0224079C +MOD12_0224079C: ; 0x0224079C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r1, [r5, #0x30] + mov r2, #0x3c + str r1, [sp] + add r1, r5, #0 + add r1, #0x37 + ldrb r7, [r1] + add r1, r5, #0 + add r1, #0x38 + ldrb r6, [r1] + add r1, r5, #0 + add r1, #0x39 + ldrb r4, [r1] + mov r1, #0 + bl MI_CpuFill8 + ldr r0, [sp] + str r0, [r5, #0x30] + add r0, r5, #0 + add r0, #0x37 + strb r7, [r0] + add r0, r5, #0 + add r0, #0x38 + strb r6, [r0] + add r5, #0x39 + strb r4, [r5] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_022407D4 +MOD12_022407D4: ; 0x022407D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r4, r1, #0 + add r7, r0, #0 + ldr r1, _022409BC ; =0x00001388 + lsr r0, r3, #2 + add r0, r0, r1 + lsl r1, r1, #1 + str r3, [sp] + bl _u32_div_f + str r0, [sp, #8] + mov r0, #0x12 + ldr r1, [r7] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _022407FC + cmp r0, #1 + bne _02240806 +_022407FC: + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #8 + str r0, [sp, #0x10] + b _02240814 +_02240806: + mov r0, #1 + str r0, [sp, #0xc] + mov r0, #0x10 + str r0, [sp, #0x10] + ldr r0, [sp] + lsr r0, r0, #1 + str r0, [sp] +_02240814: + mov r5, #0 + add r1, r5, #0 + add r0, sp, #0x24 + b _02240820 +_0224081C: + strb r1, [r0, r5] + add r5, r5, #1 +_02240820: + cmp r5, #0x10 + blt _0224081C + ldr r0, [sp, #0x10] + mov r6, #0 + sub r0, r0, #1 + str r0, [sp, #0x18] + add r0, r4, #0 + str r0, [sp, #0x14] + add r0, #0x30 + str r0, [sp, #0x14] +_02240834: + ldr r0, [r4, #0x30] + ldr r1, [sp, #0x14] + bl FUN_02082880 + ldr r1, [sp, #0x10] + bl _s32_div_f + add r5, r1, #0 + beq _02240834 + add r0, sp, #0x24 + ldrb r0, [r0, r5] + cmp r0, #0 + bne _02240834 + ldr r0, [sp, #0xc] + cmp r0, #1 + bne _0224088E + ldr r0, [sp, #0x18] + cmp r5, r0 + bne _02240864 + sub r1, r5, #1 + add r0, sp, #0x24 + ldrb r0, [r0, r1] + cmp r0, #1 + beq _02240834 +_02240864: + sub r1, r5, #1 + add r0, sp, #0x24 + ldrb r0, [r0, r1] + cmp r0, #1 + beq _02240834 + add r1, r5, #1 + add r0, sp, #0x24 + ldrb r0, [r0, r1] + cmp r0, #1 + beq _02240834 + mov r0, #1 + tst r0, r5 + beq _0224088E + ldr r0, [r4, #0x30] + ldr r1, [sp, #0x14] + bl FUN_02082880 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x80 + blt _02240834 +_0224088E: + mov r1, #1 + add r0, sp, #0x24 + strb r1, [r0, r5] + ldr r0, _022409C0 ; =0x00000AFE + add r6, r6, #1 + ldrb r0, [r7, r0] + cmp r6, r0 + blt _02240834 + mov r6, #0 + add r5, r6, #0 + b _022408C4 +_022408A4: + add r0, sp, #0x24 + ldrb r0, [r0, r5] + cmp r0, #1 + bne _022408C2 + ldr r0, [sp] + add r1, r5, #0 + mul r1, r0 + ldr r0, _022409BC ; =0x00001388 + add r0, r1, r0 + ldr r1, _022409C4 ; =0x00002710 + bl _u32_div_f + lsl r1, r6, #2 + str r0, [r4, r1] + add r6, r6, #1 +_022408C2: + add r5, r5, #1 +_022408C4: + cmp r5, #0x10 + blt _022408A4 + mov r0, #0x12 + ldr r1, [r7] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + add r1, r4, #0 + add r1, #0x39 + ldrb r1, [r1] + bl MOD12_022409CC + add r6, r0, #0 + add r0, r4, #0 + str r0, [sp, #0x1c] + add r0, #0x30 + str r0, [sp, #0x1c] + lsr r0, r6, #0x1f + add r0, r6, r0 + asr r0, r0, #1 + add r0, r0, #1 + mov r5, #0 + str r0, [sp, #0x20] + b _0224092C +_022408F2: + ldr r0, [r4, #0x30] + ldr r1, [sp, #0x1c] + bl FUN_02082880 + add r1, r6, #2 + bl _s32_div_f + lsl r0, r5, #2 + ldr r0, [r4, r0] + add r1, r0, r1 + ldr r0, [sp, #0x20] + sub r3, r1, r0 + bpl _0224090E + mov r3, #0 +_0224090E: + lsl r0, r5, #2 + ldr r1, [r4, r0] + ldr r0, [sp, #8] + sub r2, r3, r1 + cmp r2, r0 + blo _0224091E + add r0, r0, r1 + sub r3, r0, #1 +_0224091E: + lsl r0, r5, #2 + add r1, r4, r5 + str r3, [r4, r0] + add r1, #0x28 + mov r0, #1 + strb r0, [r1] + add r5, r5, #1 +_0224092C: + ldr r0, _022409C0 ; =0x00000AFE + ldrb r0, [r7, r0] + cmp r5, r0 + blt _022408F2 + mov r0, #0x12 + ldr r1, [r7] + lsl r0, r0, #4 + ldrb r1, [r1, r0] + ldr r0, _022409C8 ; =0x022464C4 + ldrb r0, [r0, r1] + add r1, r4, #0 + add r1, #0x30 + str r0, [sp, #4] + ldr r0, [r4, #0x30] + bl FUN_02082880 + add r6, r4, #0 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r4, #0 + add r1, r2, r1 + add r0, #0x20 + strb r1, [r0] + mov r5, #1 + add r6, #0x30 + b _022409B0 +_02240966: + ldr r0, _022409C0 ; =0x00000AFE + ldrb r0, [r7, r0] + sub r0, r0, #1 + cmp r5, r0 + bge _02240994 + ldr r0, [r4, #0x30] + add r1, r6, #0 + bl FUN_02082880 + mov r1, #0x64 + bl _s32_div_f + ldr r0, [sp, #4] + cmp r0, r1 + ble _02240994 + sub r0, r5, #1 + add r0, r4, r0 + add r0, #0x20 + ldrb r1, [r0] + add r0, r4, r5 + add r0, #0x20 + strb r1, [r0] + b _022409AE +_02240994: + ldr r0, [r4, #0x30] + add r1, r6, #0 + bl FUN_02082880 + lsr r1, r0, #0x1f + lsl r2, r0, #0x1e + sub r2, r2, r1 + mov r0, #0x1e + ror r2, r0 + add r0, r4, r5 + add r1, r1, r2 + add r0, #0x20 + strb r1, [r0] +_022409AE: + add r5, r5, #1 +_022409B0: + ldr r0, _022409C0 ; =0x00000AFE + ldrb r0, [r7, r0] + cmp r5, r0 + blt _02240966 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022409BC: .word 0x00001388 +_022409C0: .word 0x00000AFE +_022409C4: .word 0x00002710 +_022409C8: .word 0x022464C4 + + thumb_func_start MOD12_022409CC +MOD12_022409CC: ; 0x022409CC + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + cmp r5, #4 + blo _022409DA + bl ErrorHandling +_022409DA: + ldr r0, _02240A0C ; =0x022464C0 + cmp r4, #3 + ldrsb r0, [r0, r5] + bhi _02240A02 + add r1, r4, r4 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022409EE: ; jump table + .short _022409F6 - _022409EE - 2 ; case 0 + .short _02240A08 - _022409EE - 2 ; case 1 + .short _022409FA - _022409EE - 2 ; case 2 + .short _02240A02 - _022409EE - 2 ; case 3 +_022409F6: + lsl r0, r0, #1 + pop {r3, r4, r5, pc} +_022409FA: + lsr r1, r0, #0x1f + add r1, r0, r1 + asr r0, r1, #1 + pop {r3, r4, r5, pc} +_02240A02: + mov r1, #3 + bl _s32_div_f +_02240A08: + pop {r3, r4, r5, pc} + nop +_02240A0C: .word 0x022464C0 + + thumb_func_start MOD12_02240A10 +MOD12_02240A10: ; 0x02240A10 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r6, r0, #0 + add r5, r2, #0 + add r4, r3, #0 + cmp r7, #4 + blo _02240A22 + bl ErrorHandling +_02240A22: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _02240A3C + mov r0, #1 + add r1, r5, #0 + and r1, r0 + and r0, r4 + cmp r1, r0 + sub r0, r5, r4 + cmp r0, #4 + sub r0, r5, r4 + cmp r0, #8 +_02240A3C: + ldr r0, _02240A70 ; =0x022464C0 + cmp r6, #3 + ldrsb r0, [r0, r7] + bhi _02240A68 + add r1, r6, r6 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02240A50: ; jump table + .short _02240A58 - _02240A50 - 2 ; case 0 + .short _02240A5C - _02240A50 - 2 ; case 1 + .short _02240A60 - _02240A50 - 2 ; case 2 + .short _02240A68 - _02240A50 - 2 ; case 3 +_02240A58: + lsl r0, r0, #1 + b _02240A68 +_02240A5C: + lsl r0, r0, #1 + b _02240A68 +_02240A60: + lsr r1, r0, #0x1f + add r1, r0, r1 + asr r1, r1, #1 + add r0, r0, r1 +_02240A68: + cmp r0, #0 + bge _02240A6E + mov r0, #0 +_02240A6E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02240A70: .word 0x022464C0 + + thumb_func_start MOD12_02240A74 +MOD12_02240A74: ; 0x02240A74 + push {r4, r5} + mov r4, #0 + ldr r5, [sp, #8] + cmp r1, #3 + bhi _02240AB0 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02240A8A: ; jump table + .short _02240A92 - _02240A8A - 2 ; case 0 + .short _02240A9A - _02240A8A - 2 ; case 1 + .short _02240AA2 - _02240A8A - 2 ; case 2 + .short _02240AAA - _02240A8A - 2 ; case 3 +_02240A92: + cmp r5, #1 + bne _02240AB0 + add r4, r4, #3 + b _02240AB0 +_02240A9A: + cmp r5, #2 + bne _02240AB0 + add r4, r4, #3 + b _02240AB0 +_02240AA2: + cmp r5, #4 + bne _02240AB0 + add r4, r4, #3 + b _02240AB0 +_02240AAA: + cmp r5, #3 + bne _02240AB0 + add r4, r4, #3 +_02240AB0: + ldr r1, [sp, #0xc] + cmp r1, #0 + beq _02240ABC + cmp r5, r1 + beq _02240ABC + add r4, #8 +_02240ABC: + mov r1, #0 + mvn r1, r1 + cmp r3, r1 + beq _02240ADA + mov r1, #1 + add r5, r2, #0 + and r5, r1 + and r1, r3 + cmp r5, r1 + beq _02240AD2 + add r4, r4, #2 +_02240AD2: + sub r1, r2, r3 + cmp r1, #8 + blt _02240ADA + add r4, r4, #5 +_02240ADA: + cmp r0, #3 + bhi _02240B02 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02240AEA: ; jump table + .short _02240AF2 - _02240AEA - 2 ; case 0 + .short _02240AF6 - _02240AEA - 2 ; case 1 + .short _02240AFA - _02240AEA - 2 ; case 2 + .short _02240B02 - _02240AEA - 2 ; case 3 +_02240AF2: + lsl r4, r4, #1 + b _02240B02 +_02240AF6: + lsl r4, r4, #1 + b _02240B02 +_02240AFA: + lsr r0, r4, #0x1f + add r0, r4, r0 + asr r0, r0, #1 + add r4, r4, r0 +_02240B02: + add r0, r4, #0 + pop {r4, r5} + bx lr + + thumb_func_start MOD12_02240B08 +MOD12_02240B08: ; 0x02240B08 + push {r3, r4, lr} + sub sp, #0xc + add r4, r2, #0 + add r4, #0x38 + ldrb r4, [r4] + cmp r4, #0 + bne _02240B36 + cmp r0, #0 + bne _02240B36 + ldr r0, [sp, #0x1c] + str r0, [sp] + ldr r0, [sp, #0x20] + str r0, [sp, #4] + ldr r0, [sp, #0x24] + str r0, [sp, #8] + add r0, r1, #0 + add r1, r2, #0 + add r2, r3, #0 + ldr r3, [sp, #0x18] + bl MOD12_02240B5C + add sp, #0xc + pop {r3, r4, pc} +_02240B36: + cmp r4, #0 + beq _02240B56 + cmp r0, #1 + bne _02240B56 + ldr r0, [sp, #0x1c] + str r0, [sp] + ldr r0, [sp, #0x20] + str r0, [sp, #4] + ldr r0, [sp, #0x24] + str r0, [sp, #8] + add r0, r1, #0 + add r1, r2, #0 + add r2, r3, #0 + ldr r3, [sp, #0x18] + bl MOD12_02240C00 +_02240B56: + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD12_02240B5C +MOD12_02240B5C: ; 0x02240B5C + push {r3, r4, r5, r6, lr} + sub sp, #0x24 + add r4, r1, #0 + add r0, r4, #0 + add r0, #0x38 + ldrb r3, [r0] + cmp r3, #0 + bne _02240BF6 + ldr r0, [sp, #0x3c] + add r1, #0x36 + ldrb r0, [r0, #5] + ldrb r1, [r1] + cmp r1, r0 + bhs _02240BF6 + mov r5, #0x34 + ldrsh r5, [r4, r5] + cmp r5, #0 + ble _02240B88 + sub r0, r5, #1 + add sp, #0x24 + strh r0, [r4, #0x34] + pop {r3, r4, r5, r6, pc} +_02240B88: + mov r5, #0 +_02240B8A: + add r6, r4, r5 + add r6, #0x28 + ldrb r6, [r6] + cmp r6, #1 + beq _02240B9A + add r5, r5, #1 + cmp r5, #8 + blt _02240B8A +_02240B9A: + cmp r5, #8 + bge _02240BF6 + lsl r6, r5, #2 + ldr r6, [r4, r6] + cmp r6, r2 + bhi _02240BF6 + ldr r6, [sp, #0x3c] + add r6, #8 + str r6, [sp] + add r6, sp, #0x18 + str r6, [sp, #4] + mov r6, #0 + str r6, [sp, #8] + str r3, [sp, #0xc] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + add r0, r4, #0 + add r1, r4, r5 + add r0, #0x37 + add r1, #0x20 + ldrb r0, [r0] + ldrb r1, [r1] + ldr r3, [sp, #0x38] + bl MOD12_0223FCAC + ldr r0, [sp, #0x40] + add r1, sp, #0x18 + bl MOD12_0223F56C + add r0, r4, r5 + add r1, r6, #0 + add r0, #0x28 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x36 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x36 + strb r1, [r0] + ldr r0, [sp, #0x38] + ldr r1, _02240BFC ; =0x00002710 + bl _u32_div_f + sub r0, r0, #2 + strh r0, [r4, #0x34] +_02240BF6: + add sp, #0x24 + pop {r3, r4, r5, r6, pc} + nop +_02240BFC: .word 0x00002710 + + thumb_func_start MOD12_02240C00 +MOD12_02240C00: ; 0x02240C00 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r7, r0, #0 + ldr r0, [sp, #0x5c] + add r5, r1, #0 + str r0, [sp, #0x5c] + ldr r0, [sp, #0x58] + str r2, [sp, #0x18] + lsr r0, r0, #1 + str r0, [sp, #0x34] + add r0, r5, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0 + beq _02240C3C + add r0, r5, #0 + add r0, #0x36 + ldrb r1, [r0] + ldr r0, [sp, #0x5c] + ldrb r0, [r0, #5] + cmp r1, r0 + bhs _02240C3C + mov r0, #0xa + mul r0, r1 + ldr r2, _02240DB4 ; =0x00001BA0 + add r4, r7, r0 + ldrb r2, [r4, r2] + lsl r2, r2, #0x1d + lsr r2, r2, #0x1f + bne _02240C3E +_02240C3C: + b _02240DB0 +_02240C3E: + mov r6, #0x34 + ldrsh r2, [r5, r6] + cmp r2, #0 + ble _02240C4E + sub r0, r2, #1 + add sp, #0x44 + strh r0, [r5, #0x34] + pop {r4, r5, r6, r7, pc} +_02240C4E: + ldr r2, _02240DB4 ; =0x00001BA0 + sub r2, #8 + add r2, r7, r2 + add r4, r2, r0 + ldr r0, [sp, #0x18] + lsr r2, r3, #1 + sub r0, r0, r2 + str r0, [sp, #0x30] + ldrb r0, [r5, #5] + cmp r0, #0 + bne _02240D4C + cmp r1, #0 + bne _02240C70 + mov r0, #0 + sub r6, #0x35 + str r0, [sp, #0x1c] + b _02240C86 +_02240C70: + sub r1, r1, #1 + mov r0, #0xa + mul r0, r1 + ldr r1, _02240DB4 ; =0x00001BA0 + add r0, r7, r0 + sub r1, r1, #2 + ldrb r6, [r0, r1] + ldr r1, _02240DB4 ; =0x00001BA0 + sub r1, r1, #5 + ldrb r0, [r0, r1] + str r0, [sp, #0x1c] +_02240C86: + mov r0, #0x12 + ldr r1, [r7] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + add r1, r5, #0 + add r1, #0x39 + ldrb r1, [r1] + ldrb r2, [r4, #6] + add r3, r6, #0 + bl MOD12_02240A10 + str r0, [sp, #0x28] + ldrb r0, [r4, #3] + add r3, r6, #0 + str r0, [sp] + ldr r0, [sp, #0x1c] + str r0, [sp, #4] + mov r0, #0x12 + ldr r1, [r7] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + add r1, r5, #0 + add r1, #0x39 + ldrb r1, [r1] + ldrb r2, [r4, #6] + bl MOD12_02240A74 + str r0, [sp, #0x24] + ldrb r1, [r4, #6] + ldr r0, [sp, #0x34] + mul r0, r1 + ldr r1, _02240DB8 ; =0x00001388 + add r0, r0, r1 + lsl r1, r1, #1 + bl _u32_div_f + add r6, r0, #0 + add r1, r5, #0 + ldr r0, [r5, #0x30] + add r1, #0x30 + bl FUN_02082880 + ldr r1, [sp, #0x28] + add r1, r1, #2 + bl _s32_div_f + ldr r0, [sp, #0x28] + lsr r2, r0, #0x1f + add r2, r0, r2 + asr r0, r2, #1 + add r0, r0, #1 + sub r0, r1, r0 + add r0, r0, r6 + str r0, [sp, #0x2c] + bpl _02240CF8 + mov r0, #0 + str r0, [sp, #0x2c] +_02240CF8: + add r1, r5, #0 + ldr r0, [r5, #0x30] + add r1, #0x30 + bl FUN_02082880 + mov r1, #0x64 + bl _s32_div_f + ldr r2, [sp, #0x28] + ldr r0, [sp, #0x24] + add r0, r2, r0 + cmp r1, r0 + bge _02240D38 + add r6, r5, #0 + add r6, #0x30 +_02240D16: + ldr r0, [r5, #0x30] + add r1, r6, #0 + bl FUN_02082880 + lsr r1, r0, #0x1f + lsl r2, r0, #0x1e + sub r2, r2, r1 + mov r0, #0x1e + ror r2, r0 + add r0, r1, r2 + str r0, [sp, #0x20] + bl MOD12_0223FB80 + ldrb r1, [r4, #3] + cmp r1, r0 + beq _02240D16 + b _02240D40 +_02240D38: + ldrb r0, [r4, #3] + bl MOD12_0223FBB4 + str r0, [sp, #0x20] +_02240D40: + ldr r0, [sp, #0x2c] + str r0, [r5] + ldr r0, [sp, #0x20] + strb r0, [r5, #4] + mov r0, #1 + strb r0, [r5, #5] +_02240D4C: + ldr r1, [r5] + ldr r0, [sp, #0x30] + cmp r1, r0 + bhi _02240DB0 + ldr r0, [sp, #0x5c] + ldr r2, [sp, #0x18] + add r0, #8 + str r0, [sp] + add r0, sp, #0x38 + str r0, [sp, #4] + ldr r0, _02240DBC ; =0x00001B98 + ldr r3, [sp, #0x58] + add r0, r7, r0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x38 + ldrb r0, [r0] + str r0, [sp, #0xc] + add r0, r5, #0 + add r0, #0x36 + ldrb r0, [r0] + str r0, [sp, #0x10] + ldr r0, [sp, #0x5c] + ldrb r0, [r0, #5] + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0x37 + ldrb r0, [r0] + ldrb r1, [r5, #4] + bl MOD12_0223FCAC + ldr r0, [sp, #0x60] + add r1, sp, #0x38 + bl MOD12_0223F56C + mov r0, #0 + strb r0, [r5, #5] + add r0, r5, #0 + add r0, #0x36 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x36 + strb r1, [r0] + ldr r0, [sp, #0x58] + ldr r1, _02240DC0 ; =0x00002710 + bl _u32_div_f + sub r0, r0, #2 + strh r0, [r5, #0x34] +_02240DB0: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02240DB4: .word 0x00001BA0 +_02240DB8: .word 0x00001388 +_02240DBC: .word 0x00001B98 +_02240DC0: .word 0x00002710 + + thumb_func_start MOD12_02240DC4 +MOD12_02240DC4: ; 0x02240DC4 + push {r4, lr} + add r4, r0, #0 + cmp r4, #5 + blo _02240DD0 + bl ErrorHandling +_02240DD0: + ldr r0, _02240DD8 ; =0x022464D0 + lsl r1, r4, #2 + ldr r0, [r0, r1] + pop {r4, pc} + .align 2, 0 +_02240DD8: .word 0x022464D0 + + thumb_func_start MOD12_02240DDC +MOD12_02240DDC: ; 0x02240DDC + mov r0, #0x31 + bx lr + + thumb_func_start MOD12_02240DE0 +MOD12_02240DE0: ; 0x02240DE0 + mov r0, #0x32 + bx lr + + thumb_func_start MOD12_02240DE4 +MOD12_02240DE4: ; 0x02240DE4 + push {r4, lr} + add r4, r0, #0 + cmp r4, #5 + blo _02240DF0 + bl ErrorHandling +_02240DF0: + ldr r0, _02240DF8 ; =0x022464C8 + ldrb r0, [r0, r4] + pop {r4, pc} + nop +_02240DF8: .word 0x022464C8 + + thumb_func_start MOD12_02240DFC +MOD12_02240DFC: ; 0x02240DFC + mov r0, #0x2e + bx lr + + thumb_func_start MOD12_02240E00 +MOD12_02240E00: ; 0x02240E00 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r3, #0 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + bl MOD12_02240DFC + str r0, [sp, #0xc] + add r0, r7, #0 + bl MOD12_02240DC4 + add r3, r0, #0 + mov r0, #1 + str r0, [sp] + ldr r0, [sp, #0x28] + str r4, [sp, #4] + str r0, [sp, #8] + ldr r2, [sp, #0xc] + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0200C00C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02240E34 +MOD12_02240E34: ; 0x02240E34 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD12_02240DFC + str r0, [sp, #8] + bl MOD12_02240DDC + add r3, r0, #0 + mov r0, #1 + str r0, [sp] + ldr r2, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + str r6, [sp, #4] + bl FUN_0200C124 + bl MOD12_02240DFC + add r6, r0, #0 + bl MOD12_02240DE0 + add r3, r0, #0 + mov r0, #1 + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + str r7, [sp, #4] + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02240E7C +MOD12_02240E7C: ; 0x02240E7C + ldr r3, _02240E80 ; =0x0200C359 + bx r3 + .align 2, 0 +_02240E80: .word 0x0200C359 + + thumb_func_start MOD12_02240E84 +MOD12_02240E84: ; 0x02240E84 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r2, #0 + bl FUN_0200C378 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200C388 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_02240E98 +MOD12_02240E98: ; 0x02240E98 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r6, r3, #0 + add r4, r0, #0 + add r7, r1, #0 + add r5, sp, #0 + mov r3, #6 +_02240EA6: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _02240EA6 + ldr r0, [r6] + str r0, [r5] + add r0, r2, #0 + bl MOD12_02240DE4 + str r0, [sp, #0xc] + add r0, r4, #0 + add r1, r7, #0 + add r2, sp, #0 + bl FUN_0200C154 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02240EC8 +MOD12_02240EC8: ; 0x02240EC8 + ldr r3, _02240ECC ; =0x0200C3DD + bx r3 + .align 2, 0 +_02240ECC: .word 0x0200C3DD + + thumb_func_start MOD12_02240ED0 +MOD12_02240ED0: ; 0x02240ED0 + push {r3, r4, r5, lr} + ldr r2, _02240EF4 ; =0x00000A18 + add r4, r1, #0 + mov r1, #0 + add r5, r0, #0 + bl MI_CpuFill8 + ldr r0, [r4] + str r0, [r5] + ldrh r0, [r4, #4] + strh r0, [r5, #4] + ldrb r0, [r4, #6] + strb r0, [r5, #6] + ldrb r0, [r4, #7] + strb r0, [r5, #7] + ldrb r0, [r4, #8] + strb r0, [r5, #8] + pop {r3, r4, r5, pc} + .align 2, 0 +_02240EF4: .word 0x00000A18 + + thumb_func_start MOD12_02240EF8 +MOD12_02240EF8: ; 0x02240EF8 + push {r3, r4, r5, lr} + ldr r5, [r0, #0xc] + mov r4, #0 + mov r2, #1 +_02240F00: + add r3, r2, #0 + lsl r3, r4 + add r1, r5, #0 + tst r1, r3 + bne _02240F14 + ldr r1, [r0, #0xc] + orr r1, r3 + str r1, [r0, #0xc] + add r0, r4, #0 + pop {r3, r4, r5, pc} +_02240F14: + add r4, r4, #1 + cmp r4, #0x20 + blt _02240F00 + bl ErrorHandling + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_02240F24 +MOD12_02240F24: ; 0x02240F24 + push {r3, r4} + mov r2, #1 + add r3, r2, #0 + lsl r3, r1 + sub r1, r2, #2 + ldr r4, [r0, #0xc] + eor r1, r3 + and r1, r4 + str r1, [r0, #0xc] + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD12_02240F3C +MOD12_02240F3C: ; 0x02240F3C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r4, [sp, #0x28] + add r5, r0, #0 + mov r0, #2 + str r4, [sp, #4] + add r4, #8 + lsl r0, r0, #8 + add r6, r1, #0 + add r7, r2, #0 + str r3, [sp] + cmp r4, r0 + bls _02240F5A + bl ErrorHandling +_02240F5A: + add r0, r5, #0 + mov r2, #2 + add r0, #0x10 + mov r1, #0 + lsl r2, r2, #8 + bl MI_CpuFill8 + add r0, sp, #8 + strb r6, [r0, #4] + strh r7, [r0, #2] + add r0, r5, #0 + bl MOD12_02240EF8 + add r1, sp, #8 + strb r0, [r1, #5] + mov r0, #0 + strb r0, [r1, #6] + strh r4, [r1] + add r1, r5, #0 + add r0, sp, #8 + add r1, #0x10 + mov r2, #8 + bl MIi_CpuCopy32 + add r1, r5, #0 + ldr r0, [sp] + ldr r2, [sp, #4] + add r1, #0x18 + bl MI_CpuCopy8 + ldr r0, _02240FAC ; =0x00000A15 + mov r1, #0 + strb r1, [r5, r0] + mov r1, #1 + sub r0, r0, #5 + strb r1, [r5, r0] + add r0, sp, #8 + ldrb r0, [r0, #5] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02240FAC: .word 0x00000A15 + + thumb_func_start MOD12_02240FB0 +MOD12_02240FB0: ; 0x02240FB0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r7, r3, #0 + mov r0, #2 + add r7, #8 + lsl r0, r0, #8 + add r4, r1, #0 + add r6, r2, #0 + str r3, [sp] + cmp r7, r0 + bls _02240FCC + bl ErrorHandling +_02240FCC: + add r0, r5, #0 + mov r2, #2 + add r0, #0x10 + mov r1, #0 + lsl r2, r2, #8 + bl MI_CpuFill8 + ldrh r2, [r4] + add r1, sp, #4 + add r0, sp, #4 + strh r2, [r1] + ldrh r2, [r4, #2] + strh r2, [r1, #2] + ldrh r2, [r4, #4] + strh r2, [r1, #4] + ldrh r2, [r4, #6] + strh r2, [r1, #6] + mov r2, #0xfe + strb r2, [r1, #4] + mov r2, #1 + strb r2, [r1, #6] + strh r7, [r1] + add r1, r5, #0 + add r1, #0x10 + mov r2, #8 + bl MIi_CpuCopy32 + cmp r6, #0 + beq _02241012 + add r1, r5, #0 + ldr r2, [sp] + add r0, r6, #0 + add r1, #0x18 + bl MI_CpuCopy8 +_02241012: + mov r0, #0xa1 + mov r1, #1 + lsl r0, r0, #4 + strb r1, [r5, r0] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02241020 +MOD12_02241020: ; 0x02241020 + push {r4, r5} + lsl r5, r1, #9 + mov r1, #0x21 + lsl r1, r1, #4 + add r4, r0, r1 + add r1, #8 + add r4, r4, r5 + add r0, r0, r1 + str r4, [r2] + add r0, r0, r5 + str r0, [r3] + pop {r4, r5} + bx lr + .align 2, 0 + + thumb_func_start MOD12_0224103C +MOD12_0224103C: ; 0x0224103C + mov r1, #0xa1 + lsl r1, r1, #4 + ldrb r0, [r0, r1] + cmp r0, #1 + bne _0224104A + mov r0, #0 + bx lr +_0224104A: + mov r0, #1 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02241050 +MOD12_02241050: ; 0x02241050 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + add r7, r3, #0 + bl MOD12_0224103C + cmp r0, #0 + bne _02241066 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02241066: + ldrh r0, [r5, #4] + cmp r4, r0 + blt _02241070 + bl ErrorHandling +_02241070: + add r0, r5, #0 + add r1, r6, #0 + mov r6, #0xc + ldr r5, [r5] + mul r6, r4 + add r2, r4, #0 + ldr r4, [r5, r6] + add r3, r7, #0 + blx r4 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02241088 +MOD12_02241088: ; 0x02241088 + cmp r0, r2 + beq _02241098 + cmp r2, #0xff + beq _02241098 + cmp r2, #0xfe + bne _0224109C + cmp r1, r0 + bne _0224109C +_02241098: + mov r0, #1 + bx lr +_0224109C: + mov r0, #0 + bx lr + + thumb_func_start MOD12_022410A0 +MOD12_022410A0: ; 0x022410A0 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xa1 + lsl r0, r0, #4 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _022410B2 + mov r0, #0 + pop {r4, pc} +_022410B2: + ldrb r0, [r4, #7] + cmp r0, #0 + bne _022410F0 + ldrb r1, [r4, #6] + mov r2, #0x21 + lsl r2, r2, #4 + add r0, r4, #0 + add r3, r4, r2 + lsl r1, r1, #9 + add r0, #0x10 + add r1, r3, r1 + sub r2, #0x10 + bl MI_CpuCopy8 + ldrb r0, [r4, #6] + mov r2, #1 + add r1, r4, r0 + ldr r0, _02241110 ; =0x00000A11 + strb r2, [r1, r0] + add r0, r4, #0 + add r0, #0x10 + mov r1, #0 + lsl r2, r2, #9 + bl MI_CpuFill8 + mov r0, #0xa1 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #1 + pop {r4, pc} +_022410F0: + ldrh r2, [r4, #0x10] + add r1, r4, #0 + mov r0, #0x18 + add r1, #0x10 + bl FUN_02030A78 + cmp r0, #1 + bne _0224110C + mov r0, #0xa1 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #1 + pop {r4, pc} +_0224110C: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_02241110: .word 0x00000A11 + + thumb_func_start MOD12_02241114 +MOD12_02241114: ; 0x02241114 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r7, r0, #0 + add r4, r1, #0 + add r0, sp, #0x18 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + ldr r0, _022411EC ; =0x00000A11 + mov r6, #0 +_0224112A: + add r1, r7, r6 + ldrb r1, [r1, r0] + cmp r1, #1 + bne _022411DE + add r0, r7, #0 + add r1, r6, #0 + add r2, sp, #0x14 + add r3, sp, #0x10 + bl MOD12_02241020 + ldr r2, [sp, #0x14] + ldrb r0, [r7, #6] + ldrb r1, [r7, #8] + ldrb r2, [r2, #4] + bl MOD12_02241088 + cmp r0, #1 + bne _022411C0 + ldr r2, [sp, #0x14] + ldrh r1, [r7, #4] + ldrh r0, [r2, #2] + str r0, [sp, #8] + cmp r0, r1 + bhs _022411C0 + ldrb r0, [r2, #6] + cmp r0, #0 + bne _0224117A + add r1, r4, #0 + ldr r4, [r7] + ldr r5, [sp, #8] + str r4, [sp, #4] + mov r4, #0xc + mul r4, r5 + ldr r5, [sp, #4] + ldr r3, [sp, #0x10] + add r4, r5, r4 + ldr r4, [r4, #4] + add r0, r7, #0 + blx r4 + b _022411C0 +_0224117A: + ldr r1, [sp, #8] + mov r3, #0xc + ldr r0, [r7] + mul r3, r1 + add r0, r0, r3 + ldr r0, [r0, #8] + cmp r0, #0 + beq _022411AE + ldr r1, [sp, #0x10] + lsl r0, r6, #2 + add r3, sp, #0x18 + str r1, [r3, r0] + str r6, [sp] + add r1, r4, #0 + ldr r4, [r7] + mov r5, #0xc + mov ip, r4 + ldrh r4, [r2, #2] + add r0, r7, #0 + mul r5, r4 + str r5, [sp, #0xc] + ldr r4, [sp, #0xc] + mov r5, ip + add r4, r5, r4 + ldr r4, [r4, #8] + blx r4 +_022411AE: + ldr r1, [sp, #0x14] + add r0, r7, #0 + ldrb r1, [r1, #5] + bl MOD12_02240F24 + ldr r0, _022411F0 ; =0x00000A15 + ldrb r1, [r7, r0] + add r1, r1, #1 + strb r1, [r7, r0] +_022411C0: + ldr r0, _022411EC ; =0x00000A11 + mov r1, #0 + add r2, r7, r6 + strb r1, [r2, r0] + mov r2, #0x21 + lsl r2, r2, #4 + add r3, r7, r2 + lsl r0, r6, #9 + add r0, r3, r0 + sub r2, #0x10 + bl MI_CpuFill8 + add sp, #0x28 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022411DE: + add r6, r6, #1 + cmp r6, #4 + blt _0224112A + mov r0, #0 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_022411EC: .word 0x00000A11 +_022411F0: .word 0x00000A15 + + thumb_func_start MOD12_022411F4 +MOD12_022411F4: ; 0x022411F4 + cmp r2, r3 + beq _022411FC + mov r0, #1 + bx lr +_022411FC: + ldr r2, _0224120C ; =0x00000A15 + ldrb r0, [r0, r2] + cmp r0, r1 + blt _02241208 + mov r0, #1 + bx lr +_02241208: + mov r0, #0 + bx lr + .align 2, 0 +_0224120C: .word 0x00000A15 + + thumb_func_start MOD12_02241210 +MOD12_02241210: ; 0x02241210 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r1, #1 + lsl r1, r1, #0x1a + ldr r0, [r1] + ldr r2, _02241454 ; =0xFFFFE0FF + and r0, r2 + str r0, [r1] + ldr r0, _02241458 ; =0x04001000 + ldr r3, [r0] + and r2, r3 + str r2, [r0] + ldr r3, [r1] + ldr r2, _0224145C ; =0xFFFF1FFF + and r3, r2 + str r3, [r1] + ldr r3, [r0] + add r1, #0x50 + and r2, r3 + str r2, [r0] + mov r2, #0 + strh r2, [r1] + add r0, #0x50 + strh r2, [r0] + mov r2, #7 + mov r0, #3 + mov r1, #0x18 + lsl r2, r2, #0x10 + bl FUN_0201681C + mov r1, #0x4a + add r0, r4, #0 + lsl r1, r1, #6 + mov r2, #0x18 + bl FUN_02006268 + mov r2, #0x4a + mov r1, #0 + lsl r2, r2, #6 + add r5, r0, #0 + bl MI_CpuFill8 + mov r0, #0x18 + bl MOD12_022312D8 + str r0, [r5, #0xc] + add r0, r4, #0 + bl FUN_0200628C + mov r1, #0x5b + str r0, [r5] + lsl r1, r1, #2 + str r5, [r0, r1] + ldr r2, [r5] + mov r3, #3 + add r0, r1, #4 + strb r3, [r2, r0] + ldr r0, [r5] + str r0, [r5, #0x10] + add r0, r5, #0 + bl MOD12_02241B4C + ldr r0, _02241460 ; =0x0000127F + mov r1, #0 + strb r1, [r5, r0] + mov r0, #0x18 + bl FUN_02002FD0 + add r1, r5, #0 + add r1, #0xd0 + str r0, [r1] + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #1 + bl FUN_020038F0 + add r0, r5, #0 + add r0, #0xd0 + mov r2, #2 + ldr r0, [r0] + mov r1, #0 + lsl r2, r2, #8 + mov r3, #0x18 + bl FUN_02003008 + add r0, r5, #0 + add r0, #0xd0 + mov r1, #1 + ldr r0, [r0] + lsl r2, r1, #9 + mov r3, #0x18 + bl FUN_02003008 + add r0, r5, #0 + add r0, #0xd0 + mov r2, #7 + ldr r0, [r0] + mov r1, #2 + lsl r2, r2, #6 + mov r3, #0x18 + bl FUN_02003008 + add r0, r5, #0 + add r0, #0xd0 + mov r2, #2 + ldr r0, [r0] + mov r1, #3 + lsl r2, r2, #8 + mov r3, #0x18 + bl FUN_02003008 + mov r0, #0x18 + bl FUN_02016B94 + str r0, [r5, #0x30] + mov r0, #0x40 + mov r1, #0x18 + bl FUN_0201C24C + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + ldr r0, [r5, #0x30] + bl MOD12_02241864 + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + mov r0, #2 + mov r1, #0x18 + bl FUN_02002C50 + mov r0, #0x18 + bl FUN_0200BB14 + ldr r1, _02241464 ; =0x0224654C + ldr r2, _02241468 ; =0x02246504 + mov r3, #0x20 + str r0, [r5, #0x28] + bl FUN_0200BB6C + ldr r1, _0224146C ; =0x00100010 + mov r0, #1 + bl FUN_02008D44 + mov r0, #1 + bl FUN_02008DDC + ldr r0, [r5, #0x28] + bl FUN_0200BB34 + str r0, [r5, #0x2c] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + mov r2, #0x80 + bl FUN_0200BBF0 + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + ldr r2, _02241470 ; =0x02246518 + bl FUN_0200BF60 + mov r0, #0x18 + bl FUN_02006D98 + str r0, [r5, #0x14] + bl MOD12_02241B0C + mov r0, #0 + mov r1, #0x1a + mov r2, #0xcc + mov r3, #0x18 + bl FUN_0200A86C + add r1, r5, #0 + add r1, #0xc4 + str r0, [r1] + mov r0, #0x18 + bl FUN_0200AA80 + add r1, r5, #0 + add r1, #0xc8 + str r0, [r1] + mov r0, #5 + lsl r0, r0, #6 + mov r1, #0x18 + bl FUN_020219F4 + add r1, r5, #0 + add r1, #0xcc + str r0, [r1] + mov r0, #0xa + mov r1, #0x18 + bl FUN_02011744 + add r1, r5, #0 + add r1, #0xd4 + str r0, [r1] + add r0, r5, #0 + bl MOD12_02241B90 + add r0, r5, #0 + bl MOD12_02241BA0 + add r0, r5, #0 + bl MOD12_022419D0 + add r0, r5, #0 + bl MOD12_02241B78 + add r0, r5, #0 + bl MOD12_02241B88 + add r0, r5, #0 + bl MOD12_02242454 + bl FUN_02033E74 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #0x18 + str r1, [sp, #8] + mov r1, #0x21 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, _02241474 ; =MOD12_0224182C + ldr r2, _02241478 ; =0x00013880 + add r1, r5, #0 + bl FUN_0200CA44 + str r0, [r5, #4] + mov r0, #0x85 + mov r1, #1 + lsl r0, r0, #4 + strb r1, [r5, r0] + bl FUN_0201E788 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + ldr r1, _0224147C ; =0x0000046F + mov r0, #6 + mov r2, #1 + bl FUN_0200433C + ldr r1, [r5] + ldr r0, _02241480 ; =0x00000171 + ldrb r0, [r1, r0] + bl FUN_020833D4 + ldr r0, _02241484 ; =MOD12_02241754 + add r1, r5, #0 + bl FUN_02015F10 + ldr r0, _02241488 ; =MOD12_02241814 + add r1, r5, #0 + mov r2, #0xa + bl FUN_0200CA60 + str r0, [r5, #8] + ldr r0, _0224148C ; =0x000006E5 + bl FUN_020054C8 + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02241454: .word 0xFFFFE0FF +_02241458: .word 0x04001000 +_0224145C: .word 0xFFFF1FFF +_02241460: .word 0x0000127F +_02241464: .word 0x0224654C +_02241468: .word 0x02246504 +_0224146C: .word 0x00100010 +_02241470: .word 0x02246518 +_02241474: .word MOD12_0224182C +_02241478: .word 0x00013880 +_0224147C: .word 0x0000046F +_02241480: .word 0x00000171 +_02241484: .word MOD12_02241754 +_02241488: .word MOD12_02241814 +_0224148C: .word 0x000006E5 + + thumb_func_start MOD12_02241490 +MOD12_02241490: ; 0x02241490 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02082878 + ldr r0, [r5] + cmp r0, #0 + beq _022414B2 + cmp r0, #1 + beq _022414E4 + cmp r0, #2 + beq _0224156C + b _0224157A +_022414B2: + bl FUN_0200E308 + cmp r0, #1 + bne _0224157A + ldr r0, _02241580 ; =MOD12_022417DC + add r1, r4, #0 + bl FUN_02015F34 + mov r0, #0xff + str r0, [sp] + ldr r0, _02241584 ; =0x0000D6D8 + add r1, r4, #0 + str r0, [sp, #4] + add r1, #0xd0 + ldr r1, [r1] + ldr r2, _02241588 ; =0x022464F4 + mov r0, #0x18 + mov r3, #8 + bl MOD12_022318A4 + ldr r1, _0224158C ; =0x00000848 + str r0, [r4, r1] + mov r0, #1 + str r0, [r5] + b _0224157A +_022414E4: + ldr r0, [r4] + bl FUN_020828BC + cmp r0, #1 + bne _02241540 + ldr r2, _02241590 ; =0x0000084E + ldr r1, _02241594 ; =0x00001274 + ldrh r2, [r4, r2] + add r0, r4, #0 + add r1, r4, r1 + lsl r3, r2, #2 + ldr r2, _02241598 ; =0x02246594 + ldr r2, [r2, r3] + blx r2 + cmp r0, #1 + beq _02241508 + cmp r0, #2 + bne _0224152A +_02241508: + cmp r0, #1 + bne _02241514 + ldr r0, _02241590 ; =0x0000084E + ldrh r1, [r4, r0] + add r1, r1, #1 + b _0224151A +_02241514: + ldr r0, _0224159C ; =0x00001276 + ldrh r1, [r4, r0] + ldr r0, _02241590 ; =0x0000084E +_0224151A: + strh r1, [r4, r0] + ldr r0, _02241594 ; =0x00001274 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + b _02241540 +_0224152A: + cmp r0, #3 + bne _02241540 + mov r0, #2 + str r0, [r5] + ldr r0, _02241594 ; =0x00001274 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + b _0224157A +_02241540: + ldr r0, _022415A0 ; =0x0000085C + add r0, r4, r0 + bl MOD12_022410A0 + ldr r0, _022415A0 ; =0x0000085C + add r1, r4, #0 + add r0, r4, r0 + bl MOD12_02241114 + ldr r0, _022415A4 ; =0x0000127C + ldrb r1, [r4, r0] + cmp r1, #1 + bne _0224157A + mov r1, #2 + sub r0, #8 + str r1, [r5] + add r0, r4, r0 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + b _0224157A +_0224156C: + bl FUN_0200E308 + cmp r0, #1 + bne _0224157A + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224157A: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02241580: .word MOD12_022417DC +_02241584: .word 0x0000D6D8 +_02241588: .word 0x022464F4 +_0224158C: .word 0x00000848 +_02241590: .word 0x0000084E +_02241594: .word 0x00001274 +_02241598: .word 0x02246594 +_0224159C: .word 0x00001276 +_022415A0: .word 0x0000085C +_022415A4: .word 0x0000127C + + thumb_func_start MOD12_022415A8 +MOD12_022415A8: ; 0x022415A8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + bl FUN_02012EAC + add r0, r4, #0 + bl MOD12_02241B80 + add r0, r4, #0 + bl MOD12_02241B8C + add r0, r4, #0 + bl MOD12_02241B98 + add r0, r4, #0 + bl MOD12_02241BF8 + add r5, r4, #0 + mov r6, #0 + add r5, #0x34 +_022415D4: + add r0, r5, #0 + bl FUN_02019178 + add r6, r6, #1 + add r5, #0x10 + cmp r6, #9 + blt _022415D4 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + mov r1, #3 + bl FUN_020178A0 + mov r0, #4 + mov r1, #0 + bl FUN_0201797C + ldr r0, [r4, #0x30] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + bl FUN_0200C398 + ldr r0, [r4, #0x28] + bl FUN_0200BD04 + bl FUN_0201C29C + add r0, r4, #0 + add r0, #0x10 + bl MOD12_022424D4 + ldr r0, [r4, #0x14] + bl FUN_020072E8 + add r0, r4, #0 + add r0, #0xd4 + ldr r0, [r0] + bl FUN_020117BC + mov r0, #2 + bl FUN_02002CF8 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #1 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #2 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #3 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_02002FEC + add r0, r4, #0 + add r0, #0xcc + ldr r0, [r0] + bl FUN_02021A20 + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + bl FUN_0200AB18 + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + bl FUN_0200A8B8 + ldr r0, [r4, #0x30] + bl FUN_02016A18 + ldr r0, [r4, #4] + bl FUN_0200CAB4 + ldr r0, [r4, #8] + bl FUN_0200CAB4 + ldr r0, [r4, #0xc] + bl MOD12_02231378 + bl FUN_0201CD04 + add r0, r7, #0 + bl FUN_0200627C + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _02241734 ; =0xFFFF1FFF + and r1, r0 + str r1, [r2] + ldr r2, _02241738 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + mov r0, #0x18 + bl FUN_020168D0 + bl FUN_02083404 + mov r1, #5 + mov r2, #2 + ldr r0, _0224173C ; =0x00007FFF + lsl r1, r1, #0x18 + lsl r2, r2, #8 + bl MIi_CpuClear16 + mov r2, #2 + ldr r0, _0224173C ; =0x00007FFF + ldr r1, _02241740 ; =0x05000200 + lsl r2, r2, #8 + bl MIi_CpuClear16 + mov r2, #2 + ldr r0, _0224173C ; =0x00007FFF + ldr r1, _02241744 ; =0x05000400 + lsl r2, r2, #8 + bl MIi_CpuClear16 + mov r2, #2 + ldr r0, _0224173C ; =0x00007FFF + ldr r1, _02241748 ; =0x05000600 + lsl r2, r2, #8 + bl MIi_CpuClear16 + bl FUN_02033ED0 + ldr r0, _0224174C ; =SDK_MODULE_08_ID + bl UnloadOverlayByID + ldr r0, _02241750 ; =SDK_MODULE_17_ID + bl UnloadOverlayByID + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02241734: .word 0xFFFF1FFF +_02241738: .word 0x04001000 +_0224173C: .word 0x00007FFF +_02241740: .word 0x05000200 +_02241744: .word 0x05000400 +_02241748: .word 0x05000600 +_0224174C: .word SDK_MODULE_08_ID +_02241750: .word SDK_MODULE_17_ID + + thumb_func_start MOD12_02241754 +MOD12_02241754: ; 0x02241754 + push {r4, r5, r6, lr} + add r4, r0, #0 + ldr r0, _022417CC ; =0x00000854 + sub r1, r0, #2 + ldrb r3, [r4, r1] + sub r1, r0, #3 + ldrb r1, [r4, r1] + sub r6, r0, #1 + ldrb r6, [r4, r6] + lsl r2, r1, #8 + mov r1, #0xff + lsl r1, r1, #8 + and r2, r1 + orr r2, r6 + ldrb r5, [r4, r0] + ldr r6, _022417D0 ; =0x04000040 + strh r2, [r6] + lsl r2, r3, #8 + and r2, r1 + orr r2, r5 + strh r2, [r6, #4] + add r2, r0, #4 + ldrb r5, [r4, r2] + add r2, r0, #2 + ldrb r3, [r4, r2] + add r2, r0, #1 + ldrb r2, [r4, r2] + add r0, r0, #3 + ldrb r0, [r4, r0] + lsl r2, r2, #8 + and r2, r1 + orr r0, r2 + strh r0, [r6, #2] + lsl r0, r3, #8 + and r0, r1 + orr r0, r5 + strh r0, [r6, #6] + ldr r0, [r4, #0x14] + bl FUN_020081C4 + bl FUN_0201C30C + bl FUN_0200BC30 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_0200372C + ldr r0, [r4, #0x30] + bl FUN_0201AB60 + ldr r3, _022417D4 ; =0x027E0000 + ldr r1, _022417D8 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, r5, r6, pc} + nop +_022417CC: .word 0x00000854 +_022417D0: .word 0x04000040 +_022417D4: .word 0x027E0000 +_022417D8: .word 0x00003FF8 + + thumb_func_start MOD12_022417DC +MOD12_022417DC: ; 0x022417DC + push {r3, lr} + ldr r1, _0224180C ; =0x0000127F + ldrb r0, [r0, r1] + cmp r0, #1 + bne _02241808 + ldr r0, _02241810 ; =0x04000006 + ldrh r0, [r0] + cmp r0, #0x90 + blt _022417FC + cmp r0, #0x98 + bgt _022417FC + mov r0, #1 + mov r1, #0 + bl FUN_020178BC + pop {r3, pc} +_022417FC: + cmp r0, #0x90 + bge _02241808 + mov r0, #1 + mov r1, #2 + bl FUN_020178BC +_02241808: + pop {r3, pc} + nop +_0224180C: .word 0x0000127F +_02241810: .word 0x04000006 + + thumb_func_start MOD12_02241814 +MOD12_02241814: ; 0x02241814 + push {r3, lr} + ldr r0, _02241828 ; =0x0000127F + ldrb r0, [r1, r0] + cmp r0, #1 + bne _02241826 + mov r0, #1 + mov r1, #2 + bl FUN_020178BC +_02241826: + pop {r3, pc} + .align 2, 0 +_02241828: .word 0x0000127F + + thumb_func_start MOD12_0224182C +MOD12_0224182C: ; 0x0224182C + push {r4, lr} + mov r0, #0x85 + add r4, r1, #0 + lsl r0, r0, #4 + ldrb r0, [r4, r0] + cmp r0, #1 + bne _02241854 + ldr r0, [r4, #0x14] + bl FUN_02006ED4 + bl FUN_02215A44 + ldr r0, [r4, #0x2c] + bl FUN_0200BC1C + bl FUN_0200BC38 + ldr r0, _02241860 ; =0x04000540 + mov r1, #1 + str r1, [r0] +_02241854: + ldr r1, [r4, #0x30] + mov r0, #0x18 + bl FUN_020335F0 + pop {r4, pc} + nop +_02241860: .word 0x04000540 + + thumb_func_start MOD12_02241864 +MOD12_02241864: ; 0x02241864 + push {r3, r4, r5, lr} + sub sp, #0xa8 + add r4, r0, #0 + bl FUN_0201E6D8 + ldr r5, _022419BC ; =0x0224656C + add r3, sp, #0x2c + mov r2, #5 +_02241874: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02241874 + add r0, sp, #0x2c + 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, _022419C0 ; =0x022464E4 + add r3, sp, #0x1c + 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, _022419C4 ; =0x022465C0 + add r3, sp, #0x54 + mov r2, #0xa +_022418D4: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022418D4 + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + add r2, sp, #0x54 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #1 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + add r2, sp, #0x70 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #3 + add r2, sp, #0x8c + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #3 + add r3, r2, #0 + bl FUN_020179E0 + mov r1, #3 + add r0, r4, #0 + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + ldr r1, _022419C8 ; =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, _022419CC ; =0x02246530 + 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] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #4 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #4 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #4 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add sp, #0xa8 + pop {r3, r4, r5, pc} + .align 2, 0 +_022419BC: .word 0x0224656C +_022419C0: .word 0x022464E4 +_022419C4: .word 0x022465C0 +_022419C8: .word 0x04000008 +_022419CC: .word 0x02246530 + + thumb_func_start MOD12_022419D0 +MOD12_022419D0: ; 0x022419D0 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0x13 + 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, #0x1f + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r4, #0x30] + add r1, #0x34 + mov r2, #1 + mov r3, #2 + bl FUN_02019064 + mov r2, #1 + add r1, r4, #0 + str r2, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x8b + str r0, [sp, #0x10] + ldr r0, [r4, #0x30] + add r1, #0x44 + mov r3, #6 + bl FUN_02019064 + mov r0, #5 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xa3 + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r4, #0x30] + add r1, #0x54 + mov r2, #1 + mov r3, #6 + bl FUN_02019064 + mov r0, #9 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xbb + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r4, #0x30] + add r1, #0x64 + mov r2, #1 + mov r3, #6 + bl FUN_02019064 + mov r1, #0xd + str r1, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r0, #0xd3 + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r4, #0x30] + add r1, #0x74 + mov r2, #1 + mov r3, #6 + bl FUN_02019064 + mov r2, #1 + add r1, r4, #0 + str r2, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xeb + str r0, [sp, #0x10] + ldr r0, [r4, #0x30] + add r1, #0x84 + mov r3, #0x10 + bl FUN_02019064 + mov r0, #5 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + add r0, #0xf6 + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r4, #0x30] + add r1, #0x94 + mov r2, #1 + mov r3, #0x10 + bl FUN_02019064 + mov r0, #9 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02241B04 ; =0x0000011B + add r1, r4, #0 + str r0, [sp, #0x10] + ldr r0, [r4, #0x30] + add r1, #0xa4 + mov r2, #1 + mov r3, #0x10 + bl FUN_02019064 + mov r1, #0xd + str r1, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + ldr r0, _02241B08 ; =0x00000133 + str r1, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r4, #0x30] + add r4, #0xb4 + add r1, r4, #0 + mov r2, #1 + mov r3, #0x10 + bl FUN_02019064 + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 +_02241B04: .word 0x0000011B +_02241B08: .word 0x00000133 + + thumb_func_start MOD12_02241B0C +MOD12_02241B0C: ; 0x02241B0C + push {r3, r4, r5, lr} + ldr r3, _02241B44 ; =0x021064B8 + mov r0, #2 + mov r1, #0 + ldr r3, [r3] + lsl r0, r0, #0xe + add r2, r1, #0 + blx r3 + ldr r3, _02241B48 ; =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 _02241B34 + bl ErrorHandling +_02241B34: + cmp r5, #0 + bne _02241B3C + bl ErrorHandling +_02241B3C: + bl FUN_02012CC8 + pop {r3, r4, r5, pc} + nop +_02241B44: .word 0x021064B8 +_02241B48: .word 0x021064C0 + + thumb_func_start MOD12_02241B4C +MOD12_02241B4C: ; 0x02241B4C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _02241B5A + bl ErrorHandling +_02241B5A: + mov r1, #0xf3 + mov r5, #0 + mov r0, #3 + lsl r1, r1, #2 +_02241B62: + sub r3, r0, r5 + add r2, r4, r5 + add r5, r5, #1 + strb r3, [r2, r1] + cmp r5, #4 + blt _02241B62 + add r0, r4, #0 + bl MOD12_02243A20 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_02241B78 +MOD12_02241B78: ; 0x02241B78 + ldr r3, _02241B7C ; =MOD12_0224278C + bx r3 + .align 2, 0 +_02241B7C: .word MOD12_0224278C + + thumb_func_start MOD12_02241B80 +MOD12_02241B80: ; 0x02241B80 + ldr r3, _02241B84 ; =MOD12_02242A6C + bx r3 + .align 2, 0 +_02241B84: .word MOD12_02242A6C + + thumb_func_start MOD12_02241B88 +MOD12_02241B88: ; 0x02241B88 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02241B8C +MOD12_02241B8C: ; 0x02241B8C + bx lr + .align 2, 0 + + thumb_func_start MOD12_02241B90 +MOD12_02241B90: ; 0x02241B90 + ldr r3, _02241B94 ; =MOD12_022426BC + bx r3 + .align 2, 0 +_02241B94: .word MOD12_022426BC + + thumb_func_start MOD12_02241B98 +MOD12_02241B98: ; 0x02241B98 + ldr r3, _02241B9C ; =MOD12_02242A18 + bx r3 + .align 2, 0 +_02241B9C: .word MOD12_02242A18 + + thumb_func_start MOD12_02241BA0 +MOD12_02241BA0: ; 0x02241BA0 + 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, #0x18 + str r0, [sp, #0xc] + ldr r2, [r4, #0x30] + mov r0, #0x2d + mov r1, #0x12 + mov r3, #4 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x18 + str r0, [sp, #0xc] + ldr r2, [r4, #0x30] + mov r0, #0x2d + mov r1, #0x13 + mov r3, #4 + bl FUN_020068C8 + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + add r4, #0xd0 + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x2d + mov r2, #0x21 + mov r3, #0x18 + bl FUN_020030E8 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_02241BF8 +MOD12_02241BF8: ; 0x02241BF8 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02241BFC +MOD12_02241BFC: ; 0x02241BFC + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + ldrh r1, [r7] + add r4, r0, #0 + cmp r1, #0 + beq _02241C12 + cmp r1, #1 + beq _02241CA0 + cmp r1, #2 + beq _02241CBE + b _02241CE0 +_02241C12: + bl MOD12_022436D0 + mov r0, #0x13 + ldr r2, [r4] + mov r5, #0 + lsl r0, r0, #4 +_02241C1E: + ldrb r1, [r2, r0] + cmp r1, #0 + beq _02241C2C + add r5, r5, #1 + add r2, #0xc + cmp r5, #4 + blt _02241C1E +_02241C2C: + cmp r5, #4 + bne _02241C34 + bl ErrorHandling +_02241C34: + ldr r0, _02241CE8 ; =0x00000438 + ldr r1, _02241CEC ; =0x00000439 + strb r5, [r4, r0] + mov r5, #0 + sub r0, #0x67 +_02241C3E: + add r3, r4, r5 + ldrb r2, [r3, r0] + add r5, r5, #1 + cmp r5, #4 + strb r2, [r3, r1] + blt _02241C3E + mov r3, #0 + add r1, r3, #0 + add r2, r4, #0 +_02241C50: + ldr r0, [r4] + mov r5, #0x4a + add r0, r0, r1 + lsl r5, r5, #2 + ldrh r6, [r0, r5] + mov r5, #0xe7 + lsl r5, r5, #2 + strh r6, [r2, r5] + ldr r5, _02241CF0 ; =0x0000012A + add r3, r3, #1 + ldrh r6, [r0, r5] + ldr r5, _02241CF4 ; =0x0000039E + add r1, #0xc + strh r6, [r2, r5] + mov r5, #0x4b + lsl r5, r5, #2 + ldrh r6, [r0, r5] + mov r5, #0x3a + lsl r5, r5, #4 + strh r6, [r2, r5] + ldr r5, _02241CF8 ; =0x0000012E + ldrh r6, [r0, r5] + ldr r5, _02241CFC ; =0x000003A2 + strh r6, [r2, r5] + mov r5, #0x13 + lsl r5, r5, #4 + ldrh r6, [r0, r5] + mov r5, #0xe9 + lsl r5, r5, #2 + strh r6, [r2, r5] + ldr r5, _02241D00 ; =0x00000132 + ldrh r5, [r0, r5] + ldr r0, _02241D04 ; =0x000003A6 + strh r5, [r2, r0] + add r2, #0xc + cmp r3, #4 + blt _02241C50 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] +_02241CA0: + ldr r0, _02241D08 ; =0x0000085C + mov r3, #0xe7 + lsl r3, r3, #2 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #1 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02241CE4 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _02241CE4 +_02241CBE: + ldr r0, _02241D08 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _02241D0C ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02241CE4 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _02241CE4 +_02241CE0: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02241CE4: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02241CE8: .word 0x00000438 +_02241CEC: .word 0x00000439 +_02241CF0: .word 0x0000012A +_02241CF4: .word 0x0000039E +_02241CF8: .word 0x0000012E +_02241CFC: .word 0x000003A2 +_02241D00: .word 0x00000132 +_02241D04: .word 0x000003A6 +_02241D08: .word 0x0000085C +_02241D0C: .word 0x00000127 + + thumb_func_start MOD12_02241D10 +MOD12_02241D10: ; 0x02241D10 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02241D22 + cmp r0, #1 + beq _02241D5C + b _02241D7E +_02241D22: + ldr r3, _02241D88 ; =0x00000445 + mov r1, #0 + strb r1, [r5, r3] + add r0, r3, #2 + strb r1, [r5, r0] + add r0, r3, #1 + strb r1, [r5, r0] + add r0, r3, #0 + sub r0, #0x79 + ldrb r1, [r5, r0] + sub r0, r3, #7 + mov r2, #5 + strb r1, [r5, r0] + sub r0, r3, #1 + mov r1, #1 + strb r1, [r5, r0] + ldr r0, _02241D8C ; =0x0000085C + sub r3, #0xf + add r0, r5, r0 + add r1, r5, #0 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02241D82 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241D82 +_02241D5C: + ldr r0, _02241D8C ; =0x0000085C + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _02241D90 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _02241D82 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241D82 +_02241D7E: + mov r0, #1 + pop {r3, r4, r5, pc} +_02241D82: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02241D88: .word 0x00000445 +_02241D8C: .word 0x0000085C +_02241D90: .word 0x00000127 + + thumb_func_start MOD12_02241D94 +MOD12_02241D94: ; 0x02241D94 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02241DA6 + cmp r0, #1 + beq _02241DC4 + b _02241DE6 +_02241DA6: + ldr r0, _02241DF0 ; =0x0000085C + mov r3, #0xe7 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #6 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02241DEA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241DEA +_02241DC4: + ldr r0, _02241DF0 ; =0x0000085C + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _02241DF4 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _02241DEA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241DEA +_02241DE6: + mov r0, #1 + pop {r3, r4, r5, pc} +_02241DEA: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02241DF0: .word 0x0000085C +_02241DF4: .word 0x00000127 + + thumb_func_start MOD12_02241DF8 +MOD12_02241DF8: ; 0x02241DF8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02241E0E + cmp r0, #1 + beq _02241E40 + cmp r0, #2 + beq _02241E62 + b _02241E74 +_02241E0E: + ldr r3, _02241E7C ; =0x00000445 + mov r0, #0 + strb r0, [r5, r3] + mov r1, #1 + add r0, r3, #2 + strb r1, [r5, r0] + add r0, r3, #1 + strb r1, [r5, r0] + sub r0, r3, #1 + mov r1, #6 + strb r1, [r5, r0] + ldr r0, _02241E80 ; =0x0000085C + sub r3, #0xf + add r0, r5, r0 + add r1, r5, #0 + mov r2, #5 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02241E78 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241E78 +_02241E40: + ldr r0, _02241E80 ; =0x0000085C + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _02241E84 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _02241E78 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241E78 +_02241E62: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0x3c + ble _02241E78 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241E78 +_02241E74: + mov r0, #1 + pop {r3, r4, r5, pc} +_02241E78: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02241E7C: .word 0x00000445 +_02241E80: .word 0x0000085C +_02241E84: .word 0x00000127 + + thumb_func_start MOD12_02241E88 +MOD12_02241E88: ; 0x02241E88 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #4 + bhi _02241F78 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02241EA0: ; jump table + .short _02241EAA - _02241EA0 - 2 ; case 0 + .short _02241F00 - _02241EA0 - 2 ; case 1 + .short _02241F22 - _02241EA0 - 2 ; case 2 + .short _02241F44 - _02241EA0 - 2 ; case 3 + .short _02241F66 - _02241EA0 - 2 ; case 4 +_02241EAA: + ldr r1, [r3] + ldr r0, _02241F80 ; =0x00000121 + ldrb r0, [r1, r0] + cmp r0, #4 + bhi _02241ECA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02241EC0: ; jump table + .short _02241ECE - _02241EC0 - 2 ; case 0 + .short _02241ECE - _02241EC0 - 2 ; case 1 + .short _02241ECE - _02241EC0 - 2 ; case 2 + .short _02241ECE - _02241EC0 - 2 ; case 3 + .short _02241ECE - _02241EC0 - 2 ; case 4 +_02241ECA: + mov r0, #1 + pop {r3, r4, r5, pc} +_02241ECE: + ldr r5, _02241F84 ; =0x00000445 + mov r0, #0 + strb r0, [r3, r5] + mov r1, #1 + add r0, r5, #2 + strb r1, [r3, r0] + add r0, r5, #1 + strb r1, [r3, r0] + sub r0, r5, #1 + mov r1, #2 + strb r1, [r3, r0] + ldr r0, _02241F88 ; =0x0000085C + sub r5, #0xf + add r0, r3, r0 + add r1, r3, #0 + mov r2, #5 + add r3, r3, r5 + bl MOD12_02241050 + cmp r0, #1 + bne _02241F7C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241F7C +_02241F00: + ldr r0, _02241F88 ; =0x0000085C + ldr r5, [r3] + add r0, r3, r0 + ldr r3, _02241F8C ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r5, r3] + sub r3, #0xb + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _02241F7C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241F7C +_02241F22: + ldr r5, _02241F90 ; =0x0000043D + mov r0, #0 + strb r0, [r3, r5] + ldr r0, _02241F88 ; =0x0000085C + sub r5, r5, #7 + add r0, r3, r0 + add r1, r3, #0 + mov r2, #9 + add r3, r3, r5 + bl MOD12_02241050 + cmp r0, #1 + bne _02241F7C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241F7C +_02241F44: + ldr r0, _02241F88 ; =0x0000085C + ldr r5, [r3] + add r0, r3, r0 + ldr r3, _02241F8C ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r5, r3] + sub r3, #0xb + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _02241F7C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241F7C +_02241F66: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0x3c + ble _02241F7C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241F7C +_02241F78: + mov r0, #1 + pop {r3, r4, r5, pc} +_02241F7C: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02241F80: .word 0x00000121 +_02241F84: .word 0x00000445 +_02241F88: .word 0x0000085C +_02241F8C: .word 0x00000127 +_02241F90: .word 0x0000043D + + thumb_func_start MOD12_02241F94 +MOD12_02241F94: ; 0x02241F94 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #4 + bhi _022420A0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02241FAC: ; jump table + .short _02241FB6 - _02241FAC - 2 ; case 0 + .short _02242028 - _02241FAC - 2 ; case 1 + .short _0224204A - _02241FAC - 2 ; case 2 + .short _0224206C - _02241FAC - 2 ; case 3 + .short _0224208E - _02241FAC - 2 ; case 4 +_02241FB6: + ldr r1, [r4] + ldr r0, _022420A8 ; =0x00000121 + ldrb r0, [r1, r0] + cmp r0, #6 + bhi _02241FDA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02241FCC: ; jump table + .short _02241FDA - _02241FCC - 2 ; case 0 + .short _02241FDE - _02241FCC - 2 ; case 1 + .short _02241FDE - _02241FCC - 2 ; case 2 + .short _02241FDA - _02241FCC - 2 ; case 3 + .short _02241FDA - _02241FCC - 2 ; case 4 + .short _02241FDE - _02241FCC - 2 ; case 5 + .short _02241FDE - _02241FCC - 2 ; case 6 +_02241FDA: + mov r0, #1 + pop {r3, r4, r5, pc} +_02241FDE: + ldr r1, _022420AC ; =0x00000445 + mov r0, #0 + strb r0, [r4, r1] + mov r2, #1 + add r0, r1, #2 + strb r2, [r4, r0] + add r0, r1, #1 + strb r2, [r4, r0] + add r0, r1, #0 + sub r0, #0x79 + ldrb r2, [r4, r0] + sub r0, r1, #7 + sub r1, #0x79 + strb r2, [r4, r0] + ldrb r0, [r4, r1] + bl FUN_020832DC + ldr r3, _022420B0 ; =0x00000442 + add r0, r0, #1 + strb r0, [r4, r3] + add r0, r3, #2 + mov r1, #3 + strb r1, [r4, r0] + ldr r0, _022420B4 ; =0x0000085C + sub r3, #0xc + add r0, r4, r0 + add r1, r4, #0 + mov r2, #5 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _022420A4 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022420A4 +_02242028: + ldr r0, _022420B4 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _022420B8 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _022420A4 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022420A4 +_0224204A: + ldr r3, _022420BC ; =0x0000043D + mov r0, #1 + strb r0, [r4, r3] + ldr r0, _022420B4 ; =0x0000085C + sub r3, r3, #7 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #9 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _022420A4 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022420A4 +_0224206C: + ldr r0, _022420B4 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _022420B8 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _022420A4 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022420A4 +_0224208E: + ldr r0, [r5, #4] + add r0, r0, #1 + str r0, [r5, #4] + cmp r0, #0x5a + ble _022420A4 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022420A4 +_022420A0: + mov r0, #1 + pop {r3, r4, r5, pc} +_022420A4: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022420A8: .word 0x00000121 +_022420AC: .word 0x00000445 +_022420B0: .word 0x00000442 +_022420B4: .word 0x0000085C +_022420B8: .word 0x00000127 +_022420BC: .word 0x0000043D + + thumb_func_start MOD12_022420C0 +MOD12_022420C0: ; 0x022420C0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #4 + bls _022420CE + b _022421D2 +_022420CE: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022420DA: ; jump table + .short _022420E4 - _022420DA - 2 ; case 0 + .short _0224215A - _022420DA - 2 ; case 1 + .short _0224217C - _022420DA - 2 ; case 2 + .short _0224219E - _022420DA - 2 ; case 3 + .short _022421C0 - _022420DA - 2 ; case 4 +_022420E4: + ldr r1, [r4] + ldr r0, _022421DC ; =0x00000121 + ldrb r0, [r1, r0] + cmp r0, #8 + bhi _0224210C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022420FA: ; jump table + .short _02242110 - _022420FA - 2 ; case 0 + .short _0224210C - _022420FA - 2 ; case 1 + .short _02242110 - _022420FA - 2 ; case 2 + .short _0224210C - _022420FA - 2 ; case 3 + .short _0224210C - _022420FA - 2 ; case 4 + .short _0224210C - _022420FA - 2 ; case 5 + .short _0224210C - _022420FA - 2 ; case 6 + .short _02242110 - _022420FA - 2 ; case 7 + .short _02242110 - _022420FA - 2 ; case 8 +_0224210C: + mov r0, #1 + pop {r3, r4, r5, pc} +_02242110: + ldr r1, _022421E0 ; =0x00000445 + mov r0, #0 + strb r0, [r4, r1] + mov r2, #1 + add r0, r1, #2 + strb r2, [r4, r0] + add r0, r1, #1 + strb r2, [r4, r0] + add r0, r1, #0 + sub r0, #0x79 + ldrb r2, [r4, r0] + sub r0, r1, #7 + sub r1, #0x79 + strb r2, [r4, r0] + ldrb r0, [r4, r1] + bl FUN_020832DC + ldr r3, _022421E4 ; =0x00000442 + add r0, r0, #1 + strb r0, [r4, r3] + add r0, r3, #2 + mov r1, #4 + strb r1, [r4, r0] + ldr r0, _022421E8 ; =0x0000085C + sub r3, #0xc + add r0, r4, r0 + add r1, r4, #0 + mov r2, #5 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _022421D6 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022421D6 +_0224215A: + ldr r0, _022421E8 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _022421EC ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _022421D6 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022421D6 +_0224217C: + ldr r3, _022421F0 ; =0x0000043D + mov r0, #2 + strb r0, [r4, r3] + ldr r0, _022421E8 ; =0x0000085C + sub r3, r3, #7 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #9 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _022421D6 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022421D6 +_0224219E: + ldr r0, _022421E8 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _022421EC ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _022421D6 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022421D6 +_022421C0: + ldr r0, [r5, #4] + add r0, r0, #1 + str r0, [r5, #4] + cmp r0, #0xf + ble _022421D6 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022421D6 +_022421D2: + mov r0, #1 + pop {r3, r4, r5, pc} +_022421D6: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_022421DC: .word 0x00000121 +_022421E0: .word 0x00000445 +_022421E4: .word 0x00000442 +_022421E8: .word 0x0000085C +_022421EC: .word 0x00000127 +_022421F0: .word 0x0000043D + + thumb_func_start MOD12_022421F4 +MOD12_022421F4: ; 0x022421F4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02242206 + cmp r0, #1 + beq _02242222 + b _02242244 +_02242206: + ldr r0, _0224224C ; =0x0000085C + ldr r3, _02242250 ; =0x00000436 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #7 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02242248 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02242248 +_02242222: + ldr r0, _0224224C ; =0x0000085C + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _02242254 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _02242248 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02242248 +_02242244: + mov r0, #1 + pop {r3, r4, r5, pc} +_02242248: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224224C: .word 0x0000085C +_02242250: .word 0x00000436 +_02242254: .word 0x00000127 + + thumb_func_start MOD12_02242258 +MOD12_02242258: ; 0x02242258 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #3 + bhi _02242320 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02242270: ; jump table + .short _02242278 - _02242270 - 2 ; case 0 + .short _022422C0 - _02242270 - 2 ; case 1 + .short _022422E2 - _02242270 - 2 ; case 2 + .short _022422FE - _02242270 - 2 ; case 3 +_02242278: + ldr r1, _02242328 ; =0x00000445 + mov r0, #0 + strb r0, [r4, r1] + mov r2, #1 + add r0, r1, #2 + strb r2, [r4, r0] + add r0, r1, #1 + strb r2, [r4, r0] + add r0, r1, #0 + sub r0, #0xd + ldrb r2, [r4, r0] + sub r0, r1, #7 + sub r1, #0xd + strb r2, [r4, r0] + ldrb r0, [r4, r1] + bl FUN_020832DC + ldr r3, _0224232C ; =0x00000442 + add r0, r0, #1 + strb r0, [r4, r3] + add r0, r3, #2 + mov r2, #5 + strb r2, [r4, r0] + ldr r0, _02242330 ; =0x0000085C + sub r3, #0xc + add r0, r4, r0 + add r1, r4, #0 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02242324 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02242324 +_022422C0: + ldr r0, _02242330 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _02242334 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02242324 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02242324 +_022422E2: + ldr r0, _02242330 ; =0x0000085C + ldr r3, _02242338 ; =0x00000436 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #8 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02242324 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02242324 +_022422FE: + ldr r0, _02242330 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _02242334 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02242324 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02242324 +_02242320: + mov r0, #1 + pop {r3, r4, r5, pc} +_02242324: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02242328: .word 0x00000445 +_0224232C: .word 0x00000442 +_02242330: .word 0x0000085C +_02242334: .word 0x00000127 +_02242338: .word 0x00000436 + + thumb_func_start MOD12_0224233C +MOD12_0224233C: ; 0x0224233C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _0224234E + cmp r0, #1 + beq _02242386 + b _022423A8 +_0224234E: + ldr r5, _022423B0 ; =0x00000445 + mov r0, #0 + strb r0, [r3, r5] + add r1, r5, #2 + strb r0, [r3, r1] + add r1, r5, #1 + strb r0, [r3, r1] + add r1, r5, #0 + sub r1, #0x79 + ldrb r2, [r3, r1] + sub r1, r5, #7 + strb r2, [r3, r1] + sub r1, r5, #1 + strb r0, [r3, r1] + ldr r0, _022423B4 ; =0x0000085C + sub r5, #0xf + add r0, r3, r0 + add r1, r3, #0 + mov r2, #5 + add r3, r3, r5 + bl MOD12_02241050 + cmp r0, #1 + bne _022423AC + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _022423AC +_02242386: + ldr r0, _022423B4 ; =0x0000085C + ldr r5, [r3] + add r0, r3, r0 + ldr r3, _022423B8 ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r5, r3] + sub r3, #0xb + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _022423AC + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _022423AC +_022423A8: + mov r0, #1 + pop {r3, r4, r5, pc} +_022423AC: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022423B0: .word 0x00000445 +_022423B4: .word 0x0000085C +_022423B8: .word 0x00000127 + + thumb_func_start MOD12_022423BC +MOD12_022423BC: ; 0x022423BC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _022423D2 + cmp r0, #1 + beq _022423EC + cmp r0, #2 + beq _0224240E + b _02242428 +_022423D2: + ldr r0, _0224244C ; =0x0000085C + add r1, r2, #0 + add r0, r2, r0 + mov r2, #0xa + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _02242446 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02242446 +_022423EC: + ldr r0, _0224244C ; =0x0000085C + ldr r3, [r2] + ldr r5, _02242450 ; =0x00000127 + add r0, r2, r0 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _02242446 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02242446 +_0224240E: + ldr r0, _0224244C ; =0x0000085C + add r1, r2, #0 + add r0, r2, r0 + mov r2, #4 + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _02242446 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02242446 +_02242428: + ldr r0, _0224244C ; =0x0000085C + ldr r3, [r2] + ldr r4, _02242450 ; =0x00000127 + add r0, r2, r0 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02242446 + mov r0, #3 + pop {r3, r4, r5, pc} +_02242446: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0224244C: .word 0x0000085C +_02242450: .word 0x00000127 + + thumb_func_start MOD12_02242454 +MOD12_02242454: ; 0x02242454 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r7, r5, #0 + mov r4, #0 + add r7, #0xd8 + b _022424C6 +_02242462: + mov r0, #0xf3 + add r1, r5, r4 + lsl r0, r0, #2 + ldrb r6, [r1, r0] + lsl r0, r6, #4 + add r0, r5, r0 + add r0, #0xd8 + ldr r0, [r0] + cmp r0, #0 + beq _0224247A + bl ErrorHandling +_0224247A: + mov r1, #0x32 + mov r0, #0x18 + lsl r1, r1, #6 + bl FUN_02016998 + lsl r2, r6, #4 + add r1, r5, r2 + add r1, #0xd8 + str r0, [r1] + add r0, r7, r2 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #6 + ldr r1, _022424D0 ; =0x02246634 + mul r0, r4 + ldrsh r1, [r1, r0] + lsl r2, r6, #2 + str r1, [sp, #8] + ldr r1, _022424D0 ; =0x02246634 + add r0, r1, r0 + mov r1, #2 + ldrsh r1, [r0, r1] + str r1, [sp, #0xc] + mov r1, #4 + ldrsh r0, [r0, r1] + add r1, r4, #0 + str r0, [sp, #0x10] + ldr r3, [r5, #0x10] + ldr r0, [r5, #0x14] + ldr r2, [r3, r2] + mov r3, #2 + bl FUN_02082E64 + lsl r1, r6, #2 + add r1, r5, r1 + str r0, [r1, #0x18] + add r4, r4, #1 +_022424C6: + cmp r4, #4 + blt _02242462 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_022424D0: .word 0x02246634 + + thumb_func_start MOD12_022424D4 +MOD12_022424D4: ; 0x022424D4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 + add r7, r6, #0 +_022424DE: + ldr r0, [r5, #8] + bl FUN_02007534 + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + bl FUN_02016A18 + add r0, r4, #0 + add r0, #0xc8 + add r6, r6, #1 + str r7, [r0] + add r5, r5, #4 + add r4, #0x10 + cmp r6, #4 + blt _022424DE + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02242500 +MOD12_02242500: ; 0x02242500 + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r1, #0 + add r4, r0, #0 + add r5, r2, #0 + cmp r6, #0 + beq _02242516 + cmp r5, #0 + bne _02242516 + bl ErrorHandling +_02242516: + cmp r6, #3 + bhi _022425EC + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02242526: ; jump table + .short _022425F0 - _02242526 - 2 ; case 0 + .short _0224252E - _02242526 - 2 ; case 1 + .short _02242552 - _02242526 - 2 ; case 2 + .short _02242596 - _02242526 - 2 ; case 3 +_0224252E: + mov r2, #0x12 + lsl r2, r2, #4 + ldr r3, [r4] + add r1, r2, #1 + ldrb r0, [r3, r2] + add r2, #0x51 + ldrb r1, [r3, r1] + ldrb r2, [r3, r2] + bl FUN_02083228 + add r4, #0xc8 + add r2, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200B278 + add sp, #8 + pop {r4, r5, r6, pc} +_02242552: + ldrb r6, [r5] + ldr r3, [r4] + mov r0, #1 + lsl r2, r6, #2 + str r0, [sp] + mov r0, #2 + add r2, r3, r2 + add r6, r3, r6 + mov r3, #0x42 + str r0, [sp, #4] + add r0, r4, #0 + lsl r3, r3, #2 + add r0, #0xc8 + add r2, #0xe8 + ldrb r3, [r6, r3] + ldr r0, [r0] + ldr r2, [r2] + mov r1, #0 + bl FUN_0200ABB4 + ldrb r0, [r5] + ldr r1, [r4, #0x10] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r4, #0xc8 + add r2, r0, #0 + ldr r0, [r4] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r4, r5, r6, pc} +_02242596: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + add r0, r4, #0 + add r0, #0xc8 + ldrb r2, [r5, #4] + ldr r0, [r0] + bl FUN_0200AD38 + ldrb r6, [r5] + ldr r3, [r4] + mov r1, #1 + lsl r2, r6, #2 + add r2, r3, r2 + add r6, r3, r6 + mov r3, #0x42 + str r1, [sp] + mov r0, #2 + str r0, [sp, #4] + add r0, r4, #0 + lsl r3, r3, #2 + add r0, #0xc8 + add r2, #0xe8 + ldrb r3, [r6, r3] + ldr r0, [r0] + ldr r2, [r2] + bl FUN_0200ABB4 + ldrb r0, [r5] + ldr r1, [r4, #0x10] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r4, #0xc8 + add r2, r0, #0 + ldr r0, [r4] + mov r1, #2 + bl FUN_0200ACF8 + add sp, #8 + pop {r4, r5, r6, pc} +_022425EC: + bl ErrorHandling +_022425F0: + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_022425F4 +MOD12_022425F4: ; 0x022425F4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + ldr r1, [r5] + ldr r0, _02242670 ; =0x00000171 + add r7, r2, #0 + ldrb r0, [r1, r0] + str r3, [sp, #0xc] + cmp r0, #0 + bne _02242616 + ldr r0, _02242674 ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02024FF4 + add r4, r0, #0 + b _02242618 +_02242616: + mov r4, #1 +_02242618: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_0200A914 + add r6, r0, #0 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x28] + add r0, r5, #0 + bl MOD12_02242500 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xc8 + add r1, #0xcc + ldr r0, [r0] + ldr r1, [r1] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + add r0, #0x34 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + add r2, r5, #0 + add r0, r5, #0 + str r3, [sp, #8] + add r2, #0xcc + ldr r2, [r2] + add r0, #0x34 + mov r1, #1 + bl FUN_0201BD84 + mov r1, #0xe6 + lsl r1, r1, #2 + strb r0, [r5, r1] + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02242670: .word 0x00000171 +_02242674: .word 0x00001988 + + thumb_func_start MOD12_02242678 +MOD12_02242678: ; 0x02242678 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + cmp r4, #7 + blo _0224268A + bl ErrorHandling +_0224268A: + lsl r3, r4, #2 + ldr r2, _022426A4 ; =0x0224664C + add r0, r5, #0 + ldr r4, _022426A8 ; =0x0224664E + ldrh r2, [r2, r3] + str r6, [sp] + add r5, #0xc4 + ldrb r3, [r4, r3] + ldr r1, [r5] + bl MOD12_022425F4 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_022426A4: .word 0x0224664C +_022426A8: .word 0x0224664E + + thumb_func_start MOD12_022426AC +MOD12_022426AC: ; 0x022426AC + mov r1, #0xe6 + lsl r1, r1, #2 + ldr r3, _022426B8 ; =0x0201BD71 + ldrb r0, [r0, r1] + bx r3 + nop +_022426B8: .word 0x0201BD71 + + thumb_func_start MOD12_022426BC +MOD12_022426BC: ; 0x022426BC + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x18 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #0x16 + 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, #0x18 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #0x15 + mov r3, #3 + bl FUN_020068C8 + ldr r0, [r5, #0x30] + mov r1, #1 + bl FUN_02018744 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0x2d + mov r2, #0x22 + mov r3, #0x18 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xd0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0x2d + mov r2, #0x23 + mov r3, #0x18 + bl FUN_020030E8 + ldr r1, [r5] + ldr r0, _02242784 ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02025084 + add r4, r0, #0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r1, #1 + ldr r0, [r5, #0x30] + add r2, r1, #0 + mov r3, #0xf + bl FUN_0200CD68 + add r0, r4, #0 + bl FUN_0200CD64 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xe0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0x26 + mov r3, #0x18 + bl FUN_020030E8 + ldr r0, [r5, #0x30] + mov r1, #2 + bl FUN_02018744 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_02242784: .word 0x00001988 + + thumb_func_start MOD12_02242788 +MOD12_02242788: ; 0x02242788 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0224278C +MOD12_0224278C: ; 0x0224278C + push {r3, r4, lr} + sub sp, #0x1c + add r4, r0, #0 + ldr r0, _022427D4 ; =0x000080EA + add r2, r4, #0 + str r0, [sp] + sub r3, r0, #1 + str r3, [sp, #4] + str r3, [sp, #8] + add r2, #0xd0 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + ldr r2, [r2] + bl MOD12_022316F8 + ldr r0, _022427D4 ; =0x000080EA + mov r1, #0xc8 + str r0, [sp] + sub r3, r0, #1 + str r3, [sp, #4] + str r3, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + mov r0, #3 + str r0, [sp, #0x14] + ldr r0, _022427D8 ; =0x0000C350 + add r1, #0x50 + str r0, [sp, #0x18] + add r0, r4, r1 + ldr r1, [r4, #0x28] + ldr r2, [r4, #0x2c] + bl MOD12_022317C8 + add sp, #0x1c + pop {r3, r4, pc} + .align 2, 0 +_022427D4: .word 0x000080EA +_022427D8: .word 0x0000C350 + + thumb_func_start MOD12_022427DC +MOD12_022427DC: ; 0x022427DC + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0x46 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD12_0223185C + ldr r1, _02242800 ; =0x000080E9 + str r1, [sp] + ldr r0, [r4, #0x2c] + add r2, r1, #1 + add r3, r1, #0 + bl MOD12_02231780 + add sp, #4 + pop {r3, r4, pc} + nop +_02242800: .word 0x000080E9 + + thumb_func_start MOD12_02242804 +MOD12_02242804: ; 0x02242804 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x18 + str r0, [sp, #0xc] + ldr r2, [r6, #0x30] + mov r0, #0x2d + mov r1, #0x1a + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r1, #0x18 + str r1, [sp, #0xc] + ldr r2, [r6, #0x30] + mov r0, #0x2d + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x18 + str r0, [sp, #0xc] + ldr r2, [r6, #0x30] + mov r0, #0x2d + mov r1, #0x19 + mov r3, #2 + bl FUN_020068C8 + ldr r0, [r6, #0x30] + mov r1, #1 + bl FUN_02018744 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r6, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0x2d + mov r2, #0x26 + mov r3, #0x18 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xd0 + str r0, [sp, #8] + add r0, r6, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0x2d + mov r2, #0x23 + mov r3, #0x18 + bl FUN_020030E8 + ldr r1, [r6] + ldr r0, _022429D0 ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02025084 + add r4, r0, #0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r1, #1 + ldr r0, [r6, #0x30] + add r2, r1, #0 + mov r3, #0xf + bl FUN_0200CD68 + add r0, r4, #0 + bl FUN_0200CD64 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xe0 + str r0, [sp, #8] + add r0, r6, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0x26 + mov r3, #0x18 + bl FUN_020030E8 + mov r0, #0xc + mov r1, #0x18 + bl FUN_020219F4 + add r4, r6, #0 + add r7, r0, #0 + mov r5, #0 + add r4, #0x34 +_022428E6: + mov r0, #0xf3 + add r1, r6, r5 + lsl r0, r0, #2 + ldrb r0, [r1, r0] + ldr r1, [r6, #0x10] + add r2, r7, #0 + lsl r0, r0, #2 + str r0, [sp, #0x10] + ldr r0, [r1, r0] + mov r1, #0x76 + bl FUN_020671BC + add r0, r5, #1 + lsl r0, r0, #4 + str r0, [sp, #0x14] + add r0, r4, r0 + mov r1, #0 + bl FUN_02019620 + add r0, r5, #5 + lsl r0, r0, #4 + str r0, [sp, #0x18] + add r0, r4, r0 + mov r1, #0 + bl FUN_02019620 + mov r0, #3 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _022429D4 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + add r2, r7, #0 + add r0, r4, r0 + add r3, r1, #0 + bl FUN_0201BDE0 + mov r0, #3 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _022429D4 ; =0x00010200 + ldr r2, [sp, #0x10] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r3, [r6] + ldr r0, [sp, #0x18] + add r2, r3, r2 + add r2, #0xe8 + mov r1, #0 + ldr r2, [r2] + add r0, r4, r0 + add r3, r1, #0 + bl FUN_0201BDE0 + add r5, r5, #1 + cmp r5, #4 + blt _022428E6 + add r0, r7, #0 + bl FUN_02021A20 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _022429D8 ; =0xFFFF1FFF + mov r5, #0x3f + and r1, r0 + mov r0, #6 + lsl r0, r0, #0xc + orr r0, r1 + add r1, r2, #0 + add r1, #0x48 + str r0, [r2] + ldrh r0, [r1] + mov r3, #0x1f + bic r0, r5 + add r4, r0, #0 + orr r4, r3 + mov r0, #0x20 + orr r4, r0 + strh r4, [r1] + ldrh r6, [r1] + ldr r4, _022429DC ; =0xFFFFC0FF + lsl r3, r3, #8 + and r4, r6 + orr r4, r3 + lsl r3, r0, #8 + orr r3, r4 + strh r3, [r1] + add r3, r2, #0 + add r3, #0x4a + ldrh r4, [r3] + mov r1, #0x1b + bic r4, r5 + orr r1, r4 + orr r0, r1 + strh r0, [r3] + add r0, r2, #0 + mov r3, #0xff + add r0, #0x40 + strh r3, [r0] + add r0, r2, #0 + mov r1, #0 + add r0, #0x44 + strh r1, [r0] + add r0, r2, #0 + add r0, #0x42 + strh r3, [r0] + add r2, #0x46 + strh r1, [r2] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022429D0: .word 0x00001988 +_022429D4: .word 0x00010200 +_022429D8: .word 0xFFFF1FFF +_022429DC: .word 0xFFFFC0FF + + thumb_func_start MOD12_022429E0 +MOD12_022429E0: ; 0x022429E0 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r3, #0 + mov r0, #1 + str r3, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #1 + mov r2, #2 + bl FUN_02003914 + mov r3, #0 + mov r0, #1 + str r3, [sp] + lsl r0, r0, #8 + add r4, #0xd0 + str r0, [sp, #4] + ldr r0, [r4] + mov r1, #3 + mov r2, #2 + bl FUN_02003914 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD12_02242A18 +MOD12_02242A18: ; 0x02242A18 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02242A1C +MOD12_02242A1C: ; 0x02242A1C + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, _02242A68 ; =0x000080E9 + mov r1, #2 + str r0, [sp, #0x14] + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + ldr r2, [r4, #0x28] + ldr r3, [r4, #0x2c] + bl FUN_0200C0DC + add r0, r4, #0 + bl MOD12_02242C38 + add r0, r4, #0 + bl MOD12_02242A90 + add r0, r4, #0 + bl MOD12_02242EE0 + add r0, r4, #0 + bl MOD12_02242FF8 + add sp, #0x18 + pop {r4, pc} + nop +_02242A68: .word 0x000080E9 + + thumb_func_start MOD12_02242A6C +MOD12_02242A6C: ; 0x02242A6C + push {r4, lr} + add r4, r0, #0 + bl MOD12_02242BCC + add r0, r4, #0 + bl MOD12_02242F94 + add r0, r4, #0 + bl MOD12_022431F8 + add r0, r4, #0 + bl MOD12_02242C88 + add r0, r4, #0 + bl MOD12_02243074 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_02242A90 +MOD12_02242A90: ; 0x02242A90 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + add r5, r0, #0 + 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] + ldr r0, _02242BB4 ; =0x000080EB + mov r1, #2 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + ldr r2, [r5, #0x28] + ldr r3, [r5, #0x2c] + bl FUN_0200C0DC + bl FUN_0206B894 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _02242BB8 ; =0x000080EA + mov r2, #0x13 + str r0, [sp, #4] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + bl FUN_0200C124 + bl FUN_0206B8A0 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _02242BB8 ; =0x000080EA + mov r2, #0x13 + str r0, [sp, #4] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + bl FUN_0200C13C + ldr r4, _02242BBC ; =0x0224669C + add r3, sp, #0x18 + mov r2, #6 +_02242AF6: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02242AF6 + ldr r0, [r4] + mov r7, #0 + str r0, [r3] + add r6, r7, #0 + add r4, r5, #0 +_02242B08: + ldr r0, [r5] + ldr r0, [r0, r6] + bl FUN_0206B6C8 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _02242BB8 ; =0x000080EA + mov r2, #0x13 + add r0, r7, r0 + str r0, [sp, #8] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + bl FUN_0200C978 + ldr r0, _02242BB8 ; =0x000080EA + add r2, sp, #0x18 + add r0, r7, r0 + str r0, [sp, #0x2c] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + bl FUN_0200C154 + mov r1, #0x4e + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200C5C0 + ldr r0, [r5] + ldr r0, [r0, r6] + bl FUN_0206B87C + add r1, r0, #0 + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r0, [r0] + bl FUN_020202DC + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200C5A8 + add r7, r7, #1 + add r6, r6, #4 + add r4, r4, #4 + cmp r7, #4 + blt _02242B08 + ldr r4, _02242BC0 ; =0x02246614 + mov r6, #0 + mov r7, #2 +_02242B7A: + mov r0, #0xf3 + add r1, r5, r6 + lsl r0, r0, #2 + ldrb r0, [r1, r0] + ldrsh r2, [r4, r7] + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + ldrsh r1, [r4, r1] + bl FUN_0200C714 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _02242B7A + ldr r0, _02242BC4 ; =MOD12_02242C1C + ldr r2, _02242BC8 ; =0x0000C738 + add r1, r5, #0 + bl FUN_0200CA44 + mov r1, #0x4d + lsl r1, r1, #2 + str r0, [r5, r1] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + nop +_02242BB4: .word 0x000080EB +_02242BB8: .word 0x000080EA +_02242BBC: .word 0x0224669C +_02242BC0: .word 0x02246614 +_02242BC4: .word MOD12_02242C1C +_02242BC8: .word 0x0000C738 + + thumb_func_start MOD12_02242BCC +MOD12_02242BCC: ; 0x02242BCC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6, #0x2c] + ldr r1, _02242C14 ; =0x000080EA + bl FUN_0200C378 + ldr r0, [r6, #0x2c] + ldr r1, _02242C14 ; =0x000080EA + bl FUN_0200C388 + ldr r0, [r6, #0x2c] + ldr r1, _02242C18 ; =0x000080EB + bl FUN_0200C368 + mov r7, #0x4e + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_02242BF0: + ldr r1, _02242C14 ; =0x000080EA + ldr r0, [r6, #0x2c] + add r1, r4, r1 + bl FUN_0200C358 + ldr r0, [r5, r7] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02242BF0 + mov r0, #0x4d + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_0200CAB4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02242C14: .word 0x000080EA +_02242C18: .word 0x000080EB + + thumb_func_start MOD12_02242C1C +MOD12_02242C1C: ; 0x02242C1C + push {r4, r5, r6, lr} + mov r6, #0x4e + add r5, r1, #0 + mov r4, #0 + lsl r6, r6, #2 +_02242C26: + ldr r0, [r5, r6] + bl FUN_0200C5A8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02242C26 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_02242C38 +MOD12_02242C38: ; 0x02242C38 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02242C80 ; =0x000080EF + mov r2, #0x2e + str r0, [sp, #8] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + mov r3, #0x51 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02242C84 ; =0x000080EC + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + mov r3, #0x50 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02242C84 ; =0x000080EC + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + mov r3, #0x4f + bl FUN_0200C13C + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02242C80: .word 0x000080EF +_02242C84: .word 0x000080EC + + thumb_func_start MOD12_02242C88 +MOD12_02242C88: ; 0x02242C88 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x2c] + ldr r1, _02242CA8 ; =0x000080EF + bl FUN_0200C358 + ldr r0, [r4, #0x2c] + ldr r1, _02242CAC ; =0x000080EC + bl FUN_0200C378 + ldr r0, [r4, #0x2c] + ldr r1, _02242CAC ; =0x000080EC + bl FUN_0200C388 + pop {r4, pc} + nop +_02242CA8: .word 0x000080EF +_02242CAC: .word 0x000080EC + + thumb_func_start MOD12_02242CB0 +MOD12_02242CB0: ; 0x02242CB0 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x18 + mov r1, #8 + bl FUN_02016998 + mov r1, #0 + mov r2, #8 + add r6, r0, #0 + bl MI_CpuFill8 + str r5, [r6] + mov r4, #0 +_02242CCA: + add r0, r5, #0 + bl MOD12_02242D3C + add r4, r4, #1 + cmp r4, #8 + blt _02242CCA + ldr r0, _02242CE4 ; =MOD12_02242CF8 + ldr r2, _02242CE8 ; =0x0000C35A + add r1, r6, #0 + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + nop +_02242CE4: .word MOD12_02242CF8 +_02242CE8: .word 0x0000C35A + + thumb_func_start MOD12_02242CEC +MOD12_02242CEC: ; 0x02242CEC + ldr r1, _02242CF4 ; =0x0000127D + mov r2, #1 + strb r2, [r0, r1] + bx lr + .align 2, 0 +_02242CF4: .word 0x0000127D + + thumb_func_start MOD12_02242CF8 +MOD12_02242CF8: ; 0x02242CF8 + push {r4, lr} + add r4, r0, #0 + ldr r3, [r1] + ldr r0, _02242D38 ; =0x0000127D + ldrb r2, [r3, r0] + cmp r2, #1 + bne _02242D14 + add r0, r1, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} +_02242D14: + add r0, r0, #1 + ldrb r0, [r3, r0] + cmp r0, #0x30 + bhs _02242D34 + mov r0, #4 + ldrsh r2, [r1, r0] + add r2, r2, #1 + strh r2, [r1, #4] + ldrsh r0, [r1, r0] + cmp r0, #6 + ble _02242D34 + mov r0, #0 + strh r0, [r1, #4] + ldr r0, [r1] + bl MOD12_02242D3C +_02242D34: + pop {r4, pc} + nop +_02242D38: .word 0x0000127D + + thumb_func_start MOD12_02242D3C +MOD12_02242D3C: ; 0x02242D3C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x18 + mov r1, #0x20 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x20 + bl MI_CpuFill8 + str r5, [r4] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + ldr r2, _02242DE8 ; =0x02246668 + bl FUN_0200C154 + str r0, [r4, #4] + ldr r0, [r5] + bl FUN_02082878 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldr r0, [r5] + add r6, #0x14 + bl FUN_02082878 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1a + sub r1, r1, r2 + mov r0, #0x1a + ror r1, r0 + add r2, r2, r1 + lsl r0, r6, #8 + lsl r1, r6, #0x10 + sub r2, #0x10 + str r0, [r4, #8] + lsl r0, r2, #8 + str r0, [r4, #0xc] + lsl r2, r2, #0x10 + ldr r0, [r4, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + ldr r0, [r5] + bl FUN_02082878 + lsr r2, r0, #0x1f + lsl r1, r0, #0x18 + sub r1, r1, r2 + mov r0, #0x18 + ror r1, r0 + add r0, r2, r1 + add r0, #0x30 + str r0, [r4, #0x14] + ldr r0, [r5] + bl FUN_02082878 + mov r1, #3 + lsl r1, r1, #8 + bl _s32_div_f + str r1, [r4, #0x18] + ldr r0, [r5] + bl FUN_02082878 + mov r1, #0x18 + bl _s32_div_f + add r1, #0x10 + strh r1, [r4, #0x12] + ldr r0, [r4, #4] + bl FUN_0200C5A8 + ldr r0, _02242DEC ; =MOD12_02242DF8 + ldr r2, _02242DF0 ; =0x0000C35B + add r1, r4, #0 + bl FUN_0200CA44 + ldr r0, _02242DF4 ; =0x0000127E + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + pop {r4, r5, r6, pc} + nop +_02242DE8: .word 0x02246668 +_02242DEC: .word MOD12_02242DF8 +_02242DF0: .word 0x0000C35B +_02242DF4: .word 0x0000127E + + thumb_func_start MOD12_02242DF8 +MOD12_02242DF8: ; 0x02242DF8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + ldr r1, _02242ED8 ; =0x0000127D + ldrb r1, [r0, r1] + cmp r1, #1 + beq _02242E2C + ldr r2, [r4, #0xc] + asr r1, r2, #7 + lsr r1, r1, #0x18 + add r1, r2, r1 + asr r1, r1, #8 + cmp r1, #0xd0 + bgt _02242E2C + mov r2, #0x10 + ldrsh r1, [r4, r2] + ldr r3, [r4, #8] + sub r2, #0x20 + add r3, r3, r1 + asr r1, r3, #7 + lsr r1, r1, #0x18 + add r1, r3, r1 + asr r1, r1, #8 + cmp r1, r2 + bge _02242E48 +_02242E2C: + ldr r1, _02242EDC ; =0x0000127E + ldrb r2, [r0, r1] + sub r2, r2, #1 + strb r2, [r0, r1] + ldr r0, [r4, #4] + bl FUN_0200C3DC + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} +_02242E48: + ldr r2, [r4, #0x1c] + ldr r1, [r4, #0x18] + add r0, r4, #0 + add r2, r2, r1 + mov r1, #0x5a + lsl r1, r1, #0xa + add r0, #0x1c + str r2, [r4, #0x1c] + cmp r2, r1 + blt _02242E62 + ldr r2, [r0] + sub r1, r2, r1 + str r1, [r0] +_02242E62: + mov r0, #0x12 + ldrsh r0, [r4, r0] + ldr r1, [r4, #0x1c] + lsl r5, r0, #0xc + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + lsl r0, r0, #8 + lsr r0, r0, #0x10 + bl FUN_0201B93C + asr r1, r0, #0x1f + asr r3, r5, #0x1f + add r2, r5, #0 + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r5, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r5, #0xc + orr r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + strh r0, [r4, #0x10] + ldr r1, [r4, #8] + ldr r0, [r4, #0x14] + sub r0, r1, r0 + str r0, [r4, #8] + ldr r1, [r4, #0xc] + lsr r0, r2, #2 + add r2, r1, r0 + str r2, [r4, #0xc] + ldr r3, [r4, #8] + ldr r0, [r4, #4] + asr r1, r3, #7 + lsr r1, r1, #0x18 + add r1, r3, r1 + asr r3, r1, #8 + mov r1, #0x10 + ldrsh r1, [r4, r1] + add r1, r3, r1 + asr r3, r2, #7 + lsr r3, r3, #0x18 + add r3, r2, r3 + lsl r1, r1, #0x10 + lsl r2, r3, #8 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + ldr r0, [r4, #4] + bl FUN_0200C5A8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02242ED8: .word 0x0000127D +_02242EDC: .word 0x0000127E + + thumb_func_start MOD12_02242EE0 +MOD12_02242EE0: ; 0x02242EE0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02242F84 ; =0x000080EE + mov r2, #0x2e + str r0, [sp, #8] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + mov r3, #0x54 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02242F88 ; =0x000080EB + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + mov r3, #0x53 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02242F88 ; =0x000080EB + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + mov r3, #0x52 + bl FUN_0200C13C + mov r7, #0x52 + mov r6, #0 + add r4, r5, #0 + lsl r7, r7, #2 +_02242F2C: + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + ldr r2, _02242F8C ; =0x022466D0 + bl FUN_0200C154 + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + bl FUN_0200C5A8 + ldr r0, [r4, r7] + mov r1, #0 + bl FUN_0200C644 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _02242F2C + ldr r4, _02242F90 ; =0x02246624 + mov r6, #0 + mov r7, #2 +_02242F5A: + mov r0, #0xf3 + add r1, r5, r6 + lsl r0, r0, #2 + ldrb r0, [r1, r0] + ldrsh r2, [r4, r7] + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + ldrsh r1, [r4, r1] + bl FUN_0200C714 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _02242F5A + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02242F84: .word 0x000080EE +_02242F88: .word 0x000080EB +_02242F8C: .word 0x022466D0 +_02242F90: .word 0x02246624 + + thumb_func_start MOD12_02242F94 +MOD12_02242F94: ; 0x02242F94 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x2c] + ldr r1, _02242FC8 ; =0x000080EE + bl FUN_0200C358 + ldr r0, [r5, #0x2c] + ldr r1, _02242FCC ; =0x000080EB + bl FUN_0200C378 + ldr r0, [r5, #0x2c] + ldr r1, _02242FCC ; =0x000080EB + bl FUN_0200C388 + mov r6, #0x52 + mov r4, #0 + lsl r6, r6, #2 +_02242FB6: + ldr r0, [r5, r6] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02242FB6 + pop {r4, r5, r6, pc} + nop +_02242FC8: .word 0x000080EE +_02242FCC: .word 0x000080EB + + thumb_func_start MOD12_02242FD0 +MOD12_02242FD0: ; 0x02242FD0 + push {r3, r4, r5, lr} + mov r3, #0x52 + lsl r3, r3, #2 + lsl r4, r1, #2 + add r5, r0, r3 + ldr r0, [r5, r4] + add r1, r2, #0 + bl FUN_0200C5C0 + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_0200C644 + ldr r0, _02242FF4 ; =0x000005DD + bl FUN_020054C8 + pop {r3, r4, r5, pc} + nop +_02242FF4: .word 0x000005DD + + thumb_func_start MOD12_02242FF8 +MOD12_02242FF8: ; 0x02242FF8 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #0xb + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _02243068 ; =0x000080EC + mov r1, #2 + str r0, [sp, #0x14] + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + ldr r2, [r4, #0x28] + ldr r3, [r4, #0x2c] + bl FUN_0200C0DC + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0224306C ; =0x000080F0 + mov r2, #0x2e + str r0, [sp, #8] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + mov r3, #0x57 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02243070 ; =0x000080ED + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + mov r3, #0x56 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02243070 ; =0x000080ED + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + mov r3, #0x55 + bl FUN_0200C13C + add sp, #0x18 + pop {r4, pc} + nop +_02243068: .word 0x000080EC +_0224306C: .word 0x000080F0 +_02243070: .word 0x000080ED + + thumb_func_start MOD12_02243074 +MOD12_02243074: ; 0x02243074 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x2c] + ldr r1, _0224309C ; =0x000080EC + bl FUN_0200C368 + ldr r0, [r4, #0x2c] + ldr r1, _022430A0 ; =0x000080F0 + bl FUN_0200C358 + ldr r0, [r4, #0x2c] + ldr r1, _022430A4 ; =0x000080ED + bl FUN_0200C378 + ldr r0, [r4, #0x2c] + ldr r1, _022430A4 ; =0x000080ED + bl FUN_0200C388 + pop {r4, pc} + nop +_0224309C: .word 0x000080EC +_022430A0: .word 0x000080F0 +_022430A4: .word 0x000080ED + + thumb_func_start MOD12_022430A8 +MOD12_022430A8: ; 0x022430A8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r0, #0 + str r3, [sp] + cmp r2, #0 + beq _022430BE + cmp r2, #1 + beq _022430D2 + cmp r2, #2 + beq _022430EC + b _0224310C +_022430BE: + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0x56 + lsl r0, r0, #2 + add r2, r7, r0 + mov r0, #0x30 + mul r0, r1 + mov r6, #0 + add r4, r2, r0 + b _02243114 +_022430D2: + lsl r0, r1, #1 + add r2, r7, r0 + ldr r0, _022431F0 ; =0x0000041E + ldrsh r6, [r2, r0] + mov r0, #0x11 + str r0, [sp, #0x14] + mov r0, #0x86 + lsl r0, r0, #2 + add r2, r7, r0 + mov r0, #0x30 + mul r0, r1 + add r4, r2, r0 + b _02243114 +_022430EC: + lsl r0, r1, #1 + add r3, r7, r0 + ldr r0, _022431F0 ; =0x0000041E + ldrsh r2, [r3, r0] + add r0, #8 + ldrsh r0, [r3, r0] + add r6, r2, r0 + mov r0, #0x21 + str r0, [sp, #0x14] + mov r0, #0xb6 + lsl r0, r0, #2 + add r2, r7, r0 + mov r0, #0x30 + mul r0, r1 + add r4, r2, r0 + b _02243114 +_0224310C: + bl ErrorHandling + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_02243114: + ldr r0, [sp, #0x30] + add r6, #0x30 + lsl r0, r0, #5 + str r0, [sp, #0x10] + add r0, #0x20 + str r0, [sp, #0x10] + ldr r0, [sp] + asr r0, r0, #3 + lsr r1, r0, #0x1c + ldr r0, [sp] + add r1, r0, r1 + asr r0, r1, #4 + str r0, [sp, #0xc] + ldr r0, [sp] + lsr r2, r0, #0x1f + lsl r1, r0, #0x1c + sub r1, r1, r2 + mov r0, #0x1c + ror r1, r0 + add r0, r2, r1 + beq _02243144 + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] +_02243144: + ldr r0, [sp, #0xc] + cmp r0, #0xc + ble _0224314E + bl ErrorHandling +_0224314E: + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + cmp r0, #0 + ble _0224317A + add r5, r4, #0 +_0224315A: + ldr r0, [r5] + cmp r0, #0 + bne _0224316C + ldr r0, [r7, #0x28] + ldr r1, [r7, #0x2c] + ldr r2, _022431F4 ; =0x02246704 + bl FUN_0200C154 + str r0, [r5] +_0224316C: + ldr r0, [sp, #8] + add r5, r5, #4 + add r1, r0, #1 + ldr r0, [sp, #0xc] + str r1, [sp, #8] + cmp r1, r0 + blt _0224315A +_0224317A: + ldr r0, [sp] + mov r7, #0 + cmp r0, #0x10 + blt _022431A2 + ldr r0, [sp, #0x14] + add r5, r4, #0 + str r0, [sp, #4] + add r0, #0xf + str r0, [sp, #4] +_0224318C: + ldr r0, [r5] + ldr r1, [sp, #4] + bl FUN_0200C5C0 + ldr r0, [sp] + add r5, r5, #4 + sub r0, #0x10 + add r7, r7, #1 + str r0, [sp] + cmp r0, #0x10 + bge _0224318C +_022431A2: + ldr r0, [sp] + cmp r0, #0 + ble _022431BE + ldr r0, [sp, #0xc] + cmp r7, r0 + bge _022431BE + ldr r2, [sp, #0x14] + ldr r1, [sp] + lsl r0, r7, #2 + add r1, r2, r1 + ldr r0, [r4, r0] + sub r1, r1, #1 + bl FUN_0200C5C0 +_022431BE: + ldr r0, [sp, #0xc] + mov r5, #0 + cmp r0, #0 + ble _022431EA + ldr r0, [sp, #0x10] + lsl r0, r0, #0x10 + asr r7, r0, #0x10 +_022431CC: + lsl r1, r6, #0x10 + ldr r0, [r4] + asr r1, r1, #0x10 + add r2, r7, #0 + bl FUN_0200C714 + ldr r0, [r4] + bl FUN_0200C5A8 + ldr r0, [sp, #0xc] + add r5, r5, #1 + add r6, #0x10 + add r4, r4, #4 + cmp r5, r0 + blt _022431CC +_022431EA: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_022431F0: .word 0x0000041E +_022431F4: .word 0x02246704 + + thumb_func_start MOD12_022431F8 +MOD12_022431F8: ; 0x022431F8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r7, #0x86 + lsl r7, r7, #2 + str r0, [sp] + mov r0, #0 + add r6, r7, #0 + str r0, [sp, #4] + sub r6, #0xc0 +_0224320A: + ldr r5, [sp] + mov r4, #0 +_0224320E: + ldr r0, [r5, r6] + cmp r0, #0 + beq _02243218 + bl FUN_0200C3DC +_02243218: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02243222 + bl FUN_0200C3DC +_02243222: + mov r0, #0xb6 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + beq _02243230 + bl FUN_0200C3DC +_02243230: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xc + blt _0224320E + ldr r0, [sp] + add r0, #0x30 + str r0, [sp] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #4 + blt _0224320A + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0224324C +MOD12_0224324C: ; 0x0224324C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + mov r0, #0 + strb r0, [r7] + mov r0, #0x18 + mov r1, #0x14 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r5, [r4] + str r7, [r4, #4] + cmp r6, #0 + ldr r2, _0224329C ; =0x0000A028 + bne _02243286 + mov r0, #6 + lsl r0, r0, #0xc + str r0, [r4, #8] + str r0, [r4, #0xc] + ldr r0, _022432A0 ; =MOD12_022432A8 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02243286: + mov r0, #3 + lsl r0, r0, #0xc + str r0, [r4, #8] + mov r0, #9 + lsl r0, r0, #0xc + str r0, [r4, #0xc] + ldr r0, _022432A4 ; =MOD12_0224333C + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224329C: .word 0x0000A028 +_022432A0: .word MOD12_022432A8 +_022432A4: .word MOD12_0224333C + + thumb_func_start MOD12_022432A8 +MOD12_022432A8: ; 0x022432A8 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrb r0, [r1, #0x10] + cmp r0, #0 + bne _02243322 + mov r0, #1 + ldr r2, [r1, #8] + lsl r0, r0, #0xa + sub r2, r2, r0 + str r2, [r1, #8] + ldr r2, [r1, #0xc] + add r0, r2, r0 + str r0, [r1, #0xc] + mov r0, #3 + ldr r2, [r1, #8] + lsl r0, r0, #0xc + cmp r2, r0 + bgt _022432DA + str r0, [r1, #8] + mov r0, #9 + lsl r0, r0, #0xc + str r0, [r1, #0xc] + ldrb r0, [r1, #0x10] + add r0, r0, #1 + strb r0, [r1, #0x10] +_022432DA: + ldr r3, [r1] + ldr r2, _02243338 ; =0x00000851 + mov r0, #0 + strb r0, [r3, r2] + ldr r3, [r1, #8] + ldr r4, [r1] + asr r5, r3, #8 + add r3, r2, #1 + strb r5, [r4, r3] + ldr r4, [r1] + mov r5, #0xff + add r3, r2, #2 + strb r5, [r4, r3] + ldr r3, [r1, #0xc] + ldr r4, [r1] + asr r5, r3, #8 + add r3, r2, #3 + strb r5, [r4, r3] + ldr r4, [r1] + mov r5, #1 + add r3, r2, #4 + strb r5, [r4, r3] + ldr r3, [r1, #8] + ldr r4, [r1] + asr r5, r3, #8 + add r3, r2, #5 + strb r5, [r4, r3] + ldr r4, [r1] + add r3, r2, #6 + strb r0, [r4, r3] + ldr r0, [r1, #0xc] + ldr r1, [r1] + asr r3, r0, #8 + add r0, r2, #7 + strb r3, [r1, r0] + pop {r3, r4, r5, pc} +_02243322: + ldr r0, [r1, #4] + mov r2, #1 + strb r2, [r0] + add r0, r1, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_02243338: .word 0x00000851 + + thumb_func_start MOD12_0224333C +MOD12_0224333C: ; 0x0224333C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrb r0, [r1, #0x10] + cmp r0, #0 + bne _022433B2 + mov r0, #1 + ldr r2, [r1, #8] + lsl r0, r0, #0xa + add r2, r2, r0 + str r2, [r1, #8] + ldr r2, [r1, #0xc] + sub r0, r2, r0 + str r0, [r1, #0xc] + mov r0, #6 + ldr r2, [r1, #8] + lsl r0, r0, #0xc + cmp r2, r0 + blt _0224336A + str r0, [r1, #8] + str r0, [r1, #0xc] + ldrb r0, [r1, #0x10] + add r0, r0, #1 + strb r0, [r1, #0x10] +_0224336A: + ldr r3, [r1] + ldr r2, _022433C8 ; =0x00000851 + mov r0, #0 + strb r0, [r3, r2] + ldr r3, [r1, #8] + ldr r4, [r1] + asr r5, r3, #8 + add r3, r2, #1 + strb r5, [r4, r3] + ldr r4, [r1] + mov r5, #0xff + add r3, r2, #2 + strb r5, [r4, r3] + ldr r3, [r1, #0xc] + ldr r4, [r1] + asr r5, r3, #8 + add r3, r2, #3 + strb r5, [r4, r3] + ldr r4, [r1] + mov r5, #1 + add r3, r2, #4 + strb r5, [r4, r3] + ldr r3, [r1, #8] + ldr r4, [r1] + asr r5, r3, #8 + add r3, r2, #5 + strb r5, [r4, r3] + ldr r4, [r1] + add r3, r2, #6 + strb r0, [r4, r3] + ldr r0, [r1, #0xc] + ldr r1, [r1] + asr r3, r0, #8 + add r0, r2, #7 + strb r3, [r1, r0] + pop {r3, r4, r5, pc} +_022433B2: + ldr r0, [r1, #4] + mov r2, #1 + strb r2, [r0] + add r0, r1, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_022433C8: .word 0x00000851 + + thumb_func_start MOD12_022433CC +MOD12_022433CC: ; 0x022433CC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r1, #0 + add r0, r3, #0 + strb r1, [r0] + mov r0, #0x18 + mov r1, #0x14 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + mov r1, #0 + mov r2, #0x14 + add r4, r0, #0 + bl MI_CpuFill8 + lsl r0, r6, #2 + add r0, r5, r0 + ldr r0, [r0, #0x18] + cmp r7, #0 + str r0, [r4] + ldr r0, [sp] + ldr r2, _0224342C ; =0x0000C350 + str r0, [r4, #4] + bne _02243416 + mov r0, #0x4a + lsl r0, r0, #0xa + str r0, [r4, #8] + mov r0, #6 + lsl r0, r0, #0xc + str r0, [r4, #0xc] + ldr r0, _02243430 ; =MOD12_02243438 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02243416: + mov r0, #2 + lsl r0, r0, #0xe + str r0, [r4, #8] + mov r0, #6 + lsl r0, r0, #0xc + str r0, [r4, #0xc] + ldr r0, _02243434 ; =MOD12_022434A4 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224342C: .word 0x0000C350 +_02243430: .word MOD12_02243438 +_02243434: .word MOD12_022434A4 + + thumb_func_start MOD12_02243438 +MOD12_02243438: ; 0x02243438 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0224344A + cmp r0, #1 + beq _0224345A + b _0224348E +_0224344A: + ldr r0, [r4] + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0224345A: + mov r0, #2 + ldr r1, [r4, #8] + lsl r0, r0, #0xa + sub r2, r1, r0 + lsl r1, r0, #4 + str r2, [r4, #8] + cmp r2, r1 + bgt _02243474 + lsl r0, r0, #4 + str r0, [r4, #8] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_02243474: + ldr r2, [r4, #8] + ldr r0, [r4] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r2, [r4, #0xc] + ldr r0, [r4] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_0224348E: + ldr r0, [r4, #4] + mov r1, #1 + strb r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_022434A4 +MOD12_022434A4: ; 0x022434A4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _022434B6 + cmp r0, #1 + beq _022434BA + b _022434F0 +_022434B6: + add r0, r0, #1 + strb r0, [r4, #0x10] +_022434BA: + mov r0, #2 + ldr r1, [r4, #8] + lsl r0, r0, #0xa + sub r1, r1, r0 + ldr r0, _02243510 ; =0xFFFFD800 + str r1, [r4, #8] + cmp r1, r0 + bgt _022434D0 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_022434D0: + ldr r3, [r4, #8] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r2, [r4, #0xc] + ldr r0, [r4] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_022434F0: + ldr r0, [r4] + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + ldr r0, [r4, #4] + mov r1, #1 + strb r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_02243510: .word 0xFFFFD800 + + thumb_func_start MOD12_02243514 +MOD12_02243514: ; 0x02243514 + ldr r2, _022435B0 ; =0x00000121 + ldrb r0, [r0, r2] + cmp r0, #8 + bhi _022435AA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02243528: ; jump table + .short _0224353A - _02243528 - 2 ; case 0 + .short _02243552 - _02243528 - 2 ; case 1 + .short _02243568 - _02243528 - 2 ; case 2 + .short _02243586 - _02243528 - 2 ; case 3 + .short _02243586 - _02243528 - 2 ; case 4 + .short _02243592 - _02243528 - 2 ; case 5 + .short _02243592 - _02243528 - 2 ; case 6 + .short _0224359E - _02243528 - 2 ; case 7 + .short _0224359E - _02243528 - 2 ; case 8 +_0224353A: + cmp r1, #0 + beq _02243544 + cmp r1, #2 + beq _02243548 + b _0224354E +_02243544: + ldr r0, _022435B4 ; =0x00001770 + bx lr +_02243548: + mov r0, #0xfa + lsl r0, r0, #4 + bx lr +_0224354E: + mov r0, #0 + bx lr +_02243552: + cmp r1, #0 + beq _0224355C + cmp r1, #1 + beq _02243560 + b _02243564 +_0224355C: + ldr r0, _022435B8 ; =0x00001B58 + bx lr +_02243560: + ldr r0, _022435BC ; =0x00000BB8 + bx lr +_02243564: + mov r0, #0 + bx lr +_02243568: + cmp r1, #0 + beq _02243576 + cmp r1, #1 + beq _0224357A + cmp r1, #2 + beq _0224357E + b _02243582 +_02243576: + ldr r0, _022435C0 ; =0x00000D05 + bx lr +_0224357A: + ldr r0, _022435C0 ; =0x00000D05 + bx lr +_0224357E: + ldr r0, _022435C0 ; =0x00000D05 + bx lr +_02243582: + mov r0, #0 + bx lr +_02243586: + cmp r1, #0 + bne _0224358E + ldr r0, _022435C4 ; =0x00002710 + bx lr +_0224358E: + mov r0, #0 + bx lr +_02243592: + cmp r1, #1 + bne _0224359A + ldr r0, _022435C4 ; =0x00002710 + bx lr +_0224359A: + mov r0, #0 + bx lr +_0224359E: + cmp r1, #2 + bne _022435A6 + ldr r0, _022435C4 ; =0x00002710 + bx lr +_022435A6: + mov r0, #0 + bx lr +_022435AA: + mov r0, #0 + bx lr + nop +_022435B0: .word 0x00000121 +_022435B4: .word 0x00001770 +_022435B8: .word 0x00001B58 +_022435BC: .word 0x00000BB8 +_022435C0: .word 0x00000D05 +_022435C4: .word 0x00002710 + + thumb_func_start MOD12_022435C8 +MOD12_022435C8: ; 0x022435C8 + push {r3, lr} + bl MOD12_02243514 + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + ldr r1, _022435E0 ; =0x00001388 + add r0, r2, r1 + lsl r1, r1, #1 + bl _s32_div_f + pop {r3, pc} + .align 2, 0 +_022435E0: .word 0x00001388 + + thumb_func_start MOD12_022435E4 +MOD12_022435E4: ; 0x022435E4 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + str r0, [sp] + mov r0, #0 + ldr r7, [sp] + add r5, r1, #0 + add r6, r2, #0 + str r0, [sp, #8] + add r4, sp, #0x24 +_022435F6: + cmp r5, #0 + beq _02243604 + cmp r5, #1 + beq _0224361E + cmp r5, #2 + beq _02243628 + b _02243630 +_02243604: + ldr r0, [sp] + ldr r1, [sp, #8] + bl FUN_02083308 + str r0, [sp, #0x10] + ldr r0, [sp] + ldr r1, [sp, #8] + bl FUN_0208336C + ldr r1, [sp, #0x10] + add r0, r1, r0 + str r0, [r4] + b _02243638 +_0224361E: + mov r0, #0x4b + lsl r0, r0, #2 + ldrsh r0, [r7, r0] + str r0, [r4] + b _02243638 +_02243628: + ldr r0, _022436CC ; =0x0000012E + ldrsh r0, [r7, r0] + str r0, [r4] + b _02243638 +_02243630: + bl ErrorHandling + add sp, #0x34 + pop {r4, r5, r6, r7, pc} +_02243638: + ldr r0, [sp, #8] + add r4, r4, #4 + add r0, r0, #1 + add r7, #0xc + str r0, [sp, #8] + cmp r0, #4 + blt _022435F6 + mov r4, #0 + mov r3, #1 + add r2, sp, #0x28 + add r7, sp, #0x24 +_0224364E: + lsl r0, r4, #2 + ldr r1, [r7, r0] + ldr r0, [r2] + cmp r1, r0 + bge _0224365A + add r4, r3, #0 +_0224365A: + add r3, r3, #1 + add r2, r2, #4 + cmp r3, #4 + blt _0224364E + ldr r0, [sp] + add r1, r5, #0 + bl MOD12_02243514 + lsl r2, r4, #2 + add r1, sp, #0x24 + ldr r1, [r1, r2] + bl _s32_div_f + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #4] + add r7, sp, #0x24 + add r4, sp, #0x14 +_0224367E: + ldr r0, [r7] + ldr r1, [sp, #0xc] + mul r0, r1 + str r0, [r4] + add r0, #0x32 + mov r1, #0x64 + bl _s32_div_f + stmia r4!, {r0} + ldr r0, [sp, #4] + add r7, r7, #4 + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #4 + blt _0224367E + mov r2, #0 + add r1, sp, #0x14 +_022436A0: + cmp r5, #0 + beq _022436AE + cmp r5, #1 + beq _022436B4 + cmp r5, #2 + beq _022436BA + b _022436BE +_022436AE: + ldr r0, [r1] + strh r0, [r6] + b _022436BE +_022436B4: + ldr r0, [r1] + strh r0, [r6] + b _022436BE +_022436BA: + ldr r0, [r1] + strh r0, [r6] +_022436BE: + add r2, r2, #1 + add r1, r1, #4 + add r6, r6, #2 + cmp r2, #4 + blt _022436A0 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022436CC: .word 0x0000012E + + thumb_func_start MOD12_022436D0 +MOD12_022436D0: ; 0x022436D0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + str r0, [sp] + ldr r0, [r0] + ldr r1, _022439F0 ; =0x00000121 + ldrb r1, [r0, r1] + cmp r1, #8 + bhi _02243790 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022436EC: ; jump table + .short _022436FE - _022436EC - 2 ; case 0 + .short _0224371C - _022436EC - 2 ; case 1 + .short _0224373A - _022436EC - 2 ; case 2 + .short _02243768 - _022436EC - 2 ; case 3 + .short _02243768 - _022436EC - 2 ; case 4 + .short _02243776 - _022436EC - 2 ; case 5 + .short _02243776 - _022436EC - 2 ; case 6 + .short _02243784 - _022436EC - 2 ; case 7 + .short _02243784 - _022436EC - 2 ; case 8 +_022436FE: + ldr r3, _022439F4 ; =0x000003D6 + ldr r2, [sp] + mov r1, #0 + add r2, r2, r3 + bl MOD12_022435E4 + ldr r0, [sp] + ldr r3, _022439F8 ; =0x000003E6 + ldr r2, [sp] + ldr r0, [r0] + mov r1, #2 + add r2, r2, r3 + bl MOD12_022435E4 + b _02243790 +_0224371C: + ldr r3, _022439F4 ; =0x000003D6 + ldr r2, [sp] + mov r1, #0 + add r2, r2, r3 + bl MOD12_022435E4 + ldr r0, [sp] + ldr r3, _022439FC ; =0x000003DE + ldr r2, [sp] + ldr r0, [r0] + mov r1, #1 + add r2, r2, r3 + bl MOD12_022435E4 + b _02243790 +_0224373A: + ldr r3, _022439F4 ; =0x000003D6 + ldr r2, [sp] + mov r1, #0 + add r2, r2, r3 + bl MOD12_022435E4 + ldr r0, [sp] + ldr r3, _022439FC ; =0x000003DE + ldr r2, [sp] + ldr r0, [r0] + mov r1, #1 + add r2, r2, r3 + bl MOD12_022435E4 + ldr r0, [sp] + ldr r3, _022439F8 ; =0x000003E6 + ldr r2, [sp] + ldr r0, [r0] + mov r1, #2 + add r2, r2, r3 + bl MOD12_022435E4 + b _02243790 +_02243768: + ldr r3, _022439F4 ; =0x000003D6 + ldr r2, [sp] + mov r1, #0 + add r2, r2, r3 + bl MOD12_022435E4 + b _02243790 +_02243776: + ldr r3, _022439FC ; =0x000003DE + ldr r2, [sp] + mov r1, #1 + add r2, r2, r3 + bl MOD12_022435E4 + b _02243790 +_02243784: + ldr r3, _022439F8 ; =0x000003E6 + ldr r2, [sp] + mov r1, #2 + add r2, r2, r3 + bl MOD12_022435E4 +_02243790: + ldr r7, _022439F4 ; =0x000003D6 + ldr r6, [sp] + add r0, r7, #0 + add r1, r7, #0 + mov r5, #0 + add r0, #8 + add r1, #0x18 +_0224379E: + ldr r2, _022439F8 ; =0x000003E6 + ldrsh r3, [r6, r7] + ldrsh r4, [r6, r2] + ldrsh r2, [r6, r0] + add r5, r5, #1 + add r2, r3, r2 + add r2, r4, r2 + strh r2, [r6, r1] + add r6, r6, #2 + cmp r5, #4 + blt _0224379E + ldr r1, [sp] + ldr r4, _022439F4 ; =0x000003D6 + mov r0, #0 + mov r2, #1 + add r1, r1, #2 + add r5, r4, #0 +_022437C0: + ldr r3, [sp] + lsl r6, r0, #1 + add r3, r3, r6 + ldrsh r6, [r3, r4] + ldrsh r3, [r1, r5] + cmp r6, r3 + bge _022437D0 + add r0, r2, #0 +_022437D0: + add r2, r2, #1 + add r1, r1, #2 + cmp r2, #4 + blt _022437C0 + lsl r1, r0, #1 + ldr r0, [sp] + ldr r4, [sp] + add r1, r0, r1 + ldr r0, _022439F4 ; =0x000003D6 + mov r5, #0 + add r7, r0, #0 + ldrsh r6, [r1, r0] + add r7, #0x20 +_022437EA: + ldr r0, _022439F4 ; =0x000003D6 + ldrsh r1, [r4, r0] + mov r0, #0x64 + mul r0, r1 + add r1, r6, #0 + bl _s32_div_f + strh r0, [r4, r7] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _022437EA + ldr r0, [sp] + ldr r4, _022439FC ; =0x000003DE + mov r2, #0 + mov r1, #1 + add r0, r0, #2 + add r5, r4, #0 +_0224380E: + ldr r3, [sp] + lsl r6, r2, #1 + add r3, r3, r6 + ldrsh r6, [r3, r4] + ldrsh r3, [r0, r5] + cmp r6, r3 + bge _0224381E + add r2, r1, #0 +_0224381E: + add r1, r1, #1 + add r0, r0, #2 + cmp r1, #4 + blt _0224380E + ldr r0, [sp] + lsl r1, r2, #1 + add r1, r0, r1 + ldr r0, _022439FC ; =0x000003DE + ldr r4, [sp] + add r7, r0, #0 + ldrsh r6, [r1, r0] + mov r5, #0 + add r7, #0x20 +_02243838: + ldr r0, _022439FC ; =0x000003DE + ldrsh r1, [r4, r0] + mov r0, #0x64 + mul r0, r1 + add r1, r6, #0 + bl _s32_div_f + strh r0, [r4, r7] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _02243838 + ldr r0, [sp] + ldr r4, _022439F8 ; =0x000003E6 + mov r2, #0 + mov r1, #1 + add r0, r0, #2 + add r5, r4, #0 +_0224385C: + ldr r3, [sp] + lsl r6, r2, #1 + add r3, r3, r6 + ldrsh r6, [r3, r4] + ldrsh r3, [r0, r5] + cmp r6, r3 + bge _0224386C + add r2, r1, #0 +_0224386C: + add r1, r1, #1 + add r0, r0, #2 + cmp r1, #4 + blt _0224385C + ldr r0, [sp] + lsl r1, r2, #1 + add r1, r0, r1 + ldr r0, _022439F8 ; =0x000003E6 + ldr r4, [sp] + add r7, r0, #0 + ldrsh r6, [r1, r0] + mov r5, #0 + add r7, #0x20 +_02243886: + ldr r0, _022439F8 ; =0x000003E6 + ldrsh r1, [r4, r0] + mov r0, #0x64 + mul r0, r1 + add r1, r6, #0 + bl _s32_div_f + strh r0, [r4, r7] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _02243886 + ldr r0, [sp] + mov r1, #0 + ldr r0, [r0] + bl MOD12_022435C8 + ldr r4, [sp] + ldr r7, _02243A00 ; =0x0000041E + add r6, r0, #0 + mov r5, #0 +_022438B0: + ldr r0, _02243A04 ; =0x000003F6 + mov r1, #0x64 + ldrsh r0, [r4, r0] + mul r0, r6 + bl _s32_div_f + strh r0, [r4, r7] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _022438B0 + ldr r0, [sp] + mov r1, #1 + ldr r0, [r0] + bl MOD12_022435C8 + ldr r4, [sp] + ldr r7, _02243A08 ; =0x00000426 + add r6, r0, #0 + mov r5, #0 +_022438D8: + ldr r0, _02243A0C ; =0x000003FE + mov r1, #0x64 + ldrsh r0, [r4, r0] + mul r0, r6 + bl _s32_div_f + strh r0, [r4, r7] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _022438D8 + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + bl MOD12_022435C8 + ldr r4, [sp] + ldr r7, _02243A10 ; =0x0000042E + add r6, r0, #0 + mov r5, #0 +_02243900: + ldr r0, _02243A14 ; =0x00000406 + mov r1, #0x64 + ldrsh r0, [r4, r0] + mul r0, r6 + bl _s32_div_f + strh r0, [r4, r7] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _02243900 + ldr r7, _02243A00 ; =0x0000041E + ldr r5, [sp] + add r0, r7, #0 + add r1, r7, #0 + mov r6, #0 + add r0, #8 + sub r1, #8 +_02243924: + ldr r2, _02243A10 ; =0x0000042E + ldrsh r3, [r5, r7] + ldrsh r4, [r5, r2] + ldrsh r2, [r5, r0] + add r6, r6, #1 + add r2, r3, r2 + add r2, r4, r2 + strh r2, [r5, r1] + add r5, r5, #2 + cmp r6, #4 + blt _02243924 + ldr r0, [sp] + mov r7, #0 + add r6, sp, #0x18 + str r0, [sp, #4] + add r4, sp, #8 + add r5, sp, #0x28 +_02243946: + stmia r6!, {r7} + ldr r1, [sp, #4] + ldr r0, _02243A18 ; =0x00000416 + ldrsh r0, [r1, r0] + stmia r4!, {r0} + ldr r0, [sp] + ldr r0, [r0] + bl FUN_02082878 + stmia r5!, {r0} + ldr r0, [sp, #4] + add r7, r7, #1 + add r0, r0, #2 + str r0, [sp, #4] + cmp r7, #4 + blt _02243946 + mov r0, #0 + mov ip, r0 +_0224396A: + mov r0, ip + mov r7, #3 + cmp r0, #3 + bge _022439B8 + add r2, sp, #0x14 + add r3, sp, #0x34 + add r4, sp, #0x24 +_02243978: + sub r0, r2, #4 + ldr r5, [r2] + ldr r6, [r0] + cmp r6, r5 + blt _02243990 + cmp r6, r5 + bne _022439AA + sub r0, r3, #4 + ldr r1, [r0] + ldr r0, [r3] + cmp r1, r0 + bge _022439AA +_02243990: + str r6, [r2] + sub r0, r2, #4 + str r5, [r0] + sub r0, r4, #4 + ldr r5, [r4] + ldr r1, [r0] + str r1, [r4] + str r5, [r0] + sub r0, r3, #4 + ldr r5, [r3] + ldr r1, [r0] + str r1, [r3] + str r5, [r0] +_022439AA: + sub r7, r7, #1 + mov r0, ip + sub r2, r2, #4 + sub r3, r3, #4 + sub r4, r4, #4 + cmp r7, r0 + bgt _02243978 +_022439B8: + mov r0, ip + add r0, r0, #1 + mov ip, r0 + cmp r0, #3 + blt _0224396A + mov r1, #0x13 + ldr r7, _02243A1C ; =0x000003D1 + mov r6, #0 + add r5, sp, #0x18 + mov r0, #0xc + lsl r1, r1, #4 +_022439CE: + ldr r3, [sp] + ldr r2, [r5] + add r3, r3, r6 + strb r2, [r3, r7] + ldr r2, [sp] + ldr r4, [r2] + ldr r2, [r5] + add r5, r5, #4 + add r3, r2, #0 + mul r3, r0 + add r2, r4, r3 + strb r6, [r2, r1] + add r6, r6, #1 + cmp r6, #4 + blt _022439CE + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022439F0: .word 0x00000121 +_022439F4: .word 0x000003D6 +_022439F8: .word 0x000003E6 +_022439FC: .word 0x000003DE +_02243A00: .word 0x0000041E +_02243A04: .word 0x000003F6 +_02243A08: .word 0x00000426 +_02243A0C: .word 0x000003FE +_02243A10: .word 0x0000042E +_02243A14: .word 0x00000406 +_02243A18: .word 0x00000416 +_02243A1C: .word 0x000003D1 + + thumb_func_start MOD12_02243A20 +MOD12_02243A20: ; 0x02243A20 + push {r3, r4, lr} + sub sp, #0xc + ldr r1, _02243A54 ; =0x02246758 + add r3, sp, #0 + str r1, [sp] + mov r1, #0xb + strh r1, [r3, #4] + ldr r1, [r0] + ldr r2, _02243A58 ; =0x00000123 + ldrb r1, [r1, r2] + strb r1, [r3, #6] + sub r1, r2, #7 + ldr r4, [r0] + add r2, #0x4e + ldrb r1, [r4, r1] + strb r1, [r3, #8] + ldr r1, [r0] + ldrb r1, [r1, r2] + strb r1, [r3, #7] + ldr r1, _02243A5C ; =0x0000085C + add r0, r0, r1 + add r1, sp, #0 + bl MOD12_02240ED0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02243A54: .word 0x02246758 +_02243A58: .word 0x00000123 +_02243A5C: .word 0x0000085C + + thumb_func_start MOD12_02243A60 +MOD12_02243A60: ; 0x02243A60 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243A74 +MOD12_02243A74: ; 0x02243A74 + push {r3, lr} + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243A84 +MOD12_02243A84: ; 0x02243A84 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02243A88 +MOD12_02243A88: ; 0x02243A88 + push {r3, lr} + mov r1, #0x9a + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243A9C +MOD12_02243A9C: ; 0x02243A9C + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r1, #0xe7 + lsl r1, r1, #2 + str r0, [sp] + mov ip, r2 + add r0, r3, #0 + add r4, r6, r1 + mov r2, #0x4d +_02243AAE: + ldrh r1, [r0] + add r0, r0, #2 + strh r1, [r4] + add r4, r4, #2 + sub r2, r2, #1 + bne _02243AAE + mov r1, #0 + ldr r7, _02243B04 ; =0x00000132 + add r2, r1, #0 +_02243AC0: + ldr r0, [r6] + mov r4, #0x4a + add r0, r0, r2 + ldrh r5, [r3] + lsl r4, r4, #2 + add r1, r1, #1 + strh r5, [r0, r4] + ldrh r5, [r3, #2] + add r4, r4, #2 + add r2, #0xc + strh r5, [r0, r4] + mov r4, #0x4b + ldrh r5, [r3, #4] + lsl r4, r4, #2 + strh r5, [r0, r4] + ldrh r5, [r3, #6] + add r4, r4, #2 + strh r5, [r0, r4] + mov r4, #0x13 + ldrh r5, [r3, #8] + lsl r4, r4, #4 + strh r5, [r0, r4] + ldrh r4, [r3, #0xa] + add r3, #0xc + cmp r1, #4 + strh r4, [r0, r7] + blt _02243AC0 + mov r2, #0 + ldr r0, [sp] + mov r1, ip + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02243B04: .word 0x00000132 + + thumb_func_start MOD12_02243B08 +MOD12_02243B08: ; 0x02243B08 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243B1C +MOD12_02243B1C: ; 0x02243B1C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x18 + add r7, r1, #0 + add r1, r0, #0 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02243B58 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _02243B5C ; =MOD12_02243B60 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02243B58: .word 0x00007530 +_02243B5C: .word MOD12_02243B60 + + thumb_func_start MOD12_02243B60 +MOD12_02243B60: ; 0x02243B60 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r0, [r1, #0x10] + str r1, [sp] + cmp r0, #0 + beq _02243B70 + b _02243C96 +_02243B70: + ldr r0, [sp] + mov r1, #0x14 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _02243B84 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x14] + pop {r4, r5, r6, r7, pc} +_02243B84: + ldr r0, [sp] + mov r1, #0x13 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _02243B98 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x13] + pop {r4, r5, r6, r7, pc} +_02243B98: + ldr r0, [sp] + mov r1, #1 + strb r1, [r0, #0x13] + ldr r0, [r0] + mov r1, #2 + ldr r0, [r0, #0x30] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _02243C10 +_02243BB0: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + ldr r0, _02243CB4 ; =0x02246738 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _02243C0A + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r0, [r0, #0x12] + mov r7, #0x3f + str r5, [sp, #4] + lsl r1, r0, #1 + ldr r0, _02243CB8 ; =0x02246740 + lsl r7, r7, #0xa + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r0, r0, #5 + add r6, r1, r0 + b _02243C04 +_02243BE0: + mov r4, #0 + b _02243BF8 +_02243BE4: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_02243BF8: + cmp r4, #8 + blt _02243BE4 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_02243C04: + ldr r0, [sp, #4] + cmp r0, #4 + blt _02243BE0 +_02243C0A: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_02243C10: + ldr r0, [sp, #8] + cmp r0, #4 + blt _02243BB0 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _02243C52 + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _02243C52 + ldr r0, _02243CB4 ; =0x02246738 + sub r1, r1, #1 + ldrsb r0, [r0, r1] + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #0x3f + str r0, [sp, #4] + lsl r1, r1, #0xa + b _02243C4C +_02243C3C: + ldr r0, [sp, #4] + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r1 + strh r0, [r3, r2] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_02243C4C: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _02243C3C +_02243C52: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _02243CB0 + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _02243CB0 + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_02243C96: + add r0, r1, #0 + mov r2, #0 + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_02243CB0: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02243CB4: .word 0x02246738 +_02243CB8: .word 0x02246740 + + thumb_func_start MOD12_02243CBC +MOD12_02243CBC: ; 0x02243CBC + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243CD0 +MOD12_02243CD0: ; 0x02243CD0 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x18 + add r7, r1, #0 + add r1, r0, #0 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02243D0C ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _02243D10 ; =MOD12_02243D14 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02243D0C: .word 0x00007530 +_02243D10: .word MOD12_02243D14 + + thumb_func_start MOD12_02243D14 +MOD12_02243D14: ; 0x02243D14 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r0, [r1, #0x10] + str r1, [sp] + cmp r0, #0 + beq _02243D24 + b _02243E72 +_02243D24: + ldr r0, [sp] + mov r1, #0x14 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _02243D38 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x14] + pop {r4, r5, r6, r7, pc} +_02243D38: + ldr r0, [sp] + mov r1, #0x13 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _02243D4C + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x13] + pop {r4, r5, r6, r7, pc} +_02243D4C: + ldr r0, [sp] + mov r1, #1 + strb r1, [r0, #0x13] + ldr r0, [r0] + mov r1, #2 + ldr r0, [r0, #0x30] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _02243DCC +_02243D64: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + mov r0, #4 + sub r1, r0, r1 + ldr r0, _02243E90 ; =0x02246738 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _02243DC6 + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r1, [r0, #0x12] + mov r0, #0xb + mov r7, #0x3f + sub r0, r0, r1 + lsl r1, r0, #1 + ldr r0, _02243E94 ; =0x02246740 + str r5, [sp, #4] + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r7, r7, #0xa + lsl r0, r0, #5 + add r6, r1, r0 + b _02243DC0 +_02243D9C: + mov r4, #0 + b _02243DB4 +_02243DA0: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_02243DB4: + cmp r4, #8 + blt _02243DA0 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_02243DC0: + ldr r0, [sp, #4] + cmp r0, #4 + blt _02243D9C +_02243DC6: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_02243DCC: + ldr r0, [sp, #8] + cmp r0, #4 + blt _02243D64 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _02243E2E + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _02243E2E + mov r0, #5 + sub r1, r0, r1 + ldr r0, _02243E90 ; =0x02246738 + mov r7, #0x3f + ldrsb r0, [r0, r1] + lsl r7, r7, #0xa + mov r6, #0x1d + add r0, r0, #3 + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #2 + str r0, [sp, #4] + lsl r1, r1, #8 + b _02243E28 +_02243E02: + ldr r0, [sp, #4] + ldr r5, [sp, #4] + lsl r4, r0, #1 + ldrh r0, [r3, r4] + lsl r5, r5, #0x1d + and r0, r7 + strh r0, [r3, r4] + ldr r0, [sp, #4] + ldrh r2, [r3, r4] + lsr r0, r0, #0x1f + sub r5, r5, r0 + ror r5, r6 + add r0, r0, r5 + add r0, r0, r1 + orr r0, r2 + strh r0, [r3, r4] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_02243E28: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _02243E02 +_02243E2E: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _02243E8C + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _02243E8C + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_02243E72: + add r0, r1, #0 + mov r2, #0 + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_02243E8C: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02243E90: .word 0x02246738 +_02243E94: .word 0x02246740 + + thumb_func_start MOD12_02243E98 +MOD12_02243E98: ; 0x02243E98 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243EAC +MOD12_02243EAC: ; 0x02243EAC + push {r4, lr} + ldr r3, _02243EC0 ; =0x0000127C + mov r4, #1 + strb r4, [r1, r3] + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r4, pc} + .align 2, 0 +_02243EC0: .word 0x0000127C + + thumb_func_start MOD12_02243EC4 +MOD12_02243EC4: ; 0x02243EC4 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243ED8 +MOD12_02243ED8: ; 0x02243ED8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x18 + mov r1, #0x20 + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x20 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _02243F38 ; =0x00007530 + str r0, [r4] + ldrh r0, [r6] + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] + ldrb r0, [r5] + strb r0, [r4, #0x11] + ldrh r0, [r5, #8] + strh r0, [r4, #0x14] + ldrh r0, [r5, #0xa] + strh r0, [r4, #0x16] + ldrh r0, [r5, #0xc] + strh r0, [r4, #0x18] + ldrb r0, [r5, #0xe] + strb r0, [r4, #0x1a] + ldrb r0, [r5, #0x11] + strb r0, [r4, #0x1d] + ldrb r0, [r5, #0x10] + strb r0, [r4, #0x1c] + ldrb r0, [r5, #0xf] + strb r0, [r4, #0x1b] + ldr r0, _02243F3C ; =MOD12_02243F40 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02243F38: .word 0x00007530 +_02243F3C: .word MOD12_02243F40 + + thumb_func_start MOD12_02243F40 +MOD12_02243F40: ; 0x02243F40 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _02243F56 + cmp r0, #1 + beq _02243F94 + cmp r0, #2 + beq _02243FA6 + b _02243FDE +_02243F56: + ldrb r0, [r4, #0x1a] + cmp r0, #0 + beq _02243F8E + ldrb r0, [r4, #0x1d] + cmp r0, #0 + bne _02243F7A + ldr r0, [r4] + mov r1, #1 + add r0, #0x34 + add r2, r1, #0 + mov r3, #0xe + bl FUN_0200D0BC + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x30] + bl FUN_0201AC68 +_02243F7A: + ldrb r1, [r4, #0x1a] + add r2, r4, #0 + ldr r0, [r4] + add r2, #0x14 + bl MOD12_02242678 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02243F8E: + mov r0, #0x64 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02243F94: + ldr r0, [r4] + bl MOD12_022426AC + cmp r0, #0 + bne _02243FF6 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02243FA6: + ldrb r0, [r4, #0x12] + add r0, r0, #1 + strb r0, [r4, #0x12] + ldrb r0, [r4, #0x1c] + cmp r0, #1 + bne _02243FBA + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02243FBA: + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x1b] + cmp r1, r0 + blo _02243FF6 + ldr r0, [r4] + mov r1, #1 + add r0, #0x34 + bl FUN_0200D0E0 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02243FDE: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02243FF6: + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_02243FF8 +MOD12_02243FF8: ; 0x02243FF8 + push {r3, lr} + mov r1, #0x9a + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0224400C +MOD12_0224400C: ; 0x0224400C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0xe7 + add r6, r1, #0 + lsl r0, r0, #2 + add r5, r2, #0 + add r2, r6, r0 + mov r1, #0x4d +_0224401C: + ldrh r0, [r3] + add r3, r3, #2 + strh r0, [r2] + add r2, r2, #2 + sub r1, r1, #1 + bne _0224401C + mov r0, #0x18 + mov r1, #0x14 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + mov r2, #0xfa + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + lsl r2, r2, #2 + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0224405C ; =MOD12_02244060 + str r7, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224405C: .word MOD12_02244060 + + thumb_func_start MOD12_02244060 +MOD12_02244060: ; 0x02244060 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #6 + bls _02244070 + b _0224419A +_02244070: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224407C: ; jump table + .short _0224408A - _0224407C - 2 ; case 0 + .short _0224409E - _0224407C - 2 ; case 1 + .short _022440B2 - _0224407C - 2 ; case 2 + .short _022440DC - _0224407C - 2 ; case 3 + .short _022440EE - _0224407C - 2 ; case 4 + .short _0224415A - _0224407C - 2 ; case 5 + .short _02244182 - _0224407C - 2 ; case 6 +_0224408A: + ldr r1, [r4] + ldr r0, _022441B8 ; =0x00000848 + ldr r0, [r1, r0] + bl MOD12_022318DC + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0224409E: + bl MOD12_022318F8 + cmp r0, #1 + beq _022440A8 + b _022441B2 +_022440A8: + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_022440B2: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldr r0, _022441BC ; =0x0000046F + mov r1, #0x1e + bl FUN_02005350 + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_022440DC: + bl FUN_0200E308 + cmp r0, #1 + bne _022441B2 + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_022440EE: + ldr r0, [r4] + bl MOD12_02242788 + ldr r0, [r4] + bl MOD12_022427DC + ldr r0, [r4] + bl MOD12_02242804 + ldr r0, [r4] + bl MOD12_02242A1C + ldr r0, [r4] + bl MOD12_022429E0 + ldr r0, [r4] + mov r1, #0 + add r0, #0x34 + mov r2, #1 + mov r3, #0xe + bl FUN_0200D0BC + ldr r0, [r4] + mov r1, #0xff + add r0, #0x34 + bl FUN_02019620 + ldr r0, [r4] + add r0, #0x34 + bl FUN_020191D0 + mov r6, #0 + add r5, r6, #0 + mov r7, #6 +_02244132: + ldr r0, [r4] + add r1, r7, #0 + add r0, r0, r5 + ldr r0, [r0, #0x18] + mov r2, #1 + bl FUN_02007558 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _02244132 + ldr r1, [r4] + ldr r0, _022441C0 ; =0x0000127F + mov r2, #1 + strb r2, [r1, r0] + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0224415A: + bl FUN_02005404 + cmp r0, #0 + bne _022441B2 + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_02244182: + bl FUN_0200E308 + cmp r0, #1 + bne _022441B2 + ldr r0, _022441C4 ; =0x0000049D + bl FUN_0200521C + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0224419A: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_022441B2: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_022441B8: .word 0x00000848 +_022441BC: .word 0x0000046F +_022441C0: .word 0x0000127F +_022441C4: .word 0x0000049D + + thumb_func_start MOD12_022441C8 +MOD12_022441C8: ; 0x022441C8 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_022441DC +MOD12_022441DC: ; 0x022441DC + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0x18 + str r1, [sp] + add r1, r0, #0 + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x18 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + mov r2, #0 + str r0, [r4] + ldrh r0, [r6] + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] +_02244210: + add r0, r5, r2 + ldrb r1, [r0, #3] + add r0, r4, r2 + add r2, r2, #1 + strb r1, [r0, #0x11] + cmp r2, #4 + blt _02244210 + ldr r0, _0224422C ; =MOD12_02244234 + ldr r2, _02244230 ; =0x00007530 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224422C: .word MOD12_02244234 +_02244230: .word 0x00007530 + + thumb_func_start MOD12_02244234 +MOD12_02244234: ; 0x02244234 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #4 + bhi _022442A6 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224424C: ; jump table + .short _02244256 - _0224424C - 2 ; case 0 + .short _0224425C - _0224424C - 2 ; case 1 + .short _0224427A - _0224424C - 2 ; case 2 + .short _02244294 - _0224424C - 2 ; case 3 + .short _022442A6 - _0224424C - 2 ; case 4 +_02244256: + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0224425C: + ldrb r1, [r4, #0x15] + mov r0, #3 + sub r2, r0, r1 + add r1, r4, r2 + ldrb r1, [r1, #0x11] + ldr r0, [r4] + bl MOD12_02242FD0 + ldrb r0, [r4, #0x15] + add r0, r0, #1 + strb r0, [r4, #0x15] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0224427A: + mov r0, #0x16 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x16] + ldrsh r0, [r4, r0] + cmp r0, #0x1e + ble _022442BE + mov r0, #0 + strh r0, [r4, #0x16] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02244294: + ldrb r1, [r4, #0x15] + cmp r1, #4 + bhs _022442A0 + mov r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_022442A0: + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_022442A6: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_022442BE: + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_022442C0 +MOD12_022442C0: ; 0x022442C0 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_022442D4 +MOD12_022442D4: ; 0x022442D4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x18 + add r7, r1, #0 + add r1, r0, #0 + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02244318 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0, #2] + strb r0, [r4, #0x11] + ldr r0, _0224431C ; =MOD12_02244320 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02244318: .word 0x00007530 +_0224431C: .word MOD12_02244320 + + thumb_func_start MOD12_02244320 +MOD12_02244320: ; 0x02244320 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #6 + bhi _02244414 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224433A: ; jump table + .short _02244348 - _0224433A - 2 ; case 0 + .short _02244370 - _0224433A - 2 ; case 1 + .short _0224437E - _0224433A - 2 ; case 2 + .short _02244396 - _0224433A - 2 ; case 3 + .short _022443A4 - _0224433A - 2 ; case 4 + .short _022443E6 - _0224433A - 2 ; case 5 + .short _022443F8 - _0224433A - 2 ; case 6 +_02244348: + ldr r0, [r4] + bl MOD12_02242CB0 + add r2, r4, #0 + ldr r0, [r4] + mov r1, #0 + add r2, #0x12 + bl MOD12_0224324C + ldr r0, _02244430 ; =0x0000049E + bl FUN_0200521C + ldr r0, _02244434 ; =0x000006E5 + bl FUN_020054C8 + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_02244370: + ldrb r1, [r4, #0x12] + cmp r1, #1 + bne _0224442C + add r0, r0, #1 + add sp, #0xc + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_0224437E: + ldrb r1, [r4, #0x11] + add r3, r4, #0 + ldr r0, [r4] + mov r2, #0 + add r3, #0x13 + bl MOD12_022433CC + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_02244396: + ldrb r1, [r4, #0x13] + cmp r1, #1 + bne _0224442C + add r0, r0, #1 + add sp, #0xc + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_022443A4: + ldr r0, [r4] + mov r2, #0 + ldr r1, [r0, #0x10] + ldrb r0, [r4, #0x11] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #5 + bl FUN_020671BC + add r2, r0, #0 + mov r0, #0x7f + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r3, #0x18 + str r3, [sp, #8] + ldr r3, [r4] + lsl r2, r2, #0x10 + ldr r5, [r3] + ldrb r3, [r4, #0x11] + add r0, #0xdd + lsr r2, r2, #0x10 + lsl r3, r3, #2 + add r3, r5, r3 + ldr r0, [r3, r0] + add r3, r1, #0 + bl FUN_02069FB0 + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_022443E6: + bl FUN_02005670 + cmp r0, #0 + bne _0224442C + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_022443F8: + mov r0, #0x14 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x14] + ldrsh r0, [r4, r0] + cmp r0, #0x3c + ble _0224442C + mov r0, #0 + strh r0, [r4, #0x14] + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_02244414: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0224442C: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02244430: .word 0x0000049E +_02244434: .word 0x000006E5 + + thumb_func_start MOD12_02244438 +MOD12_02244438: ; 0x02244438 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0224444C +MOD12_0224444C: ; 0x0224444C + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r5, r1, #0 + mov r0, #0x18 + mov r1, #0x24 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x24 + bl MI_CpuFill8 + str r5, [r4] + ldrh r0, [r6] + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r0, [r4, #0xc] + ldrb r0, [r7, #7] + strb r0, [r4, #0x11] + ldrb r0, [r7, #7] + cmp r0, #0 + beq _02244492 + cmp r0, #1 + beq _022444A8 + cmp r0, #2 + beq _022444BE + b _022444D4 +_02244492: + ldr r0, _022444E4 ; =0x0000041E + mov r2, #0 + add r3, r4, #0 +_02244498: + ldrsh r1, [r5, r0] + add r2, r2, #1 + add r5, r5, #2 + strh r1, [r3, #0x14] + add r3, r3, #2 + cmp r2, #4 + blt _02244498 + b _022444D8 +_022444A8: + ldr r0, _022444E8 ; =0x00000426 + mov r3, #0 + add r2, r4, #0 +_022444AE: + ldrsh r1, [r5, r0] + add r3, r3, #1 + add r5, r5, #2 + strh r1, [r2, #0x14] + add r2, r2, #2 + cmp r3, #4 + blt _022444AE + b _022444D8 +_022444BE: + ldr r0, _022444EC ; =0x0000042E + mov r3, #0 + add r2, r4, #0 +_022444C4: + ldrsh r1, [r5, r0] + add r3, r3, #1 + add r5, r5, #2 + strh r1, [r2, #0x14] + add r2, r2, #2 + cmp r3, #4 + blt _022444C4 + b _022444D8 +_022444D4: + bl ErrorHandling +_022444D8: + ldr r0, _022444F0 ; =MOD12_022444F8 + ldr r2, _022444F4 ; =0x00007530 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022444E4: .word 0x0000041E +_022444E8: .word 0x00000426 +_022444EC: .word 0x0000042E +_022444F0: .word MOD12_022444F8 +_022444F4: .word 0x00007530 + + thumb_func_start MOD12_022444F8 +MOD12_022444F8: ; 0x022444F8 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #5 + bhi _022445E8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02244510: ; jump table + .short _0224451C - _02244510 - 2 ; case 0 + .short _0224452A - _02244510 - 2 ; case 1 + .short _02244544 - _02244510 - 2 ; case 2 + .short _02244566 - _02244510 - 2 ; case 3 + .short _022445BC - _02244510 - 2 ; case 4 + .short _022445E8 - _02244510 - 2 ; case 5 +_0224451C: + ldr r0, _02244604 ; =0x000006FA + bl FUN_020054C8 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0224452A: + mov r0, #0x12 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x12] + ldrsh r0, [r4, r0] + cmp r0, #0x2d + ble _02244600 + mov r0, #0 + strh r0, [r4, #0x12] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_02244544: + mov r2, #0 + add r3, r4, #0 + mov r0, #0x14 +_0224454A: + ldrsh r1, [r3, r0] + cmp r1, #0 + ble _02244558 + ldr r0, _02244608 ; =0x000006FB + bl FUN_020054C8 + b _02244560 +_02244558: + add r2, r2, #1 + add r3, r3, #2 + cmp r2, #4 + blt _0224454A +_02244560: + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_02244566: + mov r0, #0x12 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x12] + ldrsh r0, [r4, r0] + cmp r0, #1 + blt _02244600 + mov r6, #0 + strh r6, [r4, #0x12] + add r5, r6, #0 + mov r7, #0x14 +_0224457C: + ldr r0, [r4] + mov r2, #0x1c + add r1, r0, r5 + mov r0, #0xf3 + lsl r0, r0, #2 + ldrb r1, [r1, r0] + lsl r0, r1, #1 + add r0, r4, r0 + ldrsh r2, [r0, r2] + add r2, r2, #1 + strh r2, [r0, #0x1c] + mov r2, #0x1c + ldrsh r3, [r0, r2] + ldrsh r0, [r0, r7] + cmp r3, r0 + bgt _022445A8 + str r5, [sp] + ldrb r2, [r4, #0x11] + ldr r0, [r4] + bl MOD12_022430A8 + b _022445AA +_022445A8: + add r6, r6, #1 +_022445AA: + add r5, r5, #1 + cmp r5, #4 + blt _0224457C + cmp r6, #4 + blt _02244600 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_022445BC: + mov r3, #0 + add r2, r4, #0 + mov r0, #0x14 +_022445C2: + ldrsh r1, [r2, r0] + cmp r1, #0 + ble _022445D0 + ldr r0, _0224460C ; =0x000006F9 + bl FUN_020054C8 + b _022445D8 +_022445D0: + add r3, r3, #1 + add r2, r2, #2 + cmp r3, #4 + blt _022445C2 +_022445D8: + ldr r0, _02244604 ; =0x000006FA + mov r1, #0 + bl FUN_020054F0 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_022445E8: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02244600: + pop {r3, r4, r5, r6, r7, pc} + nop +_02244604: .word 0x000006FA +_02244608: .word 0x000006FB +_0224460C: .word 0x000006F9 + + thumb_func_start MOD12_02244610 +MOD12_02244610: ; 0x02244610 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02244624 +MOD12_02244624: ; 0x02244624 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x18 + mov r1, #0x14 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02244660 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _02244664 ; =MOD12_02244668 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02244660: .word 0x00007530 +_02244664: .word MOD12_02244668 + + thumb_func_start MOD12_02244668 +MOD12_02244668: ; 0x02244668 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0224467E + cmp r0, #1 + beq _0224469E + cmp r0, #2 + beq _022446CE + b _022446E8 +_0224467E: + mov r0, #3 + str r0, [sp] + mov r0, #0x5a + mov r1, #0x10 + mov r2, #0 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, _02244704 ; =0x0000049E + mov r1, #0x5a + bl FUN_02005350 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0224469E: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #1 + bne _02244700 + bl FUN_02005404 + cmp r0, #0 + bne _02244700 + ldr r0, [r4] + bl MOD12_02242CEC + ldr r0, _02244708 ; =0x0400006C + mov r1, #0x10 + bl GXx_SetMasterBrightness_ + ldr r0, _0224470C ; =0x0400106C + mov r1, #0x10 + bl GXx_SetMasterBrightness_ + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_022446CE: + mov r0, #0x12 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x12] + ldrsh r0, [r4, r0] + cmp r0, #0x3c + ble _02244700 + mov r0, #0 + strh r0, [r4, #0x12] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_022446E8: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02244700: + pop {r3, r4, r5, pc} + nop +_02244704: .word 0x0000049E +_02244708: .word 0x0400006C +_0224470C: .word 0x0400106C + + thumb_func_start MOD12_02244710 +MOD12_02244710: ; 0x02244710 + push {r3, r4, r5, r6, r7, lr} + mov r6, #0 + add r5, r0, #0 + add r7, r1, #0 + add r4, r6, #0 +_0224471A: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02027A14 + cmp r0, #1 + bne _02244732 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02027BDC + ldrb r0, [r7, r0] + add r6, r6, r0 +_02244732: + add r4, r4, #1 + cmp r4, #0x14 + blt _0224471A + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0224473C +MOD12_0224473C: ; 0x0224473C + push {r3, lr} + add r3, r0, #0 + mov r2, #0 + mov r0, #0x5a + add r1, r1, #3 + str r2, [sp] + bl FUN_02006C98 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02244750 +MOD12_02244750: ; 0x02244750 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #0x1b + str r0, [sp] + mov r0, #0x2c + 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, [sp, #0x28] + add r4, r1, #0 + add r6, r3, #0 + str r0, [sp, #0x14] + add r0, r2, #0 + mov r1, #3 + add r2, r5, #0 + add r3, r4, #0 + bl FUN_0200C0DC + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1b + mov r3, #0xba + str r6, [sp, #8] + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, [sp, #0x2c] + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x1b + mov r3, #0xbb + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, [sp, #0x30] + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x1b + mov r3, #0xbc + bl FUN_0200C13C + add sp, #0x18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_022447C0 +MOD12_022447C0: ; 0x022447C0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r2, #0 + add r6, r3, #0 + bl FUN_0200C358 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200C368 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0200C378 + ldr r1, [sp, #0x10] + add r0, r5, #0 + bl FUN_0200C388 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_022447E8 +MOD12_022447E8: ; 0x022447E8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r3, #0 + mov ip, r2 + ldr r3, _02244860 ; =0x022467DC + add r6, r0, #0 + add r7, r1, #0 + add r2, sp, #4 + mov r4, #6 +_022447FA: + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + sub r4, r4, #1 + bne _022447FA + ldr r0, [r3] + mov r1, #0x18 + str r0, [r2] + ldr r0, [sp, #0x50] + str r5, [sp, #0x18] + str r0, [sp, #0x1c] + ldr r0, [sp, #0x54] + str r0, [sp, #0x20] + ldr r0, [sp, #0x58] + str r0, [sp, #0x24] + ldr r0, [sp, #0x5c] + str r0, [sp, #0xc] + ldr r0, [sp, #0x60] + str r0, [sp, #0x30] + mov r0, ip + bl FUN_02016998 + mov r1, #0 + mov r2, #0x18 + str r0, [sp] + bl MI_CpuFill8 + ldr r5, [sp] + mov r4, #0 +_02244832: + add r0, r6, #0 + add r1, r7, #0 + add r2, sp, #4 + bl FUN_0200C154 + mov r1, #0 + stmia r5!, {r0} + bl FUN_0200C644 + add r4, r4, #1 + cmp r4, #5 + blt _02244832 + ldr r0, _02244864 ; =MOD12_02244958 + ldr r1, [sp] + ldr r2, _02244868 ; =0x00009C40 + bl FUN_0200CA44 + ldr r1, [sp] + str r0, [r1, #0x14] + add r0, r1, #0 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_02244860: .word 0x022467DC +_02244864: .word MOD12_02244958 +_02244868: .word 0x00009C40 + + thumb_func_start MOD12_0224486C +MOD12_0224486C: ; 0x0224486C + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_02244874: + ldr r0, [r5] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _02244874 + ldr r0, [r6, #0x14] + bl FUN_0200CAB4 + add r0, r6, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02244890 +MOD12_02244890: ; 0x02244890 + push {r4, r5, r6, lr} + add r5, r0, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r4, [sp, #0x24] + add r6, r3, #0 + ldr r0, [r5] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + add r3, r4, #0 + bl FUN_0200C750 + ldr r2, [sp, #0x10] + lsl r1, r6, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r5, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + add r3, r4, #0 + bl FUN_0200C750 + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x18] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r5, #8] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + add r3, r4, #0 + bl FUN_0200C750 + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x20] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r5, #0xc] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + add r3, r4, #0 + bl FUN_0200C750 + ldr r0, [r5] + mov r1, #0 + bl FUN_0200C5C0 + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_0200C5C0 + ldr r0, [r5, #8] + mov r1, #2 + bl FUN_0200C5C0 + ldr r0, [r5, #0xc] + mov r1, #3 + bl FUN_0200C5C0 + mov r4, #0 + mov r6, #1 +_02244906: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_0200C644 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02244906 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02244918 +MOD12_02244918: ; 0x02244918 + push {r4, lr} + sub sp, #0x18 + add r4, r2, #0 + str r3, [sp] + ldr r2, [sp, #0x20] + str r1, [sp, #4] + str r2, [sp, #8] + str r4, [sp, #0xc] + str r2, [sp, #0x10] + ldr r2, [sp, #0x24] + str r2, [sp, #0x14] + add r2, r3, #0 + add r3, r4, #0 + bl MOD12_02244890 + add sp, #0x18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0224493C +MOD12_0224493C: ; 0x0224493C + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_02244944: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_0200C644 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _02244944 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_02244958 +MOD12_02244958: ; 0x02244958 + push {r4, r5, r6, lr} + add r6, r1, #0 + ldr r0, [r6] + bl FUN_0200C658 + cmp r0, #0 + beq _02244988 + mov r4, #0 + add r5, r6, #0 +_0224496A: + ldr r0, [r5] + bl FUN_0200C5A8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0224496A + ldr r0, [r6, #0x10] + bl FUN_0200C658 + cmp r0, #1 + bne _02244988 + ldr r0, [r6, #0x10] + bl FUN_0200C5A8 +_02244988: + pop {r4, r5, r6, pc} + + .section .data + ; 0x0224498C + .incbin "baserom.nds", 0x1F71CC, 0x1E94 diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt index 9b6d2115..72e1c07e 100644 --- a/arm9/undefined_syms.txt +++ b/arm9/undefined_syms.txt @@ -678,6 +678,19 @@ FUN_0221594C = 0x0221594C; FUN_02215988 = 0x02215988; FUN_02215A44 = 0x02215A44; FUN_022186F0 = 0x022186F0; +FUN_021DD4F4 = 0x021DD4F4; +FUN_021DD518 = 0x021DD518; +FUN_021DD540 = 0x021DD540; +FUN_021DD58C = 0x021DD58C; +FUN_021DD594 = 0x021DD594; +FUN_021DD59C = 0x021DD59C; +FUN_021DD604 = 0x021DD604; +FUN_021DD60C = 0x021DD60C; +FUN_021DD620 = 0x021DD620; +FUN_021DD678 = 0x021DD678; +FUN_021DD6B8 = 0x021DD6B8; +FUN_021DD6CC = 0x021DD6CC; +FUN_02211FF0 = 0x02211FF0; // ??? SDK_MAIN_ARENA_LO = 0x0225FFA0; @@ -702,436 +715,523 @@ SDK_AUTOLOAD_LIST_END = 0x02107724; // Overlay +SDK_MODULE_00_ID = 0; SDK_MODULE_00_START = 0x021D74E0; SDK_MODULE_00_SIZE = 0x00000020; SDK_MODULE_00_BSSSIZE = 0x00000000; SDK_MODULE_00_STATIC_INIT_START = 0x021D74E0; SDK_MODULE_00_STATIC_INIT_END = 0x021D74E4; +SDK_MODULE_01_ID = 1; SDK_MODULE_01_START = 0x021D74E0; SDK_MODULE_01_SIZE = 0x00000020; SDK_MODULE_01_BSSSIZE = 0x00000020; SDK_MODULE_01_STATIC_INIT_START = 0x021D74F0; SDK_MODULE_01_STATIC_INIT_END = 0x021D74F8; +SDK_MODULE_02_ID = 2; SDK_MODULE_02_START = 0x021D7520; SDK_MODULE_02_SIZE = 0x00000020; SDK_MODULE_02_BSSSIZE = 0x00000000; SDK_MODULE_02_STATIC_INIT_START = 0x021D7520; SDK_MODULE_02_STATIC_INIT_END = 0x021D7524; +SDK_MODULE_03_ID = 3; SDK_MODULE_03_START = 0x01FF8700; SDK_MODULE_03_SIZE = 0x00000020; SDK_MODULE_03_BSSSIZE = 0x00000000; SDK_MODULE_03_STATIC_INIT_START = 0x01FF8700; SDK_MODULE_03_STATIC_INIT_END = 0x01FF8704; +SDK_MODULE_04_ID = 4; SDK_MODULE_04_START = 0x021D74E0; SDK_MODULE_04_SIZE = 0x000386E0; SDK_MODULE_04_BSSSIZE = 0x000022A0; SDK_MODULE_04_STATIC_INIT_START = 0x0220BE94; SDK_MODULE_04_STATIC_INIT_END = 0x0220BE98; +SDK_MODULE_05_ID = 5; SDK_MODULE_05_START = 0x021D74E0; SDK_MODULE_05_SIZE = 0x000261A0; SDK_MODULE_05_BSSSIZE = 0x0003C020; SDK_MODULE_05_STATIC_INIT_START = 0x021FD1C8; SDK_MODULE_05_STATIC_INIT_END = 0x021FD1CC; +SDK_MODULE_06_ID = 6; SDK_MODULE_06_START = 0x022396A0; SDK_MODULE_06_SIZE = 0x00018D80; SDK_MODULE_06_BSSSIZE = 0x00000020; SDK_MODULE_06_STATIC_INIT_START = 0x02252228; SDK_MODULE_06_STATIC_INIT_END = 0x0225222C; +SDK_MODULE_07_ID = 7; SDK_MODULE_07_START = 0x02211E60; SDK_MODULE_07_SIZE = 0x000032E0; SDK_MODULE_07_BSSSIZE = 0x00000000; SDK_MODULE_07_STATIC_INIT_START = 0x02215134; SDK_MODULE_07_STATIC_INIT_END = 0x02215138; +SDK_MODULE_08_ID = 8; SDK_MODULE_08_START = 0x02211E60; SDK_MODULE_08_SIZE = 0x0001B760; SDK_MODULE_08_BSSSIZE = 0x00000000; SDK_MODULE_08_STATIC_INIT_START = 0x0222D598; SDK_MODULE_08_STATIC_INIT_END = 0x0222D59C; +SDK_MODULE_09_ID = 9; SDK_MODULE_09_START = 0x02211E60; SDK_MODULE_09_SIZE = 0x0000A1A0; SDK_MODULE_09_BSSSIZE = 0x00000000; SDK_MODULE_09_STATIC_INIT_START = 0x0221BFE8; SDK_MODULE_09_STATIC_INIT_END = 0x0221BFEC; +SDK_MODULE_10_ID = 10; SDK_MODULE_10_START = 0x021D74E0; SDK_MODULE_10_SIZE = 0x00000020; SDK_MODULE_10_BSSSIZE = 0x00000000; SDK_MODULE_10_STATIC_INIT_START = 0x021D74E0; SDK_MODULE_10_STATIC_INIT_END = 0x021D74E4; +SDK_MODULE_11_ID = 11; SDK_MODULE_11_START = 0x0222D5C0; SDK_MODULE_11_SIZE = 0x000329E0; SDK_MODULE_11_BSSSIZE = 0x00000000; SDK_MODULE_11_STATIC_INIT_START = 0x0225FF18; SDK_MODULE_11_STATIC_INIT_END = 0x0225FF20; +SDK_MODULE_12_ID = 12; SDK_MODULE_12_START = 0x0222D5C0; SDK_MODULE_12_SIZE = 0x00019260; SDK_MODULE_12_BSSSIZE = 0x00000000; SDK_MODULE_12_STATIC_INIT_START = 0x02246810; SDK_MODULE_12_STATIC_INIT_END = 0x02246818; +SDK_MODULE_13_ID = 13; SDK_MODULE_13_START = 0x02211E60; SDK_MODULE_13_SIZE = 0x0002EBE0; SDK_MODULE_13_BSSSIZE = 0x000027E0; SDK_MODULE_13_STATIC_INIT_START = 0x0223F768; SDK_MODULE_13_STATIC_INIT_END = 0x0223F76C; +SDK_MODULE_14_ID = 14; SDK_MODULE_14_START = 0x021D74E0; SDK_MODULE_14_SIZE = 0x0000F520; SDK_MODULE_14_BSSSIZE = 0x000001A0; SDK_MODULE_14_STATIC_INIT_START = 0x021E69C8; SDK_MODULE_14_STATIC_INIT_END = 0x021E69CC; +SDK_MODULE_15_ID = 15; SDK_MODULE_15_START = 0x021D74E0; SDK_MODULE_15_SIZE = 0x00004680; SDK_MODULE_15_BSSSIZE = 0x00000000; SDK_MODULE_15_STATIC_INIT_START = 0x021DBB5C; SDK_MODULE_15_STATIC_INIT_END = 0x021DBB60; +SDK_MODULE_16_ID = 16; SDK_MODULE_16_START = 0x021D74E0; SDK_MODULE_16_SIZE = 0x00028500; SDK_MODULE_16_BSSSIZE = 0x00000000; SDK_MODULE_16_STATIC_INIT_START = 0x021FF9C4; SDK_MODULE_16_STATIC_INIT_END = 0x021FF9C8; +SDK_MODULE_17_ID = 17; SDK_MODULE_17_START = 0x021D74E0; SDK_MODULE_17_SIZE = 0x00006E80; SDK_MODULE_17_BSSSIZE = 0x00000000; SDK_MODULE_17_STATIC_INIT_START = 0x021DE354; SDK_MODULE_17_STATIC_INIT_END = 0x021DE358; +SDK_MODULE_18_ID = 18; SDK_MODULE_18_START = 0x022396A0; SDK_MODULE_18_SIZE = 0x00017CE0; SDK_MODULE_18_BSSSIZE = 0x00000080; SDK_MODULE_18_STATIC_INIT_START = 0x02250858; SDK_MODULE_18_STATIC_INIT_END = 0x0225085C; +SDK_MODULE_19_ID = 19; SDK_MODULE_19_START = 0x02252440; SDK_MODULE_19_SIZE = 0x00000100; SDK_MODULE_19_BSSSIZE = 0x00000000; SDK_MODULE_19_STATIC_INIT_START = 0x02252524; SDK_MODULE_19_STATIC_INIT_END = 0x02252528; +SDK_MODULE_20_ID = 20; SDK_MODULE_20_START = 0x02252440; SDK_MODULE_20_SIZE = 0x00002400; SDK_MODULE_20_BSSSIZE = 0x00000000; SDK_MODULE_20_STATIC_INIT_START = 0x02254838; SDK_MODULE_20_STATIC_INIT_END = 0x0225483C; +SDK_MODULE_21_ID = 21; SDK_MODULE_21_START = 0x02254840; SDK_MODULE_21_SIZE = 0x000005C0; SDK_MODULE_21_BSSSIZE = 0x00000000; SDK_MODULE_21_STATIC_INIT_START = 0x02254DE8; SDK_MODULE_21_STATIC_INIT_END = 0x02254DF0; +SDK_MODULE_22_ID = 22; SDK_MODULE_22_START = 0x02254840; SDK_MODULE_22_SIZE = 0x00000F00; SDK_MODULE_22_BSSSIZE = 0x00000000; SDK_MODULE_22_STATIC_INIT_START = 0x02255730; SDK_MODULE_22_STATIC_INIT_END = 0x02255738; +SDK_MODULE_23_ID = 23; SDK_MODULE_23_START = 0x02254840; SDK_MODULE_23_SIZE = 0x00001900; SDK_MODULE_23_BSSSIZE = 0x00000000; SDK_MODULE_23_STATIC_INIT_START = 0x02256128; SDK_MODULE_23_STATIC_INIT_END = 0x02256130; +SDK_MODULE_24_ID = 24; SDK_MODULE_24_START = 0x02254840; SDK_MODULE_24_SIZE = 0x000009A0; SDK_MODULE_24_BSSSIZE = 0x00000000; SDK_MODULE_24_STATIC_INIT_START = 0x022551C0; SDK_MODULE_24_STATIC_INIT_END = 0x022551C8; +SDK_MODULE_25_ID = 25; SDK_MODULE_25_START = 0x02254840; SDK_MODULE_25_SIZE = 0x00000560; SDK_MODULE_25_BSSSIZE = 0x00000000; SDK_MODULE_25_STATIC_INIT_START = 0x02254D80; SDK_MODULE_25_STATIC_INIT_END = 0x02254D88; +SDK_MODULE_26_ID = 26; SDK_MODULE_26_START = 0x02254840; SDK_MODULE_26_SIZE = 0x00000800; SDK_MODULE_26_BSSSIZE = 0x00000000; SDK_MODULE_26_STATIC_INIT_START = 0x02255020; SDK_MODULE_26_STATIC_INIT_END = 0x02255028; +SDK_MODULE_27_ID = 27; SDK_MODULE_27_START = 0x02254840; SDK_MODULE_27_SIZE = 0x00000BA0; SDK_MODULE_27_BSSSIZE = 0x00000000; SDK_MODULE_27_STATIC_INIT_START = 0x022553C4; SDK_MODULE_27_STATIC_INIT_END = 0x022553CC; +SDK_MODULE_28_ID = 28; SDK_MODULE_28_START = 0x02254840; SDK_MODULE_28_SIZE = 0x00001780; SDK_MODULE_28_BSSSIZE = 0x00000000; SDK_MODULE_28_STATIC_INIT_START = 0x02255F18; SDK_MODULE_28_STATIC_INIT_END = 0x02255F20; +SDK_MODULE_29_ID = 29; SDK_MODULE_29_START = 0x02254840; SDK_MODULE_29_SIZE = 0x00000900; SDK_MODULE_29_BSSSIZE = 0x00000000; SDK_MODULE_29_STATIC_INIT_START = 0x0225512C; SDK_MODULE_29_STATIC_INIT_END = 0x02255134; +SDK_MODULE_30_ID = 30; SDK_MODULE_30_START = 0x02254840; SDK_MODULE_30_SIZE = 0x00000600; SDK_MODULE_30_BSSSIZE = 0x00000000; SDK_MODULE_30_STATIC_INIT_START = 0x02254E28; SDK_MODULE_30_STATIC_INIT_END = 0x02254E30; +SDK_MODULE_31_ID = 31; SDK_MODULE_31_START = 0x02254840; SDK_MODULE_31_SIZE = 0x00000600; SDK_MODULE_31_BSSSIZE = 0x00000000; SDK_MODULE_31_STATIC_INIT_START = 0x02254E20; SDK_MODULE_31_STATIC_INIT_END = 0x02254E28; +SDK_MODULE_32_ID = 32; SDK_MODULE_32_START = 0x02254840; SDK_MODULE_32_SIZE = 0x000004A0; SDK_MODULE_32_BSSSIZE = 0x00000000; SDK_MODULE_32_STATIC_INIT_START = 0x02254CC4; SDK_MODULE_32_STATIC_INIT_END = 0x02254CCC; +SDK_MODULE_33_ID = 33; SDK_MODULE_33_START = 0x02254840; SDK_MODULE_33_SIZE = 0x00000320; SDK_MODULE_33_BSSSIZE = 0x00000000; SDK_MODULE_33_STATIC_INIT_START = 0x02254B40; SDK_MODULE_33_STATIC_INIT_END = 0x02254B48; +SDK_MODULE_34_ID = 34; SDK_MODULE_34_START = 0x02254840; SDK_MODULE_34_SIZE = 0x000004C0; SDK_MODULE_34_BSSSIZE = 0x00000000; SDK_MODULE_34_STATIC_INIT_START = 0x02254CF8; SDK_MODULE_34_STATIC_INIT_END = 0x02254D00; +SDK_MODULE_35_ID = 35; SDK_MODULE_35_START = 0x02254840; SDK_MODULE_35_SIZE = 0x000009A0; SDK_MODULE_35_BSSSIZE = 0x00000000; SDK_MODULE_35_STATIC_INIT_START = 0x022551C0; SDK_MODULE_35_STATIC_INIT_END = 0x022551C8; +SDK_MODULE_36_ID = 36; SDK_MODULE_36_START = 0x02254840; SDK_MODULE_36_SIZE = 0x00000CC0; SDK_MODULE_36_BSSSIZE = 0x00000000; SDK_MODULE_36_STATIC_INIT_START = 0x022554F8; SDK_MODULE_36_STATIC_INIT_END = 0x02255500; +SDK_MODULE_37_ID = 37; SDK_MODULE_37_START = 0x02254840; SDK_MODULE_37_SIZE = 0x00000560; SDK_MODULE_37_BSSSIZE = 0x00000020; SDK_MODULE_37_STATIC_INIT_START = 0x02254D90; SDK_MODULE_37_STATIC_INIT_END = 0x02254D98; +SDK_MODULE_38_ID = 38; SDK_MODULE_38_START = 0x02254840; SDK_MODULE_38_SIZE = 0x00000B40; SDK_MODULE_38_BSSSIZE = 0x00000000; SDK_MODULE_38_STATIC_INIT_START = 0x02255360; SDK_MODULE_38_STATIC_INIT_END = 0x02255368; +SDK_MODULE_39_ID = 39; SDK_MODULE_39_START = 0x02254840; SDK_MODULE_39_SIZE = 0x00000CC0; SDK_MODULE_39_BSSSIZE = 0x00000000; SDK_MODULE_39_STATIC_INIT_START = 0x022554E4; SDK_MODULE_39_STATIC_INIT_END = 0x022554EC; +SDK_MODULE_40_ID = 40; SDK_MODULE_40_START = 0x02254840; SDK_MODULE_40_SIZE = 0x00000C60; SDK_MODULE_40_BSSSIZE = 0x00000000; SDK_MODULE_40_STATIC_INIT_START = 0x02255480; SDK_MODULE_40_STATIC_INIT_END = 0x02255488; +SDK_MODULE_41_ID = 41; SDK_MODULE_41_START = 0x02254840; SDK_MODULE_41_SIZE = 0x00001140; SDK_MODULE_41_BSSSIZE = 0x00000000; SDK_MODULE_41_STATIC_INIT_START = 0x02255974; SDK_MODULE_41_STATIC_INIT_END = 0x0225597C; +SDK_MODULE_42_ID = 42; SDK_MODULE_42_START = 0x02254840; SDK_MODULE_42_SIZE = 0x00000900; SDK_MODULE_42_BSSSIZE = 0x00000000; SDK_MODULE_42_STATIC_INIT_START = 0x0225511C; SDK_MODULE_42_STATIC_INIT_END = 0x02255124; +SDK_MODULE_43_ID = 43; SDK_MODULE_43_START = 0x02254840; SDK_MODULE_43_SIZE = 0x000009C0; SDK_MODULE_43_BSSSIZE = 0x00000000; SDK_MODULE_43_STATIC_INIT_START = 0x022551EC; SDK_MODULE_43_STATIC_INIT_END = 0x022551F4; +SDK_MODULE_44_ID = 44; SDK_MODULE_44_START = 0x02254840; SDK_MODULE_44_SIZE = 0x000004A0; SDK_MODULE_44_BSSSIZE = 0x00000000; SDK_MODULE_44_STATIC_INIT_START = 0x02254CBC; SDK_MODULE_44_STATIC_INIT_END = 0x02254CC4; +SDK_MODULE_45_ID = 45; SDK_MODULE_45_START = 0x02254840; SDK_MODULE_45_SIZE = 0x00000940; SDK_MODULE_45_BSSSIZE = 0x00000000; SDK_MODULE_45_STATIC_INIT_START = 0x02255170; SDK_MODULE_45_STATIC_INIT_END = 0x02255178; +SDK_MODULE_46_ID = 46; SDK_MODULE_46_START = 0x02254840; SDK_MODULE_46_SIZE = 0x00000320; SDK_MODULE_46_BSSSIZE = 0x00000000; SDK_MODULE_46_STATIC_INIT_START = 0x02254B40; SDK_MODULE_46_STATIC_INIT_END = 0x02254B48; +SDK_MODULE_47_ID = 47; SDK_MODULE_47_START = 0x02254840; SDK_MODULE_47_SIZE = 0x00000CA0; SDK_MODULE_47_BSSSIZE = 0x00000000; SDK_MODULE_47_STATIC_INIT_START = 0x022554BC; SDK_MODULE_47_STATIC_INIT_END = 0x022554C4; +SDK_MODULE_48_ID = 48; SDK_MODULE_48_START = 0x02254840; SDK_MODULE_48_SIZE = 0x000008A0; SDK_MODULE_48_BSSSIZE = 0x00000000; SDK_MODULE_48_STATIC_INIT_START = 0x022550D0; SDK_MODULE_48_STATIC_INIT_END = 0x022550D8; +SDK_MODULE_49_ID = 49; SDK_MODULE_49_START = 0x02254840; SDK_MODULE_49_SIZE = 0x00000600; SDK_MODULE_49_BSSSIZE = 0x00000000; SDK_MODULE_49_STATIC_INIT_START = 0x02254E20; SDK_MODULE_49_STATIC_INIT_END = 0x02254E28; +SDK_MODULE_50_ID = 50; SDK_MODULE_50_START = 0x02254840; SDK_MODULE_50_SIZE = 0x00000320; SDK_MODULE_50_BSSSIZE = 0x00000000; SDK_MODULE_50_STATIC_INIT_START = 0x02254B50; SDK_MODULE_50_STATIC_INIT_END = 0x02254B58; +SDK_MODULE_51_ID = 51; SDK_MODULE_51_START = 0x02254840; SDK_MODULE_51_SIZE = 0x00000FC0; SDK_MODULE_51_BSSSIZE = 0x00000020; SDK_MODULE_51_STATIC_INIT_START = 0x022557E0; SDK_MODULE_51_STATIC_INIT_END = 0x022557E4; +SDK_MODULE_52_ID = 52; SDK_MODULE_52_START = 0x021D74E0; SDK_MODULE_52_SIZE = 0x00000400; SDK_MODULE_52_BSSSIZE = 0x00000000; SDK_MODULE_52_STATIC_INIT_START = 0x021D78D0; SDK_MODULE_52_STATIC_INIT_END = 0x021D78D4; +SDK_MODULE_53_ID = 53; SDK_MODULE_53_START = 0x021D74E0; SDK_MODULE_53_SIZE = 0x00002480; SDK_MODULE_53_BSSSIZE = 0x00000000; SDK_MODULE_53_STATIC_INIT_START = 0x021D9888; SDK_MODULE_53_STATIC_INIT_END = 0x021D988C; +SDK_MODULE_54_ID = 54; SDK_MODULE_54_START = 0x021D74E0; SDK_MODULE_54_SIZE = 0x00002380; SDK_MODULE_54_BSSSIZE = 0x00000000; SDK_MODULE_54_STATIC_INIT_START = 0x021D97D4; SDK_MODULE_54_STATIC_INIT_END = 0x021D97D8; +SDK_MODULE_55_ID = 55; SDK_MODULE_55_START = 0x021D74E0; SDK_MODULE_55_SIZE = 0x00003040; SDK_MODULE_55_BSSSIZE = 0x00000000; SDK_MODULE_55_STATIC_INIT_START = 0x021DA480; SDK_MODULE_55_STATIC_INIT_END = 0x021DA484; +SDK_MODULE_56_ID = 56; SDK_MODULE_56_START = 0x02211E60; SDK_MODULE_56_SIZE = 0x000047A0; SDK_MODULE_56_BSSSIZE = 0x00000000; SDK_MODULE_56_STATIC_INIT_START = 0x0221647C; SDK_MODULE_56_STATIC_INIT_END = 0x02216480; +SDK_MODULE_57_ID = 57; SDK_MODULE_57_START = 0x021D74E0; SDK_MODULE_57_SIZE = 0x00002540; SDK_MODULE_57_BSSSIZE = 0x00000000; SDK_MODULE_57_STATIC_INIT_START = 0x021D9A10; SDK_MODULE_57_STATIC_INIT_END = 0x021D9A14; +SDK_MODULE_58_ID = 58; SDK_MODULE_58_START = 0x021D9A20; SDK_MODULE_58_SIZE = 0x000015A0; SDK_MODULE_58_BSSSIZE = 0x00000000; SDK_MODULE_58_STATIC_INIT_START = 0x021DAF94; SDK_MODULE_58_STATIC_INIT_END = 0x021DAF98; +SDK_MODULE_59_ID = 59; SDK_MODULE_59_START = 0x021D74E0; SDK_MODULE_59_SIZE = 0x00002C20; SDK_MODULE_59_BSSSIZE = 0x00000000; SDK_MODULE_59_STATIC_INIT_START = 0x021DA0FC; SDK_MODULE_59_STATIC_INIT_END = 0x021DA100; +SDK_MODULE_60_ID = 60; SDK_MODULE_60_START = 0x021D74E0; SDK_MODULE_60_SIZE = 0x00000D00; SDK_MODULE_60_BSSSIZE = 0x00000000; SDK_MODULE_60_STATIC_INIT_START = 0x021D81D8; SDK_MODULE_60_STATIC_INIT_END = 0x021D81DC; +SDK_MODULE_61_ID = 61; SDK_MODULE_61_START = 0x021D74E0; SDK_MODULE_61_SIZE = 0x00001080; SDK_MODULE_61_BSSSIZE = 0x00000000; SDK_MODULE_61_STATIC_INIT_START = 0x021D8554; SDK_MODULE_61_STATIC_INIT_END = 0x021D8558; +SDK_MODULE_62_ID = 62; SDK_MODULE_62_START = 0x0222D5C0; SDK_MODULE_62_SIZE = 0x00003DE0; SDK_MODULE_62_BSSSIZE = 0x00000000; SDK_MODULE_62_STATIC_INIT_START = 0x02231380; SDK_MODULE_62_STATIC_INIT_END = 0x02231388; +SDK_MODULE_63_ID = 63; SDK_MODULE_63_START = 0x021D74E0; SDK_MODULE_63_SIZE = 0x00004AC0; SDK_MODULE_63_BSSSIZE = 0x00000020; SDK_MODULE_63_STATIC_INIT_START = 0x021DBF20; SDK_MODULE_63_STATIC_INIT_END = 0x021DBF24; +SDK_MODULE_64_ID = 64; SDK_MODULE_64_START = 0x021D74E0; SDK_MODULE_64_SIZE = 0x00001C40; SDK_MODULE_64_BSSSIZE = 0x00000000; SDK_MODULE_64_STATIC_INIT_START = 0x021D9110; SDK_MODULE_64_STATIC_INIT_END = 0x021D9114; +SDK_MODULE_65_ID = 65; SDK_MODULE_65_START = 0x021D74E0; SDK_MODULE_65_SIZE = 0x00003000; SDK_MODULE_65_BSSSIZE = 0x00000000; SDK_MODULE_65_STATIC_INIT_START = 0x021DA428; SDK_MODULE_65_STATIC_INIT_END = 0x021DA42C; +SDK_MODULE_66_ID = 66; SDK_MODULE_66_START = 0x021D74E0; SDK_MODULE_66_SIZE = 0x00002660; SDK_MODULE_66_BSSSIZE = 0x00000000; SDK_MODULE_66_STATIC_INIT_START = 0x021D9A9C; SDK_MODULE_66_STATIC_INIT_END = 0x021D9AA0; +SDK_MODULE_67_ID = 67; SDK_MODULE_67_START = 0x021D74E0; SDK_MODULE_67_SIZE = 0x00002440; SDK_MODULE_67_BSSSIZE = 0x00000000; SDK_MODULE_67_STATIC_INIT_START = 0x021D9918; SDK_MODULE_67_STATIC_INIT_END = 0x021D991C; +SDK_MODULE_68_ID = 68; SDK_MODULE_68_START = 0x021D74E0; SDK_MODULE_68_SIZE = 0x00001600; SDK_MODULE_68_BSSSIZE = 0x00000000; SDK_MODULE_68_STATIC_INIT_START = 0x021D8AD4; SDK_MODULE_68_STATIC_INIT_END = 0x021D8AD8; +SDK_MODULE_69_ID = 69; SDK_MODULE_69_START = 0x0222D5C0; SDK_MODULE_69_SIZE = 0x000023A0; SDK_MODULE_69_BSSSIZE = 0x00000020; SDK_MODULE_69_STATIC_INIT_START = 0x0222F93C; SDK_MODULE_69_STATIC_INIT_END = 0x0222F940; +SDK_MODULE_70_ID = 70; SDK_MODULE_70_START = 0x021D74E0; SDK_MODULE_70_SIZE = 0x00000E20; SDK_MODULE_70_BSSSIZE = 0x00000000; SDK_MODULE_70_STATIC_INIT_START = 0x021D82DC; SDK_MODULE_70_STATIC_INIT_END = 0x021D82E0; +SDK_MODULE_71_ID = 71; SDK_MODULE_71_START = 0x0222D5C0; SDK_MODULE_71_SIZE = 0x00003EC0; SDK_MODULE_71_BSSSIZE = 0x00000000; SDK_MODULE_71_STATIC_INIT_START = 0x0223147C; SDK_MODULE_71_STATIC_INIT_END = 0x02231480; +SDK_MODULE_72_ID = 72; SDK_MODULE_72_START = 0x021D74E0; SDK_MODULE_72_SIZE = 0x00000020; SDK_MODULE_72_BSSSIZE = 0x00000000; SDK_MODULE_72_STATIC_INIT_START = 0x021D74E0; SDK_MODULE_72_STATIC_INIT_END = 0x021D74E4; +SDK_MODULE_73_ID = 73; SDK_MODULE_73_START = 0x021D74E0; SDK_MODULE_73_SIZE = 0x00004AE0; SDK_MODULE_73_BSSSIZE = 0x00000000; SDK_MODULE_73_STATIC_INIT_START = 0x021DBF70; SDK_MODULE_73_STATIC_INIT_END = 0x021DBF74; +SDK_MODULE_74_ID = 74; SDK_MODULE_74_START = 0x021D74E0; SDK_MODULE_74_SIZE = 0x00001220; SDK_MODULE_74_BSSSIZE = 0x00000000; SDK_MODULE_74_STATIC_INIT_START = 0x021D8664; SDK_MODULE_74_STATIC_INIT_END = 0x021D8668; +SDK_MODULE_75_ID = 75; SDK_MODULE_75_START = 0x021E6BA0; SDK_MODULE_75_SIZE = 0x00005DE0; SDK_MODULE_75_BSSSIZE = 0x00000000; SDK_MODULE_75_STATIC_INIT_START = 0x021EC97C; SDK_MODULE_75_STATIC_INIT_END = 0x021EC980; +SDK_MODULE_76_ID = 76; SDK_MODULE_76_START = 0x021D74E0; SDK_MODULE_76_SIZE = 0x00001E20; SDK_MODULE_76_BSSSIZE = 0x00000000; SDK_MODULE_76_STATIC_INIT_START = 0x021D92E0; SDK_MODULE_76_STATIC_INIT_END = 0x021D92E4; +SDK_MODULE_77_ID = 77; SDK_MODULE_77_START = 0x021D74E0; SDK_MODULE_77_SIZE = 0x00001BE0; SDK_MODULE_77_BSSSIZE = 0x00000000; SDK_MODULE_77_STATIC_INIT_START = 0x021D90AC; SDK_MODULE_77_STATIC_INIT_END = 0x021D90B0; +SDK_MODULE_78_ID = 78; SDK_MODULE_78_START = 0x021D74E0; SDK_MODULE_78_SIZE = 0x00000460; SDK_MODULE_78_BSSSIZE = 0x00000000; SDK_MODULE_78_STATIC_INIT_START = 0x021D78F8; SDK_MODULE_78_STATIC_INIT_END = 0x021D78FC; +SDK_MODULE_79_ID = 79; SDK_MODULE_79_START = 0x02211E60; SDK_MODULE_79_SIZE = 0x000052C0; SDK_MODULE_79_BSSSIZE = 0x00000040; SDK_MODULE_79_STATIC_INIT_START = 0x02216748; SDK_MODULE_79_STATIC_INIT_END = 0x0221674C; +SDK_MODULE_80_ID = 80; SDK_MODULE_80_START = 0x0222D5C0; SDK_MODULE_80_SIZE = 0x0000A720; SDK_MODULE_80_BSSSIZE = 0x00000160; SDK_MODULE_80_STATIC_INIT_START = 0x02237670; SDK_MODULE_80_STATIC_INIT_END = 0x02237674; +SDK_MODULE_81_ID = 81; SDK_MODULE_81_START = 0x02237E40; SDK_MODULE_81_SIZE = 0x00005580; SDK_MODULE_81_BSSSIZE = 0x000000A0; SDK_MODULE_81_STATIC_INIT_START = 0x0223D39C; SDK_MODULE_81_STATIC_INIT_END = 0x0223D3A0; +SDK_MODULE_82_ID = 82; SDK_MODULE_82_START = 0x0222D5C0; SDK_MODULE_82_SIZE = 0x00002540; SDK_MODULE_82_BSSSIZE = 0x00000120; SDK_MODULE_82_STATIC_INIT_START = 0x0222F8CC; SDK_MODULE_82_STATIC_INIT_END = 0x0222F8D0; +SDK_MODULE_83_ID = 83; SDK_MODULE_83_START = 0x0222D5C0; SDK_MODULE_83_SIZE = 0x0000E2A0; SDK_MODULE_83_BSSSIZE = 0x00001980; SDK_MODULE_83_STATIC_INIT_START = 0x0223A77C; SDK_MODULE_83_STATIC_INIT_END = 0x0223A780; +SDK_MODULE_84_ID = 84; SDK_MODULE_84_START = 0x021D74E0; SDK_MODULE_84_SIZE = 0x00003920; SDK_MODULE_84_BSSSIZE = 0x00000000; SDK_MODULE_84_STATIC_INIT_START = 0x021DADE4; SDK_MODULE_84_STATIC_INIT_END = 0x021DADE8; +SDK_MODULE_85_ID = 85; SDK_MODULE_85_START = 0x021D74E0; SDK_MODULE_85_SIZE = 0x00009100; SDK_MODULE_85_BSSSIZE = 0x00000000; SDK_MODULE_85_STATIC_INIT_START = 0x021E05A0; SDK_MODULE_85_STATIC_INIT_END = 0x021E05A4; +SDK_MODULE_86_ID = 86; SDK_MODULE_86_START = 0x021D74E0; SDK_MODULE_86_SIZE = 0x00000820; SDK_MODULE_86_BSSSIZE = 0x00000000; @@ -144,8 +144,8 @@ .extern FUN_02005E80
.extern FUN_02005E90
.extern FUN_02005F14
-.extern FUN_02005F60
-.extern FUN_02005FDC
+.extern UnloadOverlayByID
+.extern HandleLoadOverlay
.extern FUN_020061E8
.extern FUN_0200621C
.extern FUN_02006234
|