diff options
-rw-r--r-- | arm9/arm9.lcf | 16 | ||||
-rw-r--r-- | arm9/global.inc | 18 | ||||
-rw-r--r-- | arm9/modules/21/asm/module_21.s | 4 | ||||
-rw-r--r-- | arm9/modules/22/asm/module_22.s | 1845 |
4 files changed, 1879 insertions, 4 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 2dc39c48..35caafbe 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -32,7 +32,7 @@ MEMORY { MODULE_19 (RWX) : ORIGIN=0x02252440, LENGTH=0 MODULE_20 (RWX) : ORIGIN=0x02252440, LENGTH=0 MODULE_21 (RWX) : ORIGIN=0x02254840, LENGTH=0 - MODULE_22 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_22 (RWX) : ORIGIN=0x02254840, LENGTH=0 MODULE_23 (RWX) : ORIGIN=0, LENGTH=0 MODULE_24 (RWX) : ORIGIN=0, LENGTH=0 MODULE_25 (RWX) : ORIGIN=0, LENGTH=0 @@ -642,7 +642,19 @@ SECTIONS { module_21.o (.bss) } >> MODULE_21 - OVERLAY_FILE(22, 0x281C00, FILE_285C00.o) + .MODULE.22 : AT (0x281C00) + { + module_22.o (.text) + module_22.o (.sdata) + module_22.o (.data) + } > MODULE_22 + + .MODULE.22.bss : + { + module_22.o (.sbss) + module_22.o (.bss) + } >> MODULE_22 + OVERLAY_FILE(23, 0x282C00, FILE_286C00.o) OVERLAY_FILE(24, 0x284600, FILE_288600.o) OVERLAY_FILE(25, 0x285000, FILE_289000.o) diff --git a/arm9/global.inc b/arm9/global.inc index 52baea23..6601ce1b 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5399,6 +5399,24 @@ .extern FUN_02006C88
.extern FUN_02020A6C
.extern FUN_02012690
+.extern MOD20_02252978
+.extern FUN_02020BF4
+.extern FUN_02020BFC
+.extern FUN_020893F0
+.extern FUN_02089418
+.extern MOD20_02252B28
+.extern MOD20_02252D24
+.extern MOD20_022538A4
+.extern MOD20_022538A8
+.extern MOD20_022538AC
+.extern MOD20_022538B0
+.extern MOD20_02253E74
+.extern MOD20_02253F14
+.extern MOD20_02253F28
+.extern MOD20_02253F78
+.extern MOD20_02253FBC
+.extern MOD20_02254014
+.extern MOD20_022542AC
.extern MOD20_0225298C
.extern MOD20_022529A0
.extern MOD20_02252C14
diff --git a/arm9/modules/21/asm/module_21.s b/arm9/modules/21/asm/module_21.s index c3fb2835..cea8f6e8 100644 --- a/arm9/modules/21/asm/module_21.s +++ b/arm9/modules/21/asm/module_21.s @@ -5,12 +5,12 @@ thumb_func_start MOD21_02254840 MOD21_02254840: ; 0x02254840 - ldr r3, _02254848 ; =0x02252979 + ldr r3, _02254848 ; =MOD20_02252978 ldr r0, _0225484C ; =MOD21_02254854 ldr r1, _02254850 ; =MOD21_0225496C bx r3 .align 2, 0 -_02254848: .word 0x02252979 +_02254848: .word MOD20_02252978 _0225484C: .word MOD21_02254854 _02254850: .word MOD21_0225496C thumb_func_end MOD21_02254840 diff --git a/arm9/modules/22/asm/module_22.s b/arm9/modules/22/asm/module_22.s new file mode 100644 index 00000000..77e6bff4 --- /dev/null +++ b/arm9/modules/22/asm/module_22.s @@ -0,0 +1,1845 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD22_02254840 +MOD22_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD22_02254854 + ldr r1, _02254850 ; =MOD22_022549D8 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD22_02254854 +_02254850: .word MOD22_022549D8 + thumb_func_end MOD22_02254840 + + thumb_func_start MOD22_02254854 +MOD22_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x68 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _02254892 + ldr r2, [sp] + add r1, r7, #0 + bl MOD22_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD22_0225497C + add r1, r4, #0 + mov r2, #1 + str r6, [r4, #0x64] + bl FUN_0200CA44 + cmp r0, #0 + beq _02254892 + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0225488C: + add r0, r4, #0 + bl FUN_02016A18 +_02254892: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254898: .word MOD22_0225497C + thumb_func_end MOD22_02254854 + + thumb_func_start MOD22_0225489C +MOD22_0225489C: ; 0x0225489C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + add r1, r5, #0 + str r2, [r5, #8] + add r0, r2, #0 + add r1, #0x38 + mov r2, #0x24 + bl FUN_02089418 + cmp r0, #0 + beq _022548F0 + add r0, r5, #0 + add r0, #0x4c + ldmia r0!, {r2, r3} + add r0, r5, #0 + add r0, #0xc + stmia r0!, {r2, r3} + add r0, r5, #0 + add r0, #0x54 + ldmia r0!, {r2, r3} + add r0, r5, #0 + add r0, #0x14 + stmia r0!, {r2, r3} + ldr r0, [r5, #0x3c] + str r0, [r5, #0x30] + ldr r0, [r5, #0x40] + str r0, [r5, #0x2c] + ldr r0, [r5, #0x44] + str r0, [r5, #0x28] + ldr r0, [r5, #0x48] + str r0, [r5, #0x24] + ldr r0, [r5, #0x38] + str r0, [r5, #0x1c] + cmp r0, #0 + beq _022548EA + mov r0, #2 + str r0, [r5, #0x34] + b _022548FA +_022548EA: + mov r0, #0 + str r0, [r5, #0x34] + b _022548FA +_022548F0: + add r0, r5, #0 + bl MOD22_02254CE4 + mov r0, #0 + str r0, [r5, #0x34] +_022548FA: + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x60 + add r1, #0x1c + add r2, r4, #0 + bl MOD22_02254E8C + cmp r0, #0 + beq _02254926 + mov r1, #0 + strb r1, [r5] + strb r1, [r5, #1] + ldrb r0, [r5] + strb r0, [r5, #3] + add r0, r5, #0 + strb r1, [r5, #2] + bl MOD22_02254C88 + cmp r0, #0 + beq _02254926 + mov r0, #1 + pop {r3, r4, r5, pc} +_02254926: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD22_0225489C + + thumb_func_start MOD22_0225492C +MOD22_0225492C: ; 0x0225492C + push {r4, lr} + add r4, r0, #0 + add r0, #0xc + ldmia r0!, {r2, r3} + add r0, r4, #0 + add r0, #0x4c + stmia r0!, {r2, r3} + add r0, r4, #0 + add r0, #0x14 + ldmia r0!, {r2, r3} + add r0, r4, #0 + add r0, #0x54 + stmia r0!, {r2, r3} + ldr r0, [r4, #0x30] + add r1, r4, #0 + str r0, [r4, #0x3c] + ldr r0, [r4, #0x2c] + add r1, #0x38 + str r0, [r4, #0x40] + ldr r0, [r4, #0x28] + mov r2, #0x24 + str r0, [r4, #0x44] + ldr r0, [r4, #0x24] + str r0, [r4, #0x48] + ldr r0, [r4, #0x1c] + str r0, [r4, #0x38] + ldr r0, [r4, #8] + bl FUN_020893F0 + add r0, r4, #0 + bl MOD22_02254CD4 + ldr r0, [r4, #0x60] + bl MOD22_02254F10 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD22_0225492C + + thumb_func_start MOD22_0225497C +MOD22_0225497C: ; 0x0225497C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + cmp r1, #6 + bhs _022549D2 + ldrb r0, [r4, #2] + cmp r0, #0 + beq _0225499E + cmp r1, #5 + beq _0225499E + add r0, r4, #0 + mov r1, #5 + bl MOD22_022549E0 + mov r0, #0 + strb r0, [r4, #2] +_0225499E: + ldr r0, [r4, #0x64] + ldr r1, [r4, #0x5c] + bl MOD20_02252C14 + add r1, r4, #0 + add r0, r4, #0 + add r1, #0x1c + bl MOD22_02254D58 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _022549D4 ; =0x0225561C + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _022549D2 + add r0, r4, #0 + bl MOD22_0225492C + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x64] + bl MOD20_022529A0 +_022549D2: + pop {r3, r4, r5, pc} + .align 2, 0 +_022549D4: .word 0x0225561C + thumb_func_end MOD22_0225497C + + thumb_func_start MOD22_022549D8 +MOD22_022549D8: ; 0x022549D8 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD22_022549D8 + + thumb_func_start MOD22_022549E0 +MOD22_022549E0: ; 0x022549E0 + ldrb r2, [r0] + strb r2, [r0, #3] + ldrb r2, [r0, #2] + cmp r2, #0 + bne _022549EE + strb r1, [r0] + b _022549F6 +_022549EE: + mov r1, #5 + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #2] +_022549F6: + mov r1, #0 + strb r1, [r0, #1] + bx lr + thumb_func_end MOD22_022549E0 + + thumb_func_start MOD22_022549FC +MOD22_022549FC: ; 0x022549FC + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A0C + cmp r0, #1 + beq _02254A1C + b _02254A46 +_02254A0C: + ldr r0, [r4, #0x60] + mov r1, #0 + bl MOD22_02255048 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A46 +_02254A1C: + ldr r0, [r4, #0x60] + mov r1, #0 + bl MOD22_0225506C + cmp r0, #0 + beq _02254A46 + ldr r0, [r4, #0x64] + bl MOD20_0225298C + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _02254A3E + add r0, r4, #0 + mov r1, #2 + bl MOD22_022549E0 + b _02254A46 +_02254A3E: + add r0, r4, #0 + mov r1, #1 + bl MOD22_022549E0 +_02254A46: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD22_022549FC + + thumb_func_start MOD22_02254A4C +MOD22_02254A4C: ; 0x02254A4C + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A5C + cmp r0, #1 + beq _02254A74 + b _02254AC8 +_02254A5C: + ldrb r0, [r4, #4] + cmp r0, #1 + bne _02254AC8 + mov r1, #1 + str r1, [r4, #0x34] + ldr r0, [r4, #0x60] + bl MOD22_02255048 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254AC8 +_02254A74: + ldrb r0, [r4, #4] + cmp r0, #2 + beq _02254A84 + cmp r0, #3 + beq _02254A98 + cmp r0, #5 + beq _02254AB4 + b _02254AC8 +_02254A84: + mov r0, #0 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + ldrb r0, [r4, #1] + sub r0, r0, #1 + strb r0, [r4, #1] + b _02254AC8 +_02254A98: + mov r0, #2 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + add r0, r4, #0 + bl MOD22_02254D00 + add r0, r4, #0 + mov r1, #2 + bl MOD22_022549E0 + b _02254AC8 +_02254AB4: + mov r0, #3 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + add r0, r4, #0 + mov r1, #3 + bl MOD22_022549E0 +_02254AC8: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD22_02254A4C + + thumb_func_start MOD22_02254ACC +MOD22_02254ACC: ; 0x02254ACC + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #0 + beq _02254ADC + cmp r1, #1 + beq _02254AFA + b _02254B4A +_02254ADC: + ldrb r1, [r4, #4] + cmp r1, #1 + bne _02254B4A + mov r1, #1 + str r1, [r4, #0x34] + bl MOD22_02254D44 + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254B4A +_02254AFA: + ldrb r0, [r4, #4] + cmp r0, #2 + beq _02254B0A + cmp r0, #3 + beq _02254B20 + cmp r0, #5 + beq _02254B36 + b _02254B4A +_02254B0A: + mov r0, #0 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + add r0, r4, #0 + mov r1, #1 + bl MOD22_022549E0 + b _02254B4A +_02254B20: + mov r0, #0 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + add r0, r4, #0 + mov r1, #1 + bl MOD22_022549E0 + b _02254B4A +_02254B36: + mov r0, #3 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + add r0, r4, #0 + mov r1, #3 + bl MOD22_022549E0 +_02254B4A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD22_02254ACC + + thumb_func_start MOD22_02254B50 +MOD22_02254B50: ; 0x02254B50 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #4] + cmp r1, #2 + beq _02254B84 + cmp r1, #3 + beq _02254B64 + cmp r1, #6 + beq _02254B9A + b _02254BAE +_02254B64: + ldrb r1, [r4, #3] + cmp r1, #1 + bne _02254B84 + bl MOD22_02254D00 + mov r0, #2 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + add r0, r4, #0 + mov r1, #2 + bl MOD22_022549E0 + b _02254BAE +_02254B84: + mov r0, #0 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + add r0, r4, #0 + mov r1, #1 + bl MOD22_022549E0 + b _02254BAE +_02254B9A: + mov r0, #4 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + add r0, r4, #0 + mov r1, #4 + bl MOD22_022549E0 +_02254BAE: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD22_02254B50 + + thumb_func_start MOD22_02254BB4 +MOD22_02254BB4: ; 0x02254BB4 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #3 + bhi _02254C4A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02254BCA: ; jump table + .short _02254BD2 - _02254BCA - 2 ; case 0 + .short _02254BDC - _02254BCA - 2 ; case 1 + .short _02254C00 - _02254BCA - 2 ; case 2 + .short _02254C2A - _02254BCA - 2 ; case 3 +_02254BD2: + mov r0, #0 + strh r0, [r4, #6] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] +_02254BDC: + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + ldrh r0, [r4, #6] + cmp r0, #0x5a + blo _02254C4A + mov r0, #5 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + mov r0, #0 + strh r0, [r4, #6] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254C4A +_02254C00: + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + ldrh r0, [r4, #6] + cmp r0, #0x3c + blo _02254C4A + mov r0, #6 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + add r0, r4, #0 + bl MOD22_02254CE4 + mov r0, #0 + strh r0, [r4, #6] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254C4A +_02254C2A: + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_0225506C + cmp r0, #0 + beq _02254C4A + mov r0, #0 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + add r0, r4, #0 + mov r1, #1 + bl MOD22_022549E0 +_02254C4A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD22_02254BB4 + + thumb_func_start MOD22_02254C50 +MOD22_02254C50: ; 0x02254C50 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254C60 + cmp r0, #1 + beq _02254C74 + b _02254C82 +_02254C60: + mov r0, #7 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #3 + bl MOD22_02255048 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254C82 +_02254C74: + ldr r0, [r4, #0x60] + bl MOD22_02255078 + cmp r0, #0 + beq _02254C82 + mov r0, #1 + pop {r4, pc} +_02254C82: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD22_02254C50 + + thumb_func_start MOD22_02254C88 +MOD22_02254C88: ; 0x02254C88 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #8 + str r0, [sp] + ldr r0, _02254CCC ; =0x02255618 + ldr r2, _02254CD0 ; =MOD22_02254CE0 + mov r1, #1 + add r3, r4, #0 + bl MOD20_02254130 + str r0, [r4, #0x5c] + cmp r0, #0 + beq _02254CC4 + mov r1, #0 + add r2, r1, #0 + mov r3, #0xf + bl MOD20_022542AC + ldr r0, [r4, #0x5c] + mov r1, #0 + mov r2, #1 + mov r3, #0x4b + bl MOD20_022542AC + mov r0, #0 + strb r0, [r4, #4] + add sp, #4 + mov r0, #1 + pop {r3, r4, pc} +_02254CC4: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + nop +_02254CCC: .word 0x02255618 +_02254CD0: .word MOD22_02254CE0 + thumb_func_end MOD22_02254C88 + + thumb_func_start MOD22_02254CD4 +MOD22_02254CD4: ; 0x02254CD4 + ldr r3, _02254CDC ; =0x02254199 + ldr r0, [r0, #0x5c] + bx r3 + nop +_02254CDC: .word 0x02254199 + thumb_func_end MOD22_02254CD4 + + thumb_func_start MOD22_02254CE0 +MOD22_02254CE0: ; 0x02254CE0 + strb r1, [r3, #4] + bx lr + thumb_func_end MOD22_02254CE0 + + thumb_func_start MOD22_02254CE4 +MOD22_02254CE4: ; 0x02254CE4 + mov r2, #0 + str r2, [r0, #0x1c] + mov r1, #1 + str r1, [r0, #0x20] + str r2, [r0, #0x24] + str r2, [r0, #0x28] + str r2, [r0, #0x2c] + str r2, [r0, #0x30] + str r2, [r0, #0xc] + str r2, [r0, #0x10] + str r2, [r0, #0x14] + str r2, [r0, #0x18] + bx lr + .align 2, 0 + thumb_func_end MOD22_02254CE4 + + thumb_func_start MOD22_02254D00 +MOD22_02254D00: ; 0x02254D00 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r3, [r4, #0xc] + mov r0, #0 + ldr r2, [r4, #0x10] + mov r1, #0 + eor r1, r2 + eor r0, r3 + orr r0, r1 + beq _02254D32 + bl FUN_02020BF4 + add r5, r4, #0 + add r5, #0xc + ldr r7, [r4, #0x14] + ldr r2, [r4, #0xc] + ldr r6, [r4, #0x18] + sub r0, r0, r7 + sbc r1, r6 + ldr r3, [r5, #4] + add r0, r2, r0 + adc r3, r1 + str r0, [r4, #0xc] + str r3, [r5, #4] + b _02254D3A +_02254D32: + bl FUN_02020BF4 + str r0, [r4, #0xc] + str r1, [r4, #0x10] +_02254D3A: + mov r0, #1 + str r0, [r4, #0x1c] + mov r0, #0 + str r0, [r4, #0x20] + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD22_02254D00 + + thumb_func_start MOD22_02254D44 +MOD22_02254D44: ; 0x02254D44 + push {r4, lr} + add r4, r0, #0 + bl FUN_02020BF4 + str r0, [r4, #0x14] + str r1, [r4, #0x18] + mov r0, #0 + str r0, [r4, #0x1c] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD22_02254D44 + + thumb_func_start MOD22_02254D58 +MOD22_02254D58: ; 0x02254D58 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _02254D66 + b _02254E7C +_02254D66: + bl FUN_02020BF4 + ldr r3, [r5, #0xc] + ldr r2, [r5, #0x10] + sub r0, r0, r3 + sbc r1, r2 + bl FUN_02020BFC + ldr r2, _02254E80 ; =0x04000280 + mov r3, #1 + strh r3, [r2] + add r3, r2, #0 + add r3, #0x10 + str r0, [r3] + str r1, [r3, #4] + mov r3, #0xfa + add r0, r2, #0 + lsl r3, r3, #2 + add r0, #0x18 + mov r1, #0 + str r3, [r0] + str r1, [r0, #4] + lsr r0, r2, #0xb +_02254D94: + ldrh r1, [r2] + tst r1, r0 + bne _02254D94 + ldr r0, _02254E84 ; =0x040002A0 + add r3, r0, #0 + ldr r6, [r0] + ldr r5, [r0, #4] + sub r3, #0x20 + lsr r0, r0, #0xb +_02254DA6: + ldrh r1, [r3] + tst r1, r0 + bne _02254DA6 + ldr r2, _02254E88 ; =0x040002A8 + mov r0, #1 + ldr r1, [r2] + ldr r7, [r2, #4] + strh r0, [r3] + add r0, r2, #0 + sub r0, #0x18 + str r1, [r0] + str r7, [r0, #4] + mov r1, #0xa + sub r2, #0x10 + str r1, [r2] + mov r0, #0 + ldr r1, _02254E80 ; =0x04000280 + str r0, [r2, #4] + lsr r0, r1, #0xb +_02254DCC: + ldrh r2, [r1] + tst r2, r0 + bne _02254DCC + ldr r0, _02254E84 ; =0x040002A0 + ldr r2, [r0] + str r2, [r4, #8] + mov r2, #1 + strh r2, [r1] + add r1, r0, #0 + sub r1, #0x10 + str r6, [r1] + str r5, [r1, #4] + mov r2, #0x3c + sub r0, #8 + str r2, [r0] + mov r1, #0 + ldr r2, _02254E80 ; =0x04000280 + str r1, [r0, #4] + lsr r0, r2, #0xb +_02254DF2: + ldrh r1, [r2] + tst r1, r0 + bne _02254DF2 + ldr r0, _02254E84 ; =0x040002A0 + add r1, r0, #0 + ldr r3, [r0] + ldr r2, [r0, #4] + sub r1, #0x20 + lsr r0, r0, #0xb +_02254E04: + ldrh r5, [r1] + tst r5, r0 + bne _02254E04 + ldr r0, _02254E88 ; =0x040002A8 + ldr r5, [r0] + str r5, [r4, #0xc] + mov r5, #1 + strh r5, [r1] + add r1, r0, #0 + sub r1, #0x18 + str r3, [r1] + str r2, [r1, #4] + mov r2, #0x3c + sub r0, #0x10 + str r2, [r0] + mov r1, #0 + ldr r2, _02254E80 ; =0x04000280 + str r1, [r0, #4] + lsr r0, r2, #0xb +_02254E2A: + ldrh r1, [r2] + tst r1, r0 + bne _02254E2A + ldr r0, _02254E84 ; =0x040002A0 + add r2, r0, #0 + ldr r5, [r0] + ldr r3, [r0, #4] + sub r2, #0x20 + lsr r0, r0, #0xb +_02254E3C: + ldrh r1, [r2] + tst r1, r0 + bne _02254E3C + ldr r1, _02254E88 ; =0x040002A8 + mov r6, #0x18 + ldr r0, [r1] + str r0, [r4, #0x10] + mov r0, #0 + sub r6, r5, r6 + mov ip, r3 + mov r6, ip + sbc r6, r0 + blo _02254E7A + mov r0, #1 + strh r0, [r2] + add r0, r1, #0 + sub r0, #0x18 + str r5, [r0] + str r3, [r0, #4] + mov r2, #0x18 + sub r1, #0x10 + str r2, [r1] + mov r0, #0 + ldr r2, _02254E80 ; =0x04000280 + str r0, [r1, #4] + lsr r0, r2, #0xb +_02254E70: + ldrh r1, [r2] + tst r1, r0 + bne _02254E70 + ldr r0, _02254E88 ; =0x040002A8 + ldr r5, [r0] +_02254E7A: + str r5, [r4, #0x14] +_02254E7C: + pop {r3, r4, r5, r6, r7, pc} + nop +_02254E80: .word 0x04000280 +_02254E84: .word 0x040002A0 +_02254E88: .word 0x040002A8 + thumb_func_end MOD22_02254D58 + + thumb_func_start MOD22_02254E8C +MOD22_02254E8C: ; 0x02254E8C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x88 + bl FUN_02016998 + add r4, r0, #0 + beq _02254F08 + str r6, [r4] + bl MOD20_02252D24 + str r0, [r4, #0x5c] + mov r0, #8 + bl FUN_02016B94 + str r0, [r4, #4] + cmp r0, #0 + bne _02254EBA + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_02254EBA: + mov r0, #8 + str r0, [sp] + add r0, r4, #0 + add r0, #0x34 + mov r1, #0xc + mov r2, #0x12 + mov r3, #0x13 + bl MOD20_02253FBC + cmp r0, #0 + beq _02254F08 + mov r0, #8 + str r0, [sp] + add r0, r4, #0 + add r0, #0x48 + mov r1, #0xc + mov r2, #3 + mov r3, #4 + bl MOD20_02253FBC + cmp r0, #0 + beq _02254F00 + add r0, r4, #0 + add r0, #8 + mov r1, #8 + bl MOD20_022536F4 + add r0, r4, #0 + mov r1, #0 + add r0, #0x84 + str r1, [r0] + add sp, #4 + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_02254F00: + add r4, #0x34 + add r0, r4, #0 + bl MOD20_02254014 +_02254F08: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD22_02254E8C + + thumb_func_start MOD22_02254F10 +MOD22_02254F10: ; 0x02254F10 + push {r4, lr} + add r4, r0, #0 + beq _02254F26 + ldr r0, [r4, #4] + cmp r0, #0 + beq _02254F20 + bl FUN_02016A18 +_02254F20: + add r0, r4, #0 + bl FUN_02016A18 +_02254F26: + pop {r4, pc} + thumb_func_end MOD22_02254F10 + + thumb_func_start MOD22_02254F28 +MOD22_02254F28: ; 0x02254F28 + ldr r3, _02254F30 ; =MOD22_02254F34 + add r0, r1, #0 + bx r3 + nop +_02254F30: .word MOD22_02254F34 + thumb_func_end MOD22_02254F28 + + thumb_func_start MOD22_02254F34 +MOD22_02254F34: ; 0x02254F34 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4] + ldr r2, _0225503C ; =0x04000280 + ldr r0, [r0, #0x14] + mov r3, #0 + strh r3, [r2] + str r0, [r2, #0x10] + add r0, r2, #0 + mov r1, #0xa + add r0, #0x18 + str r1, [r0] + str r3, [r0, #4] + lsr r0, r2, #0xb +_02254F50: + ldrh r1, [r2] + tst r1, r0 + bne _02254F50 + ldr r0, _02255040 ; =0x040002A0 + add r3, r0, #0 + ldr r1, [r0] + sub r3, #0x20 + lsr r0, r0, #0xb +_02254F60: + ldrh r2, [r3] + tst r2, r0 + bne _02254F60 + ldr r0, _02255044 ; =0x040002A8 + ldr r5, [r0] + ldr r0, [r4, #0x60] + bl MOD20_02253F28 + ldr r0, [r4, #0x64] + add r1, r5, #0 + bl MOD20_02253F28 + ldr r0, [r4] + ldr r2, _0225503C ; =0x04000280 + ldr r0, [r0, #0x10] + mov r3, #0 + strh r3, [r2] + str r0, [r2, #0x10] + add r0, r2, #0 + mov r1, #0xa + add r0, #0x18 + str r1, [r0] + str r3, [r0, #4] + lsr r0, r2, #0xb +_02254F90: + ldrh r1, [r2] + tst r1, r0 + bne _02254F90 + ldr r0, _02255040 ; =0x040002A0 + add r3, r0, #0 + ldr r1, [r0] + sub r3, #0x20 + lsr r0, r0, #0xb +_02254FA0: + ldrh r2, [r3] + tst r2, r0 + bne _02254FA0 + ldr r0, _02255044 ; =0x040002A8 + ldr r5, [r0] + ldr r0, [r4, #0x68] + bl MOD20_02253F28 + ldr r0, [r4, #0x6c] + add r1, r5, #0 + bl MOD20_02253F28 + ldr r0, [r4] + ldr r2, _0225503C ; =0x04000280 + ldr r0, [r0, #0xc] + mov r3, #0 + strh r3, [r2] + str r0, [r2, #0x10] + add r0, r2, #0 + mov r1, #0xa + add r0, #0x18 + str r1, [r0] + str r3, [r0, #4] + lsr r0, r2, #0xb +_02254FD0: + ldrh r1, [r2] + tst r1, r0 + bne _02254FD0 + ldr r0, _02255040 ; =0x040002A0 + add r3, r0, #0 + ldr r1, [r0] + sub r3, #0x20 + lsr r0, r0, #0xb +_02254FE0: + ldrh r2, [r3] + tst r2, r0 + bne _02254FE0 + ldr r0, _02255044 ; =0x040002A8 + ldr r5, [r0] + ldr r0, [r4, #0x70] + bl MOD20_02253F28 + ldr r0, [r4, #0x74] + add r1, r5, #0 + bl MOD20_02253F28 + ldr r0, [r4] + ldr r2, _0225503C ; =0x04000280 + ldr r0, [r0, #8] + mov r3, #0 + strh r3, [r2] + str r0, [r2, #0x10] + add r0, r2, #0 + mov r1, #0xa + add r0, #0x18 + str r1, [r0] + str r3, [r0, #4] + lsr r0, r2, #0xb +_02255010: + ldrh r1, [r2] + tst r1, r0 + bne _02255010 + ldr r0, _02255040 ; =0x040002A0 + add r3, r0, #0 + ldr r1, [r0] + sub r3, #0x20 + lsr r0, r0, #0xb +_02255020: + ldrh r2, [r3] + tst r2, r0 + bne _02255020 + ldr r0, _02255044 ; =0x040002A8 + ldr r5, [r0] + ldr r0, [r4, #0x78] + bl MOD20_02253F28 + ldr r0, [r4, #0x7c] + add r1, r5, #0 + bl MOD20_02253F28 + pop {r3, r4, r5, pc} + nop +_0225503C: .word 0x04000280 +_02255040: .word 0x040002A0 +_02255044: .word 0x040002A8 + thumb_func_end MOD22_02254F34 + + thumb_func_start MOD22_02255048 +MOD22_02255048: ; 0x02255048 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, #8 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + ldr r0, _02255068 ; =0x02255670 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02255068: .word 0x02255670 + thumb_func_end MOD22_02255048 + + thumb_func_start MOD22_0225506C +MOD22_0225506C: ; 0x0225506C + ldr r3, _02255074 ; =0x02253795 + add r0, #8 + bx r3 + nop +_02255074: .word 0x02253795 + thumb_func_end MOD22_0225506C + + thumb_func_start MOD22_02255078 +MOD22_02255078: ; 0x02255078 + ldr r3, _02255080 ; =0x022537B9 + add r0, #8 + bx r3 + nop +_02255080: .word 0x022537B9 + thumb_func_end MOD22_02255078 + + thumb_func_start MOD22_02255084 +MOD22_02255084: ; 0x02255084 + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, #8 + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD22_02255084 + + thumb_func_start MOD22_02255098 +MOD22_02255098: ; 0x02255098 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r1, #0 + add r0, r7, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r2, _0225515C ; =0x02255654 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x15 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x14 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r7, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r7, #0 + bl MOD20_022538A4 + add r6, r0, #0 + add r0, r4, #0 + bl MOD22_0225516C + add r0, r4, #0 + add r1, r6, #0 + bl MOD22_022551A4 + ldr r0, _02255160 ; =MOD22_02254F28 + add r1, r5, #0 + mov r2, #3 + bl FUN_0200CA44 + add r5, #0x84 + str r0, [r5] + add r0, r4, #0 + bl MOD22_02254F34 + ldr r0, [r6] + cmp r0, #0 + beq _02255136 + add r0, r4, #0 + mov r1, #1 + bl MOD22_02255048 +_02255136: + ldr r1, _02255164 ; =0x04001000 + ldr r0, _02255168 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #0x14 + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r7, #0 + bl MOD22_02255084 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0225515C: .word 0x02255654 +_02255160: .word MOD22_02254F28 +_02255164: .word 0x04001000 +_02255168: .word 0xFFFFE0FF + thumb_func_end MOD22_02255098 + + thumb_func_start MOD22_0225516C +MOD22_0225516C: ; 0x0225516C + push {lr} + sub sp, #0xc + mov r3, #0 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #2 + bl FUN_02006A34 + mov r0, #0 + str r0, [sp] + mov r2, #1 + mov r3, #0xa + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x16 + lsl r3, r3, #8 + bl FUN_02006A34 + mov r0, #1 + add sp, #0xc + pop {pc} + .align 2, 0 + thumb_func_end MOD22_0225516C + + thumb_func_start MOD22_022551A4 +MOD22_022551A4: ; 0x022551A4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + str r0, [sp, #4] + add r0, #0x48 + ldr r4, _022551FC ; =0x022556A0 + str r1, [sp] + mov r6, #0 + add r5, r7, #0 + str r0, [sp, #4] +_022551B8: + ldr r0, [r7, #0x5c] + ldr r2, [sp, #4] + add r1, r4, #0 + bl MOD20_02253E74 + str r0, [r5, #0x60] + add r6, r6, #1 + add r4, #0x10 + add r5, r5, #4 + cmp r6, #7 + bls _022551B8 + ldr r2, _022551FC ; =0x022556A0 + lsl r1, r6, #4 + add r1, r2, r1 + add r2, r7, #0 + ldr r0, [r7, #0x5c] + add r2, #0x34 + bl MOD20_02253E74 + add r1, r7, #0 + add r1, #0x80 + str r0, [r1] + ldr r0, [sp] + ldr r0, [r0] + cmp r0, #0 + bne _022551F6 + add r7, #0x80 + ldr r0, [r7] + mov r1, #1 + bl MOD20_02253F78 +_022551F6: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_022551FC: .word 0x022556A0 + thumb_func_end MOD22_022551A4 + + thumb_func_start MOD22_02255200 +MOD22_02255200: ; 0x02255200 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r4, r0, #0 + ldr r1, [r4, #0x18] + add r0, r5, #0 + lsl r2, r1, #2 + ldr r1, _0225522C ; =0x02255638 + ldr r1, [r1, r2] + bl FUN_0201B6C4 + ldr r2, [r4, #0x18] + add r0, r5, #0 + lsl r3, r2, #2 + ldr r2, _0225522C ; =0x02255638 + add r1, r6, #0 + ldr r2, [r2, r3] + blx r2 + pop {r4, r5, r6, pc} + .align 2, 0 +_0225522C: .word 0x02255638 + thumb_func_end MOD22_02255200 + + thumb_func_start MOD22_02255230 +MOD22_02255230: ; 0x02255230 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r4, #4] + mov r1, #0 + bl MOD22_02255544 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD22_02255084 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD22_02255230 + + thumb_func_start MOD22_02255268 +MOD22_02255268: ; 0x02255268 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0 + bl MOD20_02253F78 + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0xb + bl MOD20_02253F28 + ldr r0, [r4, #4] + mov r1, #1 + bl MOD22_02255544 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r0, _022552A8 ; =0x00000669 + bl MOD20_02252B28 + add r0, r5, #0 + bl MOD22_02255084 + pop {r3, r4, r5, pc} + .align 2, 0 +_022552A8: .word 0x00000669 + thumb_func_end MOD22_02255268 + + thumb_func_start MOD22_022552AC +MOD22_022552AC: ; 0x022552AC + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r6, r0, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r0, [r6, #0x18] + cmp r0, #2 + beq _022552CE + add r0, r5, #0 + bl MOD22_02255084 + pop {r4, r5, r6, pc} +_022552CE: + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _022552DC + cmp r0, #1 + pop {r4, r5, r6, pc} +_022552DC: + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0xc + bl MOD20_02253F28 + ldr r0, [r4, #4] + mov r1, #0 + bl MOD22_02255544 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD20_022538B0 + pop {r4, r5, r6, pc} + thumb_func_end MOD22_022552AC + + thumb_func_start MOD22_02255300 +MOD22_02255300: ; 0x02255300 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r7, r0, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r6, #0 + bl MOD20_022538A8 + add r5, r0, #0 + ldr r0, [r7, #0x18] + cmp r0, #3 + beq _0225532A + add r0, r6, #0 + bl MOD22_02255084 + pop {r3, r4, r5, r6, r7, pc} +_0225532A: + add r0, r6, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _0225533A + cmp r0, #1 + beq _02255358 + pop {r3, r4, r5, r6, r7, pc} +_0225533A: + mov r0, #6 + strh r0, [r5] + mov r0, #2 + strb r0, [r5, #3] + mov r0, #0 + strb r0, [r5, #2] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0xd + bl MOD20_02253F28 + add r0, r6, #0 + bl MOD20_022538B0 +_02255358: + add r0, r5, #0 + mov r1, #6 + bl MOD22_02255510 + cmp r0, #0 + beq _0225537A + ldr r0, _0225537C ; =0x00000669 + bl MOD20_02252B28 + ldrb r1, [r5, #3] + ldr r0, [r4, #4] + bl MOD22_02255544 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 +_0225537A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0225537C: .word 0x00000669 + thumb_func_end MOD22_02255300 + + thumb_func_start MOD22_02255380 +MOD22_02255380: ; 0x02255380 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r7, r0, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r6, #0 + bl MOD20_022538A8 + add r5, r0, #0 + ldr r0, [r7, #0x18] + cmp r0, #4 + beq _022553AA + add r0, r6, #0 + bl MOD22_02255084 + pop {r3, r4, r5, r6, r7, pc} +_022553AA: + add r0, r6, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _022553BA + cmp r0, #1 + beq _022553D8 + pop {r3, r4, r5, r6, r7, pc} +_022553BA: + mov r0, #3 + strh r0, [r5] + mov r0, #2 + strb r0, [r5, #3] + mov r0, #0 + strb r0, [r5, #2] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0xe + bl MOD20_02253F28 + add r0, r6, #0 + bl MOD20_022538B0 +_022553D8: + add r0, r5, #0 + mov r1, #3 + bl MOD22_02255510 + cmp r0, #0 + beq _022553FA + ldr r0, _022553FC ; =0x00000669 + bl MOD20_02252B28 + ldrb r1, [r5, #3] + ldr r0, [r4, #4] + bl MOD22_02255544 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 +_022553FA: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022553FC: .word 0x00000669 + thumb_func_end MOD22_02255380 + + thumb_func_start MOD22_02255400 +MOD22_02255400: ; 0x02255400 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r7, r0, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r6, #0 + bl MOD20_022538A8 + add r5, r0, #0 + ldr r0, [r7, #0x18] + cmp r0, #5 + beq _0225542A + add r0, r6, #0 + bl MOD22_02255084 + pop {r3, r4, r5, r6, r7, pc} +_0225542A: + add r0, r6, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _0225543A + cmp r0, #1 + beq _02255468 + pop {r3, r4, r5, r6, r7, pc} +_0225543A: + mov r0, #0 + strh r0, [r5] + strb r0, [r5, #2] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0xf + bl MOD20_02253F28 + ldr r0, [r4, #4] + mov r1, #5 + bl MOD22_02255544 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r0, _02255498 ; =0x00000666 + bl MOD20_02252B28 + add r0, r6, #0 + bl MOD20_022538B0 +_02255468: + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + ldrh r0, [r5] + cmp r0, #2 + bls _02255496 + mov r0, #0 + strh r0, [r5] + ldrb r1, [r5, #2] + mov r0, #1 + eor r0, r1 + strb r0, [r5, #2] + ldrb r0, [r5, #2] + add r0, r0, #5 + strb r0, [r5, #3] + ldrb r1, [r5, #3] + ldr r0, [r4, #4] + bl MOD22_02255544 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 +_02255496: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02255498: .word 0x00000666 + thumb_func_end MOD22_02255400 + + thumb_func_start MOD22_0225549C +MOD22_0225549C: ; 0x0225549C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r7, r0, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r6, r0, #0 + add r0, r5, #0 + bl MOD20_022538A8 + add r4, r0, #0 + ldr r0, [r7, #0x18] + cmp r0, #6 + beq _022554C6 + add r0, r5, #0 + bl MOD22_02255084 + pop {r3, r4, r5, r6, r7, pc} +_022554C6: + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _022554D6 + cmp r0, #1 + beq _022554FC + pop {r3, r4, r5, r6, r7, pc} +_022554D6: + add r0, r6, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0x10 + bl MOD20_02253F28 + ldr r0, [r6, #4] + mov r1, #6 + bl MOD22_02255544 + ldr r0, [r6, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD20_022538B0 + mov r0, #0 + strh r0, [r4] +_022554FC: + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + ldrh r0, [r4] + cmp r0, #0x50 + bls _0225550E + add r0, r5, #0 + bl MOD22_02255084 +_0225550E: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD22_0225549C + + thumb_func_start MOD22_02255510 +MOD22_02255510: ; 0x02255510 + ldrh r2, [r0] + add r2, r2, #1 + strh r2, [r0] + ldrh r2, [r0] + cmp r2, r1 + bls _0225553A + mov r2, #0 + strh r2, [r0] + ldrb r1, [r0, #2] + add r1, r1, #1 + strb r1, [r0, #2] + ldrb r1, [r0, #2] + cmp r1, #3 + blo _0225552E + strb r2, [r0, #2] +_0225552E: + ldrb r2, [r0, #2] + ldr r1, _02255540 ; =0x02255634 + ldrb r1, [r1, r2] + strb r1, [r0, #3] + mov r0, #1 + bx lr +_0225553A: + mov r0, #0 + bx lr + nop +_02255540: .word 0x02255634 + thumb_func_end MOD22_02255510 + + thumb_func_start MOD22_02255544 +MOD22_02255544: ; 0x02255544 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + mov r1, #6 + bl FUN_0201886C + ldr r1, _022555A0 ; =0x00000252 + mov r7, #1 + add r1, r0, r1 + lsl r0, r4, #2 + add r0, r4, r0 + add r0, r0, #2 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + mov r0, #0 + mov ip, r0 + lsl r7, r7, #0xa + mov r6, #9 +_02255568: + ldr r3, [sp] + mov r2, #0 + add r4, r1, #0 +_0225556E: + sub r5, r6, r2 + add r0, r3, #0 + strh r3, [r4] + orr r0, r7 + lsl r5, r5, #1 + add r2, r2, #1 + strh r0, [r1, r5] + add r3, r3, #1 + add r4, r4, #2 + cmp r2, #5 + blo _0225556E + ldr r0, [sp] + add r1, #0x40 + add r0, #0x25 + str r0, [sp] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + mov r0, ip + add r0, r0, #1 + mov ip, r0 + cmp r0, #0xb + blo _02255568 + pop {r3, r4, r5, r6, r7, pc} + nop +_022555A0: .word 0x00000252 + thumb_func_end MOD22_02255544 + + thumb_func_start MOD22_022555A4 +MOD22_022555A4: ; 0x022555A4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _022555C0 + cmp r0, #1 + beq _022555CC + pop {r3, r4, r5, pc} +_022555C0: + add r0, r4, #0 + bl MOD22_022555FC + add r0, r5, #0 + bl MOD20_022538B0 +_022555CC: + add r0, r4, #0 + add r0, #0x34 + bl MOD20_02254014 + add r0, r4, #0 + add r0, #0x48 + bl MOD20_02254014 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + bl FUN_0200CAB4 + mov r0, #0 + add r4, #0x84 + str r0, [r4] + add r0, r5, #0 + bl MOD22_02255084 + pop {r3, r4, r5, pc} + thumb_func_end MOD22_022555A4 + + thumb_func_start MOD22_022555FC +MOD22_022555FC: ; 0x022555FC + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_02255604: + ldr r0, [r6, #0x5c] + ldr r1, [r5, #0x60] + bl MOD20_02253F14 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #9 + blo _02255604 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD22_022555FC + + .section .data + ; 0x02255618 + .incbin "baserom.nds", 0x2869D8, 0x128 |